From 10183a9c0e58cc6769e747c6e21fe043d0f2d4bd Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Pelayo Date: Mon, 12 May 2025 17:30:38 +0200 Subject: [PATCH] Remove jmpctl and go release action --- .github/workflows/goreleaser.yaml | 27 ------ Makefile | 10 +-- cmd/jmpctl/main.go | 9 -- internal/cmd/client.go | 144 ------------------------------ internal/cmd/exporter.go | 144 ------------------------------ internal/cmd/root.go | 79 ---------------- 6 files changed, 2 insertions(+), 411 deletions(-) delete mode 100644 .github/workflows/goreleaser.yaml delete mode 100644 cmd/jmpctl/main.go delete mode 100644 internal/cmd/client.go delete mode 100644 internal/cmd/exporter.go delete mode 100644 internal/cmd/root.go diff --git a/.github/workflows/goreleaser.yaml b/.github/workflows/goreleaser.yaml deleted file mode 100644 index 94d1e46f..00000000 --- a/.github/workflows/goreleaser.yaml +++ /dev/null @@ -1,27 +0,0 @@ -name: Release CLI -on: - workflow_dispatch: - push: - tags: - - '*' - -jobs: - goreleaser: - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up Go - uses: actions/setup-go@v5 - - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v6 - with: - args: release --clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Makefile b/Makefile index e93d59eb..68c82bb8 100644 --- a/Makefile +++ b/Makefile @@ -26,10 +26,7 @@ SHELL = /usr/bin/env bash -o pipefail .SHELLFLAGS = -ec .PHONY: all -all: build bin/jmpctl - -.PHONY: cli -cli: bin/jmpctl +all: build ##@ General @@ -68,9 +65,6 @@ fmt: ## Run go fmt against code. vet: ## Run go vet against code. go vet ./... -bin/jmpctl: $(GO_FILES) - CGO_ENABLED=0 go build -o bin/jmpctl ./cmd/jmpctl - .PHONY: test test: manifests generate fmt vet envtest ## Run tests. KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test $$(go list ./... | grep -v /e2e) -coverprofile cover.out @@ -154,7 +148,7 @@ deploy: docker-build cluster grpcurl ./hack/deploy_with_helm.sh .PHONY: deploy-exporters -deploy-exporters: cli +deploy-exporters: ./hack/demoenv/prepare_exporters.sh .PHONY: lint-helm diff --git a/cmd/jmpctl/main.go b/cmd/jmpctl/main.go deleted file mode 100644 index 4a5f2a74..00000000 --- a/cmd/jmpctl/main.go +++ /dev/null @@ -1,9 +0,0 @@ -package main - -import ( - "github.com/jumpstarter-dev/jumpstarter-controller/internal/cmd" -) - -func main() { - cmd.Execute() -} diff --git a/internal/cmd/client.go b/internal/cmd/client.go deleted file mode 100644 index 7632acf5..00000000 --- a/internal/cmd/client.go +++ /dev/null @@ -1,144 +0,0 @@ -package cmd - -import ( - "fmt" - "os" - - jumpstarterdevv1alpha1 "github.com/jumpstarter-dev/jumpstarter-controller/api/v1alpha1" - "github.com/spf13/cobra" - "gopkg.in/yaml.v2" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/fields" - "k8s.io/apimachinery/pkg/types" - "k8s.io/cli-runtime/pkg/printers" - kclient "sigs.k8s.io/controller-runtime/pkg/client" -) - -func init() { - rootCmd.AddCommand(clientCmd) - - clientCmd.AddCommand(clientCreateCmd) - clientCmd.AddCommand(clientDeleteCmd) - clientCmd.AddCommand(clientListCmd) -} - -var clientCmd = &cobra.Command{ - Use: "client", - Short: "Manage clients", -} - -var clientCreateCmd = &cobra.Command{ - Use: "create [NAME]", - Short: "Create client", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - ctx := cmd.Context() - - clientset, err := NewClient() - if err != nil { - return err - } - client := jumpstarterdevv1alpha1.Client{ - ObjectMeta: metav1.ObjectMeta{ - Name: args[0], - Namespace: namespace, - }, - } - if err := clientset.Create(ctx, &client); err != nil { - return err - } - watch, err := clientset.Watch(ctx, &jumpstarterdevv1alpha1.ClientList{}, &kclient.ListOptions{ - FieldSelector: fields.OneTermEqualSelector("metadata.name", args[0]), - Namespace: namespace, - }) - if err != nil { - return err - } - for event := range watch.ResultChan() { - object := event.Object.(*jumpstarterdevv1alpha1.Client) - if object.Status.Credential == nil || object.Status.Endpoint == "" { - continue - } - var secret corev1.Secret - if err := clientset.Get( - ctx, - types.NamespacedName{Name: object.Status.Credential.Name, Namespace: namespace}, - &secret, - ); err != nil { - return err - } - if secret.Data == nil { - return fmt.Errorf("Empty Secret on Client %s/%s", namespace, args[0]) - } - token, ok := secret.Data["token"] - if !ok { - return fmt.Errorf("Missing token in Secret for Client %s/%s", namespace, args[0]) - } - clientConfig := []yaml.MapItem{ - { - Key: "apiVersion", - Value: "jumpstarter.dev/v1alpha1", - }, - { - Key: "kind", - Value: "ClientConfig", - }, - { - Key: "endpoint", - Value: object.Status.Endpoint, - }, - { - Key: "token", - Value: string(token), - }, - } - if err := yaml.NewEncoder(os.Stdout).Encode(&clientConfig); err != nil { - return err - } - watch.Stop() - return nil - } - return fmt.Errorf("timout waiting for controller to update status for Client: %s", args[0]) - }, -} - -var clientDeleteCmd = &cobra.Command{ - Use: "delete [NAME]", - Short: "Delete client", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - ctx := cmd.Context() - - clientset, err := NewClient() - if err != nil { - return err - } - var client jumpstarterdevv1alpha1.Client - if err := clientset.Get(ctx, types.NamespacedName{ - Namespace: namespace, - Name: args[0], - }, &client); err != nil { - return err - } - return clientset.Delete(ctx, &client) - }, -} - -var clientListCmd = &cobra.Command{ - Use: "list", - Short: "List clients", - RunE: func(cmd *cobra.Command, args []string) error { - ctx := cmd.Context() - - clientset, err := NewClient() - if err != nil { - return err - } - var clients jumpstarterdevv1alpha1.ClientList - if err := clientset.List(ctx, &clients, &kclient.ListOptions{Namespace: namespace}); err != nil { - return err - } - return printers.NewTablePrinter(printers.PrintOptions{}).PrintObj(&clients, os.Stdout) - }, -} diff --git a/internal/cmd/exporter.go b/internal/cmd/exporter.go deleted file mode 100644 index 419ac6c4..00000000 --- a/internal/cmd/exporter.go +++ /dev/null @@ -1,144 +0,0 @@ -package cmd - -import ( - "fmt" - "os" - - jumpstarterdevv1alpha1 "github.com/jumpstarter-dev/jumpstarter-controller/api/v1alpha1" - "github.com/spf13/cobra" - "gopkg.in/yaml.v2" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/fields" - "k8s.io/apimachinery/pkg/types" - "k8s.io/cli-runtime/pkg/printers" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -func init() { - rootCmd.AddCommand(exporterCmd) - - exporterCmd.AddCommand(exporterCreateCmd) - exporterCmd.AddCommand(exporterDeleteCmd) - exporterCmd.AddCommand(exporterListCmd) -} - -var exporterCmd = &cobra.Command{ - Use: "exporter", - Short: "Manage exporters", -} - -var exporterCreateCmd = &cobra.Command{ - Use: "create [NAME]", - Short: "Create exporter", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - ctx := cmd.Context() - - clientset, err := NewClient() - if err != nil { - return err - } - exporter := jumpstarterdevv1alpha1.Exporter{ - ObjectMeta: metav1.ObjectMeta{ - Name: args[0], - Namespace: namespace, - }, - } - if err := clientset.Create(ctx, &exporter); err != nil { - return err - } - watch, err := clientset.Watch(ctx, &jumpstarterdevv1alpha1.ExporterList{}, &client.ListOptions{ - FieldSelector: fields.OneTermEqualSelector("metadata.name", args[0]), - Namespace: namespace, - }) - if err != nil { - return err - } - for event := range watch.ResultChan() { - object := event.Object.(*jumpstarterdevv1alpha1.Exporter) - if object.Status.Credential == nil || object.Status.Endpoint == "" { - continue - } - var secret corev1.Secret - if err := clientset.Get( - ctx, - types.NamespacedName{Name: object.Status.Credential.Name, Namespace: namespace}, - &secret, - ); err != nil { - return err - } - if secret.Data == nil { - return fmt.Errorf("Empty Secret on Exporter %s/%s", namespace, args[0]) - } - token, ok := secret.Data["token"] - if !ok { - return fmt.Errorf("Missing token in Secret for Exporter %s/%s", namespace, args[0]) - } - exporterConfig := []yaml.MapItem{ - { - Key: "apiVersion", - Value: "jumpstarter.dev/v1alpha1", - }, - { - Key: "kind", - Value: "ExporterConfig", - }, - { - Key: "endpoint", - Value: object.Status.Endpoint, - }, - { - Key: "token", - Value: string(token), - }, - } - if err := yaml.NewEncoder(os.Stdout).Encode(&exporterConfig); err != nil { - return err - } - watch.Stop() - return nil - } - return fmt.Errorf("timout waiting for controller to update status for Exporter: %s", args[0]) - }, -} - -var exporterDeleteCmd = &cobra.Command{ - Use: "delete [NAME]", - Short: "Delete exporter", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - ctx := cmd.Context() - - clientset, err := NewClient() - if err != nil { - return err - } - var exporter jumpstarterdevv1alpha1.Exporter - if err := clientset.Get(ctx, types.NamespacedName{ - Namespace: namespace, - Name: args[0], - }, &exporter); err != nil { - return err - } - return clientset.Delete(ctx, &exporter) - }, -} - -var exporterListCmd = &cobra.Command{ - Use: "list", - Short: "List exporters", - RunE: func(cmd *cobra.Command, args []string) error { - ctx := cmd.Context() - - clientset, err := NewClient() - if err != nil { - return err - } - var exporters jumpstarterdevv1alpha1.ExporterList - if err := clientset.List(ctx, &exporters, &client.ListOptions{Namespace: namespace}); err != nil { - return err - } - return printers.NewTablePrinter(printers.PrintOptions{}).PrintObj(&exporters, os.Stdout) - }, -} diff --git a/internal/cmd/root.go b/internal/cmd/root.go deleted file mode 100644 index 94a26fbe..00000000 --- a/internal/cmd/root.go +++ /dev/null @@ -1,79 +0,0 @@ -package cmd - -import ( - "context" - "os" - "time" - - "github.com/spf13/cobra" - "sigs.k8s.io/controller-runtime/pkg/client" - - jumpstarterdevv1alpha1 "github.com/jumpstarter-dev/jumpstarter-controller/api/v1alpha1" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/tools/clientcmd" -) - -var ( - kubeconfig string - namespace string - timeout string -) - -func init() { - utilruntime.Must(jumpstarterdevv1alpha1.AddToScheme(scheme.Scheme)) - - rootCmd.PersistentFlags().StringVar(&kubeconfig, "kubeconfig", "", "Path to the kubeconfig file to use") - rootCmd.PersistentFlags().StringVar(&namespace, "namespace", "default", "Kubernetes namespace to operate on") - rootCmd.PersistentFlags().StringVar(&timeout, "timeout", "10s", "command timeout") -} - -func NewClient() (client.WithWatch, error) { - rules := clientcmd.NewDefaultClientConfigLoadingRules() - rules.ExplicitPath = kubeconfig - - clientconfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig( - rules, - &clientcmd.ConfigOverrides{}, - ) - - config, err := clientconfig.ClientConfig() - if err != nil { - return nil, err - } - - return client.NewWithWatch(config, client.Options{Scheme: scheme.Scheme}) -} - -type contextKey string - -var ( - rootCmd = &cobra.Command{ - Use: "jmpctl", - Short: "Admin CLI for managing jumpstarter", - SilenceUsage: true, - PersistentPreRunE: func(cmd *cobra.Command, args []string) error { - duration, err := time.ParseDuration(timeout) - if err != nil { - return err - } - - ctx, cancel := context.WithTimeout(context.Background(), duration) - ctx = context.WithValue(ctx, contextKey("cancel"), cancel) - cmd.SetContext(ctx) - - return nil - }, - PersistentPostRunE: func(cmd *cobra.Command, args []string) error { - cmd.Context().Value(contextKey("cancel")).(context.CancelFunc)() - - return nil - }, - } -) - -func Execute() { - if err := rootCmd.Execute(); err != nil { - os.Exit(1) - } -}