update openapi fetch command

This commit is contained in:
Natasha Sarkar
2021-04-30 16:00:19 -07:00
parent 0df531e7c6
commit 45fc67062e

View File

@@ -6,7 +6,6 @@ import (
"fmt" "fmt"
"io" "io"
"os/exec" "os/exec"
"time"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@@ -28,31 +27,17 @@ in the user's kubeconfig`,
} }
func printSchema(w io.Writer) { func printSchema(w io.Writer) {
fmt.Fprintln(w, "Fetching schema from cluster")
errMsg := ` errMsg := `
Error fetching schema from cluster. Error fetching schema from cluster.
Please make sure port 8081 is available, kubectl is installed, and its context is set correctly. Please make sure kubectl is installed and its context is set correctly.
Installation and setup instructions: https://kubernetes.io/docs/tasks/tools/install-kubectl/` Installation and setup instructions: https://kubernetes.io/docs/tasks/tools/install-kubectl/`
command := exec.Command("kubectl", []string{"proxy", "--port=8081", "&"}...) command := exec.Command("kubectl", []string{"get", "--raw", "/openapi/v2"}...)
var stderr bytes.Buffer var stderr bytes.Buffer
command.Stderr = &stderr
err := command.Start()
defer killProcess(command)
// give the proxy a second to start up
time.Sleep(time.Second)
if err != nil || stderr.String() != "" {
fmt.Fprintln(w, err, stderr.String()+errMsg)
return
}
commandCurl := exec.Command("curl", []string{"http://localhost:8081/openapi/v2"}...)
var stdout bytes.Buffer var stdout bytes.Buffer
commandCurl.Stdout = &stdout command.Stdout = &stdout
commandCurl.Stderr = &stderr command.Stderr = &stderr
err = commandCurl.Run() err := command.Run()
if err != nil || stdout.String() == "" { if err != nil || stdout.String() == "" {
fmt.Fprintln(w, err, stderr.String()+errMsg) fmt.Fprintln(w, err, stderr.String()+errMsg)
return return
@@ -65,9 +50,3 @@ Installation and setup instructions: https://kubernetes.io/docs/tasks/tools/inst
output, _ = json.MarshalIndent(jsonSchema, "", " ") output, _ = json.MarshalIndent(jsonSchema, "", " ")
fmt.Fprintln(w, string(output)) fmt.Fprintln(w, string(output))
} }
func killProcess(command *exec.Cmd) {
if command.Process != nil {
command.Process.Kill()
}
}