private VirtualMachineScaleSetStorageProfile GetStorageProfile(VirtualMachineScaleSetStorageProfile existingProfile) { var osDisk = new VirtualMachineScaleSetOSDisk() { Caching = existingProfile.OsDisk.Caching, OsType = existingProfile.OsDisk.OsType, CreateOption = existingProfile.OsDisk.CreateOption }; if (existingProfile.OsDisk.ManagedDisk != null) { osDisk.ManagedDisk = existingProfile.OsDisk.ManagedDisk; } else { osDisk.Image = existingProfile.OsDisk.Image; osDisk.Name = existingProfile.OsDisk.Name; osDisk.VhdContainers = CreateStorageAccount().Select(a => string.Concat(a.PrimaryEndpoints.Blob, "vhd")).ToList(); } return(new VirtualMachineScaleSetStorageProfile() { ImageReference = existingProfile.ImageReference, OsDisk = osDisk }); }
private VirtualMachineScaleSetStorageProfile GetStorageProfile(VirtualMachineScaleSetStorageProfile existingProfile) { var storageType = existingProfile.OsDisk.ManagedDisk != null ? existingProfile.OsDisk.ManagedDisk.StorageAccountType : StorageAccountTypes.StandardLRS; var osDisk = new VirtualMachineScaleSetOSDisk() { Caching = existingProfile.OsDisk.Caching, OsType = existingProfile.OsDisk.OsType, CreateOption = existingProfile.OsDisk.CreateOption, ManagedDisk = new VirtualMachineScaleSetManagedDiskParameters() { StorageAccountType = storageType } }; var targetImageReference = (!string.IsNullOrEmpty(this.VMImagePublisher) || !string.IsNullOrEmpty(this.VMImageOffer) || !string.IsNullOrEmpty(this.VMImageSku) || !string.IsNullOrEmpty(this.VMImageVersion)) ? new ImageReference( null, this.VMImagePublisher ?? existingProfile.ImageReference.Publisher, this.VMImageOffer ?? existingProfile.ImageReference.Offer, this.VMImageSku ?? existingProfile.ImageReference.Sku, this.VMImageVersion ?? existingProfile.ImageReference.Version) : existingProfile.ImageReference; return(new VirtualMachineScaleSetStorageProfile() { ImageReference = targetImageReference, OsDisk = osDisk }); }
protected string GetVolumeType(string VolumeType, VirtualMachineScaleSetStorageProfile storageProfile) { if (string.IsNullOrWhiteSpace(VolumeType)) { return(this.CurrentOSType == OperatingSystemTypes.Windows ? "All" : "Data"); } else { return(VolumeType); } }
protected string GetVolumeType(string VolumeType, VirtualMachineScaleSetStorageProfile storageProfile) { if (string.IsNullOrWhiteSpace(VolumeType)) { return(this.CurrentOSType == OperatingSystemTypes.Windows ? AzureVmssDiskEncryptionExtensionContext.VolumeTypeAll : AzureVmssDiskEncryptionExtensionContext.VolumeTypeData); } else { return(VolumeType); } }
internal VirtualMachineScaleSetVMProfile(VirtualMachineScaleSetOSProfile osProfile, VirtualMachineScaleSetStorageProfile storageProfile, VirtualMachineScaleSetNetworkProfile networkProfile, DiagnosticsProfile diagnosticsProfile, VirtualMachineScaleSetExtensionProfile extensionProfile, string licenseType, VirtualMachinePriorityTypes?priority, VirtualMachineEvictionPolicyTypes?evictionPolicy, BillingProfile billingProfile, ScheduledEventsProfile scheduledEventsProfile) { OsProfile = osProfile; StorageProfile = storageProfile; NetworkProfile = networkProfile; DiagnosticsProfile = diagnosticsProfile; ExtensionProfile = extensionProfile; LicenseType = licenseType; Priority = priority; EvictionPolicy = evictionPolicy; BillingProfile = billingProfile; ScheduledEventsProfile = scheduledEventsProfile; }
internal VirtualMachineScaleSetVmProfile(VirtualMachineScaleSetOSProfile osProfile, VirtualMachineScaleSetStorageProfile storageProfile, VirtualMachineScaleSetNetworkProfile networkProfile, SecurityProfile securityProfile, DiagnosticsProfile diagnosticsProfile, VirtualMachineScaleSetExtensionProfile extensionProfile, string licenseType, VirtualMachinePriorityTypes?priority, VirtualMachineEvictionPolicyTypes?evictionPolicy, BillingProfile billingProfile, ScheduledEventsProfile scheduledEventsProfile, string userData, CapacityReservationProfile capacityReservation, ApplicationProfile applicationProfile) { OsProfile = osProfile; StorageProfile = storageProfile; NetworkProfile = networkProfile; SecurityProfile = securityProfile; DiagnosticsProfile = diagnosticsProfile; ExtensionProfile = extensionProfile; LicenseType = licenseType; Priority = priority; EvictionPolicy = evictionPolicy; BillingProfile = billingProfile; ScheduledEventsProfile = scheduledEventsProfile; UserData = userData; CapacityReservation = capacityReservation; ApplicationProfile = applicationProfile; }
private VirtualMachineScaleSetStorageProfile GetStorageProfile(VirtualMachineScaleSetStorageProfile existingProfile) { var vhds = CreateStorageAccount().Select(a => string.Concat(a.PrimaryEndpoints.Blob, "vhd")).ToList(); return(new VirtualMachineScaleSetStorageProfile() { ImageReference = existingProfile.ImageReference, OsDisk = new VirtualMachineScaleSetOSDisk() { Caching = existingProfile.OsDisk.Caching, OsType = existingProfile.OsDisk.OsType, Image = existingProfile.OsDisk.Image, Name = existingProfile.OsDisk.Name, CreateOption = existingProfile.OsDisk.CreateOption, VhdContainers = vhds } }); }
private VirtualMachineScaleSetStorageProfile GetStorageProfile(VirtualMachineScaleSetStorageProfile existingProfile) { var storageType = existingProfile.OsDisk.ManagedDisk != null ? existingProfile.OsDisk.ManagedDisk.StorageAccountType : StorageAccountTypes.StandardLRS; var osDisk = new VirtualMachineScaleSetOSDisk() { Caching = existingProfile.OsDisk.Caching, OsType = existingProfile.OsDisk.OsType, CreateOption = existingProfile.OsDisk.CreateOption, ManagedDisk = new VirtualMachineScaleSetManagedDiskParameters() { StorageAccountType = storageType } }; return(new VirtualMachineScaleSetStorageProfile() { ImageReference = existingProfile.ImageReference, OsDisk = osDisk }); }
private void GetProfiles( out VirtualMachineScaleSetExtensionProfile vmExtProfile, out VirtualMachineScaleSetOSProfile osProfile, out VirtualMachineScaleSetStorageProfile storageProfile, out VirtualMachineScaleSetNetworkProfile networkProfile) { vmExtProfile = null; osProfile = null; storageProfile = null; networkProfile = null; VirtualMachineScaleSetExtension existingFabricExtension = null; VirtualMachineScaleSetExtension diagnosticsVmExt = null; VirtualMachineScaleSetStorageProfile existingStorageProfile = null; VirtualMachineScaleSetNetworkProfile existingNetworkProfile = null; var vmss = ComputeClient.VirtualMachineScaleSets.List(this.ResourceGroupName); if (vmss != null) { foreach (var vm in vmss) { var ext = vm.VirtualMachineProfile.ExtensionProfile.Extensions.FirstOrDefault( e => string.Equals( e.Type, Constants.ServiceFabricWindowsNodeExtName, StringComparison.OrdinalIgnoreCase)); // Try to get Linux ext if (ext == null) { ext = vm.VirtualMachineProfile.ExtensionProfile.Extensions.FirstOrDefault( e => e.Type.Equals( Constants.ServiceFabricLinuxNodeExtName, StringComparison.OrdinalIgnoreCase)); } if (ext != null) { existingFabricExtension = ext; osProfile = vm.VirtualMachineProfile.OsProfile; existingStorageProfile = vm.VirtualMachineProfile.StorageProfile; existingNetworkProfile = vm.VirtualMachineProfile.NetworkProfile; } ext = vm.VirtualMachineProfile.ExtensionProfile.Extensions.FirstOrDefault( e => e.Type.Equals(Constants.IaaSDiagnostics, StringComparison.OrdinalIgnoreCase)); if (ext != null) { diagnosticsVmExt = ext; break; } } } if (existingFabricExtension == null || existingStorageProfile == null || existingNetworkProfile == null) { throw new InvalidOperationException(ServiceFabricProperties.Resources.VmExtensionNotFound); } osProfile = GetOsProfile(osProfile); storageProfile = GetStorageProfile(existingStorageProfile); networkProfile = CreateNetworkResource(existingNetworkProfile.NetworkInterfaceConfigurations.FirstOrDefault()); existingFabricExtension.Name = string.Format("{0}_ServiceFabricNode", this.NodeType); existingFabricExtension = GetFabricExtension(existingFabricExtension); if (diagnosticsVmExt != null) { diagnosticsVmExt.Name = string.Format("{0}_VMDiagnosticsVmExt", this.NodeType); diagnosticsVmExt = GetDiagnosticsExtension(diagnosticsVmExt); vmExtProfile = new VirtualMachineScaleSetExtensionProfile() { Extensions = new[] { existingFabricExtension, diagnosticsVmExt } }; } else { vmExtProfile = new VirtualMachineScaleSetExtensionProfile() { Extensions = new[] { existingFabricExtension } }; } }
protected VirtualMachineScaleSet CreateDefaultVMScaleSetInput( string rgName, string storageAccountName, ImageReference imageRef, string subnetId, bool hasManagedDisks = false, string healthProbeId = null, string loadBalancerBackendPoolId = null, IList <string> zones = null, int?osDiskSizeInGB = null, string machineSizeType = null, bool?enableUltraSSD = false, string diskEncryptionSetId = null, AutomaticRepairsPolicy automaticRepairsPolicy = null) { // Generate Container name to hold disk VHds string containerName = Recording.GenerateAssetName(TestPrefix); var vhdContainer = "https://" + storageAccountName + ".blob.core.windows.net/" + containerName; var vmssName = Recording.GenerateAssetName("vmss"); bool createOSDisk = !hasManagedDisks || osDiskSizeInGB != null; string vmSize = zones == null?VirtualMachineSizeTypes.StandardA0.ToString() : VirtualMachineSizeTypes.StandardA1V2.ToString(); var test1 = Recording.GenerateAssetName("vmsstestnetconfig"); var test2 = Recording.GenerateAssetName("vmsstestnetconfig"); var virtualMachineScaleSetIpConfiguration = new VirtualMachineScaleSetIPConfiguration(test2) { Subnet = new Azure.ResourceManager.Compute.Models.ApiEntityReference() { Id = subnetId } }; virtualMachineScaleSetIpConfiguration.ApplicationGatewayBackendAddressPools.Clear(); if (loadBalancerBackendPoolId != null) { virtualMachineScaleSetIpConfiguration.LoadBalancerBackendAddressPools.Add(new Models.SubResource(loadBalancerBackendPoolId)); } var virtualMachineScaleSetOsDisk = !createOSDisk ? null : new VirtualMachineScaleSetOSDisk(DiskCreateOptionTypes.FromImage) { Caching = CachingTypes.None, Name = hasManagedDisks ? null : "test", DiskSizeGB = osDiskSizeInGB, ManagedDisk = diskEncryptionSetId == null ? null : new VirtualMachineScaleSetManagedDiskParameters() { StorageAccountType = StorageAccountTypes.StandardLRS, DiskEncryptionSet = new DiskEncryptionSetParameters() { Id = diskEncryptionSetId } } }; if (!hasManagedDisks) { virtualMachineScaleSetOsDisk?.VhdContainers.Add(vhdContainer); } var virtualMachineScaleSetStorageProfile = new VirtualMachineScaleSetStorageProfile() { ImageReference = imageRef, OsDisk = virtualMachineScaleSetOsDisk }; if (hasManagedDisks) { virtualMachineScaleSetStorageProfile.DataDisks.Add(new VirtualMachineScaleSetDataDisk(1, DiskCreateOptionTypes.Empty) { DiskSizeGB = 128, ManagedDisk = diskEncryptionSetId == null ? null : new VirtualMachineScaleSetManagedDiskParameters() { StorageAccountType = StorageAccountTypes.StandardLRS, DiskEncryptionSet = new DiskEncryptionSetParameters() { Id = diskEncryptionSetId } } }); } var vmScaleSet = new VirtualMachineScaleSet(m_location) { Location = m_location, Tags = { { "RG", "rg" }, { "testTag", "1" } }, Sku = new CM.Sku() { Capacity = 2, Name = machineSizeType == null ? vmSize : machineSizeType }, Overprovision = false, UpgradePolicy = new UpgradePolicy() { Mode = UpgradeMode.Automatic }, VirtualMachineProfile = new VirtualMachineScaleSetVMProfile() { StorageProfile = virtualMachineScaleSetStorageProfile, OsProfile = new VirtualMachineScaleSetOSProfile() { ComputerNamePrefix = "test", AdminUsername = "******", AdminPassword = PLACEHOLDER, CustomData = Convert.ToBase64String(Encoding.UTF8.GetBytes("Custom data")) }, NetworkProfile = new VirtualMachineScaleSetNetworkProfile() { HealthProbe = healthProbeId == null ? null : new ApiEntityReference { Id = healthProbeId }, NetworkInterfaceConfigurations = { new VirtualMachineScaleSetNetworkConfiguration(test1) { Primary = true, IpConfigurations = { virtualMachineScaleSetIpConfiguration } } } }, ExtensionProfile = new VirtualMachineScaleSetExtensionProfile(), }, AutomaticRepairsPolicy = automaticRepairsPolicy }; vmScaleSet.Zones.InitializeFrom(zones); if (enableUltraSSD == true) { vmScaleSet.AdditionalCapabilities = new AdditionalCapabilities { UltraSSDEnabled = true }; VirtualMachineScaleSetOSDisk osDisk = vmScaleSet.VirtualMachineProfile.StorageProfile.OsDisk; osDisk.ManagedDisk = osDisk.ManagedDisk ?? new VirtualMachineScaleSetManagedDiskParameters(); osDisk.ManagedDisk.StorageAccountType = StorageAccountTypes.PremiumLRS; foreach (VirtualMachineScaleSetDataDisk dataDisk in vmScaleSet.VirtualMachineProfile.StorageProfile.DataDisks) { dataDisk.ManagedDisk = dataDisk.ManagedDisk ?? new VirtualMachineScaleSetManagedDiskParameters(); dataDisk.ManagedDisk.StorageAccountType = StorageAccountTypes.UltraSSDLRS; } } return(vmScaleSet); }
internal void GetProfiles( string clusterId, out VirtualMachineScaleSetExtensionProfile vmExtProfile, out VirtualMachineScaleSetOSProfile osProfile, out VirtualMachineScaleSetStorageProfile storageProfile, out VirtualMachineScaleSetNetworkProfile networkProfile) { vmExtProfile = null; osProfile = null; storageProfile = null; networkProfile = null; VirtualMachineScaleSetExtension existingFabricExtension = null; VirtualMachineScaleSetExtension diagnosticsVmExt = null; VirtualMachineScaleSetStorageProfile existingStorageProfile = null; VirtualMachineScaleSetNetworkProfile existingNetworkProfile = null; var vmssPages = ComputeClient.VirtualMachineScaleSets.List(this.ResourceGroupName); if (vmssPages == null || !vmssPages.Any()) { throw new PSArgumentException(string.Format( ServiceFabricProperties.Resources.NoVMSSFoundInRG, this.ResourceGroupName)); } do { if (!vmssPages.Any()) { break; } foreach (var vmss in vmssPages) { VirtualMachineScaleSetExtension sfExtension; if (TryGetFabricVmExt(vmss.VirtualMachineProfile.ExtensionProfile?.Extensions, out sfExtension)) { if (string.Equals(GetClusterIdFromExtension(sfExtension), clusterId, StringComparison.OrdinalIgnoreCase)) { WriteVerboseWithTimestamp(string.Format("GetProfiles: Found vmss {0} that corresponds to cluster id {1}", vmss.Id, clusterId)); osProfile = vmss.VirtualMachineProfile.OsProfile; existingStorageProfile = vmss.VirtualMachineProfile.StorageProfile; existingNetworkProfile = vmss.VirtualMachineProfile.NetworkProfile; if (existingStorageProfile == null || existingNetworkProfile == null) { WriteVerboseWithTimestamp(string.Format("GetProfiles: Unable to get storageProfile and/or NetworkProfile from vmss id: {0}", vmss.Id)); continue; } existingFabricExtension = sfExtension; diagnosticsVmExt = vmss.VirtualMachineProfile.ExtensionProfile.Extensions.FirstOrDefault( e => e.Type.Equals(Constants.IaaSDiagnostics, StringComparison.OrdinalIgnoreCase)); break; } } } } while (existingFabricExtension == null && !string.IsNullOrEmpty(vmssPages.NextPageLink) && (vmssPages = this.ComputeClient.VirtualMachineScaleSets.ListNext(vmssPages.NextPageLink)) != null); if (existingFabricExtension == null) { throw new InvalidOperationException(string.Format(ServiceFabricProperties.Resources.VmExtensionNotFound, ResourceGroupName, clusterId)); } osProfile = GetOsProfile(osProfile); storageProfile = GetStorageProfile(existingStorageProfile); networkProfile = CreateNetworkResource(existingNetworkProfile.NetworkInterfaceConfigurations.FirstOrDefault()); existingFabricExtension.Name = string.Format("{0}_ServiceFabricNode", this.NodeType); existingFabricExtension = GetFabricExtension(existingFabricExtension); if (diagnosticsVmExt != null) { diagnosticsVmExt.Name = string.Format("{0}_VMDiagnosticsVmExt", this.NodeType); diagnosticsVmExt = GetDiagnosticsExtension(diagnosticsVmExt); vmExtProfile = new VirtualMachineScaleSetExtensionProfile() { Extensions = new[] { existingFabricExtension, diagnosticsVmExt } }; } else { vmExtProfile = new VirtualMachineScaleSetExtensionProfile() { Extensions = new[] { existingFabricExtension } }; } }