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
+15 -21
View File
@@ -17,17 +17,17 @@ limitations under the License.
package _package
import (
"context"
"fmt"
"github.com/pkg/errors"
kerrors "k8s.io/apimachinery/pkg/api/errors"
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/cliwrapper/cli"
"github.com/fission/fission/pkg/fission-cli/cmd"
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
"github.com/fission/fission/pkg/fission-cli/util"
)
type DeleteSubCommand struct {
@@ -52,7 +52,7 @@ func (opts *DeleteSubCommand) do(input cli.Input) error {
func (opts *DeleteSubCommand) complete(input cli.Input) (err error) {
opts.name = input.String(flagkey.PkgName)
_, opts.namespace, err = util.GetResourceNamespace(input, flagkey.NamespacePackage)
_, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespacePackage)
if err != nil {
return fv1.AggregateValidationErrors("Environment", err)
}
@@ -69,18 +69,15 @@ func (opts *DeleteSubCommand) complete(input cli.Input) (err error) {
func (opts *DeleteSubCommand) run(input cli.Input) error {
if len(opts.name) != 0 {
_, err := opts.Client().V1().Package().Get(&metav1.ObjectMeta{
Namespace: opts.namespace,
Name: opts.name,
})
_, err := opts.Client().FissionClientSet.CoreV1().Packages(opts.namespace).Get(input.Context(), opts.name, metav1.GetOptions{})
if err != nil {
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) {
return nil
}
return errors.Wrap(err, "find package")
}
fnList, err := GetFunctionsByPackage(opts.Client(), opts.name, opts.namespace)
fnList, err := GetFunctionsByPackage(input.Context(), opts.Client(), opts.name, opts.namespace)
if err != nil {
return err
}
@@ -88,7 +85,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
if !opts.force && len(fnList) > 0 {
return errors.New("Package is used by at least one function, use -f to force delete")
}
err = deletePackage(opts.Client(), opts.name, opts.namespace)
err = deletePackage(input.Context(), opts.Client(), opts.name, opts.namespace)
if err != nil {
return err
}
@@ -97,7 +94,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
// TODO improve list speed when --orphan
if opts.deleteOrphans {
err := deleteOrphanPkgs(opts.Client(), opts.namespace)
err := deleteOrphanPkgs(input.Context(), opts.Client(), opts.namespace)
if err != nil {
return errors.Wrap(err, "deleting orphan packages")
}
@@ -107,20 +104,20 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
return nil
}
func deleteOrphanPkgs(client client.Interface, pkgNamespace string) error {
pkgList, err := client.V1().Package().List(pkgNamespace)
func deleteOrphanPkgs(ctx context.Context, client cmd.Client, pkgNamespace string) error {
pkgList, err := client.FissionClientSet.CoreV1().Packages(pkgNamespace).List(ctx, metav1.ListOptions{})
if err != nil {
return err
}
// range through all packages and find out the ones not referenced by any function
for _, pkg := range pkgList {
fnList, err := GetFunctionsByPackage(client, pkg.ObjectMeta.Name, pkgNamespace)
for _, pkg := range pkgList.Items {
fnList, err := GetFunctionsByPackage(ctx, client, pkg.ObjectMeta.Name, pkgNamespace)
if err != nil {
return errors.Wrap(err, fmt.Sprintf("get functions sharing package %s", pkg.ObjectMeta.Name))
}
if len(fnList) == 0 {
err = deletePackage(client, pkg.ObjectMeta.Name, pkgNamespace)
err = deletePackage(ctx, client, pkg.ObjectMeta.Name, pkgNamespace)
if err != nil {
return err
}
@@ -129,9 +126,6 @@ func deleteOrphanPkgs(client client.Interface, pkgNamespace string) error {
return nil
}
func deletePackage(client client.Interface, pkgName string, pkgNamespace string) error {
return client.V1().Package().Delete(&metav1.ObjectMeta{
Namespace: pkgNamespace,
Name: pkgName,
})
func deletePackage(ctx context.Context, client cmd.Client, pkgName string, pkgNamespace string) error {
return client.FissionClientSet.CoreV1().Packages(pkgNamespace).Delete(ctx, pkgName, metav1.DeleteOptions{})
}