diff --git a/jjb/pipeline/voltha/bbsim-tests.groovy b/jjb/pipeline/voltha/bbsim-tests.groovy
index e71b94c..b1c8b17 100644
--- a/jjb/pipeline/voltha/bbsim-tests.groovy
+++ b/jjb/pipeline/voltha/bbsim-tests.groovy
@@ -497,7 +497,6 @@
         banner('collectArtifacts')
     }
 
-    dotkube(['debug':false])
     getPodsInfo("$WORKSPACE/${exitStatus}")
 
     sh(label  : 'kubectl logs > voltha.log',
diff --git a/vars/dotkube.groovy b/vars/dotkube.groovy
deleted file mode 100644
index 3b1b460..0000000
--- a/vars/dotkube.groovy
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/env groovy
-// -----------------------------------------------------------------------
-// Copyright 2024 Open Networking Foundation 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.
-// -----------------------------------------------------------------------
-// SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
-// SPDX-License-Identifier: Apache-2.0
-// -----------------------------------------------------------------------
-// Intent: Helper script for kubernetes debugging
-// Called by: jjb/pipeline/voltha/bbsim-tests.groovy
-// -----------------------------------------------------------------------
-
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-String getIam(String func) {
-    String src = 'vars/dotkube.groovy'
-    String iam = [src, func].join('::')
-    return iam
-}
-
-// -----------------------------------------------------------------------
-// Intent: Log progress message
-// -----------------------------------------------------------------------
-void enter(String name) {
-    // Announce ourselves for log usability
-    String iam = getIam(name)
-    println("${iam}: ENTER")
-    return
-}
-
-// -----------------------------------------------------------------------
-// Intent: Log progress message
-// -----------------------------------------------------------------------
-void leave(String name) {
-    // Announce ourselves for log usability
-    String iam = getIam(name)
-    println("${iam}: LEAVE")
-    return
-}
-
-// -----------------------------------------------------------------------
-// Intent: Terminate a process by name.
-// -----------------------------------------------------------------------
-// Note: Due to an exception casting GString to java.lang.string:
-//   - Used for parameterized construction of a command line with args
-//   - Passed to jenkins sh("${cmd}")
-//   - Command line invoked is currently hardcoded.
-// -----------------------------------------------------------------------
-Boolean process(String proc, Map args) {
-    Boolean ans = true
-    String  iam = getIam('process')
-
-    // clusterName: kind-ci
-    // config=kind-{clusterName}
-    // -------------------------
-    // loader.go:223] Config not found: /home/jenkins/.kube/kind-kind-ci
-    sh(
-        label  : '[DEBUG] ls ~/.kube'
-        script : """
-echo -e "\n** /bin/ls -ld ~/.kube"
-/bin/ls -ld ~/.kube
-
-echo -e "\n** /bin/ls -ld: recursive"
-find ~/.kube/. -print0 | xargs -0 /bin/ls -ld
-""")
-
-    return(ans)
-}
-
-// -----------------------------------------------------------------------
-// Intent: Display debug info about .kube/*
-// -----------------------------------------------------------------------
-// Usage: dotkube([debug:False])
-// -----------------------------------------------------------------------
-Boolean call\
-(
-    Map config=[:]    // Args passed to callback function
-) {
-    // Boolean debug = config.debug ?: false
-
-    String iam = getIam('main')
-    Boolean ans = true
-
-    try {
-        enter(iam)
-        process()
-    }
-
-    // [DEBUG] function is non-fatal
-    catch (Exception err) { // groovylint-disable-line CatchException
-        // ans = false
-        println("** ${iam}: EXCEPTION WARNING ${err}")
-        // println("** ${iam}: EXCEPTION ${err}")
-        // throw err // non-fatal, no need to croak on find/ls errs
-    }
-
-    finally {
-        leave(iam)
-    }
-
-    return(ans)
-}
-
-// [EOF]
