public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonEC2Config config = new AmazonEC2Config(); config.RegionEndpoint = region; ConfigureClient(config); AmazonEC2Client client = new AmazonEC2Client(creds, config); DescribeInstanceStatusResponse resp = new DescribeInstanceStatusResponse(); do { DescribeInstanceStatusRequest req = new DescribeInstanceStatusRequest { NextToken = resp.NextToken , MaxResults = maxItems }; resp = client.DescribeInstanceStatus(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.InstanceStatuses) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextToken)); }
public static DescribeInstanceStatusResponse Unmarshall(UnmarshallerContext context) { DescribeInstanceStatusResponse describeInstanceStatusResponse = new DescribeInstanceStatusResponse() { HttpResponse = context.HttpResponse, RequestId = context.StringValue("DescribeInstanceStatus.RequestId"), TotalCount = context.IntegerValue("DescribeInstanceStatus.TotalCount"), PageNumber = context.IntegerValue("DescribeInstanceStatus.PageNumber"), PageSize = context.IntegerValue("DescribeInstanceStatus.PageSize") }; List <DescribeInstanceStatusResponse.InstanceStatus> instanceStatuses = new List <DescribeInstanceStatusResponse.InstanceStatus>(); for (int i = 0; i < context.Length("DescribeInstanceStatus.InstanceStatuses.Length"); i++) { DescribeInstanceStatusResponse.InstanceStatus instanceStatus = new DescribeInstanceStatusResponse.InstanceStatus() { InstanceId = context.StringValue($"DescribeInstanceStatus.InstanceStatuses[{i}].InstanceId"), Status = context.EnumValue <DescribeInstanceStatusResponse.InstanceStatus.StatusEnum>($"DescribeInstanceStatus.InstanceStatuses[{i}].Status") }; instanceStatuses.Add(instanceStatus); } describeInstanceStatusResponse.InstanceStatuses = instanceStatuses; return(describeInstanceStatusResponse); }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context) { DescribeInstanceStatusResponse response = new DescribeInstanceStatusResponse(); 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("instanceStatusSet/item", targetDepth)) { var unmarshaller = InstanceStatusUnmarshaller.Instance; var item = unmarshaller.Unmarshall(context); response.InstanceStatuses.Add(item); continue; } if (context.TestExpression("nextToken", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.NextToken = unmarshaller.Unmarshall(context); continue; } } } return(response); }
public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context) { DescribeInstanceStatusResponse response = new DescribeInstanceStatusResponse(); int targetDepth = 2; while (context.Read()) { if (context.IsStartElement || context.IsAttribute) { if (context.TestExpression("instanceStatusSet/item", targetDepth)) { response.InstanceStatuses.Add(InstanceStatusUnmarshaller.GetInstance().Unmarshall(context)); continue; } if (context.TestExpression("nextToken", targetDepth)) { response.NextToken = StringUnmarshaller.GetInstance().Unmarshall(context); continue; } } } return(response); }
/// <summary> /// Describes the status of one or more instances. Instance status includes the following components: /// Status checks - Amazon EC2 performs status checks on running EC2 instances to identify hardware and software issues. For more information, see Status Checks /// for Your Instances and Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide. /// Scheduled events - Amazon EC2 can schedule events (such as reboot, stop, or terminate) for your instances related to hardware issues, software updates, or system maintenance. /// For more information, see Scheduled Events for Your Instances in the Amazon Elastic Compute Cloud User Guide. /// Instance state - You can manage your instances from the moment you launch them through their termination. For more information, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide. /// </summary> /// <param name="instances">A list of instance IDs to be stopped.</param> /// <param name="settings">The <see cref="EC2Settings"/> used during the request to AWS.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> public async Task <IList <InstanceStatus> > DescribeInstances(IList <string> instances, EC2Settings settings, CancellationToken cancellationToken = default(CancellationToken)) { if ((instances == null) || (instances.Count == 0)) { throw new ArgumentNullException("instances"); } //Create Request AmazonEC2Client client = this.CreateClient(settings); DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest(); foreach (string instance in instances) { request.InstanceIds.Add(instance); } //Check Response DescribeInstanceStatusResponse response = await client.DescribeInstanceStatusAsync(request, cancellationToken); if (response.HttpStatusCode == HttpStatusCode.OK) { _Log.Verbose("Successfully terminated instances '{0}'", string.Join(",", instances)); return(response.InstanceStatuses); } else { _Log.Error("Failed to terminate instances '{0}'", string.Join(",", instances)); return(new List <InstanceStatus>()); } }
public static DescribeInstanceStatusResponse Unmarshall(UnmarshallerContext _ctx) { DescribeInstanceStatusResponse describeInstanceStatusResponse = new DescribeInstanceStatusResponse(); describeInstanceStatusResponse.HttpResponse = _ctx.HttpResponse; describeInstanceStatusResponse.RequestId = _ctx.StringValue("DescribeInstanceStatus.RequestId"); describeInstanceStatusResponse.InstanceId = _ctx.StringValue("DescribeInstanceStatus.InstanceId"); describeInstanceStatusResponse.InstanceStatus = _ctx.IntegerValue("DescribeInstanceStatus.InstanceStatus"); return(describeInstanceStatusResponse); }
void AndGivenAllInstancesAreStopped() { mockEc2 = new Mock <IAmazonEC2>(); scope = DependencyInjection.Init(new MockAwsClientsModule(mockEc2)); var describeResponse = new DescribeInstanceStatusResponse { InstanceStatuses = new List <InstanceStatus> { new InstanceStatus { InstanceId = TestDataMother.StackOne.Ec2InstanceIds[0], InstanceState = TestDataMother.Ec2StoppedInstanceState }, new InstanceStatus { InstanceId = TestDataMother.StackOne.Ec2InstanceIds[1], InstanceState = TestDataMother.Ec2StoppedInstanceState } } }; mockEc2 .Setup(ec2 => ec2.DescribeInstanceStatusAsync(It.Is <DescribeInstanceStatusRequest>(req => req.InstanceIds.Contains(TestDataMother.StackOne.Ec2InstanceIds[0]) && req.InstanceIds.Contains(TestDataMother.StackOne.Ec2InstanceIds[1]) && req.IncludeAllInstances == true), default(CancellationToken))) .ReturnsAsync(describeResponse); mockEc2 .Setup(ec2 => ec2.StartInstancesAsync(It.IsAny <StartInstancesRequest>(), default(CancellationToken))) .ReturnsAsync(() => new StartInstancesResponse { StartingInstances = new List <InstanceStateChange> { new InstanceStateChange { InstanceId = TestDataMother.StackOne.Ec2InstanceIds[0] }, new InstanceStateChange { InstanceId = TestDataMother.StackOne.Ec2InstanceIds[1] }, } }); }
public static DescribeInstanceStatusResponse Unmarshall(UnmarshallerContext context) { DescribeInstanceStatusResponse describeInstanceStatusResponse = new DescribeInstanceStatusResponse(); describeInstanceStatusResponse.HttpResponse = context.HttpResponse; describeInstanceStatusResponse.RequestId = context.StringValue("DescribeInstanceStatus.RequestId"); describeInstanceStatusResponse.TotalCount = context.IntegerValue("DescribeInstanceStatus.TotalCount"); describeInstanceStatusResponse.PageNumber = context.IntegerValue("DescribeInstanceStatus.PageNumber"); describeInstanceStatusResponse.PageSize = context.IntegerValue("DescribeInstanceStatus.PageSize"); List<DescribeInstanceStatusResponse.InstanceStatus> instanceStatuses = new List<DescribeInstanceStatusResponse.InstanceStatus>(); for (int i = 0; i < context.Length("DescribeInstanceStatus.InstanceStatuses.Length"); i++) { DescribeInstanceStatusResponse.InstanceStatus instanceStatus = new DescribeInstanceStatusResponse.InstanceStatus(); instanceStatus.InstanceId = context.StringValue("DescribeInstanceStatus.InstanceStatuses["+ i +"].InstanceId"); instanceStatus.Status = context.EnumValue<DescribeInstanceStatusResponse.InstanceStatus.StatusEnum>("DescribeInstanceStatus.InstanceStatuses["+ i +"].Status"); instanceStatuses.Add(instanceStatus); } describeInstanceStatusResponse.InstanceStatuses = instanceStatuses; return describeInstanceStatusResponse; }
public static DescribeInstanceStatusResponse Unmarshall(UnmarshallerContext context) { DescribeInstanceStatusResponse describeInstanceStatusResponse = new DescribeInstanceStatusResponse(); describeInstanceStatusResponse.HttpResponse = context.HttpResponse; describeInstanceStatusResponse.RequestId = context.StringValue("DescribeInstanceStatus.RequestId"); describeInstanceStatusResponse.TotalCount = context.IntegerValue("DescribeInstanceStatus.TotalCount"); describeInstanceStatusResponse.PageNumber = context.IntegerValue("DescribeInstanceStatus.PageNumber"); describeInstanceStatusResponse.PageSize = context.IntegerValue("DescribeInstanceStatus.PageSize"); List <DescribeInstanceStatusResponse.DescribeInstanceStatus_InstanceStatus> describeInstanceStatusResponse_instanceStatuses = new List <DescribeInstanceStatusResponse.DescribeInstanceStatus_InstanceStatus>(); for (int i = 0; i < context.Length("DescribeInstanceStatus.InstanceStatuses.Length"); i++) { DescribeInstanceStatusResponse.DescribeInstanceStatus_InstanceStatus instanceStatus = new DescribeInstanceStatusResponse.DescribeInstanceStatus_InstanceStatus(); instanceStatus.InstanceId = context.StringValue("DescribeInstanceStatus.InstanceStatuses[" + i + "].InstanceId"); instanceStatus.Status = context.StringValue("DescribeInstanceStatus.InstanceStatuses[" + i + "].Status"); describeInstanceStatusResponse_instanceStatuses.Add(instanceStatus); } describeInstanceStatusResponse.InstanceStatuses = describeInstanceStatusResponse_instanceStatuses; return(describeInstanceStatusResponse); }
public List <InstanceDetail> GetVMProperties() { List <AWSProfile> profile; profile = SqlHelper.GetAWSAccounts(); List <InstanceDetail> profilelist = new List <InstanceDetail>(); //foreach (var profile_ in profile) //{ // Amazon.Util.ProfileManager.RegisterProfile(profile_.ProfileName, profile_.Accesskey, profile_.Secretkey); //} try { foreach (var profile_ in profile) { var regions = Amazon.RegionEndpoint.EnumerableAllRegions; //Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(profile_.ProfileName); foreach (var r in regions) { string region_; if (r.SystemName != "us-gov-west-1" && r.SystemName != "cn-north-1") { region_ = r.SystemName; var region = RegionEndpoint.GetBySystemName(region_); AmazonEC2Client ec2 = new AmazonEC2Client(profile_.Accesskey, profile_.Secretkey, region); DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResponse response = ec2.DescribeInstances(request); DescribeVolumesRequest volumeRequest = new DescribeVolumesRequest(); DescribeVolumesResponse volumeResponse = ec2.DescribeVolumes(volumeRequest); int size = 0; foreach (var volume in volumeResponse.Volumes) { size += volume.Size; } List <Reservation> result = response.Reservations; foreach (var item in result) { List <Instance> results = item.Instances; foreach (var instance in results) { InstanceDetail p = new InstanceDetail(); p.InstanceId = instance.InstanceId.ToString(); DescribeInstanceStatusRequest req = new DescribeInstanceStatusRequest(); req.InstanceIds.Add(p.InstanceId); DescribeInstanceStatusResponse resp = ec2.DescribeInstanceStatus(req); var statuses = resp.InstanceStatuses; foreach (var status in statuses) { p.InstanceState = status.Status.Status; } if (p.InstanceState == null) { p.InstanceState = "Not Available"; } p.Region = r.SystemName; p.DiskSize = (size / result.Count).ToString() + " GB"; // if (instance.PublicIpAddress != null) { p.IpAddress = instance.PublicIpAddress; } else { p.IpAddress = "Not Assigned"; } p.ProfileName = profile_.ProfileName; p.InstanceType = instance.InstanceType; p.Status = instance.State.Name.Value; p.ResourceGroup = "Not Applicable"; if (instance.IamInstanceProfile != null) { p.MachineName = instance.IamInstanceProfile.Arn; } else { p.MachineName = "Not Assigned"; } p.accountId = profile_.accountId; var type = instance.InstanceType; p.Type = "virtualMachines"; var b = instance.Tags.Count; if (b != 0) { p.MachineName = instance.Tags[0].Value; } if (instance.Platform != null) { p.OSType = instance.Platform; } else { p.OSType = "Amazon Linux"; } profilelist.Add(p); } } } } } return(profilelist); } catch (Exception e) { this.log.Error(e); return(null); } }