blob: 7c4a2dcb3bd53e1fba8e089e1cb974adec73eebd [file] [log] [blame]
/*
* 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 (
"gopkg.in/yaml.v2"
"time"
"io"
"os"
"strconv"
)
func basicVespaConf() VESAgentConfiguration {
var vespaconf = VESAgentConfiguration {
DataDir: "/tmp/data",
Debug: false,
Event: EventConfiguration {
VNFName: "vespa-demo", // XXX
ReportingEntityID: "1af5bfa9-40b4-4522-b045-40e54f0310f", // XXX
MaxSize: 2000000,
NfNamingCode: "hsxp",
NfcNamingCodes: [] NfcNamingCode {
NfcNamingCode {
Type: "oam",
Vnfcs: [] string {"lr-ope-0","lr-ope-1","lr-ope-2"},
},
NfcNamingCode {
Type: "etl",
Vnfcs: [] string {"lr-pro-0","lr-pro-1"},
},
},
RetryInterval: time.Second * 5,
MaxMissed: 2,
},
Measurement: MeasurementConfiguration {
DomainAbbreviation: "Mvfs",
MaxBufferingDuration: time.Hour,
Prometheus: PrometheusConfig {
Timeout: time.Second * 30,
KeepAlive: time.Second * 30,
Rules: MetricRules {
DefaultValues: &MetricRule {
VMIDLabel: "'{{.labels.instance}}'",
},
},
},
},
}
return vespaconf
}
func getRules(vespaconf *VESAgentConfiguration) {
// XXX
makeRule := func(expr string, obj_name string, obj_instance string) MetricRule {
return MetricRule {
Target: "AdditionalObjects",
Expr: expr,
ObjectInstance: obj_instance,
ObjectName: obj_name,
ObjectKeys: [] Label {
Label {
Name: "ricComponentName",
Expr: "'{{.labels.app_kubernetes_io_instance}}'",
},
},
}
}
// Hard coded for now
vespaconf.Measurement.Prometheus.Rules.Metrics = []MetricRule {
makeRule("ricxapp_RMR_Received", "ricxappRMRreceivedCounter", "ricxappRMRReceived"),
makeRule("ricxapp_RMR_ReceiveError", "ricxappRMRReceiveErrorCounter", "ricxappRMRReceiveError"),
makeRule("ricxapp_RMR_Transmitted", "ricxappRMRTransmittedCounter", "ricxappRMRTransmitted"),
makeRule("ricxapp_RMR_TransmitError", "ricxappRMRTransmitErrorCounter", "ricxappRMRTransmitError"),
makeRule("ricxapp_SDL_Stored", "ricxappSDLStoredCounter", "ricxappSDLStored"),
makeRule("ricxapp_SDL_StoreError", "ricxappSDLStoreErrorCounter", "ricxappSDLStoreError"),
}
}
func getCollectorConfiguration(vespaconf *VESAgentConfiguration) {
vespaconf.PrimaryCollector.User = os.Getenv("VESMGR_PRICOLLECTOR_USER")
vespaconf.PrimaryCollector.Password = os.Getenv("VESMGR_PRICOLLECTOR_PASSWORD")
vespaconf.PrimaryCollector.PassPhrase = os.Getenv("VESMGR_PRICOLLECTOR_PASSPHRASE")
vespaconf.PrimaryCollector.FQDN = os.Getenv("VESMGR_PRICOLLECTOR_ADDR")
vespaconf.PrimaryCollector.ServerRoot = os.Getenv("VESMGR_PRICOLLECTOR_SERVERROOT")
vespaconf.PrimaryCollector.Topic = os.Getenv("VESMGR_PRICOLLECTOR_TOPIC")
port_str := os.Getenv("VESMGR_PRICOLLECTOR_PORT")
if port_str == "" {
vespaconf.PrimaryCollector.Port = 8443
} else {
port, _ := strconv.Atoi(port_str)
vespaconf.PrimaryCollector.Port = port
}
secure_str := os.Getenv("VESMGR_PRICOLLECTOR_SECURE")
if secure_str == "true" {
vespaconf.PrimaryCollector.Secure = true
} else {
vespaconf.PrimaryCollector.Secure = false
}
}
func createVespaConfig(writer io.Writer) {
vespaconf := basicVespaConf()
getRules(&vespaconf)
getCollectorConfiguration(&vespaconf)
err := yaml.NewEncoder(writer).Encode(vespaconf)
if err != nil {
logger.Error("Cannot write vespa conf file: %s", err.Error())
return
}
}