/// <summary> /// Add / Edit a collector via device twin. /// </summary> private async void SetCollectorButton_ClickAsync(object sender, RoutedEventArgs e) { string collectorName = CollectorNameInput.Text; string collectorMaxSize = CollectorMaxSizeInput.Text; if (collectorName.Length == 0 || collectorMaxSize.Length == 0) { _mainPage.ShowDialogAsync("Invaid Input", "Please make sure Collector Name and Max Size is not empty"); return; } int collectorMaxFileSize = 0; if (!Int32.TryParse(CollectorMaxSizeInput.Text, out collectorMaxFileSize)) { _mainPage.ShowDialogAsync("Invaid Input", " Max Size is not Integer"); return; } EventTracingDataContract.CollectorInner collectorInner = new EventTracingDataContract.CollectorInner { name = collectorName, traceMode = EventTracingDataContract.TraceModeFromJsonString(CollectorModeCombobox.SelectedValue.ToString()), logFileSizeLimitMB = collectorMaxFileSize, logFileFolder = CollectorFolderNameInput.Text, logFileName = CollectorFileNameInput.Text, started = CollectorStartedChckbx.IsChecked == true }; if (AddProviderChckbx.IsChecked == true) { if (ProviderGUIDInput.Text.Length == 0) { _mainPage.ShowDialogAsync("Invaid Input", "Please make sure Provider GUID is not empty"); return; } EventTracingDataContract.Provider provider = new EventTracingDataContract.Provider(); provider.guid = ProviderGUIDInput.Text; provider.traceLevel = EventTracingDataContract.TraceLevelFromJsonString(ProviderTraceLevelCombobox.SelectedValue.ToString()); provider.keywords = ProviderKeywordsInput.Text; provider.enabled = ProviderEnabledChckbx.IsChecked == true; collectorInner.providers.Add(provider); } string refreshingValue = "\"refreshing\""; string finalValue = "{ \"eventTracingCollectors\" : {\"" + collectorName + "\": {\"applyProperties\" : " + JsonConvert.SerializeObject(collectorInner.ToJsonObject()) + ", \"reportProperties\": \"yes\"}}}"; await _mainPage.UpdateTwinData(refreshingValue, finalValue); }
public static EventTracingDataContract.CollectorInner CollectorInnerFromMessage(CollectorReportedConfiguration msgCollector) { EventTracingDataContract.CollectorInner collectorInner = new EventTracingDataContract.CollectorInner(); collectorInner.name = msgCollector.Name; collectorInner.logFileFolder = msgCollector.CSPConfiguration.LogFileFolder; collectorInner.logFileName = msgCollector.CSPConfiguration.LogFileName; collectorInner.logFileSizeLimitMB = msgCollector.CSPConfiguration.LogFileSizeLimitMB; collectorInner.started = msgCollector.CSPConfiguration.Started; foreach (ProviderConfiguration msgProvider in msgCollector.CSPConfiguration.Providers) { collectorInner.providers.Add(ProviderFromMessage(msgProvider)); } return(collectorInner); }
private static CollectorCSPConfiguration CollectorInternalToMessage(EventTracingDataContract.CollectorInner collector) { Logger.Log("Reading collector CSP desired configuration...", LoggingLevel.Information); CollectorCSPConfiguration cspConfiguration = new CollectorCSPConfiguration(); cspConfiguration.LogFileFolder = collector.logFileFolder; cspConfiguration.LogFileName = collector.logFileName; cspConfiguration.LogFileSizeLimitMB = collector.logFileSizeLimitMB; cspConfiguration.TraceLogFileMode = EventTracingDataContract.TraceModeToJsonString(collector.traceMode); cspConfiguration.Started = collector.started; foreach (EventTracingDataContract.Provider provider in collector.providers) { ProviderConfiguration msgProvider = ProviderToMessage(provider); cspConfiguration.Providers.Add(msgProvider); } return(cspConfiguration); }
/// <summary> /// Update collector list view with json parameter. /// </summary> /// <param name="token">The json object that describes the collector list.</param> private void EventTracingJsonToUI(JToken twinResult) { if (!(twinResult is JObject)) { _mainPage.ShowDialogAsync("Read Diagnistic Log Twin Error", "Invalid apps node json format!"); return; } List <CollectorReported> collectorList = new List <CollectorReported>(); List <EventTracingDataContract.CollectorInner> collectorInners = new List <EventTracingDataContract.CollectorInner>(); string lastChangeTime = string.Empty; JObject root = (JObject)twinResult; foreach (JToken p in root.Children()) { if (!(p is JProperty)) { continue; } JProperty childProperty = (JProperty)p; if (childProperty.Name == "lastChange") { var timeToken = childProperty.Value.SelectToken("time"); if (timeToken != null) { lastChangeTime = "Last Update: " + timeToken.ToString(); } } else { CollectorReported collectorReported = new CollectorReported(); collectorReported.Name = childProperty.Name; EventTracingDataContract.CollectorInner collectorInner = EventTracingDataContract.CollectorInner.FromJsonObject((JObject)childProperty.Value); collectorReported.CollectorInners = collectorInner; collectorList.Add(collectorReported); } } LastChangeTime.Text = lastChangeTime; CollectorsListView.ItemsSource = collectorList; }