diff --git a/src/go/k8s/controllers/redpanda/suite_test.go b/src/go/k8s/controllers/redpanda/suite_test.go index 2a1d8fcd60933..6b2e4389cf49f 100644 --- a/src/go/k8s/controllers/redpanda/suite_test.go +++ b/src/go/k8s/controllers/redpanda/suite_test.go @@ -94,6 +94,7 @@ var _ = BeforeSuite(func(done Done) { _ *redpandav1alpha1.Cluster, _ string, _ types.AdminTLSConfigProvider, + _ ...int32, ) (adminutils.AdminAPIClient, error) { return testAdminAPI, nil } @@ -366,6 +367,10 @@ func (m *mockAdminAPI) SetUnavailable(unavailable bool) { m.unavailable = unavailable } +func (m *mockAdminAPI) GetNodeConfig() (admin.NodeConfig, error) { + return admin.NodeConfig{}, nil +} + func (m *mockAdminAPI) SetDirectValidationEnabled(directValidation bool) { m.monitor.Lock() defer m.monitor.Unlock() diff --git a/src/go/k8s/pkg/admin/admin.go b/src/go/k8s/pkg/admin/admin.go index a6d835448f2da..3b25e658f16d6 100644 --- a/src/go/k8s/pkg/admin/admin.go +++ b/src/go/k8s/pkg/admin/admin.go @@ -36,6 +36,7 @@ func NewInternalAdminAPI( redpandaCluster *redpandav1alpha1.Cluster, fqdn string, adminTLSProvider types.AdminTLSConfigProvider, + ordinals ...int32, ) (AdminAPIClient, error) { adminInternal := redpandaCluster.AdminAPIInternal() if adminInternal == nil { @@ -53,11 +54,20 @@ func NewInternalAdminAPI( adminInternalPort := adminInternal.Port - var urls []string - replicas := *redpandaCluster.Spec.Replicas + if len(ordinals) == 0 { + // Not a specific node, just go through all them + replicas := redpandaCluster.Status.CurrentReplicas + if replicas <= 0 { + replicas = *redpandaCluster.Spec.Replicas + } - for i := int32(0); i < replicas; i++ { - urls = append(urls, fmt.Sprintf("%s-%d.%s:%d", redpandaCluster.Name, i, fqdn, adminInternalPort)) + for i := int32(0); i < replicas; i++ { + ordinals = append(ordinals, i) + } + } + var urls []string + for _, on := range ordinals { + urls = append(urls, fmt.Sprintf("%s-%d.%s:%d", redpandaCluster.Name, on, fqdn, adminInternalPort)) } adminAPI, err := admin.NewAdminAPI(urls, admin.BasicCredentials{}, tlsConfig) @@ -74,6 +84,7 @@ type AdminAPIClient interface { ClusterConfigStatus(ctx context.Context) (admin.ConfigStatusResponse, error) ClusterConfigSchema(ctx context.Context) (admin.ConfigSchema, error) PatchClusterConfig(ctx context.Context, upsert map[string]interface{}, remove []string) (admin.ClusterConfigWriteResult, error) + GetNodeConfig(ctx context.Context) (admin.NodeConfig, error) CreateUser(ctx context.Context, username, password, mechanism string) error @@ -89,7 +100,8 @@ type AdminAPIClientFactory func( k8sClient client.Reader, redpandaCluster *redpandav1alpha1.Cluster, fqdn string, - adminTLSProvider resources.AdminTLSConfigProvider, + adminTLSProvider types.AdminTLSConfigProvider, + ordinals ...int32, ) (AdminAPIClient, error) var _ AdminAPIClientFactory = NewInternalAdminAPI