Skip to content

Commit

Permalink
Fix and unify CreateOrUpdateXXX functions for karmadactl
Browse files Browse the repository at this point in the history
Signed-off-by: lonelyCZ <[email protected]>
  • Loading branch information
lonelyCZ committed Nov 1, 2022
1 parent f68da6d commit 0b535a4
Show file tree
Hide file tree
Showing 13 changed files with 266 additions and 235 deletions.
3 changes: 2 additions & 1 deletion pkg/karmadactl/addons/descheduler/descheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
addonutils "github.com/karmada-io/karmada/pkg/karmadactl/addons/utils"
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/kubernetes"
initutils "github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/utils"
cmdutil "github.com/karmada-io/karmada/pkg/karmadactl/util"
)

var karmadaDeschedulerLabels = map[string]string{"app": addoninit.DeschedulerResourceName}
Expand Down Expand Up @@ -59,7 +60,7 @@ var enableDescheduler = func(opts *addoninit.CommandAddonsEnableOption) error {
return fmt.Errorf("decode descheduler deployment error: %v", err)
}

if err := addonutils.CreateOrUpdateDeployment(opts.KubeClientSet, karmadaDeschedulerDeployment); err != nil {
if err := cmdutil.CreateOrUpdateDeployment(opts.KubeClientSet, karmadaDeschedulerDeployment); err != nil {
return fmt.Errorf("create karmada descheduler deployment error: %v", err)
}

Expand Down
7 changes: 4 additions & 3 deletions pkg/karmadactl/addons/estimator/estimator.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
addonutils "github.com/karmada-io/karmada/pkg/karmadactl/addons/utils"
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/kubernetes"
initutils "github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/utils"
cmdutil "github.com/karmada-io/karmada/pkg/karmadactl/util"
"github.com/karmada-io/karmada/pkg/util/names"
)

Expand Down Expand Up @@ -72,7 +73,7 @@ var enableEstimator = func(opts *addoninit.CommandAddonsEnableOption) error {

secretName := fmt.Sprintf("%s-kubeconfig", opts.Cluster)
secret := secretFromSpec(secretName, opts.Namespace, corev1.SecretTypeOpaque, map[string]string{secretName: string(configBytes)})
if err := addonutils.CreateOrUpdateSecret(opts.KubeClientSet, secret); err != nil {
if err := cmdutil.CreateOrUpdateSecret(opts.KubeClientSet, secret); err != nil {
return fmt.Errorf("create or update scheduler estimator secret error: %v", err)
}

Expand All @@ -89,7 +90,7 @@ var enableEstimator = func(opts *addoninit.CommandAddonsEnableOption) error {
if err := kuberuntime.DecodeInto(clientsetscheme.Codecs.UniversalDecoder(), karmadaEstimatorServiceBytes, karmadaEstimatorService); err != nil {
return fmt.Errorf("decode karmada scheduler estimator service error: %v", err)
}
if err := addonutils.CreateService(opts.KubeClientSet, karmadaEstimatorService); err != nil {
if err := cmdutil.CreateService(opts.KubeClientSet, karmadaEstimatorService); err != nil {
return fmt.Errorf("create or update scheduler estimator service error: %v", err)
}

Expand All @@ -108,7 +109,7 @@ var enableEstimator = func(opts *addoninit.CommandAddonsEnableOption) error {
if err := kuberuntime.DecodeInto(clientsetscheme.Codecs.UniversalDecoder(), karmadaEstimatorDeploymentBytes, karmadaEstimatorDeployment); err != nil {
return fmt.Errorf("decode karmada scheduler estimator deployment error: %v", err)
}
if err := addonutils.CreateOrUpdateDeployment(opts.KubeClientSet, karmadaEstimatorDeployment); err != nil {
if err := cmdutil.CreateOrUpdateDeployment(opts.KubeClientSet, karmadaEstimatorDeployment); err != nil {
return fmt.Errorf("create or update scheduler estimator deployment error: %v", err)
}

Expand Down
9 changes: 5 additions & 4 deletions pkg/karmadactl/addons/search/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
initkarmada "github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/karmada"
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/kubernetes"
initutils "github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/utils"
cmdutil "github.com/karmada-io/karmada/pkg/karmadactl/util"
)

const (
Expand Down Expand Up @@ -135,7 +136,7 @@ func installComponentsOnHostCluster(opts *addoninit.CommandAddonsEnableOption) e
return fmt.Errorf("decode karmada search service error: %v", err)
}

if err := addonutils.CreateService(opts.KubeClientSet, karmadaSearchService); err != nil {
if err := cmdutil.CreateService(opts.KubeClientSet, karmadaSearchService); err != nil {
return fmt.Errorf("create karmada search service error: %v", err)
}

Expand All @@ -161,7 +162,7 @@ func installComponentsOnHostCluster(opts *addoninit.CommandAddonsEnableOption) e
if err := kuberuntime.DecodeInto(clientsetscheme.Codecs.UniversalDecoder(), karmadaSearchDeploymentBytes, karmadaSearchDeployment); err != nil {
return fmt.Errorf("decode karmada search deployment error: %v", err)
}
if err := addonutils.CreateOrUpdateDeployment(opts.KubeClientSet, karmadaSearchDeployment); err != nil {
if err := cmdutil.CreateOrUpdateDeployment(opts.KubeClientSet, karmadaSearchDeployment); err != nil {
return fmt.Errorf("create karmada search deployment error: %v", err)
}

Expand All @@ -186,7 +187,7 @@ func installComponentsOnKarmadaControlPlane(opts *addoninit.CommandAddonsEnableO
if err := kuberuntime.DecodeInto(clientsetscheme.Codecs.UniversalDecoder(), aaServiceBytes, aaService); err != nil {
return fmt.Errorf("decode karmada search AA service error: %v", err)
}
if err := addonutils.CreateService(opts.KarmadaKubeClientSet, aaService); err != nil {
if err := cmdutil.CreateService(opts.KarmadaKubeClientSet, aaService); err != nil {
return fmt.Errorf("create karmada search AA service error: %v", err)
}

Expand All @@ -204,7 +205,7 @@ func installComponentsOnKarmadaControlPlane(opts *addoninit.CommandAddonsEnableO
return fmt.Errorf("decode karmada search AA apiservice error: %v", err)
}

if err = addonutils.CreateOrUpdateAPIService(opts.KarmadaAggregatorClientSet, aaAPIService); err != nil {
if err = cmdutil.CreateOrUpdateAPIService(opts.KarmadaAggregatorClientSet, aaAPIService); err != nil {
return fmt.Errorf("craete karmada search AA apiservice error: %v", err)
}

Expand Down
76 changes: 0 additions & 76 deletions pkg/karmadactl/addons/utils/idempotency.go

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
bootstrapapi "k8s.io/cluster-bootstrap/token/api"
"k8s.io/klog/v2"

"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/utils"
cmdutil "github.com/karmada-io/karmada/pkg/karmadactl/util"
)

const (
Expand Down Expand Up @@ -47,7 +47,7 @@ func CreateBootstrapConfigMapIfNotExists(clientSet *kubernetes.Clientset, file s

// Create or update the ConfigMap in the kube-public namespace
klog.V(1).Infoln("[bootstrap-token] creating/updating ConfigMap in kube-public namespace")
return utils.CreateOrUpdateConfigMap(clientSet, &corev1.ConfigMap{
return cmdutil.CreateOrUpdateConfigMap(clientSet, &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: bootstrapapi.ConfigMapClusterInfo,
Namespace: metav1.NamespacePublic,
Expand All @@ -61,7 +61,7 @@ func CreateBootstrapConfigMapIfNotExists(clientSet *kubernetes.Clientset, file s
// CreateClusterInfoRBACRules creates the RBAC rules for exposing the cluster-info ConfigMap in the kube-public namespace to unauthenticated users
func CreateClusterInfoRBACRules(clientSet *kubernetes.Clientset) error {
klog.V(1).Infoln("creating the RBAC rules for exposing the cluster-info ConfigMap in the kube-public namespace")
err := utils.CreateOrUpdateRole(clientSet, &rbacv1.Role{
err := cmdutil.CreateOrUpdateRole(clientSet, &rbacv1.Role{
ObjectMeta: metav1.ObjectMeta{
Name: BootstrapSignerClusterRoleName,
Namespace: metav1.NamespacePublic,
Expand All @@ -79,7 +79,7 @@ func CreateClusterInfoRBACRules(clientSet *kubernetes.Clientset) error {
return err
}

return utils.CreateOrUpdateRoleBinding(clientSet, &rbacv1.RoleBinding{
return cmdutil.CreateOrUpdateRoleBinding(clientSet, &rbacv1.RoleBinding{
ObjectMeta: metav1.ObjectMeta{
Name: BootstrapSignerClusterRoleName,
Namespace: metav1.NamespacePublic,
Expand Down
28 changes: 0 additions & 28 deletions pkg/karmadactl/cmdinit/utils/configmap.go

This file was deleted.

32 changes: 0 additions & 32 deletions pkg/karmadactl/cmdinit/utils/rbac.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,35 +87,3 @@ func CreateIfNotExistClusterRoleBinding(clientSet kubernetes.Interface, binding

return nil
}

// CreateOrUpdateRole creates a Role if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
func CreateOrUpdateRole(clientSet kubernetes.Interface, role *rbacv1.Role) error {
if _, err := clientSet.RbacV1().Roles(role.ObjectMeta.Namespace).Create(context.TODO(), role, metav1.CreateOptions{}); err != nil {
if !apierrors.IsAlreadyExists(err) {
return fmt.Errorf("unable to create RBAC role: %v", err)
}

if _, err := clientSet.RbacV1().Roles(role.ObjectMeta.Namespace).Update(context.TODO(), role, metav1.UpdateOptions{}); err != nil {
return fmt.Errorf("unable to update RBAC role: %v", err)
}
}
klog.Infof("Role %s%s has been created or updated.", role.ObjectMeta.Namespace, role.ObjectMeta.Name)

return nil
}

// CreateOrUpdateRoleBinding creates a RoleBinding if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
func CreateOrUpdateRoleBinding(clientSet kubernetes.Interface, roleBinding *rbacv1.RoleBinding) error {
if _, err := clientSet.RbacV1().RoleBindings(roleBinding.ObjectMeta.Namespace).Create(context.TODO(), roleBinding, metav1.CreateOptions{}); err != nil {
if !apierrors.IsAlreadyExists(err) {
return fmt.Errorf("unable to create RBAC rolebinding: %v", err)
}

if _, err := clientSet.RbacV1().RoleBindings(roleBinding.ObjectMeta.Namespace).Update(context.TODO(), roleBinding, metav1.UpdateOptions{}); err != nil {
return fmt.Errorf("unable to update RBAC rolebinding: %v", err)
}
}
klog.Infof("RoleBinding %s/%s has been created or updated.", roleBinding.ObjectMeta.Namespace, roleBinding.ObjectMeta.Name)

return nil
}
6 changes: 3 additions & 3 deletions pkg/karmadactl/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import (
check "github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/kubernetes"
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/utils"
"github.com/karmada-io/karmada/pkg/karmadactl/options"
"github.com/karmada-io/karmada/pkg/karmadactl/util"
cmdutil "github.com/karmada-io/karmada/pkg/karmadactl/util"
tokenutil "github.com/karmada-io/karmada/pkg/karmadactl/util/bootstraptoken"
karmadautil "github.com/karmada-io/karmada/pkg/util"
"github.com/karmada-io/karmada/pkg/util/lifted/pubkeypin"
Expand Down Expand Up @@ -149,7 +149,7 @@ func NewCmdRegister(parentCommand string) *cobra.Command {
return nil
},
Annotations: map[string]string{
util.TagCommandGroup: util.GroupClusterRegistration,
cmdutil.TagCommandGroup: cmdutil.GroupClusterRegistration,
},
}
flags := cmd.Flags()
Expand Down Expand Up @@ -571,7 +571,7 @@ func (o *CommandRegisterOption) createSecretAndRBACInMemberCluster(karmadaAgentC
}

// cerate karmada-kubeconfig secret to be used by karmada-agent component.
if err := karmadautil.CreateOrUpdateSecret(o.memberClusterClient, kubeConfigSecret); err != nil {
if err := cmdutil.CreateOrUpdateSecret(o.memberClusterClient, kubeConfigSecret); err != nil {
return fmt.Errorf("create secret %s failed: %v", kubeConfigSecret.Name, err)
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/karmadactl/util/bootstraptoken/bootstraptoken.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import (
bootstrapsecretutil "k8s.io/cluster-bootstrap/util/secrets"
"k8s.io/klog/v2"

karmadautil "github.com/karmada-io/karmada/pkg/util"
cmdutil "github.com/karmada-io/karmada/pkg/karmadactl/util"
"github.com/karmada-io/karmada/pkg/util/lifted/pubkeypin"
)

Expand Down Expand Up @@ -322,7 +322,7 @@ func UpdateOrCreateToken(client kubeclient.Interface, failIfExists bool, token *
updatedOrNewSecret := ConvertBootstrapTokenToSecret(token)
// Try to create or update the token with an exponential backoff
err = TryRunCommand(func() error {
if err := karmadautil.CreateOrUpdateSecret(client, updatedOrNewSecret); err != nil {
if err := cmdutil.CreateOrUpdateSecret(client, updatedOrNewSecret); err != nil {
return fmt.Errorf("failed to create or update bootstrap token with name %s, err: %w", secretName, err)
}
return nil
Expand Down
Loading

0 comments on commit 0b535a4

Please sign in to comment.