protected override void ProcessRecord() { if (ShouldProcess(this.VirtualMachineScaleSet.Name, Properties.Resources.RemoveVmssDiagnosticsExtensionAction)) { // VirtualMachineProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile != null && this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile != null && this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions != null) { var extensions = this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions; // Filter by publisher and type // If extension name is provided, should match the name as well var diagnosticsExtensions = extensions .Where(extension => DiagnosticsHelper.IsDiagnosticsExtension(extension) && (string.IsNullOrEmpty(this.Name) || extension.Name.Equals(this.Name, StringComparison.InvariantCultureIgnoreCase))) .ToList(); if (diagnosticsExtensions.Any()) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = extensions.Except(diagnosticsExtensions).ToList(); if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions.Count == 0) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = null; } WriteObject(ComputeAutomationAutoMapperProfile.Mapper.Map <PSVirtualMachineScaleSet>(this.VirtualMachineScaleSet)); return; } } WriteWarning(Properties.Resources.DiagnosticsExtensionNotFoundForVMSS); } WriteObject(ComputeAutomationAutoMapperProfile.Mapper.Map <PSVirtualMachineScaleSet>(this.VirtualMachineScaleSet)); }
protected override void ProcessRecord() { if (ShouldProcess(this.VirtualMachineScaleSet.Name, Properties.Resources.AddVmssDiagnosticsExtensionAction)) { // VirtualMachineProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile == null) { this.VirtualMachineScaleSet.VirtualMachineProfile = new Microsoft.Azure.Management.Compute.Models.VirtualMachineScaleSetVMProfile(); } // ExtensionProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile == null) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile = new Microsoft.Azure.Management.Compute.Models.VirtualMachineScaleSetExtensionProfile(); } // Extensions if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions == null) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = new List <Microsoft.Azure.Management.Compute.Models.VirtualMachineScaleSetExtension>(); } 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.ClientFactory.CreateArmClient <StorageManagementClient>(DefaultProfile.Context, 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 Microsoft.Azure.Management.Compute.Models.VirtualMachineScaleSetExtension(); 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(this.VirtualMachineScaleSet); }