public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context) { DescribeInstancesResponse response = new DescribeInstancesResponse(); 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("reservationSet/item", targetDepth)) { var unmarshaller = ReservationUnmarshaller.Instance; var item = unmarshaller.Unmarshall(context); response.Reservations.Add(item); continue; } } } return response; }
internal static void WriteInstances(IAmazonEC2 ec2, DateTime captureTime, string accountId, string region) { DescribeInstancesResponse instanceResponse = ec2.DescribeInstances(); Common.GetDataKey(captureTime, accountId, region); var newDataKey = Common.GetDataKey(captureTime, accountId, region); foreach (var reservation in instanceResponse.Reservations) { foreach (var rInstance in reservation.Instances) { var instance = AutoMapper.Mapper.Map <Data.Instance>(rInstance); var nameTag = instance.Tags.Find(t => t.Key == "Name"); instance.Name = nameTag != null ? nameTag.Value : instance.InstanceId; instance.Size = new Random().Next(1, 32); string instanceJson = JsonConvert.SerializeObject(instance); //RedisManager.AddWithExpiry(string.Format("{0}-ins-{1}", dataKey, instance.InstanceId), instanceJson, db); Common.UpdateTopology(captureTime, accountId, region, "ins", instance.InstanceId, instanceJson, "UPDATE"); var entityKey = string.Format("{0}-{1}-{2}", newDataKey, "ins", instance.InstanceId); Common.UpdateTopologySet(captureTime, accountId, region, "vpcinstances", instance.VpcId, entityKey, "UPDATE"); Common.UpdateTopologySet(captureTime, accountId, region, "subnetinstances", instance.SubnetId, entityKey, "UPDATE"); foreach (var sg in instance.SecurityGroups) { Common.UpdateTopologySet(captureTime, accountId, region, "sginstances", sg.GroupId, entityKey, "UPDATE"); } //RedisManager.AddSetWithExpiry(string.Format("{0}-vpcinstances-{1}", dataKey, instance.VpcId), string.Format("{0}-ins-{1}", dataKey, instance.InstanceId), db); //RedisManager.AddSetWithExpiry(string.Format("{0}-subnetinstances-{1}", dataKey, instance.SubnetId), string.Format("{0}-ins-{1}", dataKey, instance.InstanceId), db); } } }
public List <Instance> DescribeInstances() { try { AWSModel.DescribeInstancesRequest request = new AWSModel.DescribeInstancesRequest(); AWSModel.DescribeInstancesResponse response = ec2.DescribeInstances(request); List <Instance> instances = new List <Instance>(); if (response != null) { foreach (AWSModel.Reservation reservation in response.DescribeInstancesResult.Reservation) { foreach (AWSModel.RunningInstance runningInstance in reservation.RunningInstance) { Instance instance = ModelUtil.CreateInstance(runningInstance); instances.Add(instance); } } } return(instances); } catch (WebException e) { throw new MonoscapeEC2Exception(e.Message, e); } catch (AmazonEC2Exception e) { throw new MonoscapeEC2Exception(e.Message, e); } }
public void GetAllocatedIpAddresses_Ok() { // Arrange var response = new DescribeInstancesResponse { Reservations = new List<Reservation> { new Reservation { Instances = new List<Instance> { new Instance {PrivateIpAddress = "192.168.10.10"}, new Instance {PrivateIpAddress = "192.168.10.11"} } }, new Reservation { Instances = new List<Instance> { new Instance {PrivateIpAddress = "192.168.10.12"}, new Instance {PrivateIpAddress = "192.168.10.13"} } } } }; Ec2ClientMock.Setup(x => x.DescribeInstances(It.IsAny<DescribeInstancesRequest>())).Returns(response); var expected = new List<string> {"192.168.10.10", "192.168.10.11", "192.168.10.12", "192.168.10.13"}; // Act var actual = NetworkService.GetAllocatedIpAddresses(); // Assert actual.Should().BeEquivalentTo(expected); }
public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context) { DescribeInstancesResponse response = new DescribeInstancesResponse(); int targetDepth = 2; while (context.Read()) { if (context.IsStartElement || context.IsAttribute) { if (context.TestExpression("reservationSet/item", targetDepth)) { response.Reservations.Add(ReservationUnmarshaller.GetInstance().Unmarshall(context)); continue; } if (context.TestExpression("nextToken", targetDepth)) { response.NextToken = StringUnmarshaller.GetInstance().Unmarshall(context); continue; } } } return response; }
public void GetInstance() { // Arrange const string instanceId = "eight"; var request = new DescribeInstancesRequest { InstanceIds = new List<string> { instanceId } }; var response = new DescribeInstancesResponse { Reservations = new List<Reservation> { new Reservation { Instances = new List<Instance> { GenerateInstance(instanceId, InstanceStateName.Running) } } } }; Ec2ClientMock.Setup(x => x.DescribeInstances(It.Is<DescribeInstancesRequest>( req => req.InstanceIds.First() == request.InstanceIds.First() ))).Returns(response); // Act Instance instance = InstanceService.GetInstance(instanceId); // Assert instance.State.Name.Should().Be(InstanceStateName.Running); }
private void SetUpResponse() { var response = new DescribeInstancesResponse(); var reservationOne = new Reservation { Instances = new List<Instance> { GenerateInstance("one", InstanceStateName.Running), GenerateInstance("two", InstanceStateName.Stopped), GenerateInstance("three", InstanceStateName.Terminated) } }; var reservationTwo = new Reservation { Instances = new List<Instance> { GenerateInstance("four", InstanceStateName.Terminated), GenerateInstance("five", InstanceStateName.Terminated), GenerateInstance("six", InstanceStateName.Running), GenerateInstance("seven", InstanceStateName.Stopping) } }; response.Reservations = new List<Reservation> {reservationOne, reservationTwo}; Ec2ClientMock.Setup(x => x.DescribeInstances()).Returns(response); }