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);
        }
Ejemplo n.º 2
0
        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);
        }