protected override void ProcessRecord() { base.ProcessRecord(); if (String.IsNullOrEmpty(Name)) { Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName; } if (ShouldProcess(string.Format(CultureInfo.CurrentUICulture, Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalConfirmation, Name), Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalCaption)) { //Add retry logic due to CRP service restart known issue CRP bug: 3564713 var count = 1; DeleteOperationResponse op = null; while (count <= 2) { op = VirtualMachineExtensionClient.Delete(ResourceGroupName, VMName, Name); if (ComputeOperationStatus.Failed.Equals(op.Status) && op.Error != null && "InternalExecutionError".Equals(op.Error.Code)) { count++; } else { break; } } var result = Mapper.Map <PSComputeLongRunningOperation>(op); WriteObject(result); } }
protected override void ProcessRecord() { base.ProcessRecord(); if (String.IsNullOrEmpty(Name)) { Name = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionContext.ExtensionPublishedName; } var result = VirtualMachineExtensionClient.GetWithInstanceView(ResourceGroupName, VMName, Name); var extension = result.ToPSVirtualMachineExtension(ResourceGroupName); if ( extension.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace, StringComparison.InvariantCultureIgnoreCase) && extension.ExtensionType.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedName, StringComparison.InvariantCultureIgnoreCase)) { WriteObject(GetSqlServerExtensionContext(extension)); } else { WriteObject(null); } }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); if (String.IsNullOrEmpty(Name)) { Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName; } if (ShouldProcess(string.Format(CultureInfo.CurrentUICulture, Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalConfirmation, Name), Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalCaption)) { //Add retry logic due to CRP service restart known issue CRP bug: 3564713 var count = 1; Rest.Azure.AzureOperationResponse op = null; while (count <= 2) { op = VirtualMachineExtensionClient.DeleteWithHttpMessagesAsync( ResourceGroupName, VMName, Name).GetAwaiter().GetResult(); if ("Failed".Equals(op.Response.StatusCode)) //&& op.Error != null && "InternalExecutionError".Equals(op.Error.Code)) { count++; } else { break; } } var result = Mapper.Map <PSAzureOperationResponse>(op); WriteObject(result); } }
protected void ExecuteVirtualMachineExtensionListVersionsMethod(object[] invokeMethodInputParameters) { string publisherName = (string)ParseParameter(invokeMethodInputParameters[0]); string extensionName = (string)ParseParameter(invokeMethodInputParameters[1]); var result = VirtualMachineExtensionClient.ListVersions(publisherName, extensionName); WriteObject(result); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); if (String.IsNullOrEmpty(Name)) { Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName; } if (ShouldProcess(string.Format(CultureInfo.CurrentUICulture, Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalConfirmation, Name), Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalCaption)) { //Add retry logic due to CRP service restart known issue CRP bug: 3564713 var count = 1; Rest.Azure.AzureOperationResponse op = null; if (NoWait.IsPresent) { op = VirtualMachineExtensionClient.BeginDeleteWithHttpMessagesAsync( ResourceGroupName, VMName, Name).GetAwaiter().GetResult(); } else { while (true) { try { op = VirtualMachineExtensionClient.DeleteWithHttpMessagesAsync( ResourceGroupName, VMName, Name).GetAwaiter().GetResult(); break; } catch (Rest.Azure.CloudException ex) { var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(ex.Response.Content); if ("Failed".Equals(errorReturned.Status) && errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code)) { count++; if (count <= 2) { continue; } } ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null)); } } } var result = ComputeAutoMapperProfile.Mapper.Map <PSAzureOperationResponse>(op); WriteObject(result); } }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); if (string.IsNullOrEmpty(this.Location)) { this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName); } var parameters = new VirtualMachineExtension { Location = this.Location, Publisher = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace, VirtualMachineExtensionType = VirtualMachineSqlServerExtensionContext.ExtensionPublishedName, TypeHandlerVersion = string.IsNullOrEmpty(this.Version) ? VirtualMachineSqlServerExtensionContext.ExtensionDefaultVersion : this.Version, Settings = this.GetPublicConfiguration(), ProtectedSettings = this.GetPrivateConfiguration(), }; // Add retry logic due to CRP service restart known issue CRP bug: 3564713 // Similair approach taken in DSC cmdlet as well var count = 1; Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null; while (count <= 2) { try { op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync( ResourceGroupName, VMName, Name ?? VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionContext.ExtensionPublishedName, parameters).GetAwaiter().GetResult(); } catch (Rest.Azure.CloudException ex) { var errorReturned = JsonConvert.DeserializeObject <ComputeLongRunningOperationError>(ex.Response.Content); if ("Failed".Equals(errorReturned.Status) && errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code)) { count++; } else { break; } } } var result = Mapper.Map <PSAzureOperationResponse>(op); WriteObject(result); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); if (String.IsNullOrEmpty(Name)) { Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName; } if (Status) { var result = VirtualMachineExtensionClient.GetWithInstanceView(ResourceGroupName, VMName, Name); var extension = result.ToPSVirtualMachineExtension(this.ResourceGroupName, this.VMName); if ( extension.Publisher.Equals(DscExtensionCmdletConstants.ExtensionPublishedNamespace, StringComparison.InvariantCultureIgnoreCase) && extension.ExtensionType.Equals(DscExtensionCmdletConstants.ExtensionPublishedName, StringComparison.InvariantCultureIgnoreCase)) { WriteObject(GetDscExtensionContext(extension)); } else { WriteObject(null); } } else { var result = VirtualMachineExtensionClient.Get(ResourceGroupName, VMName, Name); var extension = result.ToPSVirtualMachineExtension(this.ResourceGroupName, this.VMName); if ( extension.Publisher.Equals( DscExtensionCmdletConstants.ExtensionPublishedNamespace, StringComparison.InvariantCultureIgnoreCase) && extension.ExtensionType.Equals( DscExtensionCmdletConstants.ExtensionPublishedName, StringComparison.InvariantCultureIgnoreCase)) { WriteObject(GetDscExtensionContext(extension)); } else { WriteObject(null); } } }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); if (string.IsNullOrEmpty(this.Location)) { this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName); } var parameters = new VirtualMachineExtension { Location = this.Location, Name = Name ?? VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionContext.ExtensionPublishedName, Type = VirtualMachineExtensionType, Publisher = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace, ExtensionType = VirtualMachineSqlServerExtensionContext.ExtensionPublishedName, TypeHandlerVersion = string.IsNullOrEmpty(this.Version) ? VirtualMachineSqlServerExtensionContext.ExtensionDefaultVersion : this.Version, Settings = this.GetPublicConfiguration(), ProtectedSettings = this.GetPrivateConfiguration(), }; // Add retry logic due to CRP service restart known issue CRP bug: 3564713 // Similair approach taken in DSC cmdlet as well var count = 1; ComputeLongRunningOperationResponse op = null; while (count <= 2) { op = VirtualMachineExtensionClient.CreateOrUpdate( ResourceGroupName, VMName, parameters); if (ComputeOperationStatus.Failed.Equals(op.Status) && op.Error != null && "InternalExecutionError".Equals(op.Error.Code)) { count++; } else { break; } } var result = Mapper.Map <PSComputeLongRunningOperation>(op); WriteObject(result); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); if (String.IsNullOrEmpty(Name)) { Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName; } var result = VirtualMachineExtensionClient.GetWithInstanceView(ResourceGroupName, VMName, Name); if (result != null && result.Body != null) { WriteObject(GetDscExtensionStatusContext(result.Body, ResourceGroupName, VMName)); } else { WriteObject(null); } }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); if (String.IsNullOrEmpty(Name)) { VirtualMachine vm = ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName); if (vm != null) { VirtualMachineExtension virtualMachineExtension = vm.Resources.Where(x => x.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace)).FirstOrDefault(); if (virtualMachineExtension != null) { this.Name = virtualMachineExtension.Name; } } if (String.IsNullOrEmpty(Name)) { Name = VirtualMachineSqlServerExtensionContext.ExtensionPublishedName; } } var result = VirtualMachineExtensionClient.GetWithInstanceView(ResourceGroupName, VMName, Name); var extension = result.ToPSVirtualMachineExtension(this.ResourceGroupName, this.VMName); if ( extension.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace, StringComparison.InvariantCultureIgnoreCase) && extension.ExtensionType.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedType, StringComparison.InvariantCultureIgnoreCase)) { WriteObject(GetSqlServerExtensionContext(extension)); } else { WriteObject(null); } }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); string virtualMachineName = ""; string resourceGroup = ""; if (this.ParameterSetName.Equals(VMParameterSetName)) { virtualMachineName = this.VM.Name; if (this.VM.ResourceGroupName == null) { WriteError("The incoming virtual machine must have a 'resourceGroupName'.", this.VM); } resourceGroup = this.VM.ResourceGroupName; } else { virtualMachineName = VMName; resourceGroup = ResourceGroupName; } if (String.IsNullOrEmpty(Name)) { Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName; } var result = VirtualMachineExtensionClient.GetWithInstanceView(resourceGroup, virtualMachineName, Name); if (result != null && result.Body != null) { WriteObject(GetDscExtensionStatusContext(result.Body, resourceGroup, virtualMachineName)); } else { WriteObject(null); } }
private void CreateConfiguration() { var publicSettings = new DscExtensionPublicSettings(); var privateSettings = new DscExtensionPrivateSettings(); publicSettings.WmfVersion = string.IsNullOrEmpty(WmfVersion) ? "latest" : WmfVersion; if (!string.IsNullOrEmpty(ArchiveBlobName)) { ConfigurationUris configurationUris = UploadConfigurationDataToBlob(); publicSettings.SasToken = configurationUris.SasToken; publicSettings.ModulesUrl = configurationUris.ModulesUrl; publicSettings.ConfigurationFunction = string.Format( CultureInfo.InvariantCulture, "{0}\\{1}", Path.GetFileNameWithoutExtension(ArchiveBlobName), ConfigurationName); Tuple <DscExtensionPublicSettings.Property[], Hashtable> settings = DscExtensionSettingsSerializer.SeparatePrivateItems(ConfigurationArgument); publicSettings.Properties = settings.Item1; privateSettings.Items = settings.Item2; privateSettings.DataBlobUri = configurationUris.DataBlobUri; } if (string.IsNullOrEmpty(this.Location)) { this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName); } var parameters = new VirtualMachineExtension { Location = this.Location, Name = Name ?? DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName, Type = VirtualMachineExtensionType, Publisher = DscExtensionCmdletConstants.ExtensionPublishedNamespace, ExtensionType = DscExtensionCmdletConstants.ExtensionPublishedName, TypeHandlerVersion = Version, // Define the public and private property bags that will be passed to the extension. Settings = DscExtensionSettingsSerializer.SerializePublicSettings(publicSettings), //PrivateConfuguration contains sensitive data in a plain text ProtectedSettings = DscExtensionSettingsSerializer.SerializePrivateSettings(privateSettings), AutoUpgradeMinorVersion = AutoUpdate.IsPresent }; //Add retry logic due to CRP service restart known issue CRP bug: 3564713 var count = 1; ComputeLongRunningOperationResponse op = null; while (count <= 2) { op = VirtualMachineExtensionClient.CreateOrUpdate( ResourceGroupName, VMName, parameters); if (ComputeOperationStatus.Failed.Equals(op.Status) && op.Error != null && "InternalExecutionError".Equals(op.Error.Code)) { count++; } else { break; } } var result = Mapper.Map <PSComputeLongRunningOperation>(op); WriteObject(result); }
private void CreateConfiguration() { var publicSettings = new DscExtensionPublicSettings(); var privateSettings = new DscExtensionPrivateSettings(); if (!string.IsNullOrEmpty(ArchiveBlobName)) { ConfigurationUris configurationUris = UploadConfigurationDataToBlob(); publicSettings.SasToken = configurationUris.SasToken; publicSettings.ModulesUrl = configurationUris.ModulesUrl; Hashtable privacySetting = new Hashtable(); privacySetting.Add("DataCollection", DataCollection); publicSettings.Privacy = privacySetting; publicSettings.ConfigurationFunction = string.Format( CultureInfo.InvariantCulture, "{0}\\{1}", Path.GetFileNameWithoutExtension(ArchiveBlobName), ConfigurationName); Tuple <DscExtensionPublicSettings.Property[], Hashtable> settings = DscExtensionSettingsSerializer.SeparatePrivateItems(ConfigurationArgument); publicSettings.Properties = settings.Item1; privateSettings.Items = settings.Item2; privateSettings.DataBlobUri = configurationUris.DataBlobUri; if (!string.IsNullOrEmpty(WmfVersion)) { publicSettings.WmfVersion = WmfVersion; } } if (string.IsNullOrEmpty(this.Location)) { this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName); } var parameters = new VirtualMachineExtension { Location = this.Location, Publisher = DscExtensionCmdletConstants.ExtensionPublishedNamespace, VirtualMachineExtensionType = DscExtensionCmdletConstants.ExtensionPublishedName, TypeHandlerVersion = Version, // Define the public and private property bags that will be passed to the extension. Settings = publicSettings, //PrivateConfuguration contains sensitive data in a plain text ProtectedSettings = privateSettings, AutoUpgradeMinorVersion = AutoUpdate.IsPresent }; //Add retry logic due to CRP service restart known issue CRP bug: 3564713 var count = 1; Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null; while (true) { try { op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync( ResourceGroupName, VMName, Name ?? DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName, parameters).GetAwaiter().GetResult(); break; } catch (Rest.Azure.CloudException ex) { var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>( ex.Response.Content); if ("Failed".Equals(errorReturned.Status) && errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code)) { count++; if (count <= 2) { continue; } } ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null)); } } var result = ComputeAutoMapperProfile.Mapper.Map <PSAzureOperationResponse>(op); WriteObject(result); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); VirtualMachine vm = ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName); if (vm != null && vm.Resources != null) { VirtualMachineExtension extension = vm.Resources.Where(x => x.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace)).FirstOrDefault(); if (extension != null) { this.Name = extension.Name; this.Version = extension.TypeHandlerVersion; } this.Location = vm.Location; } var parameters = new VirtualMachineExtension { Location = this.Location, Publisher = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace, VirtualMachineExtensionType = VirtualMachineSqlServerExtensionContext.ExtensionPublishedType, TypeHandlerVersion = string.IsNullOrEmpty(this.Version) ? VirtualMachineSqlServerExtensionContext.ExtensionDefaultVersion : this.Version, Settings = this.GetPublicConfiguration(), ProtectedSettings = this.GetPrivateConfiguration(), }; // Add retry logic due to CRP service restart known issue CRP bug: 3564713 // Similair approach taken in DSC cmdlet as well var count = 1; Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null; while (count <= 2) { try { op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync( ResourceGroupName, VMName, Name ?? VirtualMachineSqlServerExtensionContext.ExtensionPublishedName, parameters).GetAwaiter().GetResult(); break; } catch (Rest.Azure.CloudException ex) { var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(ex.Response.Content); if ("Failed".Equals(errorReturned.Status) && errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code)) { count++; } else { base.ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null)); } } } var result = Mapper.Map <PSAzureOperationResponse>(op); WriteObject(result); }
protected void ExecuteVirtualMachineExtensionListMethod(object[] invokeMethodInputParameters) { var result = VirtualMachineExtensionClient.List(); WriteObject(result); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); string virtualMachineName = ""; string resourceGroup = ""; if (this.ParameterSetName.Equals(VMParameterSetName)) { virtualMachineName = this.VM.Name; if (this.VM.ResourceGroupName == null) { WriteError("The incoming virtual machine must have a 'resourceGroupName'.", this.VM); } resourceGroup = this.VM.ResourceGroupName; } else { virtualMachineName = VMName; resourceGroup = ResourceGroupName; } if (String.IsNullOrEmpty(Name)) { Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName; } if (Status) { var result = VirtualMachineExtensionClient.GetWithInstanceView(resourceGroup, virtualMachineName, Name); var extension = result.ToPSVirtualMachineExtension(resourceGroup, virtualMachineName); if ( extension.Publisher.Equals(DscExtensionCmdletConstants.ExtensionPublishedNamespace, StringComparison.InvariantCultureIgnoreCase) && extension.ExtensionType.Equals(DscExtensionCmdletConstants.ExtensionPublishedName, StringComparison.InvariantCultureIgnoreCase)) { WriteObject(GetDscExtensionContext(extension)); } else { WriteObject(null); } } else { var result = VirtualMachineExtensionClient.Get(resourceGroup, virtualMachineName, Name); var extension = result.ToPSVirtualMachineExtension(resourceGroup, virtualMachineName); if ( extension.Publisher.Equals( DscExtensionCmdletConstants.ExtensionPublishedNamespace, StringComparison.InvariantCultureIgnoreCase) && extension.ExtensionType.Equals( DscExtensionCmdletConstants.ExtensionPublishedName, StringComparison.InvariantCultureIgnoreCase)) { WriteObject(GetDscExtensionContext(extension)); } else { WriteObject(null); } } }