示例#1
0
        public static Instance CreateInstance(AWSModel.RunningInstance runningInstance)
        {
            Instance instance = new Instance();

            instance.ImageId        = runningInstance.ImageId;
            instance.InstanceId     = runningInstance.InstanceId;
            instance.PrivateDnsName = runningInstance.PrivateDnsName;

            // Openstack sends Public IP address in PublicDnsName
            if (!string.IsNullOrEmpty(runningInstance.PublicDnsName))
            {
                instance.IpAddress = runningInstance.PublicDnsName;
            }
            else
            {
                instance.IpAddress = runningInstance.IpAddress;
            }

            if (runningInstance.InstanceState != null)
            {
                instance.State = runningInstance.InstanceState.Name;
            }
            instance.Type = runningInstance.InstanceType;
            return(instance);
        }
示例#2
0
        internal static EC2Node FromRunningInstance(RunningInstance r, EC2Driver driver)
        {
            List<IPAddress> public_ips = new List<IPAddress> ();
            List<IPAddress> private_ips = new List<IPAddress> ();

            IPAddress ip;
            if (IPAddress.TryParse (r.IpAddress, out ip))
                public_ips.Add (ip);

            if (IPAddress.TryParse (r.PrivateIpAddress, out ip))
                private_ips.Add (ip);

            EC2Node node = new EC2Node (r.InstanceId, r.InstanceId, ToNodeState (r.InstanceState), public_ips, private_ips, driver);
            return node;
        }
        private static string GetInstanceStatusCss(string instanceStatus, Dictionary<string, TimeSpan> stateTimeMap, RunningInstance description)
        {
            var status = "ok";

            if (instanceStatus != "InService")
            {
                status = "warning";
                if (stateTimeMap.ContainsKey(description.InstanceId) && stateTimeMap[description.InstanceId].Minutes >= 10)
                {
                    status = "error";

                    if (stateTimeMap[description.InstanceId].Minutes >= 20)
                    {
                        status = "danger";
                    }
                }
            }
            return status;
        }
/*		public static string getPassword(this API_AmazonEC2 amazonEC2, RunningInstance runningInstance)	
		{
			return amazonEC2.getPassword(runningInstance,null);
		}
		public static string getPassword(this API_AmazonEC2 amazonEC2, RunningInstance runningInstance, string pathToPemFile)	
		{	 
			"Tests on  instance with ID: {0}".info(runningInstance.InstanceId);										
			var ec2Client = amazonEC2.getEC2Client(runningInstance.Placement.AvailabilityZone.removeLastChar());
			var passwordResponse = ec2Client.GetPasswordData(new GetPasswordDataRequest().WithInstanceId(runningInstance.InstanceId));
			"raw password data : {0}".info(passwordResponse.GetPasswordDataResult.ToXML());						
			if (amazonEC2.ApiRsa.isNull())
				amazonEC2.ApiRsa = new API_RSA(pathToPemFile);
			var decryptedPassword = amazonEC2.ApiRsa.decryptPasswordUsingPem(passwordResponse.GetPasswordDataResult.PasswordData.Data); 				
			"decrypted password: {0}".info(decryptedPassword);
			return decryptedPassword;			
	   	}*/
	   		   	
	   	
	   	public static string getRunningInstanceSignature(this API_AmazonEC2 amazonEC2, RunningInstance runningInstance)	
	   	{
			var signature = "{0}  -  {1}  -  {2}  -  {3}  -  {4} ".format(
		   						runningInstance.InstanceId, 
		   						runningInstance.InstanceType, 
		   						runningInstance.IpAddress,
		   						runningInstance.Placement.AvailabilityZone,
		   						runningInstance.InstanceState.Name);
			foreach(var tag in runningInstance.Tag)
				//signature = "{0}= {1}  -  {2}".format(tag.Key, tag.Value, signature); 
				signature = "{1}  -  {2}".format(tag.Key, tag.Value, signature); 
		   	return signature;
		}
		public static RunningInstance showConsoleOut(this API_AmazonEC2 amazonEC2, RunningInstance runningInstance)
	    {							
			"Getting Console out instance with ID: {0}".info(runningInstance.InstanceId);			
			var ec2Client = amazonEC2.getEC2Client(runningInstance.Placement.AvailabilityZone.removeLastChar());
			var consoleOutResult = ec2Client.GetConsoleOutput(new GetConsoleOutputRequest()
																    .WithInstanceId(runningInstance.InstanceId));
			var consoleOut = consoleOutResult.GetConsoleOutputResult.ConsoleOutput.Output.base64Decode();	
			consoleOut.showInCodeViewer(".bat");
			return runningInstance;
		}		
		public static RunningInstance rebootInstance(this API_AmazonEC2 amazonEC2, RunningInstance runningInstance)
	    {													
			"Rebooting instance with ID: {0}".info(runningInstance.InstanceId);							
			var ec2Client = amazonEC2.getEC2Client(runningInstance.Placement.AvailabilityZone.removeLastChar());
			var result = ec2Client.RebootInstances(new RebootInstancesRequest() 
													.WithInstanceId(runningInstance.InstanceId)); 
	    	return runningInstance;
		}
		public static string getPassword(this API_AmazonEC2 amazonEC2, RunningInstance runningInstance, string pathToPemFile)	
		{	 
			"Tests on  instance with ID: {0}".info(runningInstance.InstanceId);										
			var ec2Client = amazonEC2.getEC2Client(runningInstance.Placement.AvailabilityZone.removeLastChar());
			var passwordResponse = ec2Client.GetPasswordData(new GetPasswordDataRequest().WithInstanceId(runningInstance.InstanceId));
			"raw password data : {0}".info(passwordResponse.GetPasswordDataResult.ToXML());						
			if (amazonEC2.ApiRsa.isNull())
				amazonEC2.ApiRsa = new API_RSA(pathToPemFile);
			var decryptedPassword = amazonEC2.ApiRsa.decryptPasswordUsingPem(passwordResponse.GetPasswordDataResult.PasswordData.Data); 				
			"decrypted password: {0}".info(decryptedPassword);
			return decryptedPassword;			
	   	}
		public static string getPassword(this API_AmazonEC2 amazonEC2, RunningInstance runningInstance)	
		{
			return amazonEC2.getPassword(runningInstance,null);
		}
 static bool IsRunning(RunningInstance instance)
 {
     return !string.Equals(instance.InstanceState.Name, "stopped", StringComparison.OrdinalIgnoreCase);
 }
 InstanceState Stop(RunningInstance instance)
 {
     using (var client = CreateClient())
     {
         var request = new StopInstancesRequest();
         request.InstanceId.Add(instance.InstanceId);
         var response = client.StopInstances(request);
         return response.StopInstancesResult.StoppingInstances[0].CurrentState;
     }
 }
 private void SetOutputProperties(RunningInstance instance)
 {
     AmiLaunchIndex = instance.AmiLaunchIndex;
     Architecture = instance.Architecture;
     ImageId = instance.ImageId;
     InstanceLifecycle = instance.InstanceLifecycle;
     if (instance.InstanceState != null)
     {
         InstanceStateCode = instance.InstanceState.Code;
         InstanceStateName = instance.InstanceState.Name;
     }
     InstanceType = instance.InstanceType;
     IpAddress = instance.IpAddress;
     KernelId = instance.KernelId;
     KeyName = instance.KeyName;
     LaunchTime = instance.LaunchTime;
     if (instance.Monitoring!=null)
     {
         MonitoringState = instance.Monitoring.MonitoringState;
     }
     if (instance.Placement!=null)
     {
         AvailabilityZone = instance.Placement.AvailabilityZone;
     }
     Platform = instance.Platform;
     PrivateDnsName = instance.PrivateDnsName;
     PublicDnsName = instance.PublicDnsName;
     RamdiskId = instance.RamdiskId;
     RootDeviceName = instance.RootDeviceName;
     RootDeviceType = instance.RootDeviceType;
     SpotInstanceRequestId = instance.SpotInstanceRequestId;
     if (instance.StateReason != null)
     {
         StateReason = instance.StateReason.Message;
     }
     StateTransitionReason = instance.StateTransitionReason;
     SubnetId = instance.SubnetId;
     VpcId = instance.VpcId;
 }
        private string GetGraylogUrl(RunningInstance description)
        {
            var graylogDns = ConfigurationManager.AppSettings["GraylogDns"];
            if (string.IsNullOrEmpty(graylogDns))
                throw new ConfigurationErrorsException("GraylogDns setting is missing from configuration.");

            var host = description.PrivateDnsName.Split('.')[0];

            return string.Format(
                "http://{0}/messages?filters%5Bseverity%5D=3&filters%5Bhost%5D={1}",
                graylogDns,
                host
            );
        }