public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context) 
 {   
     GetConsoleOutputResponse response = new GetConsoleOutputResponse();
     
     int targetDepth = 2;
     while (context.Read())
     {
         if (context.IsStartElement || context.IsAttribute)
         {
             
             if (context.TestExpression("instanceId", targetDepth))
             {
                 response.InstanceId = StringUnmarshaller.GetInstance().Unmarshall(context);
                     
                 continue;
             }
             if (context.TestExpression("timestamp", targetDepth))
             {
                 response.Timestamp = DateTimeUnmarshaller.GetInstance().Unmarshall(context);
                     
                 continue;
             }
             if (context.TestExpression("output", targetDepth))
             {
                 response.Output = StringUnmarshaller.GetInstance().Unmarshall(context);
                     
                 continue;
             }
         }
     }
          
                 
     return response;
 }
Example #2
0
 public ConsoleOutput GetConsoleOutput(string instanceId)
 {
     try
     {
         AWSModel.GetConsoleOutputRequest request = new AWSModel.GetConsoleOutputRequest();
         request.InstanceId = instanceId;
         AWSModel.GetConsoleOutputResponse response = ec2.GetConsoleOutput(request);
         if (response != null)
         {
             return(ModelUtil.CreateInstance(response.GetConsoleOutputResult.ConsoleOutput));
         }
         else
         {
             return(null);
         }
     }
     catch (WebException e)
     {
         throw new MonoscapeEC2Exception(e.Message, e);
     }
     catch (AmazonEC2Exception e)
     {
         throw new MonoscapeEC2Exception(e.Message, e);
     }
 }
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            GetConsoleOutputResponse response = new GetConsoleOutputResponse();

            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("instanceId", targetDepth))
                    {
                        var unmarshaller = StringUnmarshaller.Instance;
                        response.InstanceId = unmarshaller.Unmarshall(context);
                        continue;
                    }
                    if (context.TestExpression("output", targetDepth))
                    {
                        var unmarshaller = StringUnmarshaller.Instance;
                        response.Output = unmarshaller.Unmarshall(context);
                        continue;
                    }
                    if (context.TestExpression("timestamp", targetDepth))
                    {
                        var unmarshaller = DateTimeUnmarshaller.Instance;
                        response.Timestamp = unmarshaller.Unmarshall(context);
                        continue;
                    }
                } 
            }

            return response;
        }
Example #4
0
        internal void UpdateInfo()
        {
            bool Change = false;

            if (this.Status == Ec2Status.Running)
            {
                //this will give us 5 minute interval on 1 day


                var resp2 = myController.CloudWatch.GetMetricStatistics(new GetMetricStatisticsRequest()
                                                                        .WithNamespace("AWS/EC2")

                                                                        .WithDimensions(new Amazon.CloudWatch.Model.Dimension()
                                                                                        .WithName("InstanceId")
                                                                                        .WithValue(this.InstanceId))

                                                                        .WithStartTime(MonitoringSegmentStart.ToUniversalTime())
                                                                        .WithEndTime(MonitoringSegmentEnd.ToUniversalTime())
                                                                        .WithPeriod(Period)
                                                                        .WithMetricName("CPUUtilization")
                                                                        .WithUnit("Percent")
                                                                        .WithStatistics("Average", "Maximum"));

                if (resp2.GetMetricStatisticsResult.Datapoints.Count > 0)
                {
                    StatisticCPUUtiliationMax.Values = new DataSample[resp2.GetMetricStatisticsResult.Datapoints.Count];
                    StatisticCPUUtiliationAvg.Values = new DataSample[resp2.GetMetricStatisticsResult.Datapoints.Count];
                    for (int i = 0; i < resp2.GetMetricStatisticsResult.Datapoints.Count; i++)
                    {
                        StatisticCPUUtiliationMax.Values[i] = new DataSample()
                        {
                            Value = (decimal)resp2.GetMetricStatisticsResult.Datapoints[i].Maximum,
                            Time  = resp2.GetMetricStatisticsResult.Datapoints[i].Timestamp
                        };
                        StatisticCPUUtiliationAvg.Values[i] = new DataSample()
                        {
                            Value = (decimal)resp2.GetMetricStatisticsResult.Datapoints[i].Average,
                            Time  = resp2.GetMetricStatisticsResult.Datapoints[i].Timestamp
                        };
                    }


                    int CPUUtilizationTemp = (int)resp2.GetMetricStatisticsResult.Datapoints[resp2.GetMetricStatisticsResult.Datapoints.Count - 1].Maximum;
                    if (CPUUtilizationTemp != CPUUtilizationMax)
                    {
                        CPUUtilizationMax = CPUUtilizationTemp;
                        Change            = true;
                    }
                    CPUUtilizationTemp = (int)resp2.GetMetricStatisticsResult.Datapoints[resp2.GetMetricStatisticsResult.Datapoints.Count - 1].Average;
                    if (CPUUtilizationTemp != CPUUtilizationAvg)
                    {
                        CPUUtilizationAvg = CPUUtilizationTemp;
                        Change            = true;
                    }
                    StatisticsValid = true;
                }

                var resp3 = myController.CloudWatch.GetMetricStatistics(new GetMetricStatisticsRequest()
                                                                        .WithNamespace("AWS/EC2")

                                                                        .WithDimensions(new Amazon.CloudWatch.Model.Dimension()
                                                                                        .WithName("InstanceId")
                                                                                        .WithValue(this.InstanceId))

                                                                        .WithStartTime(MonitoringSegmentStart.ToUniversalTime())
                                                                        .WithEndTime(MonitoringSegmentEnd.ToUniversalTime())
                                                                        .WithPeriod(Period)
                                                                        .WithMetricName("NetworkOut")
                                                                        .WithUnit("Bytes")
                                                                        .WithStatistics("Sum"));
                if (resp3.GetMetricStatisticsResult.Datapoints.Count > 0)
                {
                    StatisticNetworkOut.Values = new DataSample[resp3.GetMetricStatisticsResult.Datapoints.Count];
                    for (int i = 0; i < resp3.GetMetricStatisticsResult.Datapoints.Count; i++)
                    {
                        StatisticNetworkOut.Values[i] = new DataSample()
                        {
                            Value = (decimal)resp3.GetMetricStatisticsResult.Datapoints[i].Sum / 1000,
                            Time  = resp3.GetMetricStatisticsResult.Datapoints[i].Timestamp
                        };
                    }

                    int NetworkOutRecent5MinTemp = (int)resp3.GetMetricStatisticsResult.Datapoints[resp3.GetMetricStatisticsResult.Datapoints.Count - 1].Sum;
                    if (NetworkOutRecent5MinTemp != NetworkOutRecent5Min)
                    {
                        NetworkOutRecent5Min = NetworkOutRecent5MinTemp;
                        Change = true;
                    }
                    StatisticsValid = true;
                }

                if (Change)
                {
                    this.TriggerStatusChanged();
                }
            }


            //check terminal


            if (this.Status != Ec2Status.Running || string.IsNullOrWhiteSpace(this.ConsoleOutput))
            {
                Amazon.EC2.Model.GetConsoleOutputResponse resp =
                    myController.ec2.GetConsoleOutput(new Amazon.EC2.Model.GetConsoleOutputRequest()
                                                      .WithInstanceId(this.InstanceId));

                if (LatestBootConsoleTimestamp != resp.GetConsoleOutputResult.ConsoleOutput.Timestamp)
                {
                    LatestBootConsoleTimestamp = resp.GetConsoleOutputResult.ConsoleOutput.Timestamp;


                    ConsoleOutput = Encoding.UTF8.GetString(Convert.FromBase64String(resp.GetConsoleOutputResult.ConsoleOutput.Output));

                    if (ConsoleUpdate != null)
                    {
                        ConsoleUpdate(this, new NewConceolOutputEventArgs(ConsoleOutput, LatestBootConsoleTimestamp));
                    }
                }

                /*
                 * if (this.ConfigureAppsWhenBootingComplete > 0)
                 * {
                 *  try
                 *  {
                 *      ConfigureAppsOnBootComplete();
                 *  }
                 *  catch (Exception ex)
                 *  {
                 *      Program.TraceLine("Error while configuring apps on boot complete, reason: ", ex);
                 *      ConfigureAppsWhenBootingComplete--;
                 *  }
                 * }
                 * */
            }
        }