/// <summary> /// Method to execute the command /// </summary> private void GetVaultSettingsFile() { AzureSubscription subscription = DefaultProfile.Context.Subscription; // Generate certificate X509Certificate2 cert = CertUtils.CreateSelfSignedCertificate(VaultCertificateExpiryInHoursForHRM, subscription.Id.ToString(), this.Vault.Name); ASRSite site = new ASRSite(); if (!string.IsNullOrEmpty(this.SiteIdentifier) && !string.IsNullOrEmpty(this.SiteFriendlyName)) { site.ID = this.SiteIdentifier; site.Name = this.SiteFriendlyName; } // Generate file. ASRVaultCreds vaultCreds = RecoveryServicesClient.GenerateVaultCredential( cert, this.Vault, site); string filePath = string.IsNullOrEmpty(this.Path) ? Utilities.GetDefaultPath() : this.Path; string fileName = this.GenerateFileName(); // write the content to a file. VaultSettingsFilePath output = new VaultSettingsFilePath() { FilePath = Utilities.WriteToFile <ASRVaultCreds>(vaultCreds, filePath, fileName) }; // print the path to the user. this.WriteObject(output, true); }
/// <summary> /// Method to execute the command /// </summary> private void GetByObject() { IAzureSubscription subscription = this.Profile.Context.Subscription; this.Vault.SubscriptionId = subscription.Id.ToString(); CloudService cloudService = RecoveryServicesClient.GetCloudServiceForVault(this.Vault); this.Vault.CloudServiceName = cloudService.Name; // Generate certificate X509Certificate2 cert = CertUtils.CreateSelfSignedCertificate(VaultCertificateExpiryInHoursForHRM, subscription.Id.ToString(), this.Vault.Name); var site = new Site(); if (this.Site != null) { site.ID = this.Site.ID; site.Name = this.Site.Name; site.Type = this.Site.Type; } // Generate file. ASRVaultCreds vaultCreds = RecoveryServicesClient.GenerateVaultCredential( cert, this.Vault, site); string filePath = string.IsNullOrEmpty(this.Path) ? Utilities.GetDefaultPath() : this.Path; string fileName = this.GenerateFileName(); // write the content to a file. VaultSettingsFilePath output = new VaultSettingsFilePath() { FilePath = Utilities.WriteToFile <ASRVaultCreds>(vaultCreds, filePath, fileName) }; // print the path to the user. this.WriteObject(output, true); }
/// <summary> /// Method to execute the command /// </summary> private void GetSiteRecoveryCredentials() { IAzureSubscription subscription = DefaultProfile.DefaultContext.Subscription; // Generate certificate X509Certificate2 cert = CertUtils.CreateSelfSignedCertificate( VaultCertificateExpiryInHoursForHRM, subscription.Id.ToString(), this.Vault.Name); ASRSite site = new ASRSite(); if (!string.IsNullOrEmpty(this.SiteIdentifier) && !string.IsNullOrEmpty(this.SiteFriendlyName)) { site.ID = this.SiteIdentifier; site.Name = this.SiteFriendlyName; } string fileName = this.GenerateFileName(); string filePath = string.IsNullOrEmpty(this.Path) ? Utilities.GetDefaultPath() : this.Path; // Generate file. if (RecoveryServicesClient.getVaultAuthType(this.Vault.ResourceGroupName, this.Vault.Name) == 0) { ASRVaultCreds vaultCreds = RecoveryServicesClient.GenerateVaultCredential( cert, this.Vault, site, AuthType.ACS); // write the content to a file. VaultSettingsFilePath output = new VaultSettingsFilePath() { FilePath = Utilities.WriteToFile <ASRVaultCreds>(vaultCreds, filePath, fileName) }; // print the path to the user. this.WriteObject(output, true); } else { string fullFilePath = System.IO.Path.Combine(filePath, fileName); WriteDebug( string.Format( CultureInfo.InvariantCulture, Resources.ExecutingGetVaultCredCmdlet, subscription.Id, this.Vault.ResourceGroupName, this.Vault.Name, fullFilePath)); VaultCertificateResponse vaultCertificateResponse = null; try { // Upload cert into ID Mgmt WriteDebug(string.Format(CultureInfo.InvariantCulture, Resources.UploadingCertToIdmgmt)); vaultCertificateResponse = UploadCert(cert); WriteDebug(string.Format(CultureInfo.InvariantCulture, Resources.UploadedCertToIdmgmt)); // generate vault credentials string vaultCredsFileContent = GenerateVaultCredsForSiteRecovery( cert, subscription.Id, vaultCertificateResponse, site); WriteDebug(string.Format(Resources.SavingVaultCred, fullFilePath)); File.WriteAllBytes(fullFilePath, Encoding.UTF8.GetBytes(vaultCredsFileContent)); VaultSettingsFilePath output = new VaultSettingsFilePath() { FilePath = fullFilePath, }; // Output filename back to user WriteObject(output, true); } catch (Exception exception) { throw exception; } } }