blob: f62d70fed5ef455d7e337f74639f28db14aae148 [file] [log] [blame]
#!/usr/bin/env groovy
// -----------------------------------------------------------------------
// Copyright 2021-2023 Open Networking Foundation (ONF) and the ONF Contributors
//
// 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.
// -----------------------------------------------------------------------
// Intent:
// check if kail is installed, if not installs it
// and then uses it to collect logs on specified containers
//
// appsToLog is a list of kubernetes labels used by kail to get the logs
// the generated log file is named with the string after =
// for example app=bbsim will generate a file called bbsim.log
//
// to archive the logs use: archiveArtifacts artifacts: '${logsDir}/*.log'
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
def getIam(String func)
{
// Cannot rely on a stack trace due to jenkins manipulation
String src = 'vars/startComponentLogs.groovy'
String iam = [src, func].join('::')
return iam
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
def call(Map config) {
String iam = getIam('main')
println("** ${iam}: ENTER")
def tagPrefix = "jenkins"
def defaultConfig = [
appsToLog: [
'app=onos-classic',
'app=adapter-open-onu',
'app=adapter-open-olt',
'app=rw-core',
'app=ofagent',
'app=bbsim',
'app=radius',
'app=bbsim-sadis-server',
'app=onos-config-loader',
],
logsDir: "$WORKSPACE/logs"
]
if (!config) {
config = [:]
}
def cfg = defaultConfig + config
// check if kail is installed and if not installs it
sh("""make -C "$WORKSPACE/voltha-system-tests" KAIL_PATH="$WORKSPACE/bin" kail""")
// if logsDir does not exists dir() will create it
dir(cfg.logsDir) {
for(int i = 0;i<cfg.appsToLog.size();i++) {
def label = cfg.appsToLog[i]
def logFile = label.split('=')[1]
def tag = "${tagPrefix}-kail-${logFile}"
println "Starting logging process for label: ${label}"
sh """
_TAG=${tag} kail -l ${label} > ${cfg.logsDir}/${logFile}.log&
"""
}
}
println("** ${iam}: LEAVE")
return
}
// [EOF]