public void TestStopCloudService() { // Setup cloudService.Deployments.Add(deployment); UpdateDeploymentStatusInput actual = null; serviceManagementChannelMock.Setup(f => f.BeginUpdateDeploymentStatusBySlot( subscription.SubscriptionId, serviceName, DeploymentSlotType.Production, It.IsAny <UpdateDeploymentStatusInput>(), null, null)) .Callback(( string s, string name, string slot, UpdateDeploymentStatusInput input, AsyncCallback callback, object state) => actual = input); serviceManagementChannelMock.Setup(f => f.EndUpdateDeploymentStatusBySlot(It.IsAny <IAsyncResult>())); // Test client.StopCloudService(serviceName); // Assert Assert.AreEqual <string>(DeploymentStatus.Suspended, actual.Status); serviceManagementChannelMock.Verify( f => f.EndUpdateDeploymentStatusBySlot(It.IsAny <IAsyncResult>()), Times.Once()); }
public string UpdateDeploymentStatus(string serviceName, string deploymentSlot, DeploymentStatus status) { var deploymentStatus = new UpdateDeploymentStatusInput { Status = status.ToString() }; var formatter = new XmlMediaTypeFormatter(); formatter.SetSerializer <UpdateDeploymentStatusInput>(new DataContractSerializer(typeof(UpdateDeploymentStatusInput))); using (var content = new ObjectContent <UpdateDeploymentStatusInput>(deploymentStatus, "application/xml", new[] { formatter })) { var requestUri = string.Format("services/hostedservices/{0}/deploymentslots/{1}/?comp=status", serviceName, deploymentSlot); var response = this.client.Post(requestUri, content); if (!response.IsSuccessStatusCode) { var errorDetails = GetErrorDetails(response); throw new InvalidOperationException(errorDetails.Message); } return(response.Headers.GetValues(Constants.OperationTrackingIdHeader).FirstOrDefault()); } }
private void SetDeployment(string status, string serviceName, string slot) { var updateDeploymentStatus = new UpdateDeploymentStatusInput { Status = status }; InvokeInOperationContext(() => RetryCall(s => Channel.UpdateDeploymentStatusBySlot( s, serviceName, slot, updateDeploymentStatus))); }
protected override void PerformOperation(IServiceManagement channel) { var input = new UpdateDeploymentStatusInput() { Status = DeploymentStatus }; Console.WriteLine("Updating DeploymentStatus"); if (!string.IsNullOrEmpty(DeploymentName)) { channel.UpdateDeploymentStatus(SubscriptionId, HostedServiceName, DeploymentName, input); } else if (!string.IsNullOrEmpty(DeploymentSlot)) { channel.UpdateDeploymentStatusBySlot(SubscriptionId, HostedServiceName, DeploymentSlot, input); } }
/// <summary> /// Connect to an Azure subscription and set the deployment status. /// </summary> /// <returns>The asynchronous operation identifier.</returns> protected override string AzureExecute() { var updateDeploymentStatus = new UpdateDeploymentStatusInput() { Status = this.ServiceStatus.Get(this.ActivityContext) }; using (new OperationContextScope((IContextChannel)Channel)) { try { this.RetryCall(s => this.Channel.UpdateDeploymentStatusBySlot(s, this.ServiceName.Get(this.ActivityContext), this.Slot.Get(this.ActivityContext), updateDeploymentStatus)); return(RetrieveOperationId()); } catch (EndpointNotFoundException ex) { LogBuildMessage(ex.Message); return(null); } } }
public void ExecuteCommand() { string configString = string.Empty; if (!string.IsNullOrEmpty(Configuration)) { configString = General.GetConfiguration(Configuration); } // Upgrade Parameter Set if (string.Compare(ParameterSetName, "Upgrade", StringComparison.OrdinalIgnoreCase) == 0) { bool removePackage = false; CurrentSubscription = this.GetCurrentSubscription(); var storageName = CurrentSubscription.CurrentStorageAccount; Uri packageUrl = null; if (Package.StartsWith(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || Package.StartsWith(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) { packageUrl = new Uri(Package); } else { if (string.IsNullOrEmpty(storageName)) { throw new ArgumentException("CurrentStorageAccount is not set. Use Set-AzureSubscription subname -CurrentStorageAccount storageaccount to set it."); } var progress = new ProgressRecord(0, "Please wait...", "Uploading package to blob storage"); WriteProgress(progress); removePackage = true; InvokeInOperationContext(() => packageUrl = RetryCall(s => AzureBlob.UploadPackageToBlob(this.Channel, storageName, s, Package, null))); } var upgradeDeploymentInput = new UpgradeDeploymentInput { Mode = Mode ?? UpgradeType.Auto, Configuration = configString, PackageUrl = packageUrl, Label = Label != null ? Label : ServiceName, Force = Force.IsPresent }; if (!string.IsNullOrEmpty(RoleName)) { upgradeDeploymentInput.RoleToUpgrade = RoleName; } using (new OperationContextScope(Channel.ToContextChannel())) { try { ExecuteClientAction(upgradeDeploymentInput, CommandRuntime.ToString(), s => this.Channel.UpgradeDeploymentBySlot(s, this.ServiceName, this.Slot, upgradeDeploymentInput)); if (removePackage == true) { this.RetryCall(s => AzureBlob.DeletePackageFromBlob( this.Channel, storageName, s, packageUrl)); } } catch (ServiceManagementClientException ex) { this.WriteErrorDetails(ex); } } } else if (string.Compare(this.ParameterSetName, "Config", StringComparison.OrdinalIgnoreCase) == 0) { // Config parameter set var changeConfiguration = new ChangeConfigurationInput { Configuration = configString }; ExecuteClientActionInOCS(changeConfiguration, CommandRuntime.ToString(), s => this.Channel.ChangeConfigurationBySlot(s, this.ServiceName, this.Slot, changeConfiguration)); } else { // Status parameter set var updateDeploymentStatus = new UpdateDeploymentStatusInput() { Status = this.NewStatus }; ExecuteClientActionInOCS(null, CommandRuntime.ToString(), s => this.Channel.UpdateDeploymentStatusBySlot(s, this.ServiceName, this.Slot, updateDeploymentStatus)); } }
private void SetDeployment(string status, string serviceName, string slot) { var updateDeploymentStatus = new UpdateDeploymentStatusInput { Status = status }; InvokeInOperationContext(() => RetryCall(s => Channel.UpdateDeploymentStatusBySlot( s, serviceName, slot, updateDeploymentStatus))); }
public static void UpdateDeploymentStatusBySlot(this IServiceManagement proxy, string subscriptionId, string serviceName, string deploymentSlot, UpdateDeploymentStatusInput input) { proxy.EndUpdateDeploymentStatusBySlot(proxy.BeginUpdateDeploymentStatusBySlot(subscriptionId, serviceName, deploymentSlot, input, null, null)); }
public IAsyncResult BeginUpdateDeploymentStatusBySlot(string subscriptionId, string serviceName, string deploymentSlot, UpdateDeploymentStatusInput input, AsyncCallback callback, object state) { SimpleServiceManagementAsyncResult result = new SimpleServiceManagementAsyncResult(); result.Values["subscriptionId"] = subscriptionId; result.Values["serviceName"] = serviceName; result.Values["deploymentSlot"] = deploymentSlot; result.Values["input"] = input; result.Values["callback"] = callback; result.Values["state"] = state; return result; }
public void ExecuteCommand() { string configString = string.Empty; if (!string.IsNullOrEmpty(Configuration)) { configString = General.GetConfiguration(Configuration); } ExtensionConfiguration extConfig = null; if (ExtensionConfiguration != null) { var roleList = (from c in ExtensionConfiguration where c != null from r in c.Roles select r).GroupBy(r => r.ToString()).Select(g => g.First()); foreach (var role in roleList) { var result = from c in ExtensionConfiguration where c != null && c.Roles.Any(r => r.ToString() == role.ToString()) select string.Format("{0}.{1}", c.ProviderNameSpace, c.Type); foreach (var s in result) { if (result.Count(t => t == s) > 1) { throw new Exception(string.Format(Resources.ServiceExtensionCannotApplyExtensionsInSameType, s)); } } } Deployment deployment = Channel.GetDeploymentBySlot(CurrentSubscription.SubscriptionId, ServiceName, Slot); ExtensionManager extensionMgr = new ExtensionManager(this, ServiceName); ExtensionConfigurationBuilder configBuilder = extensionMgr.GetBuilder(); foreach (ExtensionConfigurationInput context in ExtensionConfiguration) { if (context != null) { if (context.X509Certificate != null) { var operationDescription = string.Format(Resources.ServiceExtensionUploadingCertificate, CommandRuntime, context.X509Certificate.Thumbprint); ExecuteClientActionInOCS(null, operationDescription, s => this.Channel.AddCertificates(s, this.ServiceName, CertUtils.Create(context.X509Certificate))); } ExtensionConfiguration currentConfig = extensionMgr.InstallExtension(context, Slot, deployment.ExtensionConfiguration); foreach (var r in currentConfig.AllRoles) { if (!extensionMgr.GetBuilder(deployment.ExtensionConfiguration).ExistAny(r.Id)) { configBuilder.AddDefault(r.Id); } } foreach (var r in currentConfig.NamedRoles) { foreach (var e in r.Extensions) { if (!extensionMgr.GetBuilder(deployment.ExtensionConfiguration).ExistAny(e.Id)) { configBuilder.Add(r.RoleName, e.Id); } } } } } extConfig = configBuilder.ToConfiguration(); } // Upgrade Parameter Set if (string.Compare(ParameterSetName, "Upgrade", StringComparison.OrdinalIgnoreCase) == 0) { bool removePackage = false; CurrentSubscription = this.GetCurrentSubscription(); var storageName = CurrentSubscription.CurrentStorageAccount; Uri packageUrl = null; if (Package.StartsWith(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || Package.StartsWith(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) { packageUrl = new Uri(Package); } else { if (string.IsNullOrEmpty(storageName)) { throw new ArgumentException(Resources.CurrentStorageAccountIsNotSet); } var progress = new ProgressRecord(0, Resources.WaitForUploadingPackage, Resources.UploadingPackage); WriteProgress(progress); removePackage = true; InvokeInOperationContext(() => packageUrl = RetryCall(s => AzureBlob.UploadPackageToBlob(this.Channel, storageName, s, Package, null))); } var upgradeDeploymentInput = new UpgradeDeploymentInput { Mode = Mode ?? UpgradeType.Auto, Configuration = configString, ExtensionConfiguration = extConfig, PackageUrl = packageUrl, Label = Label ?? ServiceName, Force = Force.IsPresent }; if (!string.IsNullOrEmpty(RoleName)) { upgradeDeploymentInput.RoleToUpgrade = RoleName; } using (new OperationContextScope(Channel.ToContextChannel())) { try { ExecuteClientAction(upgradeDeploymentInput, CommandRuntime.ToString(), s => this.Channel.UpgradeDeploymentBySlot(s, this.ServiceName, this.Slot, upgradeDeploymentInput)); if (removePackage == true) { this.RetryCall(s => AzureBlob.DeletePackageFromBlob( this.Channel, storageName, s, packageUrl)); } } catch (ServiceManagementClientException ex) { this.WriteErrorDetails(ex); } } } else if (string.Compare(this.ParameterSetName, "Config", StringComparison.OrdinalIgnoreCase) == 0) { // Config parameter set var changeConfiguration = new ChangeConfigurationInput { Configuration = configString, ExtensionConfiguration = extConfig }; ExecuteClientActionInOCS(changeConfiguration, CommandRuntime.ToString(), s => this.Channel.ChangeConfigurationBySlot(s, this.ServiceName, this.Slot, changeConfiguration)); } else { // Status parameter set var updateDeploymentStatus = new UpdateDeploymentStatusInput { Status = this.NewStatus }; ExecuteClientActionInOCS(null, CommandRuntime.ToString(), s => this.Channel.UpdateDeploymentStatusBySlot(s, this.ServiceName, this.Slot, updateDeploymentStatus)); } }
public static void UpdateDeploymentStatusBySlot(this IServiceManagement proxy, string subscriptionId, string serviceName, string deploymentSlot, UpdateDeploymentStatusInput input) { proxy.EndUpdateDeploymentStatusBySlot(proxy.BeginUpdateDeploymentStatusBySlot(subscriptionId, serviceName, deploymentSlot, input, null, null)); }
public void ExecuteCommand() { string configString = string.Empty; if (!string.IsNullOrEmpty(Configuration)) { configString = General.GetConfiguration(Configuration); } // Upgrade Parameter Set if (string.Compare(ParameterSetName, "Upgrade", StringComparison.OrdinalIgnoreCase) == 0) { bool removePackage = false; CurrentSubscription = this.GetCurrentSubscription(); var storageName = CurrentSubscription.CurrentStorageAccount; Uri packageUrl = null; if (Package.StartsWith(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || Package.StartsWith(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) { packageUrl = new Uri(Package); } else { if (string.IsNullOrEmpty(storageName)) { throw new ArgumentException("CurrentStorageAccount is not set. Use Set-AzureSubscription subname -CurrentStorageAccount storageaccount to set it."); } var progress = new ProgressRecord(0, "Please wait...", "Uploading package to blob storage"); WriteProgress(progress); removePackage = true; InvokeInOperationContext(() => packageUrl = RetryCall(s => AzureBlob.UploadPackageToBlob(this.Channel, storageName, s, Package, null))); } var upgradeDeploymentInput = new UpgradeDeploymentInput { Mode = Mode ?? UpgradeType.Auto, Configuration = configString, PackageUrl = packageUrl, Label = Label != null ? Label : ServiceName, Force = Force.IsPresent }; if (!string.IsNullOrEmpty(RoleName)) { upgradeDeploymentInput.RoleToUpgrade = RoleName; } using (new OperationContextScope(Channel.ToContextChannel())) { try { ExecuteClientAction(upgradeDeploymentInput, CommandRuntime.ToString(), s => this.Channel.UpgradeDeploymentBySlot(s, this.ServiceName, this.Slot, upgradeDeploymentInput)); if (removePackage == true) { this.RetryCall(s => AzureBlob.DeletePackageFromBlob( this.Channel, storageName, s, packageUrl)); } } catch (ServiceManagementClientException ex) { this.WriteErrorDetails(ex); } } } else if (string.Compare(this.ParameterSetName, "Config", StringComparison.OrdinalIgnoreCase) == 0) { // Config parameter set var changeConfiguration = new ChangeConfigurationInput { Configuration = configString }; ExecuteClientActionInOCS(changeConfiguration, CommandRuntime.ToString(), s => this.Channel.ChangeConfigurationBySlot(s, this.ServiceName, this.Slot, changeConfiguration)); } else { // Status parameter set var updateDeploymentStatus = new UpdateDeploymentStatusInput() { Status = this.NewStatus }; ExecuteClientActionInOCS(null, CommandRuntime.ToString(), s => this.Channel.UpdateDeploymentStatusBySlot(s, this.ServiceName, this.Slot, updateDeploymentStatus)); } }
public void SetDeploymentTmpProcess() { SetAzureDeploymentCommand.SetAzureDeploymentCommand variable = null; string mode; string base64String; string empty = string.Empty; if (!string.IsNullOrEmpty(this.Configuration)) { empty = Utility.GetConfiguration(this.Configuration); } if (string.Compare(base.ParameterSetName, "Upgrade", StringComparison.OrdinalIgnoreCase) != 0) { if (string.Compare(base.ParameterSetName, "Config", StringComparison.OrdinalIgnoreCase) != 0) { Action <string> action = null; UpdateDeploymentStatusInput updateDeploymentStatusInput = new UpdateDeploymentStatusInput(); updateDeploymentStatusInput.Status = this.NewStatus; UpdateDeploymentStatusInput updateDeploymentStatusInput1 = updateDeploymentStatusInput; using (OperationContextScope operationContextScope = new OperationContextScope((IContextChannel)base.Channel)) { try { SetAzureDeploymentCommand setAzureDeploymentCommand = this; if (action == null) { action = (string s) => base.Channel.UpdateDeploymentStatusBySlot(s, this.ServiceName, this.Slot, updateDeploymentStatusInput1); } ((CmdletBase <IServiceManagement>)setAzureDeploymentCommand).RetryCall(action); Operation operation = base.WaitForOperation(base.CommandRuntime.ToString()); ManagementOperationContext managementOperationContext = new ManagementOperationContext(); managementOperationContext.set_OperationDescription(base.CommandRuntime.ToString()); managementOperationContext.set_OperationId(operation.OperationTrackingId); managementOperationContext.set_OperationStatus(operation.Status); ManagementOperationContext managementOperationContext1 = managementOperationContext; base.WriteObject(managementOperationContext1, true); } catch (CommunicationException communicationException1) { CommunicationException communicationException = communicationException1; this.WriteErrorDetails(communicationException); } } } else { Action <string> action1 = null; ChangeConfigurationInput changeConfigurationInput = new ChangeConfigurationInput(); changeConfigurationInput.Configuration = empty; ChangeConfigurationInput changeConfigurationInput1 = changeConfigurationInput; using (OperationContextScope operationContextScope1 = new OperationContextScope((IContextChannel)base.Channel)) { try { CmdletExtensions.WriteVerboseOutputForObject(this, changeConfigurationInput1); SetAzureDeploymentCommand setAzureDeploymentCommand1 = this; if (action1 == null) { action1 = (string s) => base.Channel.ChangeConfigurationBySlot(s, this.ServiceName, this.Slot, changeConfigurationInput1); } ((CmdletBase <IServiceManagement>)setAzureDeploymentCommand1).RetryCall(action1); Operation operation1 = base.WaitForOperation(base.CommandRuntime.ToString()); ManagementOperationContext managementOperationContext2 = new ManagementOperationContext(); managementOperationContext2.set_OperationDescription(base.CommandRuntime.ToString()); managementOperationContext2.set_OperationId(operation1.OperationTrackingId); managementOperationContext2.set_OperationStatus(operation1.Status); ManagementOperationContext managementOperationContext3 = managementOperationContext2; base.WriteObject(managementOperationContext3, true); } catch (CommunicationException communicationException3) { CommunicationException communicationException2 = communicationException3; this.WriteErrorDetails(communicationException2); } } } } else { Func <string, Uri> func = null; Action <string> action2 = null; Action <string> action3 = null; bool flag = false; base.CurrentSubscription = CmdletSubscriptionExtensions.GetCurrentSubscription(this); string currentStorageAccount = base.CurrentSubscription.CurrentStorageAccount; if (this.Package.StartsWith(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || this.Package.StartsWith(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) { Uri uri = new Uri(this.Package); } else { if (!string.IsNullOrEmpty(currentStorageAccount)) { ProgressRecord progressRecord = new ProgressRecord(0, "Please wait...", "Uploading package to blob storage"); base.WriteProgress(progressRecord); flag = true; SetAzureDeploymentCommand variable1 = variable; SetAzureDeploymentCommand setAzureDeploymentCommand2 = this; if (func == null) { func = (string s) => AzureBlob.UploadPackageToBlob(this.CreateChannel(), currentStorageAccount, s, this.Package); } packageUrl = ((CmdletBase <IServiceManagement>)setAzureDeploymentCommand2).RetryCall <Uri>(func); } else { throw new ArgumentException("CurrentStorageAccount is not set. Use Set-AzureSubscription subname -CurrentStorageAccount storageaccount to set it."); } } SetAzureDeploymentCommand variable2 = variable; UpgradeDeploymentInput upgradeDeploymentInput = new UpgradeDeploymentInput(); UpgradeDeploymentInput upgradeDeploymentInput1 = upgradeDeploymentInput; if (this.Mode == null) { mode = "Auto"; } else { mode = this.Mode; } upgradeDeploymentInput1.Mode = mode; upgradeDeploymentInput.Configuration = empty; upgradeDeploymentInput.PackageUrl = uri; UpgradeDeploymentInput upgradeDeploymentInput2 = upgradeDeploymentInput; if (this.Label != null) { base64String = ServiceManagementHelper.EncodeToBase64String(this.Label); } else { base64String = ServiceManagementHelper.EncodeToBase64String(this.ServiceName); } upgradeDeploymentInput2.Label = base64String; SwitchParameter force = this.Force; upgradeDeploymentInput.Force = new bool?(force.IsPresent); variable2.upgradeDeploymentInput = upgradeDeploymentInput; if (!string.IsNullOrEmpty(this.RoleName)) { UpgradeDeploymentInput roleName = this.RoleName; } using (OperationContextScope operationContextScope2 = new OperationContextScope((IContextChannel)base.Channel)) { try { CmdletExtensions.WriteVerboseOutputForObject(this, roleName); SetAzureDeploymentCommand setAzureDeploymentCommand3 = this; if (action2 == null) { action2 = (string s) => this.Channel.UpgradeDeploymentBySlot(s, this.ServiceName, this.Slot, this.upgradeDeploymentInput); } ((CmdletBase <IServiceManagement>)setAzureDeploymentCommand3).RetryCall(action2); Operation operation2 = base.WaitForOperation(base.CommandRuntime.ToString()); ManagementOperationContext managementOperationContext4 = new ManagementOperationContext(); managementOperationContext4.OperationDescription = base.CommandRuntime.ToString(); managementOperationContext4.OperationId = operation2.OperationTrackingId; managementOperationContext4.OperationStatus = operation2.Status; ManagementOperationContext managementOperationContext5 = managementOperationContext4; base.WriteObject(managementOperationContext5, true); if (flag) { SetAzureDeploymentCommand setAzureDeploymentCommand4 = this; if (action3 == null) { action3 = (string s) => AzureBlob.DeletePackageFromBlob(base.Channel, currentStorageAccount, s, uri); } ((CmdletBase <IServiceManagement>)setAzureDeploymentCommand4).RetryCall(action3); } } catch (CommunicationException communicationException5) { CommunicationException communicationException4 = communicationException5; this.WriteErrorDetails(communicationException4); } } } }
public void ExecuteCommand() { string configString = string.Empty; if (!string.IsNullOrEmpty(Configuration)) { configString = General.GetConfiguration(Configuration); } ExtensionConfiguration extConfig = null; if (ExtensionConfiguration != null) { var roleList = (from c in ExtensionConfiguration where c != null from r in c.Roles select r).GroupBy(r => r.ToString()).Select(g => g.First()); foreach (var role in roleList) { var result = from c in ExtensionConfiguration where c != null && c.Roles.Any(r => r.ToString() == role.ToString()) select string.Format("{0}.{1}", c.ProviderNameSpace, c.Type); foreach (var s in result) { if (result.Count(t => t == s) > 1) { throw new Exception(string.Format(Resources.ServiceExtensionCannotApplyExtensionsInSameType, s)); } } } Deployment deployment = Channel.GetDeploymentBySlot(CurrentSubscription.SubscriptionId, ServiceName, Slot); ExtensionManager extensionMgr = new ExtensionManager(Channel, CurrentSubscription.SubscriptionId, ServiceName); ExtensionConfigurationBuilder configBuilder = extensionMgr.GetBuilder(); foreach (ExtensionConfigurationInput context in ExtensionConfiguration) { if (context != null) { if (context.X509Certificate != null) { var operationDescription = string.Format(Resources.ServiceExtensionUploadingCertificate, CommandRuntime, context.X509Certificate.Thumbprint); ExecuteClientActionInOCS(null, operationDescription, s => this.Channel.AddCertificates(s, this.ServiceName, CertUtils.Create(context.X509Certificate))); } ExtensionConfiguration currentConfig = extensionMgr.InstallExtension(context, Slot, deployment.ExtensionConfiguration); foreach (var r in currentConfig.AllRoles) { if (!extensionMgr.GetBuilder(deployment.ExtensionConfiguration).ExistAny(r.Id)) { configBuilder.AddDefault(r.Id); } } foreach (var r in currentConfig.NamedRoles) { foreach (var e in r.Extensions) { if (!extensionMgr.GetBuilder(deployment.ExtensionConfiguration).ExistAny(e.Id)) { configBuilder.Add(r.RoleName, e.Id); } } } } } extConfig = configBuilder.ToConfiguration(); } // Upgrade Parameter Set if (string.Compare(ParameterSetName, "Upgrade", StringComparison.OrdinalIgnoreCase) == 0) { bool removePackage = false; CurrentSubscription = this.GetCurrentSubscription(); var storageName = CurrentSubscription.CurrentStorageAccount; Uri packageUrl = null; if (Package.StartsWith(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) || Package.StartsWith(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) { packageUrl = new Uri(Package); } else { if (string.IsNullOrEmpty(storageName)) { throw new ArgumentException(Resources.CurrentStorageAccountIsNotSet); } var progress = new ProgressRecord(0, Resources.WaitForUploadingPackage, Resources.UploadingPackage); WriteProgress(progress); removePackage = true; InvokeInOperationContext(() => packageUrl = RetryCall(s => AzureBlob.UploadPackageToBlob(this.Channel, storageName, s, Package, null))); } var upgradeDeploymentInput = new UpgradeDeploymentInput { Mode = Mode ?? UpgradeType.Auto, Configuration = configString, ExtensionConfiguration = extConfig, PackageUrl = packageUrl, Label = Label ?? ServiceName, Force = Force.IsPresent }; if (!string.IsNullOrEmpty(RoleName)) { upgradeDeploymentInput.RoleToUpgrade = RoleName; } using (new OperationContextScope(Channel.ToContextChannel())) { try { ExecuteClientAction(upgradeDeploymentInput, CommandRuntime.ToString(), s => this.Channel.UpgradeDeploymentBySlot(s, this.ServiceName, this.Slot, upgradeDeploymentInput)); if (removePackage == true) { this.RetryCall(s => AzureBlob.DeletePackageFromBlob( this.Channel, storageName, s, packageUrl)); } } catch (ServiceManagementClientException ex) { this.WriteErrorDetails(ex); } } } else if (string.Compare(this.ParameterSetName, "Config", StringComparison.OrdinalIgnoreCase) == 0) { // Config parameter set var changeConfiguration = new ChangeConfigurationInput { Configuration = configString, ExtensionConfiguration = extConfig }; ExecuteClientActionInOCS(changeConfiguration, CommandRuntime.ToString(), s => this.Channel.ChangeConfigurationBySlot(s, this.ServiceName, this.Slot, changeConfiguration)); } else { // Status parameter set var updateDeploymentStatus = new UpdateDeploymentStatusInput { Status = this.NewStatus }; ExecuteClientActionInOCS(null, CommandRuntime.ToString(), s => this.Channel.UpdateDeploymentStatusBySlot(s, this.ServiceName, this.Slot, updateDeploymentStatus)); } }