From 097b1b015b146d3ee3c618942b3f36564fb99ac4 Mon Sep 17 00:00:00 2001 From: Oscar Rodriguez Date: Wed, 3 Apr 2024 11:33:02 -0600 Subject: [PATCH 1/2] removing nats stuff --- app/deployer/connector/astra_connect.go | 50 +-- app/deployer/connector/nats.go | 342 ------------------ app/deployer/connector/nats_test.go | 183 ---------- app/deployer/connector/natssync_client.go | 269 -------------- .../connector/natssync_client_test.go | 198 ---------- details/operator-sdk/controllers/connector.go | 2 +- 6 files changed, 30 insertions(+), 1014 deletions(-) delete mode 100644 app/deployer/connector/nats.go delete mode 100644 app/deployer/connector/nats_test.go delete mode 100644 app/deployer/connector/natssync_client.go delete mode 100644 app/deployer/connector/natssync_client_test.go diff --git a/app/deployer/connector/astra_connect.go b/app/deployer/connector/astra_connect.go index 046771ee..d499546f 100644 --- a/app/deployer/connector/astra_connect.go +++ b/app/deployer/connector/astra_connect.go @@ -56,8 +56,6 @@ func (d *AstraConnectDeployer) GetDeploymentObjects(m *v1.AstraConnector, ctx co connectorImage = fmt.Sprintf("%s/astra-connector:%s", imageRegistry, containerImage) log.Info("Using AstraConnector image", "image", connectorImage) - ref := &corev1.ConfigMapKeySelector{LocalObjectReference: corev1.LocalObjectReference{Name: common.AstraConnectName}, Key: "nats_url"} - dep := &appsv1.Deployment{ ObjectMeta: metav1.ObjectMeta{ Name: common.AstraConnectName, @@ -82,30 +80,40 @@ func (d *AstraConnectDeployer) GetDeploymentObjects(m *v1.AstraConnector, ctx co Name: common.AstraConnectName, Env: []corev1.EnvVar{ { - Name: "NATS_SERVER_URL", - ValueFrom: &corev1.EnvVarSource{ConfigMapKeyRef: ref}, + Name: "LOG_LEVEL", // todo should this match what operator is + Value: "trace", }, { - Name: "LOG_LEVEL", - Value: "trace", + Name: "NATS_DISABLED", + Value: "true", + }, + { + Name: "API_TOKEN_SECRET_REF", + Value: m.Spec.Astra.TokenRef, + }, + { + Name: "ASTRA_CONTROL_URL", + Value: m.Spec.NatsSyncClient.CloudBridgeURL, + }, + { + Name: "ACCOUNT_ID", + Value: m.Spec.Astra.AccountId, + }, + { + Name: "CLOUD_ID", + Value: m.Spec.Astra.CloudId, + }, + { + Name: "CLUSTER_ID", + Value: m.Spec.Astra.ClusterId, }, { - Name: "POD_NAME", - ValueFrom: &corev1.EnvVarSource{ - FieldRef: &corev1.ObjectFieldSelector{ - APIVersion: "v1", - FieldPath: "metadata.name", - }, - }, + Name: "HOST_ALIAS_IP", + Value: m.Spec.NatsSyncClient.HostAliasIP, }, { - Name: "NAMESPACE", - ValueFrom: &corev1.EnvVarSource{ - FieldRef: &corev1.ObjectFieldSelector{ - APIVersion: "v1", - FieldPath: "metadata.namespace", - }, - }, + Name: "SKIP_TLS_VALIDATION", + Value: strconv.FormatBool(m.Spec.Astra.SkipTLSValidation), }, }, Resources: corev1.ResourceRequirements{ @@ -151,7 +159,7 @@ func (d *AstraConnectDeployer) GetConfigMapObjects(m *v1.AstraConnector, ctx con Name: common.AstraConnectName, }, Data: map[string]string{ - "nats_url": GetNatsURL(m), + //"nats_url": GetNatsURL(m), "skip_tls_validation": strconv.FormatBool(m.Spec.Astra.SkipTLSValidation), }, } diff --git a/app/deployer/connector/nats.go b/app/deployer/connector/nats.go deleted file mode 100644 index 05b24d1a..00000000 --- a/app/deployer/connector/nats.go +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (c) 2022. NetApp, Inc. All Rights Reserved. - */ - -package connector - -import ( - "context" - "fmt" - "maps" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - "strings" - - "sigs.k8s.io/controller-runtime/pkg/client" - - "github.com/NetApp-Polaris/astra-connector-operator/app/conf" - "github.com/NetApp-Polaris/astra-connector-operator/app/deployer/model" - - "github.com/NetApp-Polaris/astra-connector-operator/common" - - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - rbacv1 "k8s.io/api/rbac/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - ctrllog "sigs.k8s.io/controller-runtime/pkg/log" - - v1 "github.com/NetApp-Polaris/astra-connector-operator/details/operator-sdk/api/v1" -) - -type NatsDeployer struct{} - -func NewNatsDeployer() model.Deployer { - return &NatsDeployer{} -} - -// GetStatefulSetObjects returns a NATS Statefulset object -func (n *NatsDeployer) GetStatefulSetObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - log := ctrllog.FromContext(ctx) - ls := labelsForNats(common.NatsName, m.Spec.Labels) - - var replicas int32 - if m.Spec.Nats.Replicas > 2 { - replicas = m.Spec.Nats.Replicas - } else { - log.Info("Defaulting the Nats replica size", "size", common.NatsDefaultReplicas) - replicas = common.NatsDefaultReplicas - } - - var natsImage string - var imageRegistry string - var containerImage string - if m.Spec.ImageRegistry.Name != "" { - imageRegistry = m.Spec.ImageRegistry.Name - } else { - imageRegistry = common.DefaultImageRegistry - } - - if m.Spec.Nats.Image != "" { - containerImage = m.Spec.Nats.Image - } else { - containerImage = common.NatsDefaultImage - } - - natsImage = fmt.Sprintf("%s/%s", imageRegistry, containerImage) - log.Info("Using nats image", "image", natsImage) - - dep := &appsv1.StatefulSet{ - ObjectMeta: metav1.ObjectMeta{ - Name: common.NatsName, - Namespace: m.Namespace, - Annotations: map[string]string{ - "container.seccomp.security.alpha.kubernetes.io/pod": "runtime/default", - }, - }, - Spec: appsv1.StatefulSetSpec{ - ServiceName: common.NatsClusterServiceName, - Replicas: &replicas, - Selector: &metav1.LabelSelector{ - MatchLabels: ls, - }, - Template: corev1.PodTemplateSpec{ - ObjectMeta: metav1.ObjectMeta{ - Labels: ls, - }, - Spec: corev1.PodSpec{ - ServiceAccountName: common.NatsServiceAccountName, - Containers: []corev1.Container{{ - Image: natsImage, - Name: common.NatsName, - Ports: []corev1.ContainerPort{ - { - Name: "client", - ContainerPort: common.NatsClientPort, - }, - { - Name: "cluster", - ContainerPort: common.NatsClusterPort, - }, - { - Name: "monitor", - ContainerPort: common.NatsMonitorPort, - }, - { - Name: "metrics", - ContainerPort: common.NatsMetricsPort, - }, - }, - Command: []string{"nats-server", "--config", "/etc/nats-config/nats.conf"}, - Env: []corev1.EnvVar{ - { - Name: "CLUSTER_ADVERTISE", - Value: fmt.Sprintf("%s.nats.%s.svc", common.NatsName, m.Namespace), - }, - { - Name: "POD_NAME", - Value: common.NatsName, - }, { - Name: "POD_NAMESPACE", - Value: m.Namespace, - }, - }, - VolumeMounts: []corev1.VolumeMount{ - { - Name: common.NatsVolumeName, - MountPath: "/etc/nats-config", - }, - { - Name: "pid", - MountPath: "/var/run/nats", - }, - }, - SecurityContext: conf.GetSecurityContext(), - }}, - Volumes: []corev1.Volume{ - { - Name: common.NatsVolumeName, - VolumeSource: corev1.VolumeSource{ - ConfigMap: &corev1.ConfigMapVolumeSource{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: common.NatsConfigMapName, - }, - }, - }, - }, - { - Name: "pid", - VolumeSource: corev1.VolumeSource{ - EmptyDir: &corev1.EmptyDirVolumeSource{ - Medium: "", - }, - }, - }, - }, - }, - }, - }, - } - if m.Spec.ImageRegistry.Secret != "" { - dep.Spec.Template.Spec.ImagePullSecrets = []corev1.LocalObjectReference{ - { - Name: m.Spec.ImageRegistry.Secret, - }, - } - } - return []client.Object{dep}, model.NonMutateFn, nil -} - -// GetConfigMapObjects returns a ConfigMap object for nats -func (n *NatsDeployer) GetConfigMapObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - log := ctrllog.FromContext(ctx) - - routes := make([]string, 0) - var index int32 - index = 0 - var replicas int32 - - // Setting the replicas to 1, things dont work with multiple replicas on GKE - // Uncomment once issue is fixed. - //if m.Spec.Nats.Replicas > 2 { - // replicas = m.Spec.Nats.Replicas - //} else { - // log.Info("Defaulting the Nats replica size", "size", common.NatsDefaultReplicas) - // replicas = common.NatsDefaultReplicas - //} - - log.Info("Defaulting the Nats replica size", "size", common.NatsDefaultReplicas) - replicas = common.NatsDefaultReplicas - - for index < replicas { - rt := fmt.Sprintf("\n nats://nats-%d.nats-cluster:%d", index, common.NatsClusterPort) - routes = append(routes, rt) - index += 1 - } - routes[len(routes)-1] += "\n " - routeConfig := strings.Join(routes, "") - - natsConf := "pid_file: \"/var/run/nats/nats.pid\"\nhttp: %d\nmax_payload: %d\n\ncluster {\n port: %d\n routes [%s]\n\n cluster_advertise: $CLUSTER_ADVERTISE\n connect_retries: 30\n}\n" - configMap := &corev1.ConfigMap{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: m.Namespace, - Name: common.NatsConfigMapName, - }, - Data: map[string]string{ - "nats.conf": fmt.Sprintf(natsConf, common.NatsMonitorPort, common.NatsMaxPayload, common.NatsClusterPort, routeConfig), - }, - } - return []client.Object{configMap}, model.NonMutateFn, nil -} - -// GetServiceAccountObjects returns a ServiceAccount object for nats -func (n *NatsDeployer) GetServiceAccountObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - sa := &corev1.ServiceAccount{ - ObjectMeta: metav1.ObjectMeta{ - Name: common.NatsServiceAccountName, - Namespace: m.Namespace, - Labels: labelsForNats(common.NatsName, m.Spec.Labels), - }, - } - return []client.Object{sa}, model.NonMutateFn, nil -} - -// GetServiceObjects returns a Service object for nats -func (n *NatsDeployer) GetServiceObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - ls := labelsForNats(common.NatsName, m.Spec.Labels) - var services []client.Object - - natsService := &corev1.Service{ - ObjectMeta: metav1.ObjectMeta{ - Name: common.NatsName, - Namespace: m.Namespace, - Labels: ls, - }, - Spec: corev1.ServiceSpec{ - Type: corev1.ServiceTypeClusterIP, - Ports: []corev1.ServicePort{ - { - Name: common.NatsName, - Port: common.NatsClientPort, - }, - }, - Selector: ls, - }, - } - natsClusterService := &corev1.Service{ - ObjectMeta: metav1.ObjectMeta{ - Name: common.NatsClusterServiceName, - Namespace: m.Namespace, - Labels: ls, - }, - Spec: corev1.ServiceSpec{ - ClusterIP: "", - Ports: []corev1.ServicePort{ - { - Name: "client", - Port: common.NatsClientPort, - }, - { - Name: "cluster", - Port: common.NatsClusterPort, - }, - { - Name: "monitor", - Port: common.NatsMonitorPort, - }, - { - Name: "metrics", - Port: common.NatsMetricsPort, - }, - { - Name: "gateways", - Port: common.NatsGatewaysPort, - }, - }, - Selector: ls, - }, - } - services = append(services, natsService, natsClusterService) - return services, model.NonMutateFn, nil -} - -// labelsForNats returns the labels for selecting the nats resources -func labelsForNats(name string, mLabels map[string]string) map[string]string { - labels := map[string]string{"app": name} - maps.Copy(labels, mLabels) - return labels -} - -func (n *NatsDeployer) GetDeploymentObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - return nil, model.NonMutateFn, nil -} - -func (n *NatsDeployer) GetRoleObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - role := &rbacv1.Role{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: m.Namespace, - Name: common.NatsRoleName, - }, - Rules: []rbacv1.PolicyRule{ - { - APIGroups: []string{"security.openshift.io"}, - Resources: []string{"securitycontextconstraints"}, - Verbs: []string{"use"}, - }, - }, - } - return []client.Object{role}, model.NonMutateFn, nil -} - -func (n *NatsDeployer) GetRoleBindingObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - roleBinding := &rbacv1.RoleBinding{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: m.Namespace, - Name: common.NatsRoleBindingName, - }, - Subjects: []rbacv1.Subject{ - { - Kind: "ServiceAccount", - Name: common.NatsServiceAccountName, - }, - }, - RoleRef: rbacv1.RoleRef{ - Kind: "Role", - Name: common.NatsRoleName, - APIGroup: "rbac.authorization.k8s.io", - }, - } - return []client.Object{roleBinding}, model.NonMutateFn, nil -} - -func (n *NatsDeployer) GetClusterRoleObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - return nil, model.NonMutateFn, nil -} - -func (n *NatsDeployer) GetClusterRoleBindingObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - return nil, model.NonMutateFn, nil -} - -// GetNatsURL returns the nats URL -func GetNatsURL(m *v1.AstraConnector) string { - natsURL := fmt.Sprintf("nats://%s.%s:%d", common.NatsName, m.Namespace, common.NatsClientPort) - return natsURL -} diff --git a/app/deployer/connector/nats_test.go b/app/deployer/connector/nats_test.go deleted file mode 100644 index b1c7a93d..00000000 --- a/app/deployer/connector/nats_test.go +++ /dev/null @@ -1,183 +0,0 @@ -package connector_test - -import ( - "context" - "testing" - - "github.com/NetApp-Polaris/astra-connector-operator/app/deployer/connector" - "github.com/NetApp-Polaris/astra-connector-operator/common" - v1 "github.com/NetApp-Polaris/astra-connector-operator/details/operator-sdk/api/v1" - "github.com/stretchr/testify/assert" - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -func TestNatsGetStatefulSetObjects(t *testing.T) { - deployer := connector.NewNatsDeployer() - ctx := context.Background() - - m := &v1.AstraConnector{ - ObjectMeta: metav1.ObjectMeta{ - Name: "test-connector", - Namespace: "test-namespace", - }, - Spec: v1.AstraConnectorSpec{ - - Nats: v1.Nats{ - Replicas: 3, - Image: "test-image", - }, - - ImageRegistry: v1.ImageRegistry{ - Name: "test-registry", - Secret: "test-secret", - }, - }, - } - - objects, _, err := deployer.GetStatefulSetObjects(m, ctx) - assert.NoError(t, err) - assert.Equal(t, 1, len(objects)) - - statefulSet, ok := objects[0].(*appsv1.StatefulSet) - assert.True(t, ok) - - assert.Equal(t, common.NatsName, statefulSet.Name) - assert.Equal(t, m.Namespace, statefulSet.Namespace) - assert.Equal(t, int32(3), *statefulSet.Spec.Replicas) - assert.Equal(t, "test-registry/test-image", statefulSet.Spec.Template.Spec.Containers[0].Image) - assert.Equal(t, []corev1.LocalObjectReference{{Name: "test-secret"}}, statefulSet.Spec.Template.Spec.ImagePullSecrets) -} - -func TestNatsGetStatefulSetObjectsUseDefaults(t *testing.T) { - deployer := connector.NewNatsDeployer() - ctx := context.Background() - - m := &v1.AstraConnector{ - ObjectMeta: metav1.ObjectMeta{ - Name: "test-connector", - Namespace: "test-namespace", - }, - Spec: v1.AstraConnectorSpec{ - - Nats: v1.Nats{ - Replicas: -2, - }, - }, - } - - objects, _, err := deployer.GetStatefulSetObjects(m, ctx) - assert.NoError(t, err) - assert.Equal(t, 1, len(objects)) - - statefulSet, ok := objects[0].(*appsv1.StatefulSet) - assert.True(t, ok) - - assert.Equal(t, common.NatsName, statefulSet.Name) - assert.Equal(t, m.Namespace, statefulSet.Namespace) - assert.Equal(t, int32(1), *statefulSet.Spec.Replicas) - assert.Equal(t, "netappdownloads.jfrog.io/docker-astra-control-staging/arch30/neptune/nats:2.10.1-alpine3.18", statefulSet.Spec.Template.Spec.Containers[0].Image) - assert.Nil(t, statefulSet.Spec.Template.Spec.ImagePullSecrets) -} - -func TestNatsGetConfigMapObjects(t *testing.T) { - deployer := connector.NewNatsDeployer() - ctx := context.Background() - - m := DummyAstraConnector() - - objects, _, err := deployer.GetConfigMapObjects(&m, ctx) - assert.NoError(t, err) - assert.Equal(t, 1, len(objects)) - - configMap, ok := objects[0].(*corev1.ConfigMap) - assert.True(t, ok) - - // Todo Add assertions for the expected values in the ConfigMap object - assert.Equal(t, common.NatsConfigMapName, configMap.Name) - assert.Equal(t, m.Namespace, configMap.Namespace) - data := map[string]string{"nats.conf": "pid_file: \"/var/run/nats/nats.pid\"\nhttp: 8222\nmax_payload: 8388608\n\ncluster {\n port: 6222\n routes [\n nats://nats-0.nats-cluster:6222\n ]\n\n cluster_advertise: $CLUSTER_ADVERTISE\n connect_retries: 30\n}\n"} - assert.Equal(t, data, configMap.Data) -} - -func TestNatsGetServiceAccountObjects(t *testing.T) { - deployer := connector.NewNatsDeployer() - ctx := context.Background() - - m := DummyAstraConnector() - - objects, _, err := deployer.GetServiceAccountObjects(&m, ctx) - assert.NoError(t, err) - assert.Equal(t, 1, len(objects)) - - serviceAccount, ok := objects[0].(*corev1.ServiceAccount) - assert.True(t, ok) - - assert.Equal(t, common.NatsServiceAccountName, serviceAccount.Name) - assert.Equal(t, m.Namespace, serviceAccount.Namespace) - assert.Equal(t, map[string]string{"Label1": "Value1", "app": "nats"}, serviceAccount.Labels) -} - -func TestNatsGetServiceObjects(t *testing.T) { - deployer := connector.NewNatsDeployer() - ctx := context.Background() - - m := DummyAstraConnector() - - objects, _, err := deployer.GetServiceObjects(&m, ctx) - assert.NoError(t, err) - assert.Equal(t, 2, len(objects)) - - // test the first service which is natsService - service, ok := objects[0].(*corev1.Service) - assert.True(t, ok) - - assert.Equal(t, common.NatsName, service.Name) - assert.Equal(t, m.Namespace, service.Namespace) - assert.Equal(t, map[string]string{"Label1": "Value1", "app": "nats"}, service.Labels) - assert.Equal(t, corev1.ServiceTypeClusterIP, service.Spec.Type) - - // now test the second service nats-cluster - service, ok = objects[1].(*corev1.Service) - assert.True(t, ok) - - assert.Equal(t, common.NatsClusterServiceName, service.Name) - assert.Equal(t, m.Namespace, service.Namespace) - assert.Equal(t, map[string]string{"Label1": "Value1", "app": "nats"}, service.Labels) - -} - -// Below are all the nil objects - -func TestNatsK8sObjectsNotCreated(t *testing.T) { - deployer := connector.NewNatsDeployer() - ctx := context.Background() - - m := DummyAstraConnector() - - objects, fn, err := deployer.GetDeploymentObjects(&m, ctx) - assert.Nil(t, objects) - assert.NotNil(t, fn) - assert.Nil(t, err) - - objects, fn, err = deployer.GetRoleObjects(&m, ctx) - assert.NotNil(t, objects) - assert.NotNil(t, fn) - assert.Nil(t, err) - - objects, fn, err = deployer.GetRoleBindingObjects(&m, ctx) - assert.NotNil(t, objects) - assert.NotNil(t, fn) - assert.Nil(t, err) - - objects, fn, err = deployer.GetClusterRoleObjects(&m, ctx) - assert.Nil(t, objects) - assert.NotNil(t, fn) - assert.Nil(t, err) - - objects, fn, err = deployer.GetClusterRoleBindingObjects(&m, ctx) - assert.Nil(t, objects) - assert.NotNil(t, fn) - assert.Nil(t, err) -} diff --git a/app/deployer/connector/natssync_client.go b/app/deployer/connector/natssync_client.go deleted file mode 100644 index ba4764ae..00000000 --- a/app/deployer/connector/natssync_client.go +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright (c) 2022. NetApp, Inc. All Rights Reserved. - */ - -package connector - -import ( - "context" - "errors" - "fmt" - "maps" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - "strconv" - "strings" - - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - rbacv1 "k8s.io/api/rbac/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - ctrllog "sigs.k8s.io/controller-runtime/pkg/log" - - "github.com/NetApp-Polaris/astra-connector-operator/app/conf" - "github.com/NetApp-Polaris/astra-connector-operator/app/deployer/model" - "github.com/NetApp-Polaris/astra-connector-operator/app/register" - "github.com/NetApp-Polaris/astra-connector-operator/common" - v1 "github.com/NetApp-Polaris/astra-connector-operator/details/operator-sdk/api/v1" -) - -type NatsSyncClientDeployer struct{} - -func NewNatsSyncClientDeployer() model.Deployer { - return &NatsSyncClientDeployer{} -} - -// GetDeploymentObjects returns a NatsSyncClient Deployment object -func (d *NatsSyncClientDeployer) GetDeploymentObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - log := ctrllog.FromContext(ctx) - ls := LabelsForNatsSyncClient(common.NatsSyncClientName, m.Spec.Labels) - - var imageRegistry string - var containerImage string - var natsSyncClientImage string - if m.Spec.ImageRegistry.Name != "" { - imageRegistry = m.Spec.ImageRegistry.Name - } else { - imageRegistry = common.DefaultImageRegistry - } - - if m.Spec.NatsSyncClient.Image != "" { - containerImage = m.Spec.NatsSyncClient.Image - } else { - containerImage = common.NatsSyncClientDefaultImage - } - - natsSyncClientImage = fmt.Sprintf("%s/%s", imageRegistry, containerImage) - log.Info("Using NatsSyncClient image", "image", natsSyncClientImage) - natsSyncCloudBridgeURL := register.GetAstraHostURL(m) - keyStoreURLSplit := strings.Split(common.NatsSyncClientKeystoreUrl, "://") - if len(keyStoreURLSplit) < 2 { - return nil, nil, errors.New("invalid keyStoreURLSplit provided, format - configmap:///configmap-data") - } - - dep := &appsv1.Deployment{ - ObjectMeta: metav1.ObjectMeta{ - Name: common.NatsSyncClientName, - Namespace: m.Namespace, - Annotations: map[string]string{ - "container.seccomp.security.alpha.kubernetes.io/pod": "runtime/default", - }, - }, - Spec: appsv1.DeploymentSpec{ - Replicas: &m.Spec.NatsSyncClient.Replicas, - Selector: &metav1.LabelSelector{ - MatchLabels: ls, - }, - Template: corev1.PodTemplateSpec{ - ObjectMeta: metav1.ObjectMeta{ - Labels: ls, - }, - Spec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Image: natsSyncClientImage, - Name: common.NatsSyncClientName, - Env: []corev1.EnvVar{ - { - Name: "NATS_SERVER_URL", - Value: GetNatsURL(m), - }, - { - Name: "CLOUD_BRIDGE_URL", - Value: natsSyncCloudBridgeURL, - }, - { - Name: "CONFIGMAP_NAME", - Value: common.NatsSyncClientConfigMapName, - }, - { - Name: "POD_NAMESPACE", - Value: m.Namespace, - }, - { - Name: "KEYSTORE_URL", - Value: common.NatsSyncClientKeystoreUrl, - }, - { - Name: "SKIP_TLS_VALIDATION", - Value: strconv.FormatBool(m.Spec.Astra.SkipTLSValidation), - }, - }, - VolumeMounts: []corev1.VolumeMount{ - { - Name: common.NatsSyncClientConfigMapVolumeName, - MountPath: keyStoreURLSplit[1], - }, - }, - SecurityContext: conf.GetSecurityContext(), - }}, - ServiceAccountName: common.NatsSyncClientConfigMapServiceAccountName, - Volumes: []corev1.Volume{ - { - Name: common.NatsSyncClientConfigMapVolumeName, - VolumeSource: corev1.VolumeSource{ - ConfigMap: &corev1.ConfigMapVolumeSource{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: common.NatsSyncClientConfigMapName, - }, - }, - }, - }, - }, - }, - }, - }, - } - - if m.Spec.NatsSyncClient.HostAliasIP != "" { - hostNamesSplit := strings.Split(natsSyncCloudBridgeURL, "://") - if len(hostNamesSplit) < 2 { - return nil, nil, errors.New("invalid hostname provided, hostname format - https://hostname") - } - dep.Spec.Template.Spec.HostAliases = []corev1.HostAlias{ - { - IP: m.Spec.NatsSyncClient.HostAliasIP, - Hostnames: []string{hostNamesSplit[1]}, - }, - } - } - if m.Spec.ImageRegistry.Secret != "" { - dep.Spec.Template.Spec.ImagePullSecrets = []corev1.LocalObjectReference{ - { - Name: m.Spec.ImageRegistry.Secret, - }, - } - } - return []client.Object{dep}, model.NonMutateFn, nil -} - -// GetServiceObjects returns a NatsSyncClient Service object -func (d *NatsSyncClientDeployer) GetServiceObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - service := &corev1.Service{ - ObjectMeta: metav1.ObjectMeta{ - Name: common.NatsSyncClientName, - Namespace: m.Namespace, - Labels: map[string]string{ - "app": common.NatsSyncClientName, - }, - }, - Spec: corev1.ServiceSpec{ - Type: corev1.ServiceTypeClusterIP, - Ports: []corev1.ServicePort{ - { - Port: common.NatsSyncClientPort, - Protocol: common.NatsSyncClientProtocol, - }, - }, - Selector: map[string]string{ - "app": common.NatsSyncClientName, - }, - }, - } - return []client.Object{service}, model.NonMutateFn, nil -} - -// LabelsForNatsSyncClient returns the labels for selecting the NatsSyncClient -func LabelsForNatsSyncClient(name string, mLabels map[string]string) map[string]string { - labels := map[string]string{"app": name} - maps.Copy(labels, mLabels) - return labels -} - -// GetConfigMapObjects returns a ConfigMap object for NatsSyncClient -func (d *NatsSyncClientDeployer) GetConfigMapObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - configMap := &corev1.ConfigMap{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: m.Namespace, - Name: common.NatsSyncClientConfigMapName, - }, - } - return []client.Object{configMap}, model.NonMutateFn, nil -} - -// GetRoleObjects returns a ConfigMapRole object for NatsSyncClient -func (d *NatsSyncClientDeployer) GetRoleObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - configMapRole := &rbacv1.Role{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: m.Namespace, - Name: common.NatsSyncClientConfigMapRoleName, - }, - Rules: []rbacv1.PolicyRule{ - { - APIGroups: []string{""}, - Resources: []string{"configmaps"}, - Verbs: []string{"get", "list", "patch"}, - }, - { - APIGroups: []string{"security.openshift.io"}, - Resources: []string{"securitycontextconstraints"}, - Verbs: []string{"use"}, - }, - }, - } - return []client.Object{configMapRole}, model.NonMutateFn, nil -} - -// GetRoleBindingObjects returns a NatsSyncClient ConfigMapRoleBinding object -func (d *NatsSyncClientDeployer) GetRoleBindingObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - configMapRoleBinding := &rbacv1.RoleBinding{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: m.Namespace, - Name: common.NatsSyncClientConfigMapRoleBindingName, - }, - Subjects: []rbacv1.Subject{ - { - Kind: "ServiceAccount", - Name: common.NatsSyncClientConfigMapServiceAccountName, - }, - }, - RoleRef: rbacv1.RoleRef{ - Kind: "Role", - Name: common.NatsSyncClientConfigMapRoleName, - APIGroup: "rbac.authorization.k8s.io", - }, - } - return []client.Object{configMapRoleBinding}, model.NonMutateFn, nil -} - -// GetServiceAccountObjects returns a ServiceAccount object for NatsSyncClient -func (d *NatsSyncClientDeployer) GetServiceAccountObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - sa := &corev1.ServiceAccount{ - ObjectMeta: metav1.ObjectMeta{ - Name: common.NatsSyncClientConfigMapServiceAccountName, - Namespace: m.Namespace, - }, - } - return []client.Object{sa}, model.NonMutateFn, nil -} - -func (d *NatsSyncClientDeployer) GetStatefulSetObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - return nil, model.NonMutateFn, nil -} - -func (d *NatsSyncClientDeployer) GetClusterRoleObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - return nil, model.NonMutateFn, nil -} - -func (d *NatsSyncClientDeployer) GetClusterRoleBindingObjects(m *v1.AstraConnector, ctx context.Context) ([]client.Object, controllerutil.MutateFn, error) { - return nil, model.NonMutateFn, nil -} diff --git a/app/deployer/connector/natssync_client_test.go b/app/deployer/connector/natssync_client_test.go deleted file mode 100644 index 3e52f647..00000000 --- a/app/deployer/connector/natssync_client_test.go +++ /dev/null @@ -1,198 +0,0 @@ -package connector_test - -import ( - "context" - "testing" - - "github.com/NetApp-Polaris/astra-connector-operator/app/deployer/connector" - "github.com/NetApp-Polaris/astra-connector-operator/common" - v1 "github.com/NetApp-Polaris/astra-connector-operator/details/operator-sdk/api/v1" - "github.com/stretchr/testify/assert" - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - rbacv1 "k8s.io/api/rbac/v1" -) - -func TestNatsSyncGetDeploymentObjects(t *testing.T) { - mockAstraConnector := &v1.AstraConnector{ - Spec: v1.AstraConnectorSpec{ - ImageRegistry: v1.ImageRegistry{ - Name: "test-registry", - Secret: "test-secret", - }, - NatsSyncClient: v1.NatsSyncClient{ - Image: "test-image", - Replicas: 2, - HostAliasIP: "192.168.1.1", - }, - Astra: v1.Astra{ - SkipTLSValidation: true, - }, - }, - } - - deployer := connector.NewNatsSyncClientDeployer() - - objects, _, err := deployer.GetDeploymentObjects(mockAstraConnector, context.Background()) - assert.NoError(t, err) - assert.Len(t, objects, 1) - - deployment, ok := objects[0].(*appsv1.Deployment) - assert.True(t, ok) - - assert.Equal(t, int32(2), *deployment.Spec.Replicas) - assert.Equal(t, "test-registry/test-image", deployment.Spec.Template.Spec.Containers[0].Image) - assert.Equal(t, "192.168.1.1", deployment.Spec.Template.Spec.HostAliases[0].IP) - assert.Equal(t, "test-secret", deployment.Spec.Template.Spec.ImagePullSecrets[0].Name) - assert.Equal(t, 1, len(deployment.Spec.Template.Spec.Containers)) - assert.Equal(t, "natssync-client", deployment.Spec.Template.Spec.Containers[0].Name) - -} - -func TestNatsSyncGetDeploymentObjectsDefault(t *testing.T) { - mockAstraConnector := &v1.AstraConnector{ - Spec: v1.AstraConnectorSpec{ - NatsSyncClient: v1.NatsSyncClient{ - HostAliasIP: "192.168.1.1", - Replicas: 1, - }, - Astra: v1.Astra{ - SkipTLSValidation: false, - }, - }, - } - deployer := connector.NewNatsSyncClientDeployer() - objects, _, err := deployer.GetDeploymentObjects(mockAstraConnector, context.Background()) - assert.NoError(t, err) - assert.Len(t, objects, 1) - - deployment, ok := objects[0].(*appsv1.Deployment) - assert.True(t, ok) - - assert.Equal(t, int32(1), *deployment.Spec.Replicas) - assert.Equal(t, "netappdownloads.jfrog.io/docker-astra-control-staging/arch30/neptune/natssync-client:2.2.202402012115", deployment.Spec.Template.Spec.Containers[0].Image) - assert.Equal(t, "192.168.1.1", deployment.Spec.Template.Spec.HostAliases[0].IP) - assert.Nil(t, deployment.Spec.Template.Spec.ImagePullSecrets) - // TODO add more checks -} - -func TestGetServiceObjects(t *testing.T) { - mockAstraConnector := &v1.AstraConnector{ - Spec: v1.AstraConnectorSpec{ - ImageRegistry: v1.ImageRegistry{ - Name: "test-registry", - Secret: "test-secret", - }, - NatsSyncClient: v1.NatsSyncClient{ - Image: "test-image", - Replicas: 2, - HostAliasIP: "192.168.1.1", - }, - Astra: v1.Astra{ - SkipTLSValidation: true, - }, - }, - } - - deployer := connector.NewNatsSyncClientDeployer() - objects, _, err := deployer.GetServiceObjects(mockAstraConnector, context.Background()) - assert.NoError(t, err) - assert.Len(t, objects, 1) - - service, ok := objects[0].(*corev1.Service) - assert.True(t, ok) - - assert.Equal(t, corev1.ServiceTypeClusterIP, service.Spec.Type) - assert.Equal(t, int32(8080), service.Spec.Ports[0].Port) - assert.Equal(t, corev1.Protocol("TCP"), service.Spec.Ports[0].Protocol) - assert.Equal(t, common.NatsSyncClientName, service.Spec.Selector["app"]) -} - -func TestNatsSyncGetConfigMapObjects(t *testing.T) { - mockAstraConnector := DummyAstraConnector() - deployer := connector.NewNatsSyncClientDeployer() - - objects, _, err := deployer.GetConfigMapObjects(&mockAstraConnector, context.Background()) - assert.NoError(t, err) - assert.Len(t, objects, 1) - - configMap, ok := objects[0].(*corev1.ConfigMap) - assert.True(t, ok) - - assert.Equal(t, common.NatsSyncClientConfigMapName, configMap.Name) -} - -func TestNatsSyncGetRoleObjects(t *testing.T) { - mockAstraConnector := DummyAstraConnector() - deployer := connector.NewNatsSyncClientDeployer() - - objects, _, err := deployer.GetRoleObjects(&mockAstraConnector, context.Background()) - assert.NoError(t, err) - assert.Len(t, objects, 1) - - role, ok := objects[0].(*rbacv1.Role) - assert.True(t, ok) - - assert.Equal(t, common.NatsSyncClientConfigMapRoleName, role.Name) - assert.Len(t, role.Rules, 2) - assert.Equal(t, []string{""}, role.Rules[0].APIGroups) - assert.Equal(t, []string{"configmaps"}, role.Rules[0].Resources) - assert.Equal(t, []string{"get", "list", "patch"}, role.Rules[0].Verbs) -} - -func TestGetRoleBindingObjects(t *testing.T) { - mockAstraConnector := DummyAstraConnector() - deployer := connector.NewNatsSyncClientDeployer() - objects, _, err := deployer.GetRoleBindingObjects(&mockAstraConnector, context.Background()) - assert.NoError(t, err) - - assert.Len(t, objects, 1) - - roleBinding, ok := objects[0].(*rbacv1.RoleBinding) - assert.True(t, ok) - - assert.Equal(t, common.NatsSyncClientConfigMapRoleBindingName, roleBinding.Name) - assert.Len(t, roleBinding.Subjects, 1) - assert.Equal(t, "ServiceAccount", roleBinding.Subjects[0].Kind) - assert.Equal(t, common.NatsSyncClientConfigMapServiceAccountName, roleBinding.Subjects[0].Name) - assert.Equal(t, "Role", roleBinding.RoleRef.Kind) - assert.Equal(t, common.NatsSyncClientConfigMapRoleName, roleBinding.RoleRef.Name) - assert.Equal(t, "rbac.authorization.k8s.io", roleBinding.RoleRef.APIGroup) -} - -func TestNatsSyncGetServiceAccountObjects(t *testing.T) { - // Create a mock AstraConnector object - m := DummyAstraConnector() - deployer := connector.NewNatsSyncClientDeployer() - objects, _, err := deployer.GetServiceAccountObjects(&m, context.Background()) - assert.NoError(t, err) - - assert.Len(t, objects, 1) - serviceAccount, ok := objects[0].(*corev1.ServiceAccount) - assert.True(t, ok) - - assert.Equal(t, common.NatsSyncClientConfigMapServiceAccountName, serviceAccount.Name) -} - -// Below are all the nil objects -func TestNatsSyncK8sObjectsNotCreated(t *testing.T) { - deployer := connector.NewNatsSyncClientDeployer() - ctx := context.Background() - - m := DummyAstraConnector() - - objects, fn, err := deployer.GetStatefulSetObjects(&m, ctx) - assert.Nil(t, objects) - assert.NotNil(t, fn) - assert.Nil(t, err) - - objects, fn, err = deployer.GetClusterRoleObjects(&m, ctx) - assert.Nil(t, objects) - assert.NotNil(t, fn) - assert.Nil(t, err) - - objects, fn, err = deployer.GetClusterRoleBindingObjects(&m, ctx) - assert.Nil(t, objects) - assert.NotNil(t, fn) - assert.Nil(t, err) -} diff --git a/details/operator-sdk/controllers/connector.go b/details/operator-sdk/controllers/connector.go index 91ef5d2e..94beae34 100644 --- a/details/operator-sdk/controllers/connector.go +++ b/details/operator-sdk/controllers/connector.go @@ -161,7 +161,7 @@ func (r *AstraConnectorController) deployConnector(ctx context.Context, } func getDeployers() []model.Deployer { - return []model.Deployer{connector.NewNatsDeployer(), connector.NewNatsSyncClientDeployer(), connector.NewAstraConnectorDeployer()} + return []model.Deployer{connector.NewAstraConnectorDeployer()} } func (r *AstraConnectorController) deleteConnectorClusterScopedResources(ctx context.Context, astraConnector *v1.AstraConnector) { From 0260d80cce15faa3e78f54a1e8d9e3b55f475c2f Mon Sep 17 00:00:00 2001 From: Oscar Rodriguez Date: Fri, 5 Apr 2024 00:01:25 -0600 Subject: [PATCH 2/2] changing more things --- .github/workflows/cicd.yml | 1 + .../controllers/astraconnector_controller.go | 10 -- details/operator-sdk/controllers/connector.go | 126 +----------------- 3 files changed, 5 insertions(+), 132 deletions(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 755af957..20e41942 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -5,6 +5,7 @@ on: branches: - main - 'release-*' + - 'betatesting-*' pull_request: branches: '*' workflow_dispatch: diff --git a/details/operator-sdk/controllers/astraconnector_controller.go b/details/operator-sdk/controllers/astraconnector_controller.go index 450906ab..38efcb1d 100644 --- a/details/operator-sdk/controllers/astraconnector_controller.go +++ b/details/operator-sdk/controllers/astraconnector_controller.go @@ -219,16 +219,6 @@ func (r *AstraConnectorController) Reconcile(ctx context.Context, req ctrl.Reque } } - if natsSyncClientStatus.AstraClusterId != "" { - log.Info(fmt.Sprintf("Updating CR status, clusterID: '%s'", natsSyncClientStatus.AstraClusterId)) - } - - _ = r.updateAstraConnectorStatus(ctx, astraConnector, natsSyncClientStatus, true) - err := r.waitForStatusUpdate(astraConnector, log) - if err != nil { - log.Error(err, "Failed to update status, ignoring since this will be fixed on a future reconcile.") - } - return ctrl.Result{}, nil } else { diff --git a/details/operator-sdk/controllers/connector.go b/details/operator-sdk/controllers/connector.go index 94beae34..6a83a45a 100644 --- a/details/operator-sdk/controllers/connector.go +++ b/details/operator-sdk/controllers/connector.go @@ -3,23 +3,17 @@ package controllers import ( "context" "fmt" - "net/http" - "strings" "time" "github.com/NetApp-Polaris/astra-connector-operator/details/k8s" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" ctrllog "sigs.k8s.io/controller-runtime/pkg/log" "github.com/NetApp-Polaris/astra-connector-operator/app/conf" "github.com/NetApp-Polaris/astra-connector-operator/app/deployer/connector" "github.com/NetApp-Polaris/astra-connector-operator/app/deployer/model" - "github.com/NetApp-Polaris/astra-connector-operator/app/register" - "github.com/NetApp-Polaris/astra-connector-operator/common" v1 "github.com/NetApp-Polaris/astra-connector-operator/details/operator-sdk/api/v1" ) @@ -39,122 +33,10 @@ func (r *AstraConnectorController) deployConnector(ctx context.Context, } } - k8sUtil := k8s.NewK8sUtil(r.Client, r.Clientset, log) - - // Let's register the cluster now - registerUtil := register.NewClusterRegisterUtil(astraConnector, &http.Client{}, r.Client, k8sUtil, log, context.Background()) - registered := false - log.Info("Checking for natsSyncClient configmap") - foundCM := &corev1.ConfigMap{} - astraConnectorID := "" - err := r.Get(ctx, types.NamespacedName{Name: common.NatsSyncClientConfigMapName, Namespace: astraConnector.Namespace}, foundCM) - if err != nil { - return ctrl.Result{RequeueAfter: time.Minute * conf.Config.ErrorTimeout()}, err - } - if len(foundCM.Data) != 0 { - registered = true - astraConnectorID, err = registerUtil.GetConnectorIDFromConfigMap(foundCM.Data) - if err != nil { - log.Error(err, FailedLocationIDGet) - natsSyncClientStatus.Status = FailedLocationIDGet - _ = r.updateAstraConnectorStatus(ctx, astraConnector, *natsSyncClientStatus) - return ctrl.Result{RequeueAfter: time.Minute * conf.Config.ErrorTimeout()}, err - } - if astraConnectorID == "" { - log.Error(err, EmptyLocationIDGet) - natsSyncClientStatus.Status = EmptyLocationIDGet - _ = r.updateAstraConnectorStatus(ctx, astraConnector, *natsSyncClientStatus) - return ctrl.Result{RequeueAfter: time.Minute * conf.Config.ErrorTimeout()}, err - } - } - - // RegisterClient - if !astraConnector.Spec.Astra.Unregister { - // Check the feature flag first - if conf.Config.FeatureFlags().SkipAstraRegistration() { - log.Info("Skipping Nats and Astra registration, feature flag set to not register") - natsSyncClientStatus.Status = DeployedComponents - _ = r.updateAstraConnectorStatus(ctx, astraConnector, *natsSyncClientStatus) - return ctrl.Result{RequeueAfter: time.Minute * conf.Config.ErrorTimeout()}, nil - } - - if registered { - log.Info("natsSyncClient already registered", "astraConnectorID", astraConnectorID) - } else { - log.Info("Registering natsSyncClient") - var errorReason string - astraConnectorID, errorReason, err = registerUtil.RegisterNatsSyncClient() - if err != nil { - log.Error(err, FailedRegisterNSClient) - natsSyncClientStatus.Status = errorReason - _ = r.updateAstraConnectorStatus(ctx, astraConnector, *natsSyncClientStatus) - return ctrl.Result{RequeueAfter: time.Minute * conf.Config.ErrorTimeout()}, err - } - - log.Info("natsSyncClient ConnectorID", "astraConnectorID", astraConnectorID) - } - natsSyncClientStatus.AstraConnectorID = astraConnectorID - natsSyncClientStatus.Status = RegisterNSClient - - if astraConnector.Spec.Astra.TokenRef == "" || astraConnector.Spec.Astra.AccountId == "" || astraConnector.Spec.Astra.ClusterName == "" { - log.Info("Skipping cluster registration with Astra, incomplete Astra details provided TokenRef/AccountId/ClusterName") - } else { - log.Info("Registering cluster with Astra") - - // Check if there is a cluster ID from: - // 1. CR Status. If it is in hear it means we have already been through this loop once and know what the ID is - // 2. Check the CR Spec. If it is in here, use it. It will be validated later. - // 3. If the clusterID is in neither of the above, leave it "" and the operator will create one and populate the status - // 4. Save the clusterID to the CR Status - var clusterId string - if strings.TrimSpace(natsSyncClientStatus.AstraClusterId) != "" { - clusterId = natsSyncClientStatus.AstraClusterId - log.WithValues("clusterID", clusterId).Info("using clusterID from CR Status") - } else { - clusterId = astraConnector.Spec.Astra.ClusterId - } - - var errorReason string - natsSyncClientStatus.AstraClusterId, errorReason, err = registerUtil.RegisterClusterWithAstra(astraConnectorID, clusterId) - if err != nil { - log.Error(err, FailedConnectorIDAdd) - natsSyncClientStatus.Status = errorReason - _ = r.updateAstraConnectorStatus(ctx, astraConnector, *natsSyncClientStatus) - return ctrl.Result{RequeueAfter: time.Minute * conf.Config.ErrorTimeout()}, err - } - log.Info("Registered cluster with Astra") - } - natsSyncClientStatus.Registered = "true" - natsSyncClientStatus.Status = RegisteredWithAstra - } else { - if registered { - log.Info("Unregistering natsSyncClient") - err = registerUtil.UnRegisterNatsSyncClient() - if err != nil { - log.Error(err, FailedUnRegisterNSClient) - natsSyncClientStatus.Status = FailedUnRegisterNSClient - _ = r.updateAstraConnectorStatus(ctx, astraConnector, *natsSyncClientStatus) - return ctrl.Result{RequeueAfter: time.Minute * conf.Config.ErrorTimeout()}, err - } - log.Info(UnregisterNSClient) - } else { - log.Info("Already unregistered with Astra") - } - natsSyncClientStatus.Registered = "false" - natsSyncClientStatus.AstraConnectorID = "" - natsSyncClientStatus.Status = UnregisterNSClient - } - - // if we are registered and have a clusterid let's set up the asup cr - if natsSyncClientStatus.Registered == "true" && natsSyncClientStatus.AstraClusterId != "" { - err = r.createASUPCR(ctx, astraConnector, natsSyncClientStatus.AstraClusterId) - if err != nil { - log.Error(err, FailedASUPCreation) - natsSyncClientStatus.Status = FailedASUPCreation - _ = r.updateAstraConnectorStatus(ctx, astraConnector, *natsSyncClientStatus) - return ctrl.Result{RequeueAfter: time.Minute * conf.Config.ErrorTimeout()}, err - } - } + natsSyncClientStatus.Registered = "true" + natsSyncClientStatus.AstraConnectorID = "1969" + natsSyncClientStatus.Status = RegisteredWithAstra + _ = r.updateAstraConnectorStatus(ctx, astraConnector, *natsSyncClientStatus) // No need to requeue due to success return ctrl.Result{}, nil