func()

in controllers/stage/chain/configure_secret_manager.go [62:106]


func (h ConfigureSecretManager) configureEso(ctx context.Context, stage *cdPipeApi.Stage) error {
	logger := ctrl.LoggerFrom(ctx)

	logger.Info("Configuring external secret integration")

	externalSecretIntegrationRole := &rbacApi.Role{}
	if err := h.multiClusterClient.Get(ctx, client.ObjectKey{
		Name:      "external-secret-integration",
		Namespace: stage.Namespace,
	}, externalSecretIntegrationRole); err != nil {
		return fmt.Errorf("failed to get %s role: %w", "external-secret-integration", err)
	}

	serviceAccount, err := h.createServiceAccount(ctrl.LoggerInto(ctx, logger), stage.Spec.Namespace)
	if err != nil {
		return err
	}

	if _, err = h.createRoleBinding(
		ctrl.LoggerInto(ctx, logger),
		stage.Namespace,
		stage.Spec.Namespace,
		serviceAccount.Name,
		externalSecretIntegrationRole.Name,
	); err != nil {
		return err
	}

	secretStore, err := h.createSecretStore(ctrl.LoggerInto(ctx, logger), stage.Namespace, stage.Spec.Namespace, serviceAccount.Name)
	if err != nil {
		return err
	}

	if _, err = h.createExternalSecret(
		ctrl.LoggerInto(ctx, logger),
		stage.Spec.Namespace,
		secretStore.GetName(),
	); err != nil {
		return err
	}

	logger.Info("External secret integration has been configured successfully")

	return nil
}