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;
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
 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);
        }