Пример #1
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            DescribeAddressesResponse response = new DescribeAddressesResponse();

            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("addressesSet/item", targetDepth))
                    {
                        var unmarshaller = AddressUnmarshaller.Instance;
                        var item         = unmarshaller.Unmarshall(context);
                        response.Addresses.Add(item);
                        continue;
                    }
                }
            }

            return(response);
        }
Пример #2
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonSnowballConfig config = new AmazonSnowballConfig();

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

            DescribeAddressesResponse resp = new DescribeAddressesResponse();

            do
            {
                DescribeAddressesRequest req = new DescribeAddressesRequest
                {
                    NextToken = resp.NextToken
                    ,
                    MaxResults = maxItems
                };

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

                foreach (var obj in resp.Addresses)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextToken));
        }
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            DescribeAddressesResponse response = new DescribeAddressesResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("Addresses", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <Address, AddressUnmarshaller>(AddressUnmarshaller.Instance);
                    response.Addresses = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("NextToken", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.NextToken = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
Пример #4
0
        private DescribeAddressesResponse GetElasticIps()
        {
            DescribeAddressesRequest  request = new DescribeAddressesRequest();
            DescribeAddressesResponse resp    = ec2.DescribeAddresses(request);

            return(resp);
        }
Пример #5
0
        public async Task <List <Address> > DescribeAddresses()
        {
            DescribeAddressesRequest  request  = new DescribeAddressesRequest();
            DescribeAddressesResponse response = await _ec2Client.DescribeAddressesAsync(request);

            List <AwsForensicRefresh.Models.Address> addresses = new List <Address>();

            foreach (var item in response.Addresses)
            {
                addresses.Add(new Address(item.AllocationId, item.AssociationId, item.InstanceId, item.NetworkInterfaceId, item.PrivateIpAddress, item.PublicIp));
            }

            return(addresses);
        }
        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);

            DescribeAddressesResponse resp = new DescribeAddressesResponse();
            DescribeAddressesRequest  req  = new DescribeAddressesRequest
            {
            };

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

            foreach (var obj in resp.Addresses)
            {
                AddObject(obj);
            }
        }
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            DescribeAddressesResponse response = new DescribeAddressesResponse();

            int targetDepth = 2;

            while (context.Read())
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("addressesSet/item", targetDepth))
                    {
                        response.Addresses.Add(AddressUnmarshaller.GetInstance().Unmarshall(context));

                        continue;
                    }
                }
            }


            return(response);
        }
Пример #8
0
        void MonitorFunction()
        {
            Thread.CurrentThread.Name = "MonitorThread";
            Program.TraceLine("Monitoring thread started...");
            Program.MonitorMessage = "Monitor starting...";
            while (true)
            {
                try
                {
                    //TEST ZONE
                    {
                    }
                    //Now continues normally


                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    DescribeInstancesResponse respEc2 = GetRunningInstances();
                    UpdateClassOfObjects(currentStatusEc2, respEc2.DescribeInstancesResult.Reservation);
                    Program.MonitorMessage = "Updated EC2s...";
                    foreach (ZAwsEc2 ec2Instance in CurrentEc2s)
                    {
                        lock (Ec2Lock) { if (!RunMonitoring)
                                         {
                                             return;
                                         }
                        }
                        ec2Instance.UpdateInfo();
                        Program.MonitorMessage = "Updated EC2 " + ec2Instance.Name;
                    }

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    DescribeAddressesResponse respElasitIp = GetElasticIps();
                    UpdateClassOfObjects(currentStatusElIps, respElasitIp.DescribeAddressesResult.Address);
                    Program.MonitorMessage = "Updated elastic IPs";

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    ListHostedZonesResponse route53Zones = GetHostedZones();
                    UpdateClassOfObjects(currentHostedZones, route53Zones.ListHostedZonesResult.HostedZones);
                    Program.MonitorMessage = "Updated hosted zones...";

                    foreach (ZAwsHostedZone zone in CurrentHostedZones)
                    {
                        lock (Ec2Lock) { if (!RunMonitoring)
                                         {
                                             return;
                                         }
                        }
                        zone.UpdateInfo();
                        Program.MonitorMessage = "Updated zone " + zone.Name;
                    }

                    /*
                     * We will not be checking S3 service, because that actually costs money!
                     * lock (Ec2Lock) { if (!RunMonitoring) { return; } }
                     * ListBucketsResponse s3Buckects = GetBuckets();
                     * UpdateClassOfObjects(currentS3Buckets, s3Buckects.Buckets);
                     * Program.MonitorMessage = "Updated S3 Buckets...";
                     * */

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    DescribeSnapshotsResponse respEc2Snapshots = GetSnapshots();
                    UpdateClassOfObjects(currentSnapshots, respEc2Snapshots.DescribeSnapshotsResult.Snapshot);
                    Program.MonitorMessage = "Updated EC2 Snapshots...";

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    DescribeKeyPairsResponse respKeyPairs = GetKeyPairs();
                    UpdateClassOfObjects(currentKeyPairs, respKeyPairs.DescribeKeyPairsResult.KeyPair);
                    Program.MonitorMessage = "Updated KeyPairs...";

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    DescribeSecurityGroupsResponse respSecGroups = GetSecurityGroups();
                    UpdateClassOfObjects(currentSecGroups, respSecGroups.DescribeSecurityGroupsResult.SecurityGroup);
                    Program.MonitorMessage = "Updated Sec Groups...";

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    DescribeImagesResponse respAmis = GetAmis();
                    UpdateClassOfObjects(currentAmis, respAmis.DescribeImagesResult.Image);
                    Program.MonitorMessage = "Updated AMIs...";

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    DescribeVolumesResponse respEbsVolumes = GetEbsVolumes();
                    UpdateClassOfObjects(currentEbsVolumes, respEbsVolumes.DescribeVolumesResult.Volume);
                    Program.MonitorMessage = "Updated EBS volumes...";

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }
                    DescribeSpotInstanceRequestsResponse respSpotRequests = GetSpotRequests();
                    UpdateClassOfObjects(currentSpotRequests, respSpotRequests.DescribeSpotInstanceRequestsResult.SpotInstanceRequest);
                    Program.MonitorMessage = "Updated spot requests...";

                    lock (Ec2Lock) { if (!RunMonitoring)
                                     {
                                         return;
                                     }
                    }

                    if (ThreadInRecovery)
                    {
                        Program.TraceLine("Monitoring working fine again...");
                        ThreadInRecovery = false;
                    }
                }
                catch (Exception ex)
                {
                    Program.TraceLine("Monitoring thread encountered an error. Will restart in {0}...", ex, ThreadInRecovery ? "1 minute" : "5 seconds");
                    Program.MonitorMessage = "Monitor paused...";
                    for (int i = 0; i < (ThreadInRecovery ? 600 : 50); i++)
                    {
                        lock (Ec2Lock) { if (!RunMonitoring)
                                         {
                                             return;
                                         }
                        }
                        Thread.Sleep(100);
                    }
                    Program.TraceLine("Monitoring thread trying to recover...");
                    Program.MonitorMessage = "Monitor restarting...";
                    ThreadInRecovery       = true;
                }
                finally
                {
                    if (!RunMonitoring)
                    {
                        Program.MonitorMessage = "Monitor stopped.";
                    }
                }
            }
        }