github.com/apache/incubator-kie-tools/packages/kn-plugin-workflow@v0.28.1-0.20240311201729-34c6856b157f/pkg/common/kubectl.go (about) 1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 20 package common 21 22 import ( 23 "fmt" 24 "os/exec" 25 "strings" 26 ) 27 28 func GetKubectlNamespace() (string, error) { 29 fmt.Println("🔎 Checking current namespace in kubectl...") 30 cmd := ExecCommand("kubectl", "config", "view", "--minify", "--output", "jsonpath={..namespace}") 31 output, err := cmd.Output() 32 if err != nil { 33 return "", fmt.Errorf("❌ ERROR: Failed to get current kubectl namespace: %w", err) 34 } 35 namespace := strings.TrimSpace(string(output)) 36 if namespace == "" { 37 return "", fmt.Errorf("❌ ERROR: No current kubectl namespace found") 38 } 39 fmt.Printf(" - ✅ kubectl current namespace: %s\n", namespace) 40 return namespace, nil 41 } 42 43 func CheckKubectlContext() (string, error) { 44 fmt.Println("🔎 Checking if kubectl has a context configured...") 45 cmd := ExecCommand("kubectl", "config", "current-context") 46 output, err := cmd.Output() 47 if err != nil { 48 return "", fmt.Errorf("❌ ERROR: No current kubectl context found %w", err) 49 } 50 context := strings.TrimSpace(string(output)) 51 if context == "" { 52 return "", fmt.Errorf("❌ ERROR: No current kubectl context found") 53 } 54 fmt.Printf(" - ✅ kubectl current context: %s \n", context) 55 return context, nil 56 } 57 58 func CheckKubectl() error { 59 fmt.Println("🔎 Checking if kubectl is available...") 60 _, kubectlCheck := exec.LookPath("kubectl") 61 if err := kubectlCheck; err != nil { 62 fmt.Println("ERROR: kubectl not found") 63 fmt.Println("kubectl is required for deploy") 64 fmt.Println("Download it from https://kubectl.docs.kubernetes.io/installation/kubectl/") 65 return fmt.Errorf("❌ ERROR: kubectl not found %w", err) 66 } 67 68 fmt.Println(" - ✅ kubectl is available") 69 return nil 70 }