private VirtualMachineScaleSetOSProfile GetOsProfile(VirtualMachineScaleSetOSProfile osProfile) { osProfile.ComputerNamePrefix = this.NodeType; osProfile.AdminPassword = this.VmPassword.ConvertToString(); osProfile.AdminUsername = this.VmUserName; return(osProfile); }
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 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 } }; } }
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 } }; } }