/// <summary> /// Processes the Push-CloudServices commandlet synchronously. /// </summary> protected override void ProcessRecord() { var azureSubscription = new AzureSubscription(SettingsPath, SubscriptionId); var azureCert = new X509Certificate2(Convert.FromBase64String(azureSubscription.ManagementCertificate)); var credentials = new CertificateCloudCredentials(SubscriptionId, azureCert); FlexStreams.UseThreadQueue(ThreadAdapter); using (EventStream.Subscribe(e => WriteObject(e.Message))) using (var computeClient = new ComputeManagementClient(credentials)) using (var storageClient = new StorageManagementClient(credentials)) { var targetSlot = VipSwap ? DeploymentSlot.Staging : DeploymentSlot.Production; var storageAccount = storageClient.CreateContainerIfNotExistsAsync( StorageAccountName, StorageContainer, BlobContainerPublicAccessType.Off, SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List).Result; var blobClient = storageAccount.CreateCloudBlobClient(); var container = blobClient.GetContainerReference(StorageContainer); ProcessAsyncWork(ServiceNames.Select((t, i) => DeployCloudServiceAsync(computeClient, container, t, PackagePaths[i], ConfigurationPaths[i], DiagnosticsConfigurationPaths?[i], targetSlot)) .ToArray()); } WriteObject("Push-CloudServices completed!"); base.ProcessRecord(); }