func()

in controllers/stage/chain/configure_tenantadmin_rbac.go [23:56]


func (h ConfigureTenantAdminRbac) ServeRequest(ctx context.Context, stage *cdPipeApi.Stage) error {
	targetNamespace := stage.Spec.Namespace
	logger := ctrl.LoggerFrom(ctx).WithValues("target-ns", targetNamespace)
	logger.Info("Configuring tenant admin RBAC")

	if err := h.rbac.CreateRoleBindingIfNotExists(
		ctx,
		tenantAdminRbName,
		targetNamespace,
		[]rbacApi.Subject{
			{
				APIGroup: rbacApi.GroupName,
				Kind:     rbacApi.GroupKind,
				Name:     GetOIDCAdminGroupName(stage.Namespace),
			},
			{
				APIGroup: rbacApi.GroupName,
				Kind:     rbacApi.GroupKind,
				Name:     GetOIDCDeveloperGroupName(stage.Namespace),
			},
		},
		rbacApi.RoleRef{
			APIGroup: rbacApi.GroupName,
			Kind:     rbac.ClusterRoleKind,
			Name:     "admin",
		},
	); err != nil {
		return fmt.Errorf("failed to create %s rolebinding: %w", tenantAdminRbName, err)
	}

	logger.Info("RBAC for tenant admin has been configured successfully")

	return nil
}