private void Run() { // VirtualMachineProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile == null) { this.VirtualMachineScaleSet.VirtualMachineProfile = new PSVirtualMachineScaleSetVMProfile(); } // ExtensionProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile == null) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile = new PSVirtualMachineScaleSetExtensionProfile(); } // Extensions if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions == null) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = new List <PSVirtualMachineScaleSetExtension>(); } var vExtensions = new PSVirtualMachineScaleSetExtension(); vExtensions.Name = this.IsParameterBound(c => c.Name) ? this.Name : null; vExtensions.ForceUpdateTag = this.IsParameterBound(c => c.ForceUpdateTag) ? this.ForceUpdateTag : null; vExtensions.Publisher = this.IsParameterBound(c => c.Publisher) ? this.Publisher : null; vExtensions.Type = this.IsParameterBound(c => c.Type) ? this.Type : null; vExtensions.TypeHandlerVersion = this.IsParameterBound(c => c.TypeHandlerVersion) ? this.TypeHandlerVersion : null; vExtensions.AutoUpgradeMinorVersion = this.IsParameterBound(c => c.AutoUpgradeMinorVersion) ? this.AutoUpgradeMinorVersion : (bool?)null; vExtensions.Settings = this.IsParameterBound(c => c.Setting) ? this.Setting : null; vExtensions.ProtectedSettings = this.IsParameterBound(c => c.ProtectedSetting) ? this.ProtectedSetting : null; vExtensions.ProvisionAfterExtensions = this.IsParameterBound(c => c.ProvisionAfterExtension) ? this.ProvisionAfterExtension : null; this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions.Add(vExtensions); WriteObject(this.VirtualMachineScaleSet); }
/// <summary> /// Check if a VMSS extension is diagnostics extension. /// </summary> /// <param name="extension">VMSS extension</param> /// <returns>Whether the VMSS extension is diagnostics extension</returns> public static bool IsDiagnosticsExtension(PSVirtualMachineScaleSetExtension extension) { return(extension.Publisher.Equals(DiagnosticsExtensionConstants.ExtensionPublisher, StringComparison.InvariantCultureIgnoreCase) && extension.Type.Equals(DiagnosticsExtensionConstants.ExtensionType, StringComparison.InvariantCultureIgnoreCase)); }
protected override void ProcessRecord() { if (ShouldProcess(this.VirtualMachineScaleSet.Name, Properties.Resources.AddVmssDiagnosticsExtensionAction)) { // VirtualMachineProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile == null) { this.VirtualMachineScaleSet.VirtualMachineProfile = new PSVirtualMachineScaleSetVMProfile(); } // ExtensionProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile == null) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile = new PSVirtualMachineScaleSetExtensionProfile(); } // Extensions if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions == null) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = new List <PSVirtualMachineScaleSetExtension>(); } bool shouldContinue = true; // Warning if there's already a diagnostics extension. var extensions = this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions; if (extensions.Any(DiagnosticsHelper.IsDiagnosticsExtension)) { if (Force.IsPresent || ShouldContinue(Properties.Resources.DiagnosticsExtensionOverwrittingConfirmation, Properties.Resources.DiagnosticsExtensionOverwrittingCaption)) { WriteWarning(Properties.Resources.DiagnosticsExtensionOverwriting); // Remove all existing diagnostics extensions this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = extensions.Where(extension => !DiagnosticsHelper.IsDiagnosticsExtension(extension)).ToList(); } else { shouldContinue = false; } } if (shouldContinue) { var storageClient = AzureSession.Instance.ClientFactory.CreateArmClient <StorageManagementClient>(DefaultProfile.DefaultContext, AzureEnvironment.Endpoint.ResourceManager); // Parse configs, and auto fill incomplete parts Tuple <Hashtable, Hashtable> settings = DiagnosticsHelper.GetConfigurationsFromFiles(this.SettingFilePath, this.ProtectedSettingFilePath, this.VirtualMachineScaleSet.Id, this, storageClient); var newDiagnosticsExtension = new PSVirtualMachineScaleSetExtension(); newDiagnosticsExtension.Name = this.Name; newDiagnosticsExtension.Publisher = DiagnosticsExtensionConstants.ExtensionPublisher; newDiagnosticsExtension.Type = DiagnosticsExtensionConstants.ExtensionType; newDiagnosticsExtension.TypeHandlerVersion = this.TypeHandlerVersion; newDiagnosticsExtension.AutoUpgradeMinorVersion = this.AutoUpgradeMinorVersion; newDiagnosticsExtension.Settings = settings.Item1; newDiagnosticsExtension.ProtectedSettings = settings.Item2; this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions.Add(newDiagnosticsExtension); } } WriteObject(ComputeAutomationAutoMapperProfile.Mapper.Map <PSVirtualMachineScaleSet>(this.VirtualMachineScaleSet)); }