Example #1
0
        /// <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);
        }
Example #2
0
        /// <summary>
        /// Starts an EC2 instance
        /// </summary>
        /// <param name="instanceId"></param>
        /// <returns></returns>
        public static EC2Instance StartInstance(string instanceId)
        {
            var instance = new EC2Instance()
            {
                InstanceId = instanceId
            };
            var request = new StartInstancesRequest();

            request.InstanceId = new List <string>();
            request.InstanceId.Add(instanceId);
            try
            {
                var response        = EC2.Provider.StartInstances(request);
                var stateChanges    = response.StartInstancesResult.StartingInstances;
                var runningInstance = (from i in stateChanges
                                       where i.InstanceId == instanceId
                                       select i).FirstOrDefault();
                if (runningInstance != null)
                {
                    instance.CurrentStateName = runningInstance.CurrentState.Name;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Error calling AWS.StartInstances: {0}", ex.Message));
            }
            return(instance);
        }
Example #3
0
 private void DestroyInstance(EC2Instance ec2Instance)
 {
     var terminateResponse = _ec2Client.TerminateInstances(new TerminateInstancesRequest
     {
         InstanceIds = new List <string> {
             ec2Instance.InstanceId
         }
     });
 }
Example #4
0
        public void TerminateInstance(EC2Instance ec2Instance)
        {
            if (ec2Instance.PublicIpAddress != null)
            {
                string allocationId  = GetAllocationAddress(ec2Instance.PublicIpAddress);
                string associationId = GetAssociationAddress(ec2Instance.PublicIpAddress);
                if (DisassociateAddress(associationId))
                {
                    ReleaseAddress(allocationId);
                }
            }

            DestroyInstance(ec2Instance);
        }
Example #5
0
        public List <EC2Instance> GetEC2InstanceList(IAmazonEC2 ec2)
        {
            // List<string> ec2list = new List<string>();
            List <EC2Instance> ec2list;

            ec2list = new List <EC2Instance>();
            List <GroupIdentifier> sg;
            List <string>          sgstrlist;
            List <string>          bdevicelist;

            try
            {
                DescribeInstancesRequest  ec2Request  = new DescribeInstancesRequest();
                DescribeInstancesResponse ec2Response = ec2.DescribeInstances(ec2Request);
                foreach (Reservation reservation in ec2Response.Reservations)
                {
                    foreach (Instance instance in reservation.Instances)
                    {
                        EC2Instance EC2Ins;
                        EC2Ins      = new EC2Instance();
                        sg          = new List <GroupIdentifier>();
                        sgstrlist   = new List <string>();
                        bdevicelist = new List <string>();

                        EC2Ins.setid(instance.InstanceId);
                        EC2Ins.setName(instance.PrivateDnsName);
                        EC2Ins.setPrivateDNSName(instance.PrivateDnsName);
                        EC2Ins.setPrivateIP(instance.PrivateIpAddress);
                        EC2Ins.setPublicIP(instance.PublicIpAddress);
                        EC2Ins.setType(instance.InstanceType);
                        EC2Ins.setPublicDNSName(instance.PublicDnsName);
                        EC2Ins.setTokenName(instance.ClientToken);
                        EC2Ins.setPlatform(instance.Platform);
                        EC2Ins.setState(instance.State.Name.Value);
                        EC2Ins.setPlacment(instance.Placement.AvailabilityZone);
                        // EC2Ins.setTagName(instance.Tags[0].Value);

                        EC2Ins.setKeyName(instance.KeyName);
                        EC2Ins.setVpcId(instance.VpcId);
                        EC2Ins.setSubnetId(instance.SubnetId);
                        EC2Ins.setAmiId(instance.ImageId);

                        foreach (Amazon.EC2.Model.Tag EC2tag in instance.Tags)
                        {
                            if (EC2tag.Key == "Name")
                            {
                                EC2Ins.setTagName(EC2tag.Value);
                            }
                        }

                        // EC2Ins.setBlockDevice()
                        //  instance.BlockDeviceMappings

                        foreach (InstanceBlockDeviceMapping bdevice in instance.BlockDeviceMappings)
                        {
                            //  string bdstr = bdevice.DeviceName  + ":"  + ":" + bdevice.Ebs; bdevice.
                            bdevicelist.Add(bdevice.DeviceName + ":" + ":" + bdevice.Ebs.Status + ":" + bdevice.Ebs.VolumeId);
                        }

                        EC2Ins.setSG(sgstrlist);

                        foreach (GroupIdentifier sgi in instance.SecurityGroups)
                        {
                            sgstrlist.Add(sgi.GroupId);
                            // sgi.GroupId
                        }

                        EC2Ins.setBlockDevice(bdevicelist);

                        Monitoring m;
                        List <InstanceNetworkInterface> ln;
                        ln = new List <InstanceNetworkInterface>();
                        m  = instance.Monitoring;
                        ln = instance.NetworkInterfaces;

                        //instance.NetworkInterfaces
                        //instance.

                        ec2list.Add(EC2Ins);

                        //  ec2list.Add(instance.InstanceId);

                        /*   instance.ImageId;
                         * instance.KeyName;
                         * instance.LaunchTime;
                         * instance.Placement;
                         * instance.Platform;
                         * instance.RootDeviceType;
                         * instance.SecurityGroups;
                         * instance.SriovNetSupport; //enhance network is supported
                         * instance.State;
                         * instance.StateReason;
                         * instance.SubnetId;
                         * instance.Tags;
                         * instance.VirtualizationType;
                         * instance.VpcId
                         * instance.KeyName;
                         * instance.VpcId; */
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n"); // + ex.StackTrace);
            }

            return(ec2list);
        }