Creating keyword to set log levels on all instances

Change-Id: If01a10db500d775679bed7bd3b22d709f9718181
diff --git a/jjb/pipeline/voltha/master/physical-build.groovy b/jjb/pipeline/voltha/master/physical-build.groovy
index 51dea2c..24d1880 100644
--- a/jjb/pipeline/voltha/master/physical-build.groovy
+++ b/jjb/pipeline/voltha/master/physical-build.groovy
@@ -264,6 +264,7 @@
               """
             }
             timeout(1) {
+              // setOnosLogLevels()
               waitUntil {
                 sr_active_out = sh returnStatus: true, script: """
                 sshpass -p karaf ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@${deployment_config.nodes[0].ip} "log:set TRACE org.opencord.dhcpl2relay"
diff --git a/vars/setOnosLogLevels.groovy b/vars/setOnosLogLevels.groovy
new file mode 100644
index 0000000..7ff0c19
--- /dev/null
+++ b/vars/setOnosLogLevels.groovy
@@ -0,0 +1,39 @@
+def call(Map config) {
+
+  def defaultConfig = [
+      onosNamespace: "infra",
+      apps: ['org.opencord.dhcpl2relay', 'org.opencord.olt', 'org.opencord.olt'],
+      logLevel: "DEBUG",
+  ]
+
+  if (!config) {
+      config = [:]
+  }
+
+  def cfg = defaultConfig + config
+
+  def onosInstances = sh """
+  kubectl get pods -n ${cfg.onosNamespace} -l app=onos-classic --no-headers | awk '{print $1}'
+  """
+
+  for(int i = 0;i<onosInstances.split( '\n' ).size();i++) {
+    def instance = onosInstances.split('\n')[i]
+
+      sh """
+      _TAG="onos-pf" bash -c "while true; do kubectl port-forward -n ${cfg.onosNamespace} ${instance} 8101; done"&
+      """
+
+      for (int j = 0; j < apps.size(); j++) {
+        def app = apps[i]
+        sh """
+        sshpass -p karaf ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@localhost log:set ${cfg.logLevel} ${app}
+        """
+      }
+
+  })
+
+  sh """
+    set +x
+    ps -ef | grep _TAG="onos-pf" | grep -v grep | awk '{print \$2}' | xargs --no-run-if-empty kill -9
+  """
+}