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: 0 additions & 7 deletions hack/generate-lib-resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,12 +265,7 @@ def scheme_group_versions(types):
'k8s.io/api/core/v1': {'ConfigMap', 'Namespace', 'Service', 'ServiceAccount'},
'k8s.io/api/rbac/v1': {'ClusterRole', 'ClusterRoleBinding', 'Role', 'RoleBinding'},
'k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1': {'CustomResourceDefinition'},
'k8s.io/kube-aggregator/pkg/apis/apiregistration/v1': {'APIService'},
}

types['k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1'] = types['k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1']
types['k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1'] = types['k8s.io/kube-aggregator/pkg/apis/apiregistration/v1']

clients = {
'github.com/openshift/api/security/v1': {'package': 'github.com/openshift/client-go/security/clientset/versioned/typed/security/v1', 'type': 'SecurityV1Client'},
'github.com/openshift/api/config/v1': {'package': 'github.com/openshift/client-go/config/clientset/versioned/typed/config/v1', 'type': 'ConfigV1Client'},
Expand All @@ -280,9 +275,7 @@ def scheme_group_versions(types):
'k8s.io/api/core/v1': {'package': 'k8s.io/client-go/kubernetes/typed/core/v1', 'type': 'CoreV1Client'},
'k8s.io/api/rbac/v1': {'package': 'k8s.io/client-go/kubernetes/typed/rbac/v1', 'type': 'RbacV1Client'},
'k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1': {'package': 'k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1', 'type': 'ApiextensionsV1Client'},
'k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1': {'package': 'k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1', 'type': 'ApiextensionsV1beta1Client'},
'k8s.io/kube-aggregator/pkg/apis/apiregistration/v1': {'package': 'k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1', 'type': 'ApiregistrationV1Client'},
'k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1': {'package': 'k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1beta1', 'type': 'ApiregistrationV1beta1Client'},
}

modifiers = {
Expand Down
29 changes: 0 additions & 29 deletions lib/resourceapply/apiext.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,14 @@ import (

"github.com/openshift/cluster-version-operator/lib/resourcemerge"
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
apiextclientv1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
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
}
if err != nil {
return nil, false, err
}
// if we only create this resource, we have no need to continue further
if IsCreateOnly(required) {
return nil, false, nil
}

modified := pointer.BoolPtr(false)
resourcemerge.EnsureCustomResourceDefinitionV1beta1(modified, existing, *required)
if !*modified {
return existing, false, nil
}

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
}

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) {
Expand Down
40 changes: 0 additions & 40 deletions lib/resourceapply/apireg.go

This file was deleted.

36 changes: 0 additions & 36 deletions lib/resourceapply/apiregv1beta1.go

This file was deleted.

69 changes: 18 additions & 51 deletions lib/resourcebuilder/resourcebuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,13 @@ import (
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
apiextensionsclientv1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
apiextensionsclientv1beta1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1"
appsclientv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
batchclientv1 "k8s.io/client-go/kubernetes/typed/batch/v1"
coreclientv1 "k8s.io/client-go/kubernetes/typed/core/v1"
rbacclientv1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
"k8s.io/client-go/rest"
apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
apiregistrationv1beta1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1"
apiregistrationclientv1 "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1"
apiregistrationclientv1beta1 "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1beta1"
)

// builder manages single-manifest cluster reconciliation and monitoring.
Expand All @@ -40,34 +35,30 @@ type builder struct {
mode Mode
modifier MetaV1ObjectModifierFunc

apiextensionsClientv1 *apiextensionsclientv1.ApiextensionsV1Client
apiextensionsClientv1beta1 *apiextensionsclientv1beta1.ApiextensionsV1beta1Client
apiregistrationClientv1 *apiregistrationclientv1.ApiregistrationV1Client
apiregistrationClientv1beta1 *apiregistrationclientv1beta1.ApiregistrationV1beta1Client
appsClientv1 *appsclientv1.AppsV1Client
batchClientv1 *batchclientv1.BatchV1Client
configClientv1 *configclientv1.ConfigV1Client
coreClientv1 *coreclientv1.CoreV1Client
imageClientv1 *imageclientv1.ImageV1Client
rbacClientv1 *rbacclientv1.RbacV1Client
securityClientv1 *securityclientv1.SecurityV1Client
apiextensionsClientv1 *apiextensionsclientv1.ApiextensionsV1Client
apiregistrationClientv1 *apiregistrationclientv1.ApiregistrationV1Client
appsClientv1 *appsclientv1.AppsV1Client
batchClientv1 *batchclientv1.BatchV1Client
configClientv1 *configclientv1.ConfigV1Client
coreClientv1 *coreclientv1.CoreV1Client
imageClientv1 *imageclientv1.ImageV1Client
rbacClientv1 *rbacclientv1.RbacV1Client
securityClientv1 *securityclientv1.SecurityV1Client
}

func newBuilder(config *rest.Config, m manifest.Manifest) Interface {
return &builder{
raw: m.Raw,

apiextensionsClientv1: apiextensionsclientv1.NewForConfigOrDie(withProtobuf(config)),
apiextensionsClientv1beta1: apiextensionsclientv1beta1.NewForConfigOrDie(withProtobuf(config)),
apiregistrationClientv1: apiregistrationclientv1.NewForConfigOrDie(config),
apiregistrationClientv1beta1: apiregistrationclientv1beta1.NewForConfigOrDie(config),
appsClientv1: appsclientv1.NewForConfigOrDie(withProtobuf(config)),
batchClientv1: batchclientv1.NewForConfigOrDie(withProtobuf(config)),
configClientv1: configclientv1.NewForConfigOrDie(config),
coreClientv1: coreclientv1.NewForConfigOrDie(withProtobuf(config)),
imageClientv1: imageclientv1.NewForConfigOrDie(config),
rbacClientv1: rbacclientv1.NewForConfigOrDie(withProtobuf(config)),
securityClientv1: securityclientv1.NewForConfigOrDie(config),
apiextensionsClientv1: apiextensionsclientv1.NewForConfigOrDie(withProtobuf(config)),
apiregistrationClientv1: apiregistrationclientv1.NewForConfigOrDie(config),
appsClientv1: appsclientv1.NewForConfigOrDie(withProtobuf(config)),
batchClientv1: batchclientv1.NewForConfigOrDie(withProtobuf(config)),
configClientv1: configclientv1.NewForConfigOrDie(config),
coreClientv1: coreclientv1.NewForConfigOrDie(withProtobuf(config)),
imageClientv1: imageclientv1.NewForConfigOrDie(config),
rbacClientv1: rbacclientv1.NewForConfigOrDie(withProtobuf(config)),
securityClientv1: securityclientv1.NewForConfigOrDie(config),
}
}

Expand Down Expand Up @@ -192,27 +183,6 @@ func (b *builder) Do(ctx context.Context) error {
if _, _, err := resourceapply.ApplyCustomResourceDefinitionv1(ctx, b.apiextensionsClientv1, typedObject); err != nil {
return err
}
case *apiextensionsv1beta1.CustomResourceDefinition:
if b.modifier != nil {
b.modifier(typedObject)
}
if _, _, err := resourceapply.ApplyCustomResourceDefinitionv1beta1(ctx, b.apiextensionsClientv1beta1, typedObject); err != nil {
return err
}
case *apiregistrationv1.APIService:
if b.modifier != nil {
b.modifier(typedObject)
}
if _, _, err := resourceapply.ApplyAPIServicev1(ctx, b.apiregistrationClientv1, typedObject); err != nil {
return err
}
case *apiregistrationv1beta1.APIService:
if b.modifier != nil {
b.modifier(typedObject)
}
if _, _, err := resourceapply.ApplyAPIServicev1beta1(ctx, b.apiregistrationClientv1beta1, typedObject); err != nil {
return err
}
default:
return fmt.Errorf("unrecognized manifest type: %T", obj)
}
Expand All @@ -223,9 +193,6 @@ func (b *builder) Do(ctx context.Context) error {
func init() {
rm := NewResourceMapper()
rm.RegisterGVK(apiextensionsv1.SchemeGroupVersion.WithKind("CustomResourceDefinition"), newBuilder)
rm.RegisterGVK(apiextensionsv1beta1.SchemeGroupVersion.WithKind("CustomResourceDefinition"), newBuilder)
rm.RegisterGVK(apiregistrationv1.SchemeGroupVersion.WithKind("APIService"), newBuilder)
rm.RegisterGVK(apiregistrationv1beta1.SchemeGroupVersion.WithKind("APIService"), newBuilder)
rm.RegisterGVK(appsv1.SchemeGroupVersion.WithKind("DaemonSet"), newBuilder)
rm.RegisterGVK(appsv1.SchemeGroupVersion.WithKind("Deployment"), newBuilder)
rm.RegisterGVK(batchv1.SchemeGroupVersion.WithKind("Job"), newBuilder)
Expand Down
37 changes: 0 additions & 37 deletions lib/resourcemerge/apiext.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,47 +4,10 @@ import (
"strings"

apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
"k8s.io/utils/pointer"

"k8s.io/apimachinery/pkg/api/equality"
)

// EnsureCustomResourceDefinitionV1beta1 ensures that the existing matches the required.
// modified is set to true when existing had to be updated with required.
func EnsureCustomResourceDefinitionV1beta1(modified *bool, existing *apiextv1beta1.CustomResourceDefinition, required apiextv1beta1.CustomResourceDefinition) {
EnsureObjectMeta(modified, &existing.ObjectMeta, required.ObjectMeta)

// apply defaults to blue print
if len(required.Spec.Versions) > 0 && len(required.Spec.Version) == 0 {
required.Spec.Version = required.Spec.Versions[0].Name
}
if len(required.Spec.Versions) == 0 && len(required.Spec.Version) > 0 {
required.Spec.Versions = []apiextv1beta1.CustomResourceDefinitionVersion{
{
Name: required.Spec.Version,
Served: true,
Storage: true,
},
}
}
if required.Spec.PreserveUnknownFields == nil {
required.Spec.PreserveUnknownFields = pointer.BoolPtr(true)
}
if len(required.Spec.Names.Singular) == 0 {
required.Spec.Names.Singular = strings.ToLower(required.Spec.Names.Kind)
}
if len(required.Spec.Names.ListKind) == 0 {
required.Spec.Names.ListKind = required.Spec.Names.Kind + "List"
}

// we stomp everything
if !equality.Semantic.DeepEqual(existing.Spec, required.Spec) {
*modified = true
existing.Spec = required.Spec
}
}

// EnsureCustomResourceDefinitionV1 ensures that the existing matches the required.
// modified is set to true when existing had to be updated with required.
func EnsureCustomResourceDefinitionV1(modified *bool, existing *apiextv1.CustomResourceDefinition, required apiextv1.CustomResourceDefinition) {
Expand Down
18 changes: 0 additions & 18 deletions lib/resourcemerge/apireg.go

This file was deleted.

18 changes: 0 additions & 18 deletions lib/resourcemerge/apiregv1beta1.go

This file was deleted.

10 changes: 0 additions & 10 deletions lib/resourceread/resourceread.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,9 @@ import (
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
apiregistrationv1beta1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1"
)

var (
Expand All @@ -28,15 +26,9 @@ func init() {
if err := apiextensionsv1.AddToScheme(scheme); err != nil {
panic(err)
}
if err := apiextensionsv1beta1.AddToScheme(scheme); err != nil {
panic(err)
}
if err := apiregistrationv1.AddToScheme(scheme); err != nil {
panic(err)
}
if err := apiregistrationv1beta1.AddToScheme(scheme); err != nil {
panic(err)
}
if err := appsv1.AddToScheme(scheme); err != nil {
panic(err)
}
Expand All @@ -57,9 +49,7 @@ func init() {
}
decoder = codecs.UniversalDecoder(
apiextensionsv1.SchemeGroupVersion,
apiextensionsv1beta1.SchemeGroupVersion,
apiregistrationv1.SchemeGroupVersion,
apiregistrationv1beta1.SchemeGroupVersion,
appsv1.SchemeGroupVersion,
batchv1.SchemeGroupVersion,
corev1.SchemeGroupVersion,
Expand Down
Loading