private void AddTestConfigurationsToConnectionMonitorTestGroup( PSNetworkWatcherConnectionMonitorTestGroupObject testGroup, ConnectionMonitorTestGroup cmTestGroup, ConnectionMonitor connectionMonitor) { foreach (PSNetworkWatcherConnectionMonitorTestConfigurationObject testConfiguration in testGroup.TestConfigurations) { ConnectionMonitorTestConfiguration cmTestConfiguration = new ConnectionMonitorTestConfiguration() { Name = testConfiguration.Name, PreferredIPVersion = testConfiguration.PreferredIPVersion, TestFrequencySec = testConfiguration.TestFrequencySec, SuccessThreshold = this.GetSuccessThreshold(testConfiguration) }; if (testConfiguration.ProtocolConfiguration is PSNetworkWatcherConnectionMonitorTcpConfiguration tcpConfiguration) { cmTestConfiguration.Protocol = "Tcp"; cmTestConfiguration.TcpConfiguration = new ConnectionMonitorTcpConfiguration() { Port = tcpConfiguration.Port, DisableTraceRoute = tcpConfiguration.DisableTraceRoute }; } else if (testConfiguration.ProtocolConfiguration is PSNetworkWatcherConnectionMonitorHttpConfiguration httpConfiguration) { cmTestConfiguration.Protocol = "Http"; cmTestConfiguration.HttpConfiguration = new ConnectionMonitorHttpConfiguration() { Port = httpConfiguration.Port, Method = httpConfiguration.Method, Path = httpConfiguration.Path, PreferHTTPS = httpConfiguration.PreferHTTPS, ValidStatusCodeRanges = httpConfiguration.ValidStatusCodeRanges, RequestHeaders = this.GetRequestHeaders(httpConfiguration) }; } else if (testConfiguration.ProtocolConfiguration is PSNetworkWatcherConnectionMonitorIcmpConfiguration icmpConfiguration) { cmTestConfiguration.Protocol = "Icmp"; cmTestConfiguration.IcmpConfiguration = new ConnectionMonitorIcmpConfiguration() { DisableTraceRoute = icmpConfiguration.DisableTraceRoute }; } if (connectionMonitor.TestConfigurations.Count(x => x.Name == cmTestConfiguration.Name) == 0) { connectionMonitor.TestConfigurations.Add(cmTestConfiguration); } cmTestGroup.TestConfigurations.Add(cmTestConfiguration.Name); } }
internal static ConnectionMonitorData DeserializeConnectionMonitorData(JsonElement element) { Optional <string> etag = default; Optional <string> location = default; Optional <IReadOnlyDictionary <string, string> > tags = default; ResourceIdentifier id = default; string name = default; ResourceType type = default; Optional <ConnectionMonitorSource> source = default; Optional <ConnectionMonitorDestination> destination = default; Optional <bool> autoStart = default; Optional <int> monitoringIntervalInSeconds = default; Optional <IReadOnlyList <ConnectionMonitorEndpoint> > endpoints = default; Optional <IReadOnlyList <ConnectionMonitorTestConfiguration> > testConfigurations = default; Optional <IReadOnlyList <ConnectionMonitorTestGroup> > testGroups = default; Optional <IReadOnlyList <ConnectionMonitorOutput> > outputs = default; Optional <string> notes = default; Optional <ProvisioningState> provisioningState = default; Optional <DateTimeOffset> startTime = default; Optional <string> monitoringStatus = default; Optional <ConnectionMonitorType> connectionMonitorType = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("etag")) { etag = property.Value.GetString(); continue; } if (property.NameEquals("location")) { location = property.Value.GetString(); continue; } if (property.NameEquals("tags")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } Dictionary <string, string> dictionary = new Dictionary <string, string>(); foreach (var property0 in property.Value.EnumerateObject()) { dictionary.Add(property0.Name, property0.Value.GetString()); } tags = dictionary; continue; } if (property.NameEquals("id")) { id = new ResourceIdentifier(property.Value.GetString()); continue; } if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("type")) { type = property.Value.GetString(); continue; } if (property.NameEquals("properties")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } foreach (var property0 in property.Value.EnumerateObject()) { if (property0.NameEquals("source")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } source = ConnectionMonitorSource.DeserializeConnectionMonitorSource(property0.Value); continue; } if (property0.NameEquals("destination")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } destination = ConnectionMonitorDestination.DeserializeConnectionMonitorDestination(property0.Value); continue; } if (property0.NameEquals("autoStart")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } autoStart = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("monitoringIntervalInSeconds")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } monitoringIntervalInSeconds = property0.Value.GetInt32(); continue; } if (property0.NameEquals("endpoints")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <ConnectionMonitorEndpoint> array = new List <ConnectionMonitorEndpoint>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(ConnectionMonitorEndpoint.DeserializeConnectionMonitorEndpoint(item)); } endpoints = array; continue; } if (property0.NameEquals("testConfigurations")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <ConnectionMonitorTestConfiguration> array = new List <ConnectionMonitorTestConfiguration>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(ConnectionMonitorTestConfiguration.DeserializeConnectionMonitorTestConfiguration(item)); } testConfigurations = array; continue; } if (property0.NameEquals("testGroups")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <ConnectionMonitorTestGroup> array = new List <ConnectionMonitorTestGroup>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(ConnectionMonitorTestGroup.DeserializeConnectionMonitorTestGroup(item)); } testGroups = array; continue; } if (property0.NameEquals("outputs")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <ConnectionMonitorOutput> array = new List <ConnectionMonitorOutput>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(ConnectionMonitorOutput.DeserializeConnectionMonitorOutput(item)); } outputs = array; continue; } if (property0.NameEquals("notes")) { notes = property0.Value.GetString(); continue; } if (property0.NameEquals("provisioningState")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } provisioningState = new ProvisioningState(property0.Value.GetString()); continue; } if (property0.NameEquals("startTime")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } startTime = property0.Value.GetDateTimeOffset("O"); continue; } if (property0.NameEquals("monitoringStatus")) { monitoringStatus = property0.Value.GetString(); continue; } if (property0.NameEquals("connectionMonitorType")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } connectionMonitorType = new ConnectionMonitorType(property0.Value.GetString()); continue; } } continue; } } return(new ConnectionMonitorData(id, name, type, etag.Value, location.Value, Optional.ToDictionary(tags), source.Value, destination.Value, Optional.ToNullable(autoStart), Optional.ToNullable(monitoringIntervalInSeconds), Optional.ToList(endpoints), Optional.ToList(testConfigurations), Optional.ToList(testGroups), Optional.ToList(outputs), notes.Value, Optional.ToNullable(provisioningState), Optional.ToNullable(startTime), monitoringStatus.Value, Optional.ToNullable(connectionMonitorType))); }
private PSNetworkWatcherConnectionMonitorProtocolConfiguration GetPSProtocolConfiguration(ConnectionMonitorTestConfiguration testConfiguration) { if (testConfiguration.TcpConfiguration != null) { return(new PSNetworkWatcherConnectionMonitorTcpConfiguration() { Port = testConfiguration.TcpConfiguration.Port, DisableTraceRoute = testConfiguration.TcpConfiguration.DisableTraceRoute }); } if (testConfiguration.HttpConfiguration != null) { return(new PSNetworkWatcherConnectionMonitorHttpConfiguration() { Port = testConfiguration.HttpConfiguration.Port, Method = testConfiguration.HttpConfiguration.Method, Path = testConfiguration.HttpConfiguration.Path, PreferHTTPS = testConfiguration.HttpConfiguration.PreferHTTPS, ValidStatusCodeRanges = testConfiguration.HttpConfiguration.ValidStatusCodeRanges?.ToList(), RequestHeaders = this.GetPSRequestHeaders(testConfiguration.HttpConfiguration.RequestHeaders?.ToList()) }); } if (testConfiguration.IcmpConfiguration != null) { return(new PSNetworkWatcherConnectionMonitorIcmpConfiguration() { DisableTraceRoute = testConfiguration.IcmpConfiguration.DisableTraceRoute }); } return(null); }
public PSConnectionMonitorResultV2 MapConnectionMonitorResultToPSConnectionMonitorResultV2(ConnectionMonitorResult connectionMonitor) { PSConnectionMonitorResultV2 psConnectionMonitor = new PSConnectionMonitorResultV2() { Name = connectionMonitor.Name, Id = connectionMonitor.Id, Etag = connectionMonitor.Etag, ProvisioningState = connectionMonitor.ProvisioningState, Type = connectionMonitor.Type, Location = connectionMonitor.Location, StartTime = connectionMonitor.StartTime, Tags = new Dictionary <string, string>(), ConnectionMonitorType = connectionMonitor.ConnectionMonitorType, Notes = connectionMonitor.Notes, TestGroups = new List <PSNetworkWatcherConnectionMonitorTestGroupObject>() }; if (connectionMonitor.Tags != null) { foreach (KeyValuePair <string, string> KeyValue in connectionMonitor.Tags) { psConnectionMonitor.Tags.Add(KeyValue.Key, KeyValue.Value); } } if (connectionMonitor.Outputs != null) { psConnectionMonitor.Outputs = new List <PSNetworkWatcherConnectionMonitorOutputObject>(); foreach (ConnectionMonitorOutput output in connectionMonitor.Outputs) { psConnectionMonitor.Outputs.Add( new PSNetworkWatcherConnectionMonitorOutputObject() { Type = output.Type, WorkspaceSettings = new PSConnectionMonitorWorkspaceSettings() { WorkspaceResourceId = output.WorkspaceSettings?.WorkspaceResourceId } }); } } if (connectionMonitor.TestGroups != null) { foreach (ConnectionMonitorTestGroup testGroup in connectionMonitor.TestGroups) { PSNetworkWatcherConnectionMonitorTestGroupObject testGroupObject = new PSNetworkWatcherConnectionMonitorTestGroupObject() { Name = testGroup.Name, Disable = testGroup.Disable, TestConfigurations = new List <PSNetworkWatcherConnectionMonitorTestConfigurationObject>(), Sources = new List <PSNetworkWatcherConnectionMonitorEndpointObject>(), Destinations = new List <PSNetworkWatcherConnectionMonitorEndpointObject>() }; if (testGroup.Sources != null) { foreach (string sourceEndpointName in testGroup.Sources) { ConnectionMonitorEndpoint sourceEndpoint = GetEndpoinByName(connectionMonitor.Endpoints, sourceEndpointName); PSNetworkWatcherConnectionMonitorEndpointObject EndpointObject = NetworkResourceManagerProfile.Mapper.Map <PSNetworkWatcherConnectionMonitorEndpointObject>(sourceEndpoint); testGroupObject.Sources.Add(EndpointObject); } } if (testGroup.Destinations != null) { foreach (string destinationEndpointName in testGroup.Destinations) { ConnectionMonitorEndpoint destinationEndpoint = GetEndpoinByName(connectionMonitor.Endpoints, destinationEndpointName); PSNetworkWatcherConnectionMonitorEndpointObject EndpointObject = NetworkResourceManagerProfile.Mapper.Map <PSNetworkWatcherConnectionMonitorEndpointObject>(destinationEndpoint); testGroupObject.Destinations.Add(EndpointObject); } } // Test Configuration if (testGroup.TestConfigurations != null) { foreach (string testConfigurationName in testGroup.TestConfigurations) { ConnectionMonitorTestConfiguration testConfiguration = GetTestConfigurationByName(connectionMonitor.TestConfigurations, testConfigurationName); PSNetworkWatcherConnectionMonitorTestConfigurationObject testConfigurationObject = new PSNetworkWatcherConnectionMonitorTestConfigurationObject() { Name = testConfiguration.Name, PreferredIPVersion = testConfiguration.PreferredIPVersion, TestFrequencySec = testConfiguration.TestFrequencySec, SuccessThreshold = testConfiguration.SuccessThreshold == null ? null : new PSNetworkWatcherConnectionMonitorSuccessThreshold() { ChecksFailedPercent = testConfiguration.SuccessThreshold.ChecksFailedPercent, RoundTripTimeMs = testConfiguration.SuccessThreshold.RoundTripTimeMs }, ProtocolConfiguration = this.GetPSProtocolConfiguration(testConfiguration) }; testGroupObject.TestConfigurations.Add(testConfigurationObject); } } psConnectionMonitor.TestGroups.Add(testGroupObject); } } return(psConnectionMonitor); }