예제 #1
0
        void UpdateUI()
        {
            dispatcherTimer.Start();
            bool  isChangingState = false;
            Regex searchRegex     = new Regex(@"^remote ((?:\d+\.?)+) (\d+)", RegexOptions.Multiline);

            using (var awsClient = GetClient())
            {
                var req = new Amazon.EC2.Model.DescribeInstancesRequest();
                req.InstanceIds.Add(settings["instance_id"]);
                var response = awsClient.DescribeInstances(req);
                targetInstance        = response.Reservations[0].Instances[0];
                Instances.ItemsSource = new Amazon.EC2.Model.Instance[] { targetInstance };
                if ((new int[] { 0, 32, 64 }).Contains(targetInstance.State.Code))
                {
                    ActionButton.IsEnabled = false;
                    isChangingState        = true;
                }
            }

            if (!isChangingState)
            {
                dispatcherTimer.Stop();
                ActionButton.IsEnabled = true;
                ActionButton.Content   = GetInstanceAction(targetInstance);
                ConfigureVPN(targetInstance);
            }
        }
예제 #2
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);
     }
 }
예제 #3
0
 public List<Reservation> ListInstancesByTag(string tagKey, string tagValue)
 {
     var describeInstancesRequest = new DescribeInstancesRequest()
     {
         Filter = new List<Filter>
                     {
                         new Filter()
                             {
                                 Name = "tag:" + tagKey,
                                 Value = new List<string>
                                     {
                                         tagValue
                                     },
                             },
                         new Filter()
                             {
                                 Name = "instance-state-name",
                                 Value = new List<string>
                                     {
                                         "running"
                                     },
                             }
                     }
     };
     try
     {
         var describeInstancesResponse = amazonEc2.DescribeInstances(describeInstancesRequest);
         return describeInstancesResponse.DescribeInstancesResult.Reservation;
     }
     catch (Exception ex)
     {
         logger.Log("AWS ERROR: " + ex.Message);
         throw new Exception("Cannot list instances");
     }
 }
        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);
        }
        public RegionDetails GetRegionData(AwsRegionLocations region)
        {
            var regionEndpoint = region.ToAwsRegionEndpoint();

            // Get an Ec2Client for the current region
            var client = ec2Clients.GetOrAdd(region, r => AWSClientFactory.CreateAmazonEC2Client(credentials, regionEndpoint));

            // Get instances within the region
            // Start by creating the request
            var request = new DescribeInstancesRequest();

            // Add a filter to the request so that it only returns instances that are either in "Running" or "Pending" state.
            request.Filters.Add(new Filter("instance-state-code", new List<string>()
            {
                ((ushort)InstanceStatuses.Running).ToString(),
                ((ushort)InstanceStatuses.Pending).ToString()
            }));

            // Send the request to Amazon
            var reservations = client.DescribeInstances(request).Reservations;

            return new RegionDetails()
            {
                Name = regionEndpoint.SystemName,
                Region = region,
                Instances = reservations.SelectMany(x => x.Instances).Select(x => x.ToInstanceInfo()).ToList()
            };
        }
예제 #6
0
 public IEnumerable<Instance> GetInstances(IEnumerable<string> instanceIds)
 {
     var instancesRequest = new DescribeInstancesRequest();
     instancesRequest.InstanceIds.AddRange(instanceIds);
     var instances = _client.DescribeInstances(instancesRequest);
     return instances.Reservations.SelectMany(x => x.Instances);
 }
        public void Run()
        {
            var instanceRequest = new DescribeInstancesRequest
            {
                InstanceIds = new List<string>()
                {
                    instance.InstanceId
                }
            };

            var limit = 600;

            DescribeInstancesResponse response = null;

            while (limit > 0)
            {
                response = awsClient.Ec2Client.DescribeInstances(instanceRequest);

                if (response.Reservations[0].Instances[0].State.Code == 16)
                    break;

                limit --;

                Thread.Sleep(1000);
            }

            if (response != null && response.Reservations[0].Instances[0].State.Code == 16)
                FinishedSuccessfully = true;
            else
            {
                Error = string.Format("Instance not launched yet. Last state: {0}.", response.Reservations[0].Instances[0].State.Name);
            }
        }
예제 #8
0
        public IEnumerable<string> GetAllocatedIpAddresses()
        {
            var request = new DescribeInstancesRequest();
            var response = _ec2Client.DescribeInstances(request);

            return response.Reservations
                .SelectMany(x => x.Instances.Select(y => y.PrivateIpAddress))
                .Where(x => x != null);
        }
		public static List<Reservation> getReservationsInRegion(this API_AmazonEC2 amazonEC2, string region)
		{
		        "Gettting Reservations in region: {0}".info(region);
				var ec2ClientInRegion = amazonEC2.getEC2Client(region);
				var describesInstance = new DescribeInstancesRequest(); 				
				var reservations = ec2ClientInRegion.DescribeInstances(describesInstance)
													.DescribeInstancesResult
													.Reservation; 				
				return reservations;									  
		}
예제 #10
0
        public override void Execute()
        {
            AmazonEC2Client client = new AmazonEC2Client(AWSAuthConnection.OUR_ACCESS_KEY_ID, AWSAuthConnection.OUR_SECRET_ACCESS_KEY);
            DescribeInstancesRequest request = new DescribeInstancesRequest();
            DescribeInstancesResponse response = client.DescribeInstances(request);

            Dictionary<string, List<RunningInstance>> instances = new Dictionary<string, List<RunningInstance>>();
            foreach (Reservation r in response.DescribeInstancesResult.Reservation)
                foreach (RunningInstance i in r.RunningInstance)
                {
                    if (!instances.ContainsKey(i.ImageId))
                        instances[i.ImageId] = new List<RunningInstance>();

                    instances[i.ImageId].Add(i);
                }

            List<string> allImageIds = new List<string>();
            foreach (string imageId in instances.Keys)
                allImageIds.Add(imageId);

            DescribeImagesRequest imageReq = new DescribeImagesRequest();
            imageReq.ImageId = allImageIds;
            DescribeImagesResponse imageResp = client.DescribeImages(imageReq);

            Dictionary<string, Image> imageDescriptions = new Dictionary<string, Image>();
            foreach (Image image in imageResp.DescribeImagesResult.Image)
                imageDescriptions.Add(image.ImageId, image);

            foreach (string imageId in instances.Keys)
            {
                if (imageDescriptions.ContainsKey(imageId))
                    Console.WriteLine("--- {0} {1} ({2} {3})",
                        imageId,
                        imageDescriptions[imageId].ImageLocation,
                        imageDescriptions[imageId].Platform,
                        imageDescriptions[imageId].Architecture);
                else
                    Console.WriteLine("--- {0} (AMI not found)", imageId);

                foreach (RunningInstance i in instances[imageId])
                {
                    DateTime launchTime = DateTime.Parse(i.LaunchTime);
                    Console.Write("{0}\t{1}\t{2}\t{3}\t{4}", launchTime, i.InstanceType, i.InstanceState.Name, i.InstanceId, i.StateTransitionReason);
                    if (ips)
                        Console.Write("\t{0}\t{1}", i.PublicDnsName, i.PrivateDnsName);
                    Console.WriteLine();
                }

                Console.WriteLine();
            }
        }
예제 #11
0
        static void GetInstances(AWSCredentials credentials)
        {
            IAmazonEC2 client = AWSClientFactory.CreateAmazonEC2Client(credentials, RegionEndpoint.USEast1);

            DescribeInstancesRequest request = new DescribeInstancesRequest();
            request.Filters.Add(new Filter("instance-state-code", new List<string>() { "0", "16" }));

            DescribeInstancesResponse describeInstancesResponse = client.DescribeInstances();
            List<Reservation> reservations = describeInstancesResponse.Reservations;

            foreach (Instance instance in reservations.SelectMany(x => x.Instances))
            {
                Console.WriteLine("Instance with ID {0} is currently {1}", instance.InstanceId, instance.State.Name);
            }
        }
예제 #12
0
 public IEnumerable<Instance> GetInstances()
 {
     AmazonEC2Client client = _GetClient();
     var describeInstancesRequest = new DescribeInstancesRequest();
     var response = client.DescribeInstances(describeInstancesRequest);
     var instances = response.DescribeInstancesResult.Reservation.SelectMany(x => x.RunningInstance).Select(x => new{ x.InstanceId, State = x.InstanceState.Name, x.IpAddress, x.InstanceType, x.PublicDnsName, InstanceName = x.Tag.Where(y => y.Key == "Name").Select(z => z.Value).First(), });
     return instances.Select(instance => new Instance
                                             {
                                                 Name = instance.InstanceName,
                                                 State = instance.State,
                                                 Dns = instance.PublicDnsName,
                                                 Id = instance.InstanceId,
                                                 Ip = instance.IpAddress
                                             });
 }
        public object Execute(ExecutorContext context)
        {
            var cmdletContext = context as CmdletContext;
            // create request
            var request = new Amazon.EC2.Model.DescribeInstancesRequest();

            if (cmdletContext.Filter != null)
            {
                request.Filters = cmdletContext.Filter;
            }
            if (cmdletContext.InstanceId != null)
            {
                request.InstanceIds = cmdletContext.InstanceId;
            }
            if (cmdletContext.MaxResult != null)
            {
                request.MaxResults = cmdletContext.MaxResult.Value;
            }
            if (cmdletContext.NextToken != null)
            {
                request.NextToken = cmdletContext.NextToken;
            }

            CmdletOutput output;

            // issue call
            var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);

            try
            {
                var    response       = CallAWSServiceOperation(client, request);
                object pipelineOutput = null;
                pipelineOutput = cmdletContext.Select(response, this);
                output         = new CmdletOutput
                {
                    PipelineOutput  = pipelineOutput,
                    ServiceResponse = response
                };
            }
            catch (Exception e)
            {
                output = new CmdletOutput {
                    ErrorResponse = e
                };
            }

            return(output);
        }
예제 #14
0
        public List<Instance> GetInstances()
        {
            var instances = new List<Instance>();

            var ec2Request = new DescribeInstancesRequest();

            var ec2Response = _client.DescribeInstances(ec2Request);
            foreach (var reservation in ec2Response.Reservations)
            {
                var instance = reservation.Instances.Single();
                instances.Add(instance);
                //var name = instance.Tags.Single(x => x.Key == "Name").Value;
                //sr.WriteLine("{0} {1} {2} {3}", i++, name, instance.State.Name, instance.PublicDnsName);
            }

            return instances;
        }
        protected override void ProcessRecord()
        {
            AmazonEC2 client = base.GetClient();
            Amazon.EC2.Model.DescribeInstancesRequest request = new Amazon.EC2.Model.DescribeInstancesRequest();
            if (!string.IsNullOrEmpty(this._InstanceId))
            {
                request.InstanceId.Add(this._InstanceId);
            }
            Amazon.EC2.Model.DescribeInstancesResponse response = client.DescribeInstances(request);

            foreach(Reservation reservation in response.DescribeInstancesResult.Reservation)
            {
                base.WriteObject(reservation.RunningInstance);
            }

            
        }
예제 #16
0
파일: ClientUtils.cs 프로젝트: awithy/aws
 public IEnumerable<Instance> GetInstances()
 {
     var client = _GetClient();
     var describeInstancesRequest = new DescribeInstancesRequest();
     var response = client.DescribeInstances(describeInstancesRequest);
     return response.DescribeInstancesResult.Reservation
         .SelectMany(x => x.RunningInstance)
         .Select(x =>
                 new Instance
                 {
                     Id = x.InstanceId,
                     Name = x.Tag.Where(y => y.Key == "Name").Select(y => y.Value).First(),
                     State = x.InstanceState.Name,
                     Dns = x.PublicDnsName,
                     Ip = x.IpAddress,
                 });
 }
        /// <summary>
        /// Connect to an Amazon subscription and obtain information about instance reservations.
        /// </summary>
        protected override void AmazonExecute()
        {
            var request = new DescribeInstancesRequest
            {
                InstanceId = this.InstanceIds.Get(this.ActivityContext)
            };

            try
            {
                var response = EC2Client.DescribeInstances(request);
                this.Reservations.Set(this.ActivityContext, response.DescribeInstancesResult.Reservation);
            }
            catch (EndpointNotFoundException ex)
            {
                this.LogBuildMessage(ex.Message);
            }
        }
예제 #18
0
파일: EC2.cs 프로젝트: koushikajay/Alfred
        public List<RunningInstance> InstanceDescriptions(IEnumerable<string> instanceIds)
        {
            try
            {
                var request = new DescribeInstancesRequest().WithInstanceId(instanceIds.ToArray());
                var response = this.client.DescribeInstances(request);

                return response
                    .DescribeInstancesResult
                    .Reservation
                    .SelectMany(reservation => reservation.RunningInstance)
                    .ToList();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception occurred getting instance states: ");
                Console.WriteLine(ex.Message);
                return new List<RunningInstance>();
            }
        }
예제 #19
0
        public static IList<Ec2Record> GetAllEc2Instances(bool force = false)
        {
            if (m_Ec2Records == null || force)
            {
                var ec2 = Ec2ConnectionProvider.GetEc2Connection();

                DescribeInstancesRequest request = new DescribeInstancesRequest();
                DescribeInstancesResponse res = ec2.DescribeInstances(request);

                m_Ec2Records = new List<Ec2Record>();

                res.DescribeInstancesResult.Reservations.ForEach(
                    reservation => reservation.Instances.ForEach(
                        runningInstance => m_Ec2Records.Add(
                            new Ec2Record()
                                {
                                    InstanceId = runningInstance.InstanceId,
                                    Status = runningInstance.State.Name,
                                    Type = runningInstance.InstanceType,
                                    Platform = string.IsNullOrWhiteSpace(runningInstance.Platform) ? "Linux" : "Windows",
                                    Ip = string.IsNullOrEmpty(runningInstance.PublicIpAddress) ? "-" : runningInstance.PublicIpAddress,
                                    PrivateIp = runningInstance.PrivateIpAddress,
                                    PublicDns = runningInstance.PublicDnsName,
                                    PrivateDns = string.IsNullOrEmpty(runningInstance.PrivateDnsName) ? "-" : runningInstance.PrivateDnsName,
                                    Name = AwsTags.GetValueFromEc2Tag(runningInstance.Tags, "Name"),
                                    AttachedVolumes = VolumeProvider.GetVolumesByEc2Id(runningInstance.InstanceId),
                                    LaunchTime = runningInstance.LaunchTime,
                                    SecurityGroups = runningInstance
                                                        .SecurityGroups
                                                        .Select(group => group.GroupName)
                                                        .ToList()
                                }
                                               )
                                       )
                    );
            }

            return m_Ec2Records;
        }
        public static void InvokeListInstances()
        {
            NameValueCollection appConfig = ConfigurationManager.AppSettings;

            AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client(
                appConfig["AWSAccessKey"],
                appConfig["AWSSecretKey"],
                RegionEndpoint.USWest2
                );

            DescribeInstancesRequest request = new DescribeInstancesRequest();

            try
            {
                DescribeInstancesResponse ec2Response = ec2.DescribeInstances(request);
                int numInstances = 0;
                numInstances = ec2Response.DescribeInstancesResult.Reservation.Count;
                Console.WriteLine("You have " + numInstances + " Amazon EC2 instance(s) running.");
            }
            catch (AmazonEC2Exception ex)
            {
                if (ex.ErrorCode.Equals("OptInRequired"))
                {
                    Console.WriteLine("You are not signed for Amazon EC2.");
                    Console.WriteLine("You can sign up at http://aws.amazon.com/ec2.");
                }
                else
                {
                    Console.WriteLine("Caught Exception: " + ex.Message);
                    Console.WriteLine("Response Status Code: " + ex.StatusCode);
                    Console.WriteLine("Error Code: " + ex.ErrorCode);
                    Console.WriteLine("Error Type: " + ex.ErrorType);
                    Console.WriteLine("Request ID: " + ex.RequestId);
                }
            }
            Console.WriteLine();
        }
예제 #21
0
        /// <summary>
        /// This function returns the current state of the instance
        /// </summary>
        /// <param name="InstanceId">The id of the instance to fetch the status</param>
        /// <returns>The status of the instance</returns>
        public string GetInstanceState(string InstanceId)
        {
            string result = "";

            // Initialize error values
            ErrorCode    = 0;
            ErrorMessage = "";

            // Create request
            var instancesRequest = new DescribeInstancesRequest ();
            instancesRequest.InstanceIds = new List<string> () { InstanceId };

            try
            {
                // Run the operation
                var statusResponse = EC2client.DescribeInstances (instancesRequest);

                // Check response for errors
                if (statusResponse.HttpStatusCode != HttpStatusCode.OK)
                {
                    ErrorCode    = Convert.ToInt32 (statusResponse.HttpStatusCode);
                    ErrorMessage = "Http Error [" + statusResponse.HttpStatusCode.ToString () + "]";
                }
                else
                {
                    result = statusResponse.Reservations[0].Instances[0].State.Name;
                }
            }
            catch (Exception ex)
            {
                ErrorCode    = -1;
                ErrorMessage = ex.Message + "::" + ex.InnerException;
            }

            return result;
        }
예제 #22
0
        /// <summary>
        /// Initiates the asynchronous execution of the DescribeInstances operation.
        /// <seealso cref="Amazon.EC2.IAmazonEC2.DescribeInstances"/>
        /// </summary>
        /// 
        /// <param name="request">Container for the necessary parameters to execute the DescribeInstances operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
		public async Task<DescribeInstancesResponse> DescribeInstancesAsync(DescribeInstancesRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller = new DescribeInstancesRequestMarshaller();
            var unmarshaller = DescribeInstancesResponseUnmarshaller.GetInstance();
            var response = await Invoke<IRequest, DescribeInstancesRequest, DescribeInstancesResponse>(request, marshaller, unmarshaller, signer, cancellationToken)
                .ConfigureAwait(continueOnCapturedContext: false);
            return response;
        }
예제 #23
0
        /// <summary>
        /// <para> The DescribeInstances operation returns information about instances that you own. </para> <para> If you specify one or more instance
        /// IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant
        /// instances. If you specify an invalid instance ID, a fault is returned. If you specify an instance that you do not own, it will not be
        /// included in the returned results. </para> <para> Recently terminated instances might appear in the returned results. This interval is
        /// usually less than one hour. </para>
        /// </summary>
        /// 
        /// <param name="request">Container for the necessary parameters to execute the DescribeInstances service method on
        /// AmazonEC2.</param>
        /// 
        /// <returns>The response from the DescribeInstances service method, as returned by AmazonEC2.</returns>
		public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request)
        {
            var task = DescribeInstancesAsync(request);
            try
            {
                return task.Result;
            }
            catch(AggregateException e)
            {
                throw e.InnerException;
            }
        }
예제 #24
0
 /// <summary>
 /// Paginator for DescribeInstances operation
 ///</summary>
 public IDescribeInstancesPaginator DescribeInstances(DescribeInstancesRequest request)
 {
     return(new DescribeInstancesPaginator(this.client, request));
 }
예제 #25
0
 /// <summary>
 /// <para>Describes one or more of your instances.</para> <para>If you specify one or more instance IDs, Amazon EC2 returns information for
 /// those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance
 /// ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned
 /// results.</para> <para>Recently terminated instances might appear in the returned results. This interval is usually less than one
 /// hour.</para>
 /// </summary>
 /// 
 /// <param name="describeInstancesRequest">Container for the necessary parameters to execute the DescribeInstances service method on
 ///          AmazonEC2.</param>
 /// 
 /// <returns>The response from the DescribeInstances service method, as returned by AmazonEC2.</returns>
 /// 
 public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest describeInstancesRequest)
 {
     IAsyncResult asyncResult = invokeDescribeInstances(describeInstancesRequest, null, null, true);
     return EndDescribeInstances(asyncResult);
 }
예제 #26
0
 IAsyncResult invokeDescribeInstances(DescribeInstancesRequest describeInstancesRequest, AsyncCallback callback, object state, bool synchronized)
 {
     IRequest irequest = new DescribeInstancesRequestMarshaller().Marshall(describeInstancesRequest);
     var unmarshaller = DescribeInstancesResponseUnmarshaller.GetInstance();
     AsyncResult result = new AsyncResult(irequest, callback, state, synchronized, signer, unmarshaller);
     Invoke(result);
     return result;
 }
예제 #27
0
 internal DescribeInstancesPaginator(IAmazonEC2 client, DescribeInstancesRequest request)
 {
     this._client  = client;
     this._request = request;
 }
예제 #28
0
		internal DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request)
        {
            var task = DescribeInstancesAsync(request);
            try
            {
                return task.Result;
            }
            catch(AggregateException e)
            {
                ExceptionDispatchInfo.Capture(e.InnerException).Throw();
                return null;
            }
        }
예제 #29
0
        /// <summary>
        /// <para>Describes one or more of your instances.</para> <para>If you specify one or more instance IDs, Amazon EC2 returns information for
        /// those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance
        /// ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned
        /// results.</para> <para>Recently terminated instances might appear in the returned results. This interval is usually less than one
        /// hour.</para>
        /// </summary>
        /// 
        /// <param name="describeInstancesRequest">Container for the necessary parameters to execute the DescribeInstances service method on
        /// AmazonEC2.</param>
        /// 
        /// <returns>The response from the DescribeInstances service method, as returned by AmazonEC2.</returns>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
		public Task<DescribeInstancesResponse> DescribeInstancesAsync(DescribeInstancesRequest describeInstancesRequest, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller = new DescribeInstancesRequestMarshaller();
            var unmarshaller = DescribeInstancesResponseUnmarshaller.GetInstance();
            return Invoke<IRequest, DescribeInstancesRequest, DescribeInstancesResponse>(describeInstancesRequest, marshaller, unmarshaller, signer, cancellationToken);
        }
 private Amazon.EC2.Model.DescribeInstancesResponse CallAWSServiceOperation(IAmazonEC2 client, Amazon.EC2.Model.DescribeInstancesRequest request)
 {
     Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Elastic Compute Cloud (EC2)", "DescribeInstances");
     try
     {
         #if DESKTOP
         return(client.DescribeInstances(request));
         #elif CORECLR
         return(client.DescribeInstancesAsync(request).GetAwaiter().GetResult());
         #else
                 #error "Unknown build edition"
         #endif
     }
     catch (AmazonServiceException exc)
     {
         var webException = exc.InnerException as System.Net.WebException;
         if (webException != null)
         {
             throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
         }
         throw;
     }
 }
예제 #31
0
 /// <summary>
 /// Initiates the asynchronous execution of the DescribeInstances operation.
 /// <seealso cref="Amazon.EC2.IAmazonEC2.DescribeInstances"/>
 /// </summary>
 /// 
 /// <param name="describeInstancesRequest">Container for the necessary parameters to execute the DescribeInstances operation on
 ///          AmazonEC2.</param>
 /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param>
 /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
 ///          procedure using the AsyncState property.</param>
 /// 
 /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeInstances
 ///         operation.</returns>
 public IAsyncResult BeginDescribeInstances(DescribeInstancesRequest describeInstancesRequest, AsyncCallback callback, object state)
 {
     return invokeDescribeInstances(describeInstancesRequest, callback, state, false);
 }
예제 #32
0
        private Amazon.EC2.Model.DescribeInstancesResponse CallAWSServiceOperation(IAmazonEC2 client, Amazon.EC2.Model.DescribeInstancesRequest request)
        {
            Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon EC2", "DescribeInstances");
#if DESKTOP
            return(client.DescribeInstances(request));
#elif CORECLR
            return(client.DescribeInstancesAsync(request).GetAwaiter().GetResult());
#else
#error "Unknown build edition"
#endif
        }
        /// <summary>
        /// Initiates the asynchronous execution of the DescribeInstances operation.
        /// </summary>
        /// 
        /// <param name="request">Container for the necessary parameters to execute the DescribeInstances operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public Task<DescribeInstancesResponse> DescribeInstancesAsync(DescribeInstancesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller = new DescribeInstancesRequestMarshaller();
            var unmarshaller = DescribeInstancesResponseUnmarshaller.Instance;

            return InvokeAsync<DescribeInstancesRequest,DescribeInstancesResponse>(request, marshaller, 
                unmarshaller, cancellationToken);
        }
        public object Execute(ExecutorContext context)
        {
            var cmdletContext = context as CmdletContext;

            #pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
            var useParameterSelect = this.Select.StartsWith("^") || this.PassThru.IsPresent;
            #pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute

            // create request and set iteration invariants
            var request = new Amazon.EC2.Model.DescribeInstancesRequest();

            if (cmdletContext.Filter != null)
            {
                request.Filters = cmdletContext.Filter;
            }
            if (cmdletContext.InstanceId != null)
            {
                request.InstanceIds = cmdletContext.InstanceId;
            }
            if (cmdletContext.MaxResult != null)
            {
                request.MaxResults = cmdletContext.MaxResult.Value;
            }

            // Initialize loop variant and commence piping
            var _nextToken             = cmdletContext.NextToken;
            var _userControllingPaging = this.NoAutoIteration.IsPresent || ParameterWasBound(nameof(this.NextToken));

            var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
            do
            {
                request.NextToken = _nextToken;

                CmdletOutput output;

                try
                {
                    var response = CallAWSServiceOperation(client, request);

                    object pipelineOutput = null;
                    if (!useParameterSelect)
                    {
                        pipelineOutput = cmdletContext.Select(response, this);
                    }
                    output = new CmdletOutput
                    {
                        PipelineOutput  = pipelineOutput,
                        ServiceResponse = response
                    };

                    _nextToken = response.NextToken;
                }
                catch (Exception e)
                {
                    output = new CmdletOutput {
                        ErrorResponse = e
                    };
                }

                ProcessOutput(output);
            } while (!_userControllingPaging && AutoIterationHelpers.HasValue(_nextToken));

            if (useParameterSelect)
            {
                WriteObject(cmdletContext.Select(null, this));
            }


            return(null);
        }
        /// <summary>
        /// Describes one or more of your instances.
        /// 
        ///  
        /// <para>
        /// If you specify one or more instance IDs, Amazon EC2 returns information for those
        /// instances. If you do not specify instance IDs, Amazon EC2 returns information for
        /// all relevant instances. If you specify an instance ID that is not valid, an error
        /// is returned. If you specify an instance that you do not own, it is not included in
        /// the returned results.
        /// </para>
        ///  
        /// <para>
        /// Recently terminated instances might appear in the returned results. This interval
        /// is usually less than one hour.
        /// </para>
        /// </summary>
        /// <param name="request">Container for the necessary parameters to execute the DescribeInstances service method.</param>
        /// 
        /// <returns>The response from the DescribeInstances service method, as returned by EC2.</returns>
        public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request)
        {
            var marshaller = new DescribeInstancesRequestMarshaller();
            var unmarshaller = DescribeInstancesResponseUnmarshaller.Instance;

            return Invoke<DescribeInstancesRequest,DescribeInstancesResponse>(request, marshaller, unmarshaller);
        }
예제 #36
0
        /// <summary>
        /// Initiates the asynchronous execution of the DescribeInstances operation.
        /// </summary>
        /// 
        /// <param name="request">Container for the necessary parameters to execute the DescribeInstances operation on AmazonEC2Client.</param>
        /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param>
        /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.</param>
        /// 
        /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeInstances
        ///         operation.</returns>
        public IAsyncResult BeginDescribeInstances(DescribeInstancesRequest request, AsyncCallback callback, object state)
        {
            var marshaller = new DescribeInstancesRequestMarshaller();
            var unmarshaller = DescribeInstancesResponseUnmarshaller.Instance;

            return BeginInvoke<DescribeInstancesRequest>(request, marshaller, unmarshaller,
                callback, state);
        }
예제 #37
0
        public DescribeInstancesResult GetInstances(Ec2Key ec2Key)
        {
            _logger.Debug("GetInstances Start.");

            AmazonEC2 ec2 = CreateAmazonEc2Client(ec2Key);

            var ec2Request = new DescribeInstancesRequest();

            DescribeInstancesResponse describeInstancesResponse = ec2.DescribeInstances(ec2Request);

            DescribeInstancesResult result = describeInstancesResponse.DescribeInstancesResult;

            _logger.Debug("GetInstances End.");

            return result;
        }
예제 #38
-1
 /// <summary>
 /// Gets the current state of an EC2 instance
 /// </summary>
 /// <param name="instanceId"></param>
 /// <returns></returns>
 public static EC2Instance GetInstance(string instanceId)
 {
     var instance = new EC2Instance() { InstanceId = instanceId };
     var request = new DescribeInstancesRequest();
     request.InstanceId = new List<string>();
     request.InstanceId.Add(instanceId);
     try
     {
         var response = Provider.DescribeInstances(request);
         var reservation = response.DescribeInstancesResult.Reservation[0];
         var runningInstance = (from i in reservation.RunningInstance
                                where i.InstanceId == instanceId
                                select i).FirstOrDefault();
         if (runningInstance != null)
         {
             instance.CurrentStateName = runningInstance.InstanceState.Name;
             if (instance.IsRunning())
             {
                 instance.PublicDnsName = runningInstance.PublicDnsName;
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(string.Format("Error calling AWS.DescribeInstances: {0}", ex.Message));
     }
     return instance;
 }