/// <summary> /// Get vaults under a resouce group. /// </summary> private void GetVaultsUnderResourceGroup() { VaultListResponse vaultListResponse = RecoveryServicesClient.GetVaultsInResouceGroup(this.ResourceGroupName); this.WriteVaults(vaultListResponse.Vaults); }
/// <summary> /// Get vaults under all resouce group. /// </summary> private void GetVaultsUnderAllResourceGroups() { foreach (var resourceGroup in RecoveryServicesClient.GetResouceGroups().ResourceGroups) { VaultListResponse vaultListResponse = RecoveryServicesClient.GetVaultsInResouceGroup(resourceGroup.Name); this.WriteVaults(vaultListResponse.Vaults); } }
public void RetrieveVault() { using (UndoContext context = UndoContext.Current) { context.Start(); var rsmClient = GetRecoveryServicesClient(CustomHttpHandler); VaultListResponse response = rsmClient.Vaults.Get(resourceGroupName, RequestHeaders); Assert.NotNull(response.Vaults[0].Name); Assert.NotNull(response.Vaults[0].Id); Assert.NotNull(response.Vaults[0].Properties.ProvisioningState); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
/// <summary> /// Gets the current vault location. /// </summary> /// <returns>The current vault location.</returns> protected string GetCurrentValutLocation() { string location = string.Empty; VaultListResponse vaultListResponse = RecoveryServicesClient.GetVaultsInResouceGroup(PSRecoveryServicesClient.asrVaultCreds.ResourceGroupName); foreach (Vault vault in vaultListResponse.Vaults) { if (0 == string.Compare(PSRecoveryServicesClient.asrVaultCreds.ResourceName, vault.Name, true)) { location = vault.Location; break; } } return(location); }
/// <summary> /// Get the Vaults. /// </summary> /// <param name='resourceGroupName'> /// Required. The name of the (resource group?) cloud service /// containing the vault collection. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <param name='cancellationToken'> /// Cancellation token. /// </param> /// <returns> /// The response model for Vault. /// </returns> public async Task <VaultListResponse> GetAsync(string resourceGroupName, CustomRequestHeaders customRequestHeaders, CancellationToken cancellationToken) { // Validate if (resourceGroupName == null) { throw new ArgumentNullException("resourceGroupName"); } // Tracing bool shouldTrace = TracingAdapter.IsEnabled; string invocationId = null; if (shouldTrace) { invocationId = TracingAdapter.NextInvocationId.ToString(); Dictionary <string, object> tracingParameters = new Dictionary <string, object>(); tracingParameters.Add("resourceGroupName", resourceGroupName); tracingParameters.Add("customRequestHeaders", customRequestHeaders); TracingAdapter.Enter(invocationId, this, "GetAsync", tracingParameters); } // Construct URL string url = ""; url = url + "/Subscriptions/"; if (this.Client.Credentials.SubscriptionId != null) { url = url + Uri.EscapeDataString(this.Client.Credentials.SubscriptionId); } url = url + "/resourceGroups/"; url = url + Uri.EscapeDataString(resourceGroupName); url = url + "/providers/"; url = url + Uri.EscapeDataString(this.Client.ResourceNamespace); url = url + "/"; url = url + "vaults"; List <string> queryParameters = new List <string>(); queryParameters.Add("api-version=2015-08-15"); if (queryParameters.Count > 0) { url = url + "?" + string.Join("&", queryParameters); } string baseUrl = this.Client.BaseUri.AbsoluteUri; // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl[baseUrl.Length - 1] == '/') { baseUrl = baseUrl.Substring(0, baseUrl.Length - 1); } if (url[0] == '/') { url = url.Substring(1); } url = baseUrl + "/" + url; url = url.Replace(" ", "%20"); // Create HTTP transport objects HttpRequestMessage httpRequest = null; try { httpRequest = new HttpRequestMessage(); httpRequest.Method = HttpMethod.Get; httpRequest.RequestUri = new Uri(url); // Set Headers httpRequest.Headers.Add("Accept-Language", customRequestHeaders.Culture); httpRequest.Headers.Add("x-ms-client-request-id", customRequestHeaders.ClientRequestId); httpRequest.Headers.Add("x-ms-version", "2015-01-01"); // Set Credentials cancellationToken.ThrowIfCancellationRequested(); await this.Client.Credentials.ProcessHttpRequestAsync(httpRequest, cancellationToken).ConfigureAwait(false); // Send Request HttpResponseMessage httpResponse = null; try { if (shouldTrace) { TracingAdapter.SendRequest(invocationId, httpRequest); } cancellationToken.ThrowIfCancellationRequested(); httpResponse = await this.Client.HttpClient.SendAsync(httpRequest, cancellationToken).ConfigureAwait(false); if (shouldTrace) { TracingAdapter.ReceiveResponse(invocationId, httpResponse); } HttpStatusCode statusCode = httpResponse.StatusCode; if (statusCode != HttpStatusCode.OK) { cancellationToken.ThrowIfCancellationRequested(); CloudException ex = CloudException.Create(httpRequest, null, httpResponse, await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false)); if (shouldTrace) { TracingAdapter.Error(invocationId, ex); } throw ex; } // Create Result VaultListResponse result = null; // Deserialize Response if (statusCode == HttpStatusCode.OK) { cancellationToken.ThrowIfCancellationRequested(); string responseContent = await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false); result = new VaultListResponse(); JToken responseDoc = null; if (string.IsNullOrEmpty(responseContent) == false) { responseDoc = JToken.Parse(responseContent); } if (responseDoc != null && responseDoc.Type != JTokenType.Null) { JToken valueArray = responseDoc["value"]; if (valueArray != null && valueArray.Type != JTokenType.Null) { foreach (JToken valueValue in ((JArray)valueArray)) { Vault vaultInstance = new Vault(); result.Vaults.Add(vaultInstance); JToken idValue = valueValue["id"]; if (idValue != null && idValue.Type != JTokenType.Null) { string idInstance = ((string)idValue); vaultInstance.Id = idInstance; } JToken nameValue = valueValue["name"]; if (nameValue != null && nameValue.Type != JTokenType.Null) { string nameInstance = ((string)nameValue); vaultInstance.Name = nameInstance; } JToken typeValue = valueValue["type"]; if (typeValue != null && typeValue.Type != JTokenType.Null) { string typeInstance = ((string)typeValue); vaultInstance.Type = typeInstance; } JToken locationValue = valueValue["location"]; if (locationValue != null && locationValue.Type != JTokenType.Null) { string locationInstance = ((string)locationValue); vaultInstance.Location = locationInstance; } JToken tagsSequenceElement = ((JToken)valueValue["tags"]); if (tagsSequenceElement != null && tagsSequenceElement.Type != JTokenType.Null) { foreach (JProperty property in tagsSequenceElement) { string tagsKey = ((string)property.Name); string tagsValue = ((string)property.Value); vaultInstance.Tags.Add(tagsKey, tagsValue); } } JToken propertiesValue = valueValue["properties"]; if (propertiesValue != null && propertiesValue.Type != JTokenType.Null) { VaultProperties propertiesInstance = new VaultProperties(); vaultInstance.Properties = propertiesInstance; JToken provisioningStateValue = propertiesValue["provisioningState"]; if (provisioningStateValue != null && provisioningStateValue.Type != JTokenType.Null) { string provisioningStateInstance = ((string)provisioningStateValue); propertiesInstance.ProvisioningState = provisioningStateInstance; } } JToken eTagValue = valueValue["eTag"]; if (eTagValue != null && eTagValue.Type != JTokenType.Null) { string eTagInstance = ((string)eTagValue); vaultInstance.ETag = eTagInstance; } } } } } result.StatusCode = statusCode; if (shouldTrace) { TracingAdapter.Exit(invocationId, result); } return(result); } finally { if (httpResponse != null) { httpResponse.Dispose(); } } } finally { if (httpRequest != null) { httpRequest.Dispose(); } } }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { string _azureToken = request.DataStore.GetJson("AzureToken")["access_token"].ToString(); string subscriptionID = request.DataStore.GetJson("SelectedSubscription")["SubscriptionId"].ToString(); string resourceGroup = request.DataStore.GetValue("SelectedResourceGroup"); string vaultName = request.DataStore.GetValue("VaultName") ?? "bpst-mscrm-vault"; string secretName = request.DataStore.GetValue("SecretName") ?? "bpst-mscrm-secret"; string connectionString = request.DataStore.GetAllValues("SqlConnectionString")[0]; string organizationId = request.DataStore.GetValue("OrganizationId"); string tenantId = request.DataStore.GetValue("TenantId") ?? "72f988bf-86f1-41af-91ab-2d7cd011db47"; SubscriptionCloudCredentials credentials = new TokenCloudCredentials(subscriptionID, _azureToken); using (KeyVaultManagementClient client = new KeyVaultManagementClient(credentials)) { // Check if a vault already exists Vault vault = null; VaultListResponse vaults = client.Vaults.List(resourceGroup, 100); foreach (var v in vaults.Vaults) { if (v.Name.EqualsIgnoreCase(vaultName)) { vault = (Vault)v; break; } } AccessPolicyEntry ape = new AccessPolicyEntry { PermissionsToSecrets = new[] { "get" }, ApplicationId = _crmServicePrincipal, ObjectId = _crmServicePrincipal }; // Create the vault if (vault == null) { using (ResourceManagementClient resourceClient = new ResourceManagementClient(credentials)) { // Set properties VaultProperties p = new VaultProperties(); p.Sku = new Sku() { Family = "A", Name = "standard" }; p.TenantId = new Guid(tenantId); // Set who has permission to read this p.AccessPolicies.Add(ape); VaultCreateOrUpdateParameters vaultParams = new VaultCreateOrUpdateParameters() { Location = resourceClient.ResourceGroups.Get(resourceGroup).ResourceGroup.Location, Properties = p }; vault = client.Vaults.CreateOrUpdate(resourceGroup, vaultName, vaultParams).Vault; } } else { // Set who has permission to read this vault.Properties.AccessPolicies.Add(ape); } // Create the secret KeyVaultClient kvClient = new KeyVaultClient(GetAccessToken); Secret secret = await kvClient.SetSecretAsync(vault.Properties.VaultUri, secretName, connectionString, new Dictionary <string, string>() { { organizationId, tenantId } }, null, new SecretAttributes() { Enabled = true }); request.DataStore.AddToDataStore("KeyVault", secret.Id, DataStoreType.Private); return(new ActionResponse(ActionStatus.Success, secret.Id, true)); } }