Beispiel #1
0
 /// <summary>
 /// Validate the endpoint configuration. 'Name' and 'Flat' properties are not allowed and there is only one configuration per endpoint allowed.
 /// </summary>
 private bool ValidateEndpointConfiguration(EndpointTelemetryConfigurationModel config)
 {
     if (config.ForEndpointUrl == null)
     {
         Logger.Fatal("Each object in the 'EndpointSpecific' array must have a property 'ForEndpointUrl'. Please change.");
         return(false);
     }
     if (_telemetryConfiguration.EndpointSpecific.Count(c => !string.IsNullOrEmpty(c.ForEndpointUrl) && c.ForEndpointUrl.Equals(config?.ForEndpointUrl, StringComparison.OrdinalIgnoreCase)) > 1)
     {
         Logger.Fatal($"The value '{config.ForEndpointUrl}' for property 'ForEndpointUrl' is only allowed to used once in the 'EndpointSpecific' array. Please change.");
         return(false);
     }
     if (config.EndpointUrl.Name != null || config.NodeId.Name != null ||
         config.MonitoredItem.ApplicationUri.Name != null || config.MonitoredItem.DisplayName.Name != null ||
         config.Value.Value.Name != null || config.Value.SourceTimestamp.Name != null || config.Value.StatusCode.Name != null || config.Value.Status.Name != null)
     {
         Logger.Fatal("The property 'Name' is not allowed in any object in the 'EndpointSpecific' array. Please change.");
         return(false);
     }
     if (config.MonitoredItem.Flat != null || config.Value.Flat != null)
     {
         Logger.Fatal("The property 'Flat' is not allowed in any object in the 'EndpointSpecific' array. Please change.");
         return(false);
     }
     return(true);
 }
Beispiel #2
0
        /// <summary>
        /// Initialize the default configuration to be compatible with Connected factory Preconfigured Solution.
        /// </summary>
        private void InitializePublisherDefaultEndpointTelemetryConfiguration()
        {
            // create the default configuration
            _defaultEndpointTelemetryConfiguration = new EndpointTelemetryConfigurationModel();

            // set defaults for 'Name' to be compatible with Connected factory
            _defaultEndpointTelemetryConfiguration.EndpointUrl.Name    = EndpointUrlNameDefault;
            _defaultEndpointTelemetryConfiguration.NodeId.Name         = NodeIdNameDefault;
            _defaultEndpointTelemetryConfiguration.ExpandedNodeId.Name = ExpandedNodeIdNameDefault;
            _defaultEndpointTelemetryConfiguration.MonitoredItem.ApplicationUri.Name = ApplicationUriNameDefault;
            _defaultEndpointTelemetryConfiguration.MonitoredItem.DisplayName.Name    = DisplayNameNameDefault;
            _defaultEndpointTelemetryConfiguration.Value.Value.Name           = ValueNameDefault;
            _defaultEndpointTelemetryConfiguration.Value.SourceTimestamp.Name = SourceTimestampNameDefault;
            _defaultEndpointTelemetryConfiguration.Value.StatusCode.Name      = StatusCodeNameDefault;
            _defaultEndpointTelemetryConfiguration.Value.Status.Name          = StatusCodeNameDefault;

            // set defaults for 'Publish' to be compatible with Connected factory
            _defaultEndpointTelemetryConfiguration.EndpointUrl.Publish    = false;
            _defaultEndpointTelemetryConfiguration.NodeId.Publish         = false;
            _defaultEndpointTelemetryConfiguration.ExpandedNodeId.Publish = false;
            _defaultEndpointTelemetryConfiguration.MonitoredItem.ApplicationUri.Publish = false;
            _defaultEndpointTelemetryConfiguration.MonitoredItem.DisplayName.Publish    = true;
            _defaultEndpointTelemetryConfiguration.Value.Value.Publish           = true;
            _defaultEndpointTelemetryConfiguration.Value.SourceTimestamp.Publish = true;
            _defaultEndpointTelemetryConfiguration.Value.StatusCode.Publish      = false;
            _defaultEndpointTelemetryConfiguration.Value.Status.Publish          = false;

            // set defaults for 'Flat' to be compatible with Connected factory
            _defaultEndpointTelemetryConfiguration.MonitoredItem.Flat = true;
            _defaultEndpointTelemetryConfiguration.Value.Flat         = false;

            // 'Pattern' is set to null on creation which is whats default
        }
Beispiel #3
0
        /// <summary>
        /// Update the endpoint specific telemetry configuration using settings from the default configuration.
        /// Only those settings are applied, which are not defined by the endpoint specific configuration.
        /// </summary>
        public void UpdateEndpointTelemetryConfiguration(EndpointTelemetryConfigurationModel config)
        {
            // process all properties, applying only those defaults which are not set in the endpoint specific config
            config.EndpointUrl.Name    = config.EndpointUrl.Name ?? _defaultEndpointTelemetryConfiguration.EndpointUrl.Name;
            config.EndpointUrl.Publish = config.EndpointUrl.Publish ?? _defaultEndpointTelemetryConfiguration.EndpointUrl.Publish;
            config.EndpointUrl.Pattern = config.EndpointUrl.Pattern ?? _defaultEndpointTelemetryConfiguration.EndpointUrl.Pattern;

            config.NodeId.Name    = config.NodeId.Name ?? _defaultEndpointTelemetryConfiguration.NodeId.Name;
            config.NodeId.Publish = config.NodeId.Publish ?? _defaultEndpointTelemetryConfiguration.NodeId.Publish;
            config.NodeId.Pattern = config.NodeId.Pattern ?? _defaultEndpointTelemetryConfiguration.NodeId.Pattern;

            config.ExpandedNodeId.Name    = config.ExpandedNodeId.Name ?? _defaultEndpointTelemetryConfiguration.ExpandedNodeId.Name;
            config.ExpandedNodeId.Publish = config.ExpandedNodeId.Publish ?? _defaultEndpointTelemetryConfiguration.ExpandedNodeId.Publish;
            config.ExpandedNodeId.Pattern = config.ExpandedNodeId.Pattern ?? _defaultEndpointTelemetryConfiguration.ExpandedNodeId.Pattern;

            config.MonitoredItem.Flat = config.MonitoredItem.Flat ?? _defaultEndpointTelemetryConfiguration.MonitoredItem.Flat;

            config.MonitoredItem.ApplicationUri.Name    = config.MonitoredItem.ApplicationUri.Name ?? _defaultEndpointTelemetryConfiguration.MonitoredItem.ApplicationUri.Name;
            config.MonitoredItem.ApplicationUri.Publish = config.MonitoredItem.ApplicationUri.Publish ?? _defaultEndpointTelemetryConfiguration.MonitoredItem.ApplicationUri.Publish;
            config.MonitoredItem.ApplicationUri.Pattern = config.MonitoredItem.ApplicationUri.Pattern ?? _defaultEndpointTelemetryConfiguration.MonitoredItem.ApplicationUri.Pattern;

            config.MonitoredItem.DisplayName.Name    = config.MonitoredItem.DisplayName.Name ?? _defaultEndpointTelemetryConfiguration.MonitoredItem.DisplayName.Name;
            config.MonitoredItem.DisplayName.Publish = config.MonitoredItem.DisplayName.Publish ?? _defaultEndpointTelemetryConfiguration.MonitoredItem.DisplayName.Publish;
            config.MonitoredItem.DisplayName.Pattern = config.MonitoredItem.DisplayName.Pattern ?? _defaultEndpointTelemetryConfiguration.MonitoredItem.DisplayName.Pattern;

            config.Value.Flat = config.Value.Flat ?? _defaultEndpointTelemetryConfiguration.Value.Flat;

            config.Value.Value.Name    = config.Value.Value.Name ?? _defaultEndpointTelemetryConfiguration.Value.Value.Name;
            config.Value.Value.Publish = config.Value.Value.Publish ?? _defaultEndpointTelemetryConfiguration.Value.Value.Publish;
            config.Value.Value.Pattern = config.Value.Value.Pattern ?? _defaultEndpointTelemetryConfiguration.Value.Value.Pattern;

            config.Value.SourceTimestamp.Name    = config.Value.SourceTimestamp.Name ?? _defaultEndpointTelemetryConfiguration.Value.SourceTimestamp.Name;
            config.Value.SourceTimestamp.Publish = config.Value.SourceTimestamp.Publish ?? _defaultEndpointTelemetryConfiguration.Value.SourceTimestamp.Publish;
            config.Value.SourceTimestamp.Pattern = config.Value.SourceTimestamp.Pattern ?? _defaultEndpointTelemetryConfiguration.Value.SourceTimestamp.Pattern;

            config.Value.StatusCode.Name    = config.Value.StatusCode.Name ?? _defaultEndpointTelemetryConfiguration.Value.StatusCode.Name;
            config.Value.StatusCode.Publish = config.Value.StatusCode.Publish ?? _defaultEndpointTelemetryConfiguration.Value.StatusCode.Publish;
            config.Value.StatusCode.Pattern = config.Value.StatusCode.Pattern ?? _defaultEndpointTelemetryConfiguration.Value.StatusCode.Pattern;

            config.Value.Status.Name    = config.Value.Status.Name ?? _defaultEndpointTelemetryConfiguration.Value.Status.Name;
            config.Value.Status.Publish = config.Value.Status.Publish ?? _defaultEndpointTelemetryConfiguration.Value.Status.Publish;
            config.Value.Status.Pattern = config.Value.Status.Pattern ?? _defaultEndpointTelemetryConfiguration.Value.Status.Pattern;
        }