Use Kubernetes Client instead of Controller APIs from CLI (#2605)

Use the Kubernetes and Fission Client from CLI instead of Controller API.
This removes port-forwarding for the controller across Fission CLI mostly.

* Use configurable client in CLI
* Move resource namespace under cmd client
* use server to get fission version
* get archive with URL

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
neha_gupta
2022-11-07 21:42:39 +05:30
committed by GitHub
co-authored by Sanket Sudake
parent 261bf24974
commit b71a36dc1c
86 changed files with 1115 additions and 978 deletions
+2 -7
View File
@@ -29,7 +29,6 @@ import (
"github.com/fission/fission/pkg/fission-cli/cmd"
"github.com/fission/fission/pkg/fission-cli/cmd/support/resources"
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
"github.com/fission/fission/pkg/fission-cli/util"
"github.com/fission/fission/pkg/utils"
)
@@ -51,7 +50,6 @@ func (opts *DumpSubCommand) do(input cli.Input) error {
nozip := input.Bool(flagkey.SupportNoZip)
outputDir := input.String(flagkey.SupportOutput)
kubeContext := input.String(flagkey.KubeContext)
// check whether the dump directory exists.
_, err := os.Stat(outputDir)
if err != nil && os.IsNotExist(err) {
@@ -68,10 +66,7 @@ func (opts *DumpSubCommand) do(input cli.Input) error {
panic(errors.Wrap(err, "Error creating dump directory for dumping files"))
}
_, k8sClient, err := util.GetKubernetesClient(kubeContext)
if err != nil {
return err
}
k8sClient := opts.Client().KubernetesClient
ress := map[string]resources.Resource{
// kubernetes info
@@ -79,7 +74,7 @@ func (opts *DumpSubCommand) do(input cli.Input) error {
"kubernetes-nodes": resources.NewKubernetesObjectDumper(k8sClient, resources.KubernetesNode, ""),
// fission info
"fission-version": resources.NewFissionVersion(opts.Client()),
"fission-version": resources.NewFissionVersion(opts.Client(), input),
// fission component logs & spec
"fission-components-svc-spec": resources.NewKubernetesObjectDumper(k8sClient, resources.KubernetesService,
+20 -22
View File
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1"
"github.com/fission/fission/pkg/controller/client"
"github.com/fission/fission/pkg/fission-cli/cmd"
"github.com/fission/fission/pkg/fission-cli/console"
)
@@ -39,11 +39,11 @@ const (
)
type CrdDumper struct {
client client.Interface
client cmd.Client
crdType string
}
func NewCrdDumper(client client.Interface, crdType string) Resource {
func NewCrdDumper(client cmd.Client, crdType string) Resource {
return CrdDumper{client: client, crdType: crdType}
}
@@ -51,62 +51,62 @@ func (res CrdDumper) Dump(ctx context.Context, dumpDir string) {
switch res.crdType {
case CrdEnvironment:
items, err := res.client.V1().Environment().List(metav1.NamespaceAll)
items, err := res.client.FissionClientSet.CoreV1().Environments(metav1.NamespaceAll).List(ctx, metav1.ListOptions{})
if err != nil {
console.Warn(fmt.Sprintf("Error getting %v list: %v", res.crdType, err))
return
}
for _, item := range items {
for _, item := range items.Items {
f := getFileName(dumpDir, item.ObjectMeta)
writeToFile(f, item)
}
case CrdFunction:
items, err := res.client.V1().Function().List(metav1.NamespaceAll)
items, err := res.client.FissionClientSet.CoreV1().Functions(metav1.NamespaceAll).List(ctx, metav1.ListOptions{})
if err != nil {
console.Warn(fmt.Sprintf("Error getting %v list: %v", res.crdType, err))
return
}
for _, item := range items {
for _, item := range items.Items {
f := getFileName(dumpDir, item.ObjectMeta)
writeToFile(f, item)
}
case CrdPackage:
items, err := res.client.V1().Package().List(metav1.NamespaceAll)
items, err := res.client.FissionClientSet.CoreV1().Packages(metav1.NamespaceAll).List(ctx, metav1.ListOptions{})
if err != nil {
console.Warn(fmt.Sprintf("Error getting %v list: %v", res.crdType, err))
return
}
for _, item := range items {
for _, item := range items.Items {
item = pkgClean(item)
f := getFileName(dumpDir, item.ObjectMeta)
writeToFile(f, item)
}
case CrdHttpTrigger:
items, err := res.client.V1().HTTPTrigger().List(metav1.NamespaceAll)
items, err := res.client.FissionClientSet.CoreV1().HTTPTriggers(metav1.NamespaceAll).List(ctx, metav1.ListOptions{})
if err != nil {
console.Warn(fmt.Sprintf("Error getting %v list: %v", res.crdType, err))
return
}
for _, item := range items {
for _, item := range items.Items {
f := getFileName(dumpDir, item.ObjectMeta)
writeToFile(f, item)
}
case CrdKubeWatcher:
items, err := res.client.V1().KubeWatcher().List(metav1.NamespaceAll)
items, err := res.client.FissionClientSet.CoreV1().KubernetesWatchTriggers(metav1.NamespaceAll).List(ctx, metav1.ListOptions{})
if err != nil {
console.Warn(fmt.Sprintf("Error getting %v list: %v", res.crdType, err))
return
}
for _, item := range items {
for _, item := range items.Items {
f := getFileName(dumpDir, item.ObjectMeta)
writeToFile(f, item)
}
@@ -114,14 +114,12 @@ func (res CrdDumper) Dump(ctx context.Context, dumpDir string) {
case CrdMessageQueueTrigger:
var triggers []fv1.MessageQueueTrigger
for _, mqType := range []string{fv1.MessageQueueTypeKafka} {
l, err := res.client.V1().MessageQueueTrigger().List(mqType, metav1.NamespaceAll)
if err != nil {
console.Warn(fmt.Sprintf("Error getting %v list: %v", res.crdType, err))
break
}
triggers = append(triggers, l...)
l, err := res.client.FissionClientSet.CoreV1().MessageQueueTriggers(metav1.NamespaceAll).List(ctx, metav1.ListOptions{})
if err != nil {
console.Warn(fmt.Sprintf("Error getting %v list: %v", res.crdType, err))
break
}
triggers = append(triggers, l.Items...)
for _, item := range triggers {
f := getFileName(dumpDir, item.ObjectMeta)
@@ -129,13 +127,13 @@ func (res CrdDumper) Dump(ctx context.Context, dumpDir string) {
}
case CrdTimeTrigger:
items, err := res.client.V1().TimeTrigger().List(metav1.NamespaceAll)
items, err := res.client.FissionClientSet.CoreV1().TimeTriggers(metav1.NamespaceAll).List(ctx, metav1.ListOptions{})
if err != nil {
console.Warn(fmt.Sprintf("Error getting %v list: %v", res.crdType, err))
return
}
for _, item := range items {
for _, item := range items.Items {
f := getFileName(dumpDir, item.ObjectMeta)
writeToFile(f, item)
}
@@ -21,20 +21,22 @@ import (
"fmt"
"path/filepath"
"github.com/fission/fission/pkg/controller/client"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
"github.com/fission/fission/pkg/fission-cli/cmd"
"github.com/fission/fission/pkg/fission-cli/util"
)
type FissionVersion struct {
client client.Interface
client cmd.Client
input cli.Input
}
func NewFissionVersion(client client.Interface) Resource {
return FissionVersion{client: client}
func NewFissionVersion(client cmd.Client, input cli.Input) Resource {
return FissionVersion{client: client, input: input}
}
func (res FissionVersion) Dump(ctx context.Context, dumpDir string) {
ver := util.GetVersion(ctx, res.client)
ver := util.GetVersion(ctx, res.input, res.client)
file := filepath.Clean(fmt.Sprintf("%v/%v", dumpDir, "fission-version.txt"))
writeToFile(file, ver)
}