/// <summary>
        /// Initiates the asynchronous execution of the DescribeTags operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the DescribeTags operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public Task <DescribeTagsResponse> DescribeTagsAsync(DescribeTagsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new DescribeTagsRequestMarshaller();
            var unmarshaller = DescribeTagsResponseUnmarshaller.Instance;

            return(InvokeAsync <DescribeTagsRequest, DescribeTagsResponse>(request, marshaller,
                                                                           unmarshaller, cancellationToken));
        }
Exemple #2
0
        //public async Task<string> CreateLoadBalancer(
        //    string name, List<string> securityGroups, List<string> subnets)
        //{
        //    var request = new CreateLoadBalancerRequest()
        //    {
        //        LoadBalancerName = name,
        //        SecurityGroups = securityGroups,
        //        Subnets = subnets,

        //        IpAddressType = IpAddressType.Ipv4,
        //        Scheme = LoadBalancerSchemeEnum.InternetFacing,
        //        //Type = LoadBalancerTypeEnum.Application
        //    };
        //    var response = await client.CreateLoadBalancerAsync(request);

        //    return response.LoadBalancers[0].LoadBalancerArn;
        //}

        public async Task <List <SA_LoadBalancer> > GetLoadBalancerList()
        {
            List <SA_LoadBalancer> lstLoadBalancers = new List <SA_LoadBalancer>();
            var request  = new DescribeLoadBalancersRequest();
            var response = await client.DescribeLoadBalancersAsync(request);

            var lstSourceELBs = response.LoadBalancerDescriptions;
            var reqTags       = new DescribeTagsRequest()
            {
                LoadBalancerNames = response.LoadBalancerDescriptions.Select(o => o.LoadBalancerName).ToList()
            };
            var respTags = await client.DescribeTagsAsync(reqTags);

            //LoadBalancer name like "awseb-e-c-AWSEBLoa-G25T4NILK22Q", need to get name from tag.
            foreach (var sourceELB in lstSourceELBs)
            {
                string tagName = string.Empty;
                //try
                //{
                //    var tags = respTags.TagDescriptions.Find
                //    (o => o.LoadBalancerName == sourceELB.LoadBalancerName).Tags.Find(o => o.Key == "Name").Value;
                //}
                //catch
                //{
                //    continue;
                //}
                var tags = respTags.TagDescriptions.Find
                               (o => o.LoadBalancerName == sourceELB.LoadBalancerName).Tags;
                var nameTag = tags.Find(o => o.Key == "Name");
                if (nameTag == null)
                {
                    continue;
                }

                tagName = nameTag.Value;
                if (!(tagName.IndexOf($"{environment}-{color}") == 0))   //check
                {
                    continue;
                }
                var elb = ModelTransformer <LoadBalancerDescription, SA_LoadBalancer> .
                          TransformAwsModelToSafeArrivalModel(sourceELB);

                elb.LoadBalancerName = tagName;
                lstLoadBalancers.Add(elb);
            }

            //lstLoadBalancers = lstLoadBalancers.FindAll(o => o.LoadBalancerName.Contains($"{environment}-"));
            return(lstLoadBalancers);
        }
Exemple #3
0
        /// <summary>
        /// 用于查询已建立的标签列表。
        /// </summary>
        /// <param name="req"><see cref="DescribeTagsRequest"/></param>
        /// <returns><see cref="DescribeTagsResponse"/></returns>
        public DescribeTagsResponse DescribeTagsSync(DescribeTagsRequest req)
        {
            JsonResponseModel <DescribeTagsResponse> rsp = null;

            try
            {
                var strResp = this.InternalRequestSync(req, "DescribeTags");
                rsp = JsonConvert.DeserializeObject <JsonResponseModel <DescribeTagsResponse> >(strResp);
            }
            catch (JsonSerializationException e)
            {
                throw new TencentCloudSDKException(e.Message);
            }
            return(rsp.Response);
        }
 /// <summary>
 ///  获取资源标签。&lt;br/&gt;
 /// 注意查询cdn资源的标签时url中regionId必须指定为cn-all。&lt;br/&gt;
 /// 注意查询不限制地域时url中regionId必须指定为all-region。
 ///
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public async Task <DescribeTagsResponse> DescribeTags(DescribeTagsRequest request)
 {
     return(await new DescribeTagsExecutor().Client(this).Execute <DescribeTagsResponse, DescribeTagsResult, DescribeTagsRequest>(request).ConfigureAwait(false));
 }
 /// <summary>
 ///  获取资源标签。&lt;br/&gt;
 /// 注意查询cdn资源的标签时url中regionId必须指定为cn-all。&lt;br/&gt;
 /// 注意查询不限制地域时url中regionId必须指定为all-region。
 ///
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public DescribeTagsResponse DescribeTags(DescribeTagsRequest request)
 {
     return(new DescribeTagsExecutor().Client(this).Execute <DescribeTagsResponse, DescribeTagsResult, DescribeTagsRequest>(request));
 }
        public static void Backup(string name, string description, string volumeid, string volumename, string instancename, string expires)
        {
            Console.WriteLine("Creating snapshot of " + volumeid + " / " + volumename + " / " + instancename);

            AmazonEC2 ec2 = Ec2Helper.CreateClient();

            CreateSnapshotRequest rq = new CreateSnapshotRequest();

            rq.VolumeId    = volumeid;
            rq.Description = description;

            CreateSnapshotResponse rs = ec2.CreateSnapshot(rq);

            string snapshotid = rs.CreateSnapshotResult.Snapshot.SnapshotId;


            // build tags for snapshot

            List <Tag> tags = new List <Tag>();

            tags.Add(new Tag {
                Key = "Name", Value = name
            });
            tags.Add(new Tag {
                Key = "source", Value = "scheduler"
            });
            tags.Add(new Tag {
                Key = "instance", Value = instancename
            });
            tags.Add(new Tag {
                Key = "volume", Value = volumename
            });
            tags.Add(new Tag {
                Key = "expires", Value = expires.ToString()
            });


            // get tags from volume to be applied to snapshot

            DescribeTagsRequest trq = new DescribeTagsRequest();

            trq.WithFilter(new Filter()
            {
                Name = "resource-id", Value = new List <string>()
                {
                    volumeid
                }
            });
            DescribeTagsResponse trs = ec2.DescribeTags(trq);

            foreach (ResourceTag t in trs.DescribeTagsResult.ResourceTag)
            {
                if (t.Key != "nextSnapshot" && t.Key != "lastSnapshot" && t.Key != "Name")
                {
                    tags.Add(new Tag {
                        Key = t.Key, Value = t.Value
                    });
                }
            }


            // apply tags to snapshopt

            CreateTagsRequest rqq = new CreateTagsRequest();

            rqq.WithResourceId(snapshotid);

            rqq.WithTag(tags.ToArray());


            var createTagResponse = ec2.CreateTags(rqq);
        }