public async Task <CPSCloudResourceSummaryModel> GetSummary(string organization, string project, string service, List <string> environments, string feature, CPSAuthCredentialModel authCredential) { CPSCloudResourceSummaryModel summaryModel = new CPSCloudResourceSummaryModel(); try { var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(authCredential.AccessDirectory, authCredential.AccessAppId, authCredential.AccessAppSecret); ResourceManagementClient resourceManagementClient = new ResourceManagementClient(serviceCreds); resourceManagementClient.SubscriptionId = authCredential.AccessId; foreach (var environmentName in environments) { string resourceGroupName = $"{organization}{project}{service}{environmentName}{feature}".ToLower(); try { var resourceGroupResponse = resourceManagementClient.ResourceGroups.Get(resourceGroupName); if (resourceGroupResponse != null) { var environment = summaryModel.AddEnvironment(environmentName, resourceGroupResponse.Properties.ProvisioningState); var deployments = resourceManagementClient.Deployments.ListByResourceGroup(resourceGroupName, new Microsoft.Rest.Azure.OData.ODataQuery <Microsoft.Azure.Management.ResourceManager.Models.DeploymentExtendedFilter>() { Top = 1, OrderBy = "Name desc" }); DeploymentExtended deployment = null; foreach (var item in deployments) { deployment = item; break; } if (deployment != null && deployment.Properties.Outputs != null) { var outPuts = JObject.Parse(JsonConvert.SerializeObject(deployment.Properties.Outputs)); foreach (var output in outPuts) { string key = output.Key.First().ToString().ToUpper() + output.Key.Substring(1); environment.AddProperty(key, output.Value["value"].ToString()); } } } else { summaryModel.AddEnvironment(environmentName, "NO_DEPLOYED_YET"); } } catch (System.Exception ex) { summaryModel.AddEnvironment(environmentName, "NO_DEPLOYED_YET"); } } } catch (System.Exception) { } return(summaryModel); }
public async Task <CPSCloudResourceSummaryModel> GetSummary(string organization, string project, string service, List <string> environments, string feature, CPSAuthCredentialModel authCredential) { CPSCloudResourceSummaryModel summaryModel = new CPSCloudResourceSummaryModel(); try { AmazonCloudFormationClient client = new AmazonCloudFormationClient(authCredential.AccessId, authCredential.AccessSecret, Amazon.RegionEndpoint.GetBySystemName(authCredential.AccessRegion)); foreach (var environmentName in environments) { string stackName = $"{organization}{project}{service}{environmentName}{feature}".ToLower(); try { var stacksResponse = await client.DescribeStacksAsync(new DescribeStacksRequest() { StackName = stackName }); if (stacksResponse.HttpStatusCode == System.Net.HttpStatusCode.OK) { var stack = stacksResponse.Stacks.FirstOrDefault(); if (stack != null) { var environment = summaryModel.AddEnvironment(environmentName, stack.StackStatus.Value); if (stack.Outputs != null) { foreach (var output in stack.Outputs) { string key = output.OutputKey.First().ToString().ToUpper() + output.OutputKey.Substring(1); environment.AddProperty(key, output.OutputValue); } } } else { summaryModel.AddEnvironment(environmentName, "NO_DEPLOYED_YET"); } } } catch (System.Exception ex) { summaryModel.AddEnvironment(environmentName, "NO_DEPLOYED_YET"); } } } catch (System.Exception) { } return(summaryModel); }