コード例 #1
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonAutoScalingConfig config = new AmazonAutoScalingConfig();

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

            DescribeAutoScalingInstancesResponse resp = new DescribeAutoScalingInstancesResponse();

            do
            {
                DescribeAutoScalingInstancesRequest req = new DescribeAutoScalingInstancesRequest
                {
                    NextToken = resp.NextToken
                    ,
                    MaxRecords = maxItems
                };

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

                foreach (var obj in resp.AutoScalingInstances)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextToken));
        }
コード例 #2
0
        public void AutoScalingDescribeAutoScalingInstances()
        {
            #region autoscaling-describe-auto-scaling-instances-1

            var client   = new AmazonAutoScalingClient();
            var response = client.DescribeAutoScalingInstances(new DescribeAutoScalingInstancesRequest
            {
                InstanceIds = new List <string> {
                    "i-4ba0837f"
                }
            });

            List <AutoScalingInstanceDetails> autoScalingInstances = response.AutoScalingInstances;

            #endregion
        }
コード例 #3
0
        internal static void WriteAsgs(DateTime captureTime, string accountId, RegionEndpoint regionEndPoint)
        {
            var asc = new AmazonAutoScalingClient(regionEndPoint);
            DescribeAutoScalingGroupsResponse    asgResponse         = asc.DescribeAutoScalingGroups();
            DescribeAutoScalingInstancesResponse asgInstanceResponse = asc.DescribeAutoScalingInstances();
            var db = RedisManager.GetRedisDatabase();

            foreach (var asGroup in asgResponse.AutoScalingGroups)
            {
                //to do: may not be required.
                //RedisManager.AddSetWithExpiry(string.Format("{0}-asgs", dataKey), string.Format("asg-{0}", asGroup.AutoScalingGroupName), db);
                var asgJson = JsonConvert.SerializeObject(asGroup);
                //RedisManager.AddWithExpiry(string.Format("{0}-asg-{1}", dataKey, asGroup.AutoScalingGroupName), asgJson, db);
                var newDataKey = Common.GetDataKey(captureTime, accountId, regionEndPoint.SystemName);
                var entityKey  = string.Format("{0}-{1}-{2}", newDataKey, "asg", asGroup.AutoScalingGroupName);
                Common.UpdateTopology(captureTime, accountId, regionEndPoint.SystemName, "asg", asGroup.AutoScalingGroupName, asgJson, "UPDATE");
                //code to add asg name to the instance details
                var latestDataKey      = Common.GetDataKey("latest", accountId, regionEndPoint.SystemName);
                var latestEntitySetKey = string.Format("{0}-{1}set", latestDataKey, "ins");
                foreach (var instance in asGroup.Instances)
                {
                    //load instance data from redis
                    var latestInstanceKey = RedisManager.GetSetMember(latestEntitySetKey, instance.InstanceId, db);
                    var instanceJson      = db.StringGet(latestInstanceKey.ToString());
                    if (instanceJson.HasValue)
                    {
                        var dataInstance = JsonConvert.DeserializeObject <Data.Instance>(instanceJson);
                        //add elb name to instance
                        dataInstance.AsgKeyName = entityKey;
                        //add the instance data with asg name back to redis
                        instanceJson = JsonConvert.SerializeObject(dataInstance);
                        RedisManager.AddWithExpiry(latestInstanceKey, instanceJson, db);
                    }
                }
            }
        }