github.com/telepresenceio/telepresence/v2@v2.20.0-pro.6.0.20240517030216-236ea954e789/pkg/client/cli/cmd/current_cluster_id.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/spf13/cobra"
     7  	"github.com/spf13/pflag"
     8  	"k8s.io/cli-runtime/pkg/genericclioptions"
     9  	"k8s.io/client-go/kubernetes"
    10  
    11  	"github.com/datawire/k8sapi/pkg/k8sapi"
    12  )
    13  
    14  // currentClusterId is a simple command that makes it easier for users to
    15  // figure out what their cluster ID is. For now this is just used when
    16  // people are making licenses for air-gapped environments.
    17  func currentClusterId() *cobra.Command {
    18  	kubeConfig := genericclioptions.NewConfigFlags(false)
    19  	cmd := &cobra.Command{
    20  		Use:  "current-cluster-id",
    21  		Args: cobra.NoArgs,
    22  
    23  		Short: "Get cluster ID for your kubernetes cluster",
    24  		Long:  "Get cluster ID for your kubernetes cluster, mostly used for licenses in air-gapped environments",
    25  		RunE: func(cmd *cobra.Command, _ []string) error {
    26  			restConfig, err := kubeConfig.ToRESTConfig()
    27  			if err != nil {
    28  				return err
    29  			}
    30  			ki, err := kubernetes.NewForConfig(restConfig)
    31  			if err != nil {
    32  				return err
    33  			}
    34  			clusterID, err := k8sapi.GetClusterID(k8sapi.WithK8sInterface(cmd.Context(), ki))
    35  			if err != nil {
    36  				return err
    37  			}
    38  			fmt.Fprintf(cmd.OutOrStdout(), "Cluster ID: %s\n", clusterID)
    39  			return nil
    40  		},
    41  	}
    42  	kubeFlags := pflag.NewFlagSet("Kubernetes flags", 0)
    43  	kubeConfig.AddFlags(kubeFlags)
    44  	cmd.Flags().AddFlagSet(kubeFlags)
    45  	return cmd
    46  }