X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=cmd%2Fvesmgr%2Fvespaconf.go;fp=cmd%2Fvesmgr%2Fvespaconf.go;h=3643b054e556d5e26dfaa2e580ed5e785eb8817d;hb=4b74f01111b3b14fbb3832d8aaf4946cded374a0;hp=0000000000000000000000000000000000000000;hpb=87956295b3a222b6b4f946a27efd633175ae7ed4;p=ric-plt%2Fvespamgr.git diff --git a/cmd/vesmgr/vespaconf.go b/cmd/vesmgr/vespaconf.go new file mode 100644 index 0000000..3643b05 --- /dev/null +++ b/cmd/vesmgr/vespaconf.go @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * Copyright (c) 2018-2019 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main + +import ( + "time" +) + +// Structs are copied from https://github.com/nokia/ONAP-VESPA/tree/master/ves-agent/config +// and from https://github.com/nokia/ONAP-VESPA/blob/master/govel/config.go +// Using tag v0.3.0 + +// HeartbeatConfiguration parameters +type HeartbeatConfiguration struct { + DefaultInterval time.Duration `yaml:"defaultInterval"` +} + +// Label represents a VES field by it's name, with an expression +// for getting its value +type Label struct { + Name string `yaml:"name"` + Expr string `yaml:"expr"` +} + +// MetricRule defines how to retrieve metrics and map them +// into a list of evel.EventMeasurement struct +type MetricRule struct { + Target string `yaml:"target"` // Target VES event field + Expr string `yaml:"expr"` // Prometheus query expression + VMIDLabel string `yaml:"vmId"` // Metric label holding the VNF ID + Labels []Label `yaml:"labels"` // Set of VES fields to map to values of given label + ObjectName string `yaml:"object_name"` // JSON Object Name + ObjectInstance string `yaml:"object_instance"` // JSON Object instance + ObjectKeys []Label `yaml:"object_keys"` // JSON Object keys +} + +// MetricRules defines a list of rules, and defaults values for them +type MetricRules struct { + DefaultValues *MetricRule `yaml:"defaults"` // Default rules to apply (except for expr), labels are merged + Metrics []MetricRule `yaml:"metrics"` // List of query and mapping of rules +} + +// PrometheusConfig parameters +type PrometheusConfig struct { + Address string `yaml:"address"` // Base URL to prometheus API + Timeout time.Duration `yaml:"timeout"` // API request timeout + KeepAlive time.Duration `yaml:"keepalive"` // HTTP Keep-Alive + Rules MetricRules `yaml:"rules"` // Querying rules +} + +// MeasurementConfiguration parameters +type MeasurementConfiguration struct { + DomainAbbreviation string `yaml:"domainAbbreviation"` // "Measurement" or "Mfvs" + DefaultInterval time.Duration `yaml:"defaultInterval"` // Default measurement interval + MaxBufferingDuration time.Duration `yaml:"maxBufferingDuration"` // Maximum timeframe size of buffering + Prometheus PrometheusConfig `yaml:"prometheus"` // Prometheus configuration +} + +// CollectorConfiguration parameters +type CollectorConfiguration struct { + ServerRoot string `yaml:"serverRoot"` + FQDN string `yaml:"fqdn"` + Port int `yaml:"port"` + Secure bool `yaml:"secure"` + Topic string `yaml:"topic"` + User string `yaml:"user"` + Password string `yaml:"password"` + PassPhrase string `yaml:"passphrase,omitempty"` // passPhrase used to encrypt collector password in file +} + +//NfcNamingCode mapping bettween NfcNamingCode (oam or etl) and Vnfcs +type NfcNamingCode struct { + Type string `yaml:"type"` + Vnfcs []string `yaml:"vnfcs"` +} + +// EventConfiguration parameters +type EventConfiguration struct { + VNFName string `yaml:"vnfName"` // Name of this VNF, eg: dpa2bhsxp5001v + ReportingEntityName string `yaml:"reportingEntityName"` // Value of reporting entity field. Usually local VM (VNFC) name + ReportingEntityID string `yaml:"reportingEntityID"` // Value of reporting entity UUID. Usually local VM (VNFC) UUID + MaxSize int `yaml:"maxSize"` + NfNamingCode string `yaml:"nfNamingCode,omitempty"` // "hspx" + NfcNamingCodes []NfcNamingCode `yaml:"nfcNamingCodes,omitempty"` + RetryInterval time.Duration `yaml:"retryInterval,omitempty"` + MaxMissed int `yaml:"maxMissed,omitempty"` +} + +// VESAgentConfiguration parameters +type VESAgentConfiguration struct { + PrimaryCollector CollectorConfiguration `yaml:"primaryCollector"` + Heartbeat HeartbeatConfiguration `yaml:"heartbeat,omitempty"` + Measurement MeasurementConfiguration `yaml:"measurement,omitempty"` + Event EventConfiguration `yaml:"event,omitempty"` + Debug bool `yaml:"debug,omitempty"` + CaCert string `yaml:"caCert,omitempty"` // Root certificate content + DataDir string `yaml:"datadir"` // Path to directory containing data +}