Capture context from cobra CLI and pass forward (#2551)

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
Sanket Sudake
2022-09-22 13:54:05 +05:30
committed by GitHub
parent d03395949b
commit e87c84ee2c
33 changed files with 93 additions and 83 deletions
+1 -1
View File
@@ -137,7 +137,7 @@ func (opts *DumpSubCommand) do(input cli.Input) error {
wg.Add(1)
go func(res resources.Resource, dir string) {
defer wg.Done()
res.Dump(dir)
res.Dump(input.Context(), dir)
}(res, dir)
}
+2 -1
View File
@@ -17,6 +17,7 @@ limitations under the License.
package resources
import (
"context"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -46,7 +47,7 @@ func NewCrdDumper(client client.Interface, crdType string) Resource {
return CrdDumper{client: client, crdType: crdType}
}
func (res CrdDumper) Dump(dumpDir string) {
func (res CrdDumper) Dump(ctx context.Context, dumpDir string) {
switch res.crdType {
case CrdEnvironment:
@@ -17,6 +17,7 @@ limitations under the License.
package resources
import (
"context"
"fmt"
"path/filepath"
@@ -32,7 +33,7 @@ func NewFissionVersion(client client.Interface) Resource {
return FissionVersion{client: client}
}
func (res FissionVersion) Dump(dumpDir string) {
func (res FissionVersion) Dump(ctx context.Context, dumpDir string) {
ver := util.GetVersion(res.client)
file := filepath.Clean(fmt.Sprintf("%v/%v", dumpDir, "fission-version.txt"))
writeToFile(file, ver)
@@ -50,7 +50,7 @@ func NewKubernetesVersion(clientset kubernetes.Interface) Resource {
return KubernetesVersion{client: clientset}
}
func (res KubernetesVersion) Dump(dumpDir string) {
func (res KubernetesVersion) Dump(ctx context.Context, dumpDir string) {
serverVer, err := res.client.Discovery().ServerVersion()
if err != nil {
console.Error(fmt.Sprintf("Error setting up kubernetes client: %v", err))
@@ -76,10 +76,10 @@ func NewKubernetesObjectDumper(clientset kubernetes.Interface, objType string, s
}
}
func (res KubernetesObjectDumper) Dump(dumpDir string) {
func (res KubernetesObjectDumper) Dump(ctx context.Context, dumpDir string) {
switch res.objType {
case KubernetesService:
objs, err := res.client.CoreV1().Services(metav1.NamespaceAll).List(context.TODO(), metav1.ListOptions{LabelSelector: res.selector})
objs, err := res.client.CoreV1().Services(metav1.NamespaceAll).List(ctx, metav1.ListOptions{LabelSelector: res.selector})
if err != nil {
console.Error(fmt.Sprintf("Error getting %v list with selector %v: %v", res.objType, res.selector, err))
return
@@ -92,7 +92,7 @@ func (res KubernetesObjectDumper) Dump(dumpDir string) {
}
case KubernetesDeployment:
objs, err := res.client.AppsV1().Deployments(metav1.NamespaceAll).List(context.TODO(), metav1.ListOptions{LabelSelector: res.selector})
objs, err := res.client.AppsV1().Deployments(metav1.NamespaceAll).List(ctx, metav1.ListOptions{LabelSelector: res.selector})
if err != nil {
console.Error(fmt.Sprintf("Error getting %v list with selector %v: %v", res.objType, res.selector, err))
return
@@ -104,7 +104,7 @@ func (res KubernetesObjectDumper) Dump(dumpDir string) {
}
case KubernetesPod:
objs, err := res.client.CoreV1().Pods(metav1.NamespaceAll).List(context.TODO(), metav1.ListOptions{LabelSelector: res.selector})
objs, err := res.client.CoreV1().Pods(metav1.NamespaceAll).List(ctx, metav1.ListOptions{LabelSelector: res.selector})
if err != nil {
console.Error(fmt.Sprintf("Error getting %v list with selector %v: %v", res.objType, res.selector, err))
return
@@ -116,7 +116,7 @@ func (res KubernetesObjectDumper) Dump(dumpDir string) {
}
case KubernetesHPA:
objs, err := res.client.AutoscalingV2beta2().HorizontalPodAutoscalers(metav1.NamespaceAll).List(context.TODO(), metav1.ListOptions{LabelSelector: res.selector})
objs, err := res.client.AutoscalingV2beta2().HorizontalPodAutoscalers(metav1.NamespaceAll).List(ctx, metav1.ListOptions{LabelSelector: res.selector})
if err != nil {
console.Error(fmt.Sprintf("Error getting %v list with selector %v: %v", res.objType, res.selector, err))
return
@@ -128,7 +128,7 @@ func (res KubernetesObjectDumper) Dump(dumpDir string) {
}
case KubernetesDaemonSet:
objs, err := res.client.AppsV1().DaemonSets(metav1.NamespaceAll).List(context.TODO(), metav1.ListOptions{LabelSelector: res.selector})
objs, err := res.client.AppsV1().DaemonSets(metav1.NamespaceAll).List(ctx, metav1.ListOptions{LabelSelector: res.selector})
if err != nil {
console.Error(fmt.Sprintf("Error getting %v list with selector %v: %v", res.objType, res.selector, err))
return
@@ -140,7 +140,7 @@ func (res KubernetesObjectDumper) Dump(dumpDir string) {
}
case KubernetesNode:
objs, err := res.client.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{LabelSelector: res.selector})
objs, err := res.client.CoreV1().Nodes().List(ctx, metav1.ListOptions{LabelSelector: res.selector})
if err != nil {
console.Error(fmt.Sprintf("Error getting %v list with selector %v: %v", res.objType, res.selector, err))
return
@@ -195,10 +195,10 @@ func NewKubernetesPodLogDumper(clientset kubernetes.Interface, selector string)
}
}
func (res KubernetesPodLogDumper) Dump(dumpDir string) {
func (res KubernetesPodLogDumper) Dump(ctx context.Context, dumpDir string) {
l, err := res.client.CoreV1().
Pods(metav1.NamespaceAll).
List(context.TODO(), metav1.ListOptions{LabelSelector: res.labelSelector})
List(ctx, metav1.ListOptions{LabelSelector: res.labelSelector})
if err != nil {
console.Error(fmt.Sprintf("Error getting controller list: %v", err))
return
@@ -217,7 +217,7 @@ func (res KubernetesPodLogDumper) Dump(dumpDir string) {
req := res.client.CoreV1().Pods(pod.Namespace).
GetLogs(pod.Name, &corev1.PodLogOptions{Container: container.Name})
stream, err := req.Stream(context.Background())
stream, err := req.Stream(ctx)
if err != nil {
console.Error(fmt.Sprintf("Error streaming logs for pod %v: %v", pod.Name, err))
return
@@ -17,6 +17,7 @@ limitations under the License.
package resources
import (
"context"
"fmt"
"os"
"path/filepath"
@@ -29,7 +30,7 @@ import (
)
type Resource interface {
Dump(string)
Dump(context.Context, string)
}
func getFileName(dumpdir string, meta metav1.ObjectMeta) string {