From 6370a7e852090c4ca12b8471fb3e0e516b914145 Mon Sep 17 00:00:00 2001 From: Kent Rancourt Date: Wed, 22 Jan 2025 16:16:34 -0500 Subject: [PATCH] remove anything having to do with the kargo.akuity.io/analysis-run-template label Signed-off-by: Kent Rancourt --- api/service/v1alpha1/service.proto | 47 --------- api/v1alpha1/labels.go | 4 - ...t_analysis_template_config_map_v1alpha1.go | 96 ------------------- .../get_analysis_template_secret_v1alpha1.go | 96 ------------------- ..._analysis_template_config_maps_v1alpha1.go | 61 ------------ ...list_analysis_template_secrets_v1alpha1.go | 61 ------------ 6 files changed, 365 deletions(-) delete mode 100644 internal/api/get_analysis_template_config_map_v1alpha1.go delete mode 100644 internal/api/get_analysis_template_secret_v1alpha1.go delete mode 100644 internal/api/list_analysis_template_config_maps_v1alpha1.go delete mode 100644 internal/api/list_analysis_template_secrets_v1alpha1.go diff --git a/api/service/v1alpha1/service.proto b/api/service/v1alpha1/service.proto index 98e140d96..c7ad2deac 100644 --- a/api/service/v1alpha1/service.proto +++ b/api/service/v1alpha1/service.proto @@ -99,11 +99,6 @@ service KargoService { rpc DeleteAnalysisTemplate(DeleteAnalysisTemplateRequest) returns (DeleteAnalysisTemplateResponse); rpc GetAnalysisRun(GetAnalysisRunRequest) returns (GetAnalysisRunResponse); - rpc ListAnalysisTemplateConfigMaps(ListAnalysisTemplateConfigMapsRequest) returns (ListAnalysisTemplateConfigMapsResponse); - rpc GetAnalysisTemplateConfigMap(GetAnalysisTemplateConfigMapRequest) returns (GetAnalysisTemplateConfigMapResponse); - rpc ListAnalysisTemplateSecrets(ListAnalysisTemplateSecretsRequest) returns (ListAnalysisTemplateSecretsResponse); - rpc GetAnalysisTemplateSecret(GetAnalysisTemplateSecretRequest) returns (GetAnalysisTemplateSecretResponse); - /* Event APIs */ rpc ListProjectEvents(ListProjectEventsRequest) returns (ListProjectEventsResponse); @@ -771,45 +766,3 @@ message UpdateRoleRequest { message UpdateRoleResponse { github.com.akuity.kargo.api.rbac.v1alpha1.Role role = 1; } - -message ListAnalysisTemplateConfigMapsRequest { - string project = 1; -} - -message ListAnalysisTemplateConfigMapsResponse { - repeated k8s.io.api.core.v1.ConfigMap config_maps = 1; -} - -message GetAnalysisTemplateConfigMapRequest { - string project = 1; - string name = 2; - RawFormat format = 3; -} - -message GetAnalysisTemplateConfigMapResponse { - oneof result { - k8s.io.api.core.v1.ConfigMap config_map = 1; - bytes raw = 2; - } -} - -message ListAnalysisTemplateSecretsRequest { - string project = 1; -} - -message ListAnalysisTemplateSecretsResponse { - repeated k8s.io.api.core.v1.Secret secrets = 1; -} - -message GetAnalysisTemplateSecretRequest { - string project = 1; - string name = 2; - RawFormat format = 3; -} - -message GetAnalysisTemplateSecretResponse { - oneof result { - k8s.io.api.core.v1.Secret secret = 1; - bytes raw = 2; - } -} diff --git a/api/v1alpha1/labels.go b/api/v1alpha1/labels.go index 73c0bb9e7..7324e665a 100644 --- a/api/v1alpha1/labels.go +++ b/api/v1alpha1/labels.go @@ -24,10 +24,6 @@ const ( ShardLabelKey = "kargo.akuity.io/shard" StageLabelKey = "kargo.akuity.io/stage" - // AnalysisRunTemplate labels - AnalysisRunTemplateLabelKey = "kargo.akuity.io/analysis-run-template" - AnalysisRunTemplateLabelValueConfig = "config" - LabelTrueValue = "true" FinalizerName = "kargo.akuity.io/finalizer" diff --git a/internal/api/get_analysis_template_config_map_v1alpha1.go b/internal/api/get_analysis_template_config_map_v1alpha1.go deleted file mode 100644 index 52a16de92..000000000 --- a/internal/api/get_analysis_template_config_map_v1alpha1.go +++ /dev/null @@ -1,96 +0,0 @@ -package api - -import ( - "context" - "errors" - "fmt" - - "connectrpc.com/connect" - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" - - kargoapi "github.com/akuity/kargo/api/v1alpha1" - svcv1alpha1 "github.com/akuity/kargo/pkg/api/service/v1alpha1" -) - -func (s *server) GetAnalysisTemplateConfigMap( - ctx context.Context, - req *connect.Request[svcv1alpha1.GetAnalysisTemplateConfigMapRequest], -) (*connect.Response[svcv1alpha1.GetAnalysisTemplateConfigMapResponse], error) { - if !s.cfg.RolloutsIntegrationEnabled { - return nil, connect.NewError( - connect.CodeUnimplemented, - errors.New("Argo Rollouts integration is not enabled"), - ) - } - - project := req.Msg.GetProject() - if err := validateFieldNotEmpty("project", project); err != nil { - return nil, err - } - - name := req.Msg.GetName() - if err := validateFieldNotEmpty("name", name); err != nil { - return nil, err - } - - if err := s.validateProjectExists(ctx, project); err != nil { - return nil, err - } - - // Get the ConfigMap from the Kubernetes API as an unstructured object. - // Using an unstructured object allows us to return the object _as presented - // by the API_ if a raw format is requested. - u := unstructured.Unstructured{ - Object: map[string]any{ - "apiVersion": corev1.SchemeGroupVersion.String(), - "kind": "ConfigMap", - }, - } - if err := s.client.Get(ctx, types.NamespacedName{ - Namespace: project, - Name: name, - }, &u); err != nil { - if client.IgnoreNotFound(err) == nil { - err = fmt.Errorf("ConfigMap %q not found in namespace %q", name, project) - return nil, connect.NewError(connect.CodeNotFound, err) - } - return nil, err - } - - if u.GetLabels()[kargoapi.AnalysisRunTemplateLabelKey] != kargoapi.AnalysisRunTemplateLabelValueConfig { - // Hide existence of the ConfigMap for the security - err := fmt.Errorf("ConfigMap %q not found in namespace %q", name, project) - return nil, connect.NewError(connect.CodeNotFound, err) - } - - switch req.Msg.GetFormat() { - case svcv1alpha1.RawFormat_RAW_FORMAT_JSON, svcv1alpha1.RawFormat_RAW_FORMAT_YAML: - _, raw, err := objectOrRaw(&u, req.Msg.GetFormat()) - if err != nil { - return nil, connect.NewError(connect.CodeInternal, err) - } - return connect.NewResponse(&svcv1alpha1.GetAnalysisTemplateConfigMapResponse{ - Result: &svcv1alpha1.GetAnalysisTemplateConfigMapResponse_Raw{ - Raw: raw, - }, - }), nil - default: - var cm corev1.ConfigMap - if err := runtime.DefaultUnstructuredConverter.FromUnstructured(u.Object, &cm); err != nil { - return nil, connect.NewError(connect.CodeInternal, err) - } - obj, _, err := objectOrRaw(&cm, req.Msg.GetFormat()) - if err != nil { - return nil, connect.NewError(connect.CodeInternal, err) - } - return connect.NewResponse(&svcv1alpha1.GetAnalysisTemplateConfigMapResponse{ - Result: &svcv1alpha1.GetAnalysisTemplateConfigMapResponse_ConfigMap{ - ConfigMap: obj, - }, - }), nil - } -} diff --git a/internal/api/get_analysis_template_secret_v1alpha1.go b/internal/api/get_analysis_template_secret_v1alpha1.go deleted file mode 100644 index 33b6f8b00..000000000 --- a/internal/api/get_analysis_template_secret_v1alpha1.go +++ /dev/null @@ -1,96 +0,0 @@ -package api - -import ( - "context" - "errors" - "fmt" - - "connectrpc.com/connect" - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" - - kargoapi "github.com/akuity/kargo/api/v1alpha1" - svcv1alpha1 "github.com/akuity/kargo/pkg/api/service/v1alpha1" -) - -func (s *server) GetAnalysisTemplateSecret( - ctx context.Context, - req *connect.Request[svcv1alpha1.GetAnalysisTemplateSecretRequest], -) (*connect.Response[svcv1alpha1.GetAnalysisTemplateSecretResponse], error) { - if !s.cfg.RolloutsIntegrationEnabled { - return nil, connect.NewError( - connect.CodeUnimplemented, - errors.New("Argo Rollouts integration is not enabled"), - ) - } - - project := req.Msg.GetProject() - if err := validateFieldNotEmpty("project", project); err != nil { - return nil, err - } - - name := req.Msg.GetName() - if err := validateFieldNotEmpty("name", name); err != nil { - return nil, err - } - - if err := s.validateProjectExists(ctx, project); err != nil { - return nil, err - } - - // Get the Secret from the Kubernetes API as an unstructured object. - // Using an unstructured object allows us to return the object _as presented - // by the API_ if a raw format is requested. - u := unstructured.Unstructured{ - Object: map[string]any{ - "apiVersion": corev1.SchemeGroupVersion.String(), - "kind": "Secret", - }, - } - if err := s.client.Get(ctx, types.NamespacedName{ - Namespace: project, - Name: name, - }, &u); err != nil { - if client.IgnoreNotFound(err) == nil { - err = fmt.Errorf("Secret %q not found in namespace %q", name, project) - return nil, connect.NewError(connect.CodeNotFound, err) - } - return nil, err - } - - if u.GetLabels()[kargoapi.AnalysisRunTemplateLabelKey] != kargoapi.AnalysisRunTemplateLabelValueConfig { - // Hide existence of the Secret for the security - err := fmt.Errorf("Secret %q not found in namespace %q", name, project) - return nil, connect.NewError(connect.CodeNotFound, err) - } - - switch req.Msg.GetFormat() { - case svcv1alpha1.RawFormat_RAW_FORMAT_JSON, svcv1alpha1.RawFormat_RAW_FORMAT_YAML: - _, raw, err := objectOrRaw(&u, req.Msg.GetFormat()) - if err != nil { - return nil, connect.NewError(connect.CodeInternal, err) - } - return connect.NewResponse(&svcv1alpha1.GetAnalysisTemplateSecretResponse{ - Result: &svcv1alpha1.GetAnalysisTemplateSecretResponse_Raw{ - Raw: raw, - }, - }), nil - default: - var secret corev1.Secret - if err := runtime.DefaultUnstructuredConverter.FromUnstructured(u.Object, &secret); err != nil { - return nil, connect.NewError(connect.CodeInternal, err) - } - obj, _, err := objectOrRaw(&secret, req.Msg.GetFormat()) - if err != nil { - return nil, connect.NewError(connect.CodeInternal, err) - } - return connect.NewResponse(&svcv1alpha1.GetAnalysisTemplateSecretResponse{ - Result: &svcv1alpha1.GetAnalysisTemplateSecretResponse_Secret{ - Secret: obj, - }, - }), nil - } -} diff --git a/internal/api/list_analysis_template_config_maps_v1alpha1.go b/internal/api/list_analysis_template_config_maps_v1alpha1.go deleted file mode 100644 index fbf9e3b85..000000000 --- a/internal/api/list_analysis_template_config_maps_v1alpha1.go +++ /dev/null @@ -1,61 +0,0 @@ -package api - -import ( - "context" - "fmt" - "slices" - "strings" - - "connectrpc.com/connect" - corev1 "k8s.io/api/core/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - - kargoapi "github.com/akuity/kargo/api/v1alpha1" - svcv1alpha1 "github.com/akuity/kargo/pkg/api/service/v1alpha1" -) - -func (s *server) ListAnalysisTemplateConfigMaps( - ctx context.Context, - req *connect.Request[svcv1alpha1.ListAnalysisTemplateConfigMapsRequest], -) (*connect.Response[svcv1alpha1.ListAnalysisTemplateConfigMapsResponse], error) { - if !s.cfg.RolloutsIntegrationEnabled { - return nil, connect.NewError( - connect.CodeUnimplemented, - fmt.Errorf("Argo Rollouts integration is not enabled"), - ) - } - - project := req.Msg.GetProject() - if err := validateFieldNotEmpty("project", project); err != nil { - return nil, err - } - - if err := s.validateProjectExists(ctx, project); err != nil { - return nil, err - } - - var list corev1.ConfigMapList - opts := []client.ListOption{ - client.InNamespace(project), - client.MatchingLabels{ - kargoapi.AnalysisRunTemplateLabelKey: kargoapi.AnalysisRunTemplateLabelValueConfig, - }, - } - if err := s.client.List(ctx, &list, opts...); err != nil { - return nil, fmt.Errorf("list ConfigMaps: %w", err) - } - - // Sort ascending by name - slices.SortFunc(list.Items, func(lhs, rhs corev1.ConfigMap) int { - return strings.Compare(lhs.Name, rhs.Name) - }) - - cms := make([]*corev1.ConfigMap, len(list.Items)) - for idx := range list.Items { - cms[idx] = &list.Items[idx] - } - - return connect.NewResponse(&svcv1alpha1.ListAnalysisTemplateConfigMapsResponse{ - ConfigMaps: cms, - }), nil -} diff --git a/internal/api/list_analysis_template_secrets_v1alpha1.go b/internal/api/list_analysis_template_secrets_v1alpha1.go deleted file mode 100644 index 760999cd0..000000000 --- a/internal/api/list_analysis_template_secrets_v1alpha1.go +++ /dev/null @@ -1,61 +0,0 @@ -package api - -import ( - "context" - "fmt" - "slices" - "strings" - - "connectrpc.com/connect" - corev1 "k8s.io/api/core/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - - kargoapi "github.com/akuity/kargo/api/v1alpha1" - svcv1alpha1 "github.com/akuity/kargo/pkg/api/service/v1alpha1" -) - -func (s *server) ListAnalysisTemplateSecrets( - ctx context.Context, - req *connect.Request[svcv1alpha1.ListAnalysisTemplateSecretsRequest], -) (*connect.Response[svcv1alpha1.ListAnalysisTemplateSecretsResponse], error) { - if !s.cfg.RolloutsIntegrationEnabled { - return nil, connect.NewError( - connect.CodeUnimplemented, - fmt.Errorf("Argo Rollouts integration is not enabled"), - ) - } - - project := req.Msg.GetProject() - if err := validateFieldNotEmpty("project", project); err != nil { - return nil, err - } - - if err := s.validateProjectExists(ctx, project); err != nil { - return nil, err - } - - var list corev1.SecretList - opts := []client.ListOption{ - client.InNamespace(project), - client.MatchingLabels{ - kargoapi.AnalysisRunTemplateLabelKey: kargoapi.AnalysisRunTemplateLabelValueConfig, - }, - } - if err := s.client.List(ctx, &list, opts...); err != nil { - return nil, fmt.Errorf("list Secrets: %w", err) - } - - // Sort ascending by name - slices.SortFunc(list.Items, func(lhs, rhs corev1.Secret) int { - return strings.Compare(lhs.Name, rhs.Name) - }) - - secrets := make([]*corev1.Secret, len(list.Items)) - for idx := range list.Items { - secrets[idx] = &list.Items[idx] - } - - return connect.NewResponse(&svcv1alpha1.ListAnalysisTemplateSecretsResponse{ - Secrets: secrets, - }), nil -}