Esempio n. 1
0
 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;
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
        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 }
                };
            }
        }