Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions lib/resourceapply/apiext.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@ import (
apiextclientv1beta1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/klog/v2"
"k8s.io/utils/pointer"
)

func ApplyCustomResourceDefinitionv1beta1(ctx context.Context, client apiextclientv1beta1.CustomResourceDefinitionsGetter, required *apiextv1beta1.CustomResourceDefinition) (*apiextv1beta1.CustomResourceDefinition, bool, error) {
existing, err := client.CustomResourceDefinitions().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("CRD %s not found, creating", required.Name)
actual, err := client.CustomResourceDefinitions().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -34,7 +36,7 @@ func ApplyCustomResourceDefinitionv1beta1(ctx context.Context, client apiextclie
return existing, false, nil
}

klog.V(2).Infof("Updating CRD %s", required.Name)
klog.V(2).Infof("Updating CRD %s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))
Copy link
Member

@LalatenduMohanty LalatenduMohanty Jun 8, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO we should move these to some higher level of verbosity , what about V4?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather use the default one, so that we'd see hotloops in CI upgrade jobs. If we move it to v4 we'd have to reconfigure CVO to get them recorded


actual, err := client.CustomResourceDefinitions().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand All @@ -43,6 +45,7 @@ func ApplyCustomResourceDefinitionv1beta1(ctx context.Context, client apiextclie
func ApplyCustomResourceDefinitionv1(ctx context.Context, client apiextclientv1.CustomResourceDefinitionsGetter, required *apiextv1.CustomResourceDefinition) (*apiextv1.CustomResourceDefinition, bool, error) {
existing, err := client.CustomResourceDefinitions().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("CRD %s not found, creating", required.Name)
actual, err := client.CustomResourceDefinitions().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -60,7 +63,7 @@ func ApplyCustomResourceDefinitionv1(ctx context.Context, client apiextclientv1.
return existing, false, nil
}

klog.V(2).Infof("Updating CRD %s", required.Name)
klog.V(2).Infof("Updating CRD %s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))

actual, err := client.CustomResourceDefinitions().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand Down
4 changes: 4 additions & 0 deletions lib/resourceapply/apireg.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"github.com/openshift/cluster-version-operator/lib/resourcemerge"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/klog/v2"
apiregv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
apiregclientv1 "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1"
"k8s.io/utils/pointer"
Expand All @@ -14,6 +16,7 @@ import (
func ApplyAPIServicev1(ctx context.Context, client apiregclientv1.APIServicesGetter, required *apiregv1.APIService) (*apiregv1.APIService, bool, error) {
existing, err := client.APIServices().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("APIService %s not found, creating", required.Name)
actual, err := client.APIServices().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -30,6 +33,7 @@ func ApplyAPIServicev1(ctx context.Context, client apiregclientv1.APIServicesGet
if !*modified {
return existing, false, nil
}
klog.V(2).Infof("Updating APIService %s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))

actual, err := client.APIServices().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand Down
12 changes: 12 additions & 0 deletions lib/resourceapply/apps.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,18 @@ import (
appsv1 "k8s.io/api/apps/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
appsclientv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
appslisterv1 "k8s.io/client-go/listers/apps/v1"
"k8s.io/klog/v2"
"k8s.io/utils/pointer"
)

// ApplyDeploymentv1 applies the required deployment to the cluster.
func ApplyDeploymentv1(ctx context.Context, client appsclientv1.DeploymentsGetter, required *appsv1.Deployment) (*appsv1.Deployment, bool, error) {
existing, err := client.Deployments(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("Deployment %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.Deployments(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -32,6 +35,7 @@ func ApplyDeploymentv1(ctx context.Context, client appsclientv1.DeploymentsGette
if !*modified {
return existing, false, nil
}
klog.V(2).Infof("Updating Deployment %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.Deployments(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand All @@ -41,6 +45,7 @@ func ApplyDeploymentv1(ctx context.Context, client appsclientv1.DeploymentsGette
func ApplyDeploymentFromCache(ctx context.Context, lister appslisterv1.DeploymentLister, client appsclientv1.DeploymentsGetter, required *appsv1.Deployment) (*appsv1.Deployment, bool, error) {
existing, err := lister.Deployments(required.Namespace).Get(required.Name)
if apierrors.IsNotFound(err) {
klog.V(2).Infof("Deployment %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.Deployments(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -58,6 +63,7 @@ func ApplyDeploymentFromCache(ctx context.Context, lister appslisterv1.Deploymen
if !*modified {
return existing, false, nil
}
klog.V(2).Infof("Updating Deployment %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.Deployments(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand All @@ -67,6 +73,7 @@ func ApplyDeploymentFromCache(ctx context.Context, lister appslisterv1.Deploymen
func ApplyDaemonSetv1(ctx context.Context, client appsclientv1.DaemonSetsGetter, required *appsv1.DaemonSet) (*appsv1.DaemonSet, bool, error) {
existing, err := client.DaemonSets(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("DaemonSet %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.DaemonSets(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -84,6 +91,8 @@ func ApplyDaemonSetv1(ctx context.Context, client appsclientv1.DaemonSetsGetter,
return existing, false, nil
}

klog.V(2).Infof("Updating DaemonSet %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.DaemonSets(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
Expand All @@ -92,6 +101,7 @@ func ApplyDaemonSetv1(ctx context.Context, client appsclientv1.DaemonSetsGetter,
func ApplyDaemonSetFromCache(ctx context.Context, lister appslisterv1.DaemonSetLister, client appsclientv1.DaemonSetsGetter, required *appsv1.DaemonSet) (*appsv1.DaemonSet, bool, error) {
existing, err := lister.DaemonSets(required.Namespace).Get(required.Name)
if apierrors.IsNotFound(err) {
klog.V(2).Infof("DaemonSet %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.DaemonSets(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -110,6 +120,8 @@ func ApplyDaemonSetFromCache(ctx context.Context, lister appslisterv1.DaemonSetL
return existing, false, nil
}

klog.V(2).Infof("Updating DaemonSet %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.DaemonSets(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
5 changes: 5 additions & 0 deletions lib/resourceapply/batch.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@ import (
batchv1 "k8s.io/api/batch/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
batchclientv1 "k8s.io/client-go/kubernetes/typed/batch/v1"
"k8s.io/klog/v2"
"k8s.io/utils/pointer"
)

// ApplyJobv1 applies the required Job to the cluster.
func ApplyJobv1(ctx context.Context, client batchclientv1.JobsGetter, required *batchv1.Job) (*batchv1.Job, bool, error) {
existing, err := client.Jobs(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("Job %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.Jobs(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -32,6 +35,8 @@ func ApplyJobv1(ctx context.Context, client batchclientv1.JobsGetter, required *
return existing, false, nil
}

klog.V(2).Infof("Updating Job %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.Jobs(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
14 changes: 14 additions & 0 deletions lib/resourceapply/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ package resourceapply
import (
"context"

"k8s.io/klog/v2"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/equality"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
coreclientv1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/utils/pointer"

Expand All @@ -17,6 +20,7 @@ import (
func ApplyNamespacev1(ctx context.Context, client coreclientv1.NamespacesGetter, required *corev1.Namespace) (*corev1.Namespace, bool, error) {
existing, err := client.Namespaces().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("Namespace %s not found, creating", required.Name)
actual, err := client.Namespaces().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -33,6 +37,7 @@ func ApplyNamespacev1(ctx context.Context, client coreclientv1.NamespacesGetter,
if !*modified {
return existing, false, nil
}
klog.V(2).Infof("Updating Namespace %s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))

actual, err := client.Namespaces().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand All @@ -44,6 +49,7 @@ func ApplyNamespacev1(ctx context.Context, client coreclientv1.NamespacesGetter,
func ApplyServicev1(ctx context.Context, client coreclientv1.ServicesGetter, required *corev1.Service) (*corev1.Service, bool, error) {
existing, err := client.Services(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("Service %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.Services(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -66,6 +72,8 @@ func ApplyServicev1(ctx context.Context, client coreclientv1.ServicesGetter, req
}
existing.Spec.Selector = required.Spec.Selector

klog.V(2).Infof("Updating Service %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.Services(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
Expand All @@ -74,6 +82,7 @@ func ApplyServicev1(ctx context.Context, client coreclientv1.ServicesGetter, req
func ApplyServiceAccountv1(ctx context.Context, client coreclientv1.ServiceAccountsGetter, required *corev1.ServiceAccount) (*corev1.ServiceAccount, bool, error) {
existing, err := client.ServiceAccounts(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("ServiceAccount %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.ServiceAccounts(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -91,6 +100,8 @@ func ApplyServiceAccountv1(ctx context.Context, client coreclientv1.ServiceAccou
return existing, false, nil
}

klog.V(2).Infof("Updating ServiceAccount %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.ServiceAccounts(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
Expand All @@ -99,6 +110,7 @@ func ApplyServiceAccountv1(ctx context.Context, client coreclientv1.ServiceAccou
func ApplyConfigMapv1(ctx context.Context, client coreclientv1.ConfigMapsGetter, required *corev1.ConfigMap) (*corev1.ConfigMap, bool, error) {
existing, err := client.ConfigMaps(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("ConfigMap %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.ConfigMaps(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -116,6 +128,8 @@ func ApplyConfigMapv1(ctx context.Context, client coreclientv1.ConfigMapsGetter,
return existing, false, nil
}

klog.V(2).Infof("Updating ConfigMap %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.ConfigMaps(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
6 changes: 6 additions & 0 deletions lib/resourceapply/cv.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import (
"github.com/openshift/cluster-version-operator/lib/resourcemerge"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/klog/v2"
"k8s.io/utils/pointer"
)

Expand All @@ -32,6 +34,8 @@ func ApplyClusterVersionv1(ctx context.Context, client configclientv1.ClusterVer
return existing, false, nil
}

klog.V(2).Infof("Updating ClusterVersion %s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))

actual, err := client.ClusterVersions().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
Expand All @@ -58,6 +62,8 @@ func ApplyClusterVersionFromCache(ctx context.Context, lister configlistersv1.Cl
return existing, false, nil
}

klog.V(2).Infof("Updating ClusterVersion %s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))

actual, err := client.ClusterVersions().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
10 changes: 10 additions & 0 deletions lib/resourceapply/rbac.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@ import (
rbacv1 "k8s.io/api/rbac/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
rbacclientv1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
"k8s.io/klog/v2"
"k8s.io/utils/pointer"
)

// ApplyClusterRoleBindingv1 applies the required clusterrolebinding to the cluster.
func ApplyClusterRoleBindingv1(ctx context.Context, client rbacclientv1.ClusterRoleBindingsGetter, required *rbacv1.ClusterRoleBinding) (*rbacv1.ClusterRoleBinding, bool, error) {
existing, err := client.ClusterRoleBindings().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("ClusterRoleBinding %s not found, creating", required.Name)
actual, err := client.ClusterRoleBindings().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -31,6 +34,7 @@ func ApplyClusterRoleBindingv1(ctx context.Context, client rbacclientv1.ClusterR
if !*modified {
return existing, false, nil
}
klog.V(2).Infof("Updating ClusterRoleBinding %s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))

actual, err := client.ClusterRoleBindings().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand All @@ -40,6 +44,7 @@ func ApplyClusterRoleBindingv1(ctx context.Context, client rbacclientv1.ClusterR
func ApplyClusterRolev1(ctx context.Context, client rbacclientv1.ClusterRolesGetter, required *rbacv1.ClusterRole) (*rbacv1.ClusterRole, bool, error) {
existing, err := client.ClusterRoles().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("ClusterRole %s not found, creating", required.Name)
actual, err := client.ClusterRoles().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -56,6 +61,7 @@ func ApplyClusterRolev1(ctx context.Context, client rbacclientv1.ClusterRolesGet
if !*modified {
return existing, false, nil
}
klog.V(2).Infof("Updating ClusterRole %s/%s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))

actual, err := client.ClusterRoles().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand All @@ -65,6 +71,7 @@ func ApplyClusterRolev1(ctx context.Context, client rbacclientv1.ClusterRolesGet
func ApplyRoleBindingv1(ctx context.Context, client rbacclientv1.RoleBindingsGetter, required *rbacv1.RoleBinding) (*rbacv1.RoleBinding, bool, error) {
existing, err := client.RoleBindings(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("RoleBinding %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.RoleBindings(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -81,6 +88,7 @@ func ApplyRoleBindingv1(ctx context.Context, client rbacclientv1.RoleBindingsGet
if !*modified {
return existing, false, nil
}
klog.V(2).Infof("Updating RoleBinding %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.RoleBindings(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand All @@ -90,6 +98,7 @@ func ApplyRoleBindingv1(ctx context.Context, client rbacclientv1.RoleBindingsGet
func ApplyRolev1(ctx context.Context, client rbacclientv1.RolesGetter, required *rbacv1.Role) (*rbacv1.Role, bool, error) {
existing, err := client.Roles(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("Role %s/%s not found, creating", required.Namespace, required.Name)
actual, err := client.Roles(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -106,6 +115,7 @@ func ApplyRolev1(ctx context.Context, client rbacclientv1.RolesGetter, required
if !*modified {
return existing, false, nil
}
klog.V(2).Infof("Updating Role %s/%s due to diff: %v", required.Namespace, required.Name, diff.ObjectDiff(existing, required))

actual, err := client.Roles(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
Expand Down
5 changes: 5 additions & 0 deletions lib/resourceapply/security.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ import (
"github.com/openshift/cluster-version-operator/lib/resourcemerge"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/klog/v2"
"k8s.io/utils/pointer"
)

// ApplySecurityContextConstraintsv1 applies the required SecurityContextConstraints to the cluster.
func ApplySecurityContextConstraintsv1(ctx context.Context, client securityclientv1.SecurityContextConstraintsGetter, required *securityv1.SecurityContextConstraints) (*securityv1.SecurityContextConstraints, bool, error) {
existing, err := client.SecurityContextConstraints().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
klog.V(2).Infof("SCC %s not found, creating", required.Name)
actual, err := client.SecurityContextConstraints().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
Expand All @@ -32,6 +35,8 @@ func ApplySecurityContextConstraintsv1(ctx context.Context, client securityclien
return existing, false, nil
}

klog.V(2).Infof("Updating SCC %s due to diff: %v", required.Name, diff.ObjectDiff(existing, required))

actual, err := client.SecurityContextConstraints().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
Loading