private ManagementReport BuildReport(trace.Trace trace, IEnumerable<Failure> failures) { ManagementReport report = new ManagementReport { ID = trace.Id.ToString(), State = new State() { Execution = ExecutionState.Active, Health = HealthState.OperationalWithFailures, Failures = failures.ToArray() }, DateTime = DateTime.UtcNow, SourceID = trace.Properties.ContainsKey(REPORT_SOURCE_ID_PROPERTY) ? trace.Properties[REPORT_SOURCE_ID_PROPERTY] as String : Properties.DefaultSourceId }; return report; }
protected override void Send(ManagementReport report, String activityId, String agentId) { var reportJson = new Dictionary<String, Object>{ {"ID", report.ID}, {"SourceID", report.SourceID }, {"DateTime", report.DateTime}, {"State", new Dictionary<String, Object> { {"Health", report.State.Health.ToString() }, {"Execution", report.State.Execution.ToString()}, {"Failures", (from f in report.State.Failures select new Dictionary<String, Object> { {"FailureID", f.FailureID}, {"SourceID", f.SourceID}, {"Details", f.Details} }).ToArray()} }}, {"Metrics", report.Metrics != null ? (from m in report.Metrics select new Dictionary<String, Object> { {"MetricID", m.MetricID}, {"SourceID", m.SourceID}, {"Reference", m.Reference}, {"Value", m.Value}, {"Details", m.Details}, {"CategoryID", m.CategoryID}, {"DateTime", m.DateTime } }).ToArray() : null}, {"ActivityID", activityId}, {"AgentID", agentId}, }; var str = new StringWriter(); var jsonSer = new Newtonsoft.Json.JsonSerializer(); jsonSer.Serialize(str, reportJson); NetBrokerMessage brokerMessage = new NetBrokerMessage(str.ToString()); this.brokerClient.Publish(brokerMessage, this.topic); }
protected abstract void Send(ManagementReport report, String activityId, String agentId);