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; }
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); }
/// <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); }
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); } }
//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; }