Example #1
0
        private static void UnmarshallResult(XmlUnmarshallerContext context, ListStackResourcesResponse response)
        {
            int originalDepth = context.CurrentDepth;
            int targetDepth   = originalDepth + 1;

            if (context.IsStartOfDocument)
            {
                targetDepth += 2;
            }

            while (context.ReadAtDepth(originalDepth))
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("NextToken", targetDepth))
                    {
                        var unmarshaller = StringUnmarshaller.Instance;
                        response.NextToken = unmarshaller.Unmarshall(context);
                        continue;
                    }
                    if (context.TestExpression("StackResourceSummaries/member", targetDepth))
                    {
                        var unmarshaller = StackResourceSummaryUnmarshaller.Instance;
                        var item         = unmarshaller.Unmarshall(context);
                        response.StackResourceSummaries.Add(item);
                        continue;
                    }
                }
            }

            return;
        }
Example #2
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonCloudFormationConfig config = new AmazonCloudFormationConfig();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonCloudFormationClient client = new AmazonCloudFormationClient(creds, config);

            ListStackResourcesResponse resp = new ListStackResourcesResponse();

            do
            {
                ListStackResourcesRequest req = new ListStackResourcesRequest
                {
                    NextToken = resp.NextToken
                };

                resp = client.ListStackResources(req);
                CheckError(resp.HttpStatusCode, "200");

                foreach (var obj in resp.StackResourceSummaries)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextToken));
        }
        /// <summary>
        /// <para> Returns descriptions for all resources of the specified stack. </para> <para>For deleted stacks, ListStackResources returns resource
        /// information for up to 90 days after the stack has been deleted. </para>
        /// </summary>
        ///
        /// <param name="listStackResourcesRequest">Container for the necessary parameters to execute the ListStackResources service method on
        ///           AmazonCloudFormation.</param>
        ///
        /// <returns>The response from the ListStackResources service method, as returned by AmazonCloudFormation.</returns>
        ///
        public ListStackResourcesResponse ListStackResources(ListStackResourcesRequest listStackResourcesRequest)
        {
            IRequest <ListStackResourcesRequest> request  = new ListStackResourcesRequestMarshaller().Marshall(listStackResourcesRequest);
            ListStackResourcesResponse           response = Invoke <ListStackResourcesRequest, ListStackResourcesResponse> (request, this.signer, ListStackResourcesResponseUnmarshaller.GetInstance());

            return(response);
        }
Example #4
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            ListStackResourcesResponse response = new ListStackResourcesResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.IsStartElement)
                {
                    if (context.TestExpression("ListStackResourcesResult", 2))
                    {
                        UnmarshallResult(context, response);
                        continue;
                    }

                    if (context.TestExpression("ResponseMetadata", 2))
                    {
                        response.ResponseMetadata = ResponseMetadataUnmarshaller.Instance.Unmarshall(context);
                    }
                }
            }

            return(response);
        }
        public static ListStackResourcesResponse Unmarshall(UnmarshallerContext _ctx)
        {
            ListStackResourcesResponse listStackResourcesResponse = new ListStackResourcesResponse();

            listStackResourcesResponse.HttpResponse = _ctx.HttpResponse;
            listStackResourcesResponse.RequestId    = _ctx.StringValue("ListStackResources.RequestId");

            List <ListStackResourcesResponse.ListStackResources_Resource> listStackResourcesResponse_resources = new List <ListStackResourcesResponse.ListStackResources_Resource>();

            for (int i = 0; i < _ctx.Length("ListStackResources.Resources.Length"); i++)
            {
                ListStackResourcesResponse.ListStackResources_Resource resource = new ListStackResourcesResponse.ListStackResources_Resource();
                resource.CreateTime          = _ctx.StringValue("ListStackResources.Resources[" + i + "].CreateTime");
                resource.LogicalResourceId   = _ctx.StringValue("ListStackResources.Resources[" + i + "].LogicalResourceId");
                resource.PhysicalResourceId  = _ctx.StringValue("ListStackResources.Resources[" + i + "].PhysicalResourceId");
                resource.ResourceType        = _ctx.StringValue("ListStackResources.Resources[" + i + "].ResourceType");
                resource.StackId             = _ctx.StringValue("ListStackResources.Resources[" + i + "].StackId");
                resource.StackName           = _ctx.StringValue("ListStackResources.Resources[" + i + "].StackName");
                resource.Status              = _ctx.StringValue("ListStackResources.Resources[" + i + "].Status");
                resource.StatusReason        = _ctx.StringValue("ListStackResources.Resources[" + i + "].StatusReason");
                resource.UpdateTime          = _ctx.StringValue("ListStackResources.Resources[" + i + "].UpdateTime");
                resource.ResourceDriftStatus = _ctx.StringValue("ListStackResources.Resources[" + i + "].ResourceDriftStatus");
                resource.DriftDetectionTime  = _ctx.StringValue("ListStackResources.Resources[" + i + "].DriftDetectionTime");

                listStackResourcesResponse_resources.Add(resource);
            }
            listStackResourcesResponse.Resources = listStackResourcesResponse_resources;

            return(listStackResourcesResponse);
        }
Example #6
0
        private void ProcessLiveStackResourcess(ListStackResourcesResponse liveStackResources, CFStack stack, AmazonEC2Client ec2Client, Dictionary <string, string> secGroupMap, string stackName, AmazonCloudFormationClient cfClient)
        {
            foreach (StackResourceSummary liveStackResource in liveStackResources.StackResourceSummaries)
            {
                switch (liveStackResource.ResourceType)
                {
                case "AWS::EC2::SecurityGroup":
                    AWSUtils.ProcessEC2SecurityGroupFromAWS(liveStackResource, stack, ec2Client, secGroupMap, stackName);
                    break;

                case "AWS::EC2::NetworkAcl":
                    AWSUtils.ProcessNetworkAclFromAWS(liveStackResource, stack, ec2Client, stackName);
                    break;

                default:
                    break;
                }
            }

            if (liveStackResources.NextToken != null)
            {
                ListStackResourcesRequest lr = new ListStackResourcesRequest();
                lr.StackName       = stackName;
                lr.NextToken       = liveStackResources.NextToken;
                liveStackResources = cfClient.ListStackResources(lr);
                ProcessLiveStackResourcess(liveStackResources, stack, ec2Client, secGroupMap, stackName, cfClient);
            }
        }
Example #7
0
        //private ListStackResourcesResponse ListStackResources(string stackName, AmazonCloudFormationClient cfClient, string nextToken = null)
        //{
        //    ListStackResourcesRequest lr = new ListStackResourcesRequest();
        //    lr.StackName = stackName;
        //    lr.NextToken = nextToken;
        //    ListStackResourcesResponse liveStackResources = cfClient.ListStackResources(lr);
        //    return liveStackResources;
        //}

        private void ProcessLiveStack(string stackName, AmazonCloudFormationClient cfClient, AmazonEC2Client ec2Client, RichTextBox rtb, CFStack stack)
        {
            Dictionary <string, string>   secGroupMap        = new Dictionary <string, string>();
            DescribeSecurityGroupsRequest secGroupRequestAll = new DescribeSecurityGroupsRequest();
            //Get all security group Id's and cf logicalId's (if any)
            DescribeSecurityGroupsResponse secGroupResponseAll = ec2Client.DescribeSecurityGroups(secGroupRequestAll);

            foreach (SecurityGroup sg in secGroupResponseAll.SecurityGroups)
            {
                string value = "none";
                foreach (Amazon.EC2.Model.Tag tag in sg.Tags)
                {
                    if (tag.Key.Contains("aws:cloudformation:logical-id"))
                    {
                        value = tag.Value;
                    }
                }
                secGroupMap.Add(sg.GroupId, value);
            }



            //Get Live Stack
            DescribeStacksRequest cfRequest = new DescribeStacksRequest();

            cfRequest.StackName = stackName;
            DescribeStacksResponse liveStack = cfClient.DescribeStacks(cfRequest);

            stack.Description = liveStack.Stacks[0].Description;

            //Get Stack Resouces
            //Need to use ListStackResourcesRequest to be able to get stacks with more than 100 resources
            ListStackResourcesRequest lr = new ListStackResourcesRequest();

            lr.StackName = stackName;
            ListStackResourcesResponse liveStackResources = cfClient.ListStackResources(lr);

            ProcessLiveStackResourcess(liveStackResources, stack, ec2Client, secGroupMap, stackName, cfClient);


            stack.Resources.Sort((a, b) => a.LogicalId.CompareTo(b.LogicalId));

            WriteOutput(stack, rtb, source1_CB.Text, templateOrStack1_TB.Text);
        }
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            ListStackResourcesResponse response = new ListStackResourcesResponse();

            while (context.Read())
            {
                if (context.IsStartElement)
                {
                    if (context.TestExpression("ListStackResourcesResult", 2))
                    {
                        response.ListStackResourcesResult = ListStackResourcesResultUnmarshaller.GetInstance().Unmarshall(context);
                        continue;
                    }
                    if (context.TestExpression("ResponseMetadata", 2))
                    {
                        response.ResponseMetadata = ResponseMetadataUnmarshaller.GetInstance().Unmarshall(context);
                    }
                }
            }


            return(response);
        }
        private static void UnmarshallResult(XmlUnmarshallerContext context, ListStackResourcesResponse response)
        {
            int originalDepth = context.CurrentDepth;
            int targetDepth   = originalDepth + 1;

            if (context.IsStartOfDocument)
            {
                targetDepth += 2;
            }

            while (context.Read())
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("StackResourceSummaries/member", targetDepth))
                    {
                        response.StackResourceSummaries.Add(StackResourceSummaryUnmarshaller.GetInstance().Unmarshall(context));

                        continue;
                    }
                    if (context.TestExpression("NextToken", targetDepth))
                    {
                        response.NextToken = StringUnmarshaller.GetInstance().Unmarshall(context);

                        continue;
                    }
                }
                else if (context.IsEndElement && context.CurrentDepth < originalDepth)
                {
                    return;
                }
            }



            return;
        }