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; }
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; }
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--; * } * } * */ } }