Ejemplo n.º 1
0
            public async Task <ResourceConfig <VirtualMachine> > CreateConfigAsync()
            {
                if (_cmdlet.DiskFile == null)
                {
                    ImageAndOsType = await _client.UpdateImageAndOsTypeAsync(
                        ImageAndOsType, _cmdlet.ResourceGroupName, _cmdlet.Image, Location);
                }

                _cmdlet.DomainNameLabel = await PublicIPAddressStrategy.UpdateDomainNameLabelAsync(
                    domainNameLabel : _cmdlet.DomainNameLabel,
                    name : _cmdlet.Name,
                    location : Location,
                    client : _client);

                var resourceGroup  = ResourceGroupStrategy.CreateResourceGroupConfig(_cmdlet.ResourceGroupName);
                var virtualNetwork = resourceGroup.CreateVirtualNetworkConfig(
                    name: _cmdlet.VirtualNetworkName, addressPrefix: _cmdlet.AddressPrefix);
                var subnet          = virtualNetwork.CreateSubnet(_cmdlet.SubnetName, _cmdlet.SubnetAddressPrefix);
                var publicIpAddress = resourceGroup.CreatePublicIPAddressConfig(
                    name: _cmdlet.PublicIpAddressName,
                    domainNameLabel: _cmdlet.DomainNameLabel,
                    allocationMethod: _cmdlet.AllocationMethod,
                    sku: _cmdlet.Zone == null ? PublicIPAddressStrategy.Sku.Basic : PublicIPAddressStrategy.Sku.Standard,
                    zones: _cmdlet.Zone);

                _cmdlet.OpenPorts = ImageAndOsType.UpdatePorts(_cmdlet.OpenPorts);

                var networkSecurityGroup = resourceGroup.CreateNetworkSecurityGroupConfig(
                    name: _cmdlet.SecurityGroupName,
                    openPorts: _cmdlet.OpenPorts);

                bool enableAcceleratedNetwork = Utils.DoesConfigSupportAcceleratedNetwork(_client,
                                                                                          ImageAndOsType, _cmdlet.Size, Location, DefaultLocation);

                var networkInterface = resourceGroup.CreateNetworkInterfaceConfig(
                    _cmdlet.Name, subnet, publicIpAddress, networkSecurityGroup, enableAcceleratedNetwork);

                var ppgSubResourceFunc = resourceGroup.CreateProximityPlacementGroupSubResourceFunc(_cmdlet.ProximityPlacementGroup);

                var availabilitySet = _cmdlet.AvailabilitySetName == null
                    ? null
                    : resourceGroup.CreateAvailabilitySetConfig(
                    name: _cmdlet.AvailabilitySetName,
                    proximityPlacementGroup: ppgSubResourceFunc);

                if (_cmdlet.DiskFile == null)
                {
                    return(resourceGroup.CreateVirtualMachineConfig(
                               name: _cmdlet.Name,
                               networkInterface: networkInterface,
                               imageAndOsType: ImageAndOsType,
                               adminUsername: _cmdlet.Credential.UserName,
                               adminPassword:
                               new NetworkCredential(string.Empty, _cmdlet.Credential.Password).Password,
                               size: _cmdlet.Size,
                               availabilitySet: availabilitySet,
                               dataDisks: _cmdlet.DataDiskSizeInGb,
                               zones: _cmdlet.Zone,
                               ultraSSDEnabled: _cmdlet.EnableUltraSSD.IsPresent,
                               identity: _cmdlet.GetVMIdentityFromArgs(),
                               proximityPlacementGroup: ppgSubResourceFunc,
                               hostId: _cmdlet.HostId,
                               priority: _cmdlet.Priority,
                               evictionPolicy: _cmdlet.EvictionPolicy,
                               maxPrice: _cmdlet.IsParameterBound(c => c.MaxPrice) ? _cmdlet.MaxPrice : (double?)null
                               ));
                }
                else
                {
                    var disk = resourceGroup.CreateManagedDiskConfig(
                        name: _cmdlet.Name,
                        sourceUri: DestinationUri.Uri.ToString());

                    return(resourceGroup.CreateVirtualMachineConfig(
                               name: _cmdlet.Name,
                               networkInterface: networkInterface,
                               osType: ImageAndOsType.OsType,
                               disk: disk,
                               size: _cmdlet.Size,
                               availabilitySet: availabilitySet,
                               dataDisks: _cmdlet.DataDiskSizeInGb,
                               zones: _cmdlet.Zone,
                               ultraSSDEnabled: _cmdlet.EnableUltraSSD.IsPresent,
                               identity: _cmdlet.GetVMIdentityFromArgs(),
                               proximityPlacementGroup: ppgSubResourceFunc,
                               hostId: _cmdlet.HostId,
                               priority: _cmdlet.Priority,
                               evictionPolicy: _cmdlet.EvictionPolicy,
                               maxPrice: _cmdlet.IsParameterBound(c => c.MaxPrice) ? _cmdlet.MaxPrice : (double?)null
                               ));
                }
            }