diff --git a/client/client.go b/client/client.go index 7db18aa0..3dc95f7e 100644 --- a/client/client.go +++ b/client/client.go @@ -54,6 +54,7 @@ type V1Client struct { // Cluster generic GetClusterWithoutStatusFn func(string) (*models.V1SpectroCluster, error) GetClusterFn func(scope, uid string) (*models.V1SpectroCluster, error) + GetClusterAdminConfigFn func(uid string) (string, error) GetClusterKubeConfigFn func(uid string) (string, error) GetClusterBackupConfigFn func(uid string) (*models.V1ClusterBackup, error) GetClusterScanConfigFn func(uid string) (*models.V1ClusterComplianceScan, error) diff --git a/client/cluster.go b/client/cluster.go index 29db1d54..c70c15de 100644 --- a/client/cluster.go +++ b/client/cluster.go @@ -215,6 +215,37 @@ func (h *V1Client) GetClusterKubeConfig(uid, ClusterContext string) (string, err return builder.String(), nil } +func (h *V1Client) GetClusterAdminKubeConfig(uid, ClusterContext string) (string, error) { + if h.GetClusterAdminConfigFn != nil { + return h.GetClusterAdminConfigFn(uid) + } + client, err := h.GetClusterClient() + if err != nil { + return "", err + } + + var params *clusterC.V1SpectroClustersUIDAdminKubeConfigParams + switch ClusterContext { + case "project": + params = clusterC.NewV1SpectroClustersUIDAdminKubeConfigParamsWithContext(h.Ctx).WithUID(uid) + case "tenant": + params = clusterC.NewV1SpectroClustersUIDAdminKubeConfigParams().WithUID(uid) + default: + return "", errors.New("invalid cluster scope specified") + } + + builder := new(strings.Builder) + _, err = client.V1SpectroClustersUIDAdminKubeConfig(params, builder) + if err != nil { + if herr.IsNotFound(err) { + return "", nil + } + return "", err + } + + return builder.String(), nil +} + func (h *V1Client) GetClusterImportManifest(uid string) (string, error) { client, err := h.GetClusterClient() if err != nil { diff --git a/go.mod b/go.mod index 46eabcc2..aa464025 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/go-openapi/strfmt v0.20.0 github.com/pkg/errors v0.9.1 github.com/spectrocloud/gomi v1.14.1-0.20230412095143-b0595c6c6f08 - github.com/spectrocloud/hapi v1.14.1-0.20230904110035-ed2b1df599dc + github.com/spectrocloud/hapi v1.14.1-0.20230921130725-2afc79a3ea05 github.com/stretchr/testify v1.7.0 ) diff --git a/go.sum b/go.sum index a31f1ae3..2af9d5c4 100644 --- a/go.sum +++ b/go.sum @@ -213,8 +213,8 @@ github.com/spectrocloud/hapi v1.14.1-0.20230809113851-e533537baa55 h1:0V4LeAlh+/ github.com/spectrocloud/hapi v1.14.1-0.20230809113851-e533537baa55/go.mod h1:O/Bkbw92QPSGPNQPqKt7Qlkn+9BKK/a22KTUlk76KHI= github.com/spectrocloud/hapi v1.14.1-0.20230814141242-394093e7fedb h1:Y/TDXfEZ6GJbYi4bKxFS0HFvmOL6Xs653BoxuZjuKEQ= github.com/spectrocloud/hapi v1.14.1-0.20230814141242-394093e7fedb/go.mod h1:O/Bkbw92QPSGPNQPqKt7Qlkn+9BKK/a22KTUlk76KHI= -github.com/spectrocloud/hapi v1.14.1-0.20230904110035-ed2b1df599dc h1:3dC4+8RimiF6hlVPdA6fgMeEUIYEbE1Z08ad4f9153Q= -github.com/spectrocloud/hapi v1.14.1-0.20230904110035-ed2b1df599dc/go.mod h1:O/Bkbw92QPSGPNQPqKt7Qlkn+9BKK/a22KTUlk76KHI= +github.com/spectrocloud/hapi v1.14.1-0.20230921130725-2afc79a3ea05 h1:QHuGuSItjNA0iVda1OCvHlWDjps6NR1X1/pjlYmIOp8= +github.com/spectrocloud/hapi v1.14.1-0.20230921130725-2afc79a3ea05/go.mod h1:aI54jbfaSec1ikHSMOJQ7mMOTaRKpQTRCoMKamhBE9s= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=