mirror of
https://github.com/open-cluster-management-io/ocm.git
synced 2026-02-14 18:09:57 +00:00
⚠️ Remove crd apiextensions v1beta1 (#1095)
Some checks failed
Post / coverage (push) Failing after 39m34s
Post / images (amd64) (push) Failing after 8m31s
Post / images (arm64) (push) Failing after 7m55s
Post / image manifest (push) Has been skipped
Post / trigger clusteradm e2e (push) Has been skipped
Scorecard supply-chain security / Scorecard analysis (push) Failing after 1m53s
Close stale issues and PRs / stale (push) Successful in 56s
Some checks failed
Post / coverage (push) Failing after 39m34s
Post / images (amd64) (push) Failing after 8m31s
Post / images (arm64) (push) Failing after 7m55s
Post / image manifest (push) Has been skipped
Post / trigger clusteradm e2e (push) Has been skipped
Scorecard supply-chain security / Scorecard analysis (push) Failing after 1m53s
Close stale issues and PRs / stale (push) Successful in 56s
* Remove crd apiextensions v1beta1 Signed-off-by: zhujian <jiazhu@redhat.com> * fix unit test Signed-off-by: zhujian <jiazhu@redhat.com> --------- Signed-off-by: zhujian <jiazhu@redhat.com>
This commit is contained in:
@@ -11,7 +11,6 @@ import (
|
|||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/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"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
@@ -32,7 +31,6 @@ var chartScheme = runtime.NewScheme()
|
|||||||
func init() {
|
func init() {
|
||||||
_ = scheme.AddToScheme(chartScheme)
|
_ = scheme.AddToScheme(chartScheme)
|
||||||
_ = apiextensionsv1.AddToScheme(chartScheme)
|
_ = apiextensionsv1.AddToScheme(chartScheme)
|
||||||
_ = apiextensionsv1beta1.AddToScheme(chartScheme)
|
|
||||||
_ = operatorv1.AddToScheme(chartScheme)
|
_ = operatorv1.AddToScheme(chartScheme)
|
||||||
|
|
||||||
decoder = serializer.NewCodecFactory(chartScheme).UniversalDeserializer()
|
decoder = serializer.NewCodecFactory(chartScheme).UniversalDeserializer()
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import (
|
|||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
rbacv1 "k8s.io/api/rbac/v1"
|
rbacv1 "k8s.io/api/rbac/v1"
|
||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
|
||||||
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||||
"k8s.io/apimachinery/pkg/api/equality"
|
"k8s.io/apimachinery/pkg/api/equality"
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
@@ -87,7 +86,6 @@ var (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
utilruntime.Must(api.InstallKube(genericScheme))
|
utilruntime.Must(api.InstallKube(genericScheme))
|
||||||
utilruntime.Must(apiextensionsv1beta1.AddToScheme(genericScheme))
|
|
||||||
utilruntime.Must(apiextensionsv1.AddToScheme(genericScheme))
|
utilruntime.Must(apiextensionsv1.AddToScheme(genericScheme))
|
||||||
utilruntime.Must(apiregistrationv1.AddToScheme(genericScheme))
|
utilruntime.Must(apiregistrationv1.AddToScheme(genericScheme))
|
||||||
utilruntime.Must(admissionv1.AddToScheme(genericScheme))
|
utilruntime.Must(admissionv1.AddToScheme(genericScheme))
|
||||||
@@ -137,12 +135,6 @@ func CleanUpStaticObject(
|
|||||||
} else {
|
} else {
|
||||||
err = apiExtensionClient.ApiextensionsV1().CustomResourceDefinitions().Delete(ctx, t.Name, metav1.DeleteOptions{})
|
err = apiExtensionClient.ApiextensionsV1().CustomResourceDefinitions().Delete(ctx, t.Name, metav1.DeleteOptions{})
|
||||||
}
|
}
|
||||||
case *apiextensionsv1beta1.CustomResourceDefinition:
|
|
||||||
if apiExtensionClient == nil {
|
|
||||||
err = fmt.Errorf("apiExtensionClient is nil")
|
|
||||||
} else {
|
|
||||||
err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Delete(ctx, t.Name, metav1.DeleteOptions{})
|
|
||||||
}
|
|
||||||
case *apiregistrationv1.APIService:
|
case *apiregistrationv1.APIService:
|
||||||
if apiRegistrationClient == nil {
|
if apiRegistrationClient == nil {
|
||||||
err = fmt.Errorf("apiRegistrationClient is nil")
|
err = fmt.Errorf("apiRegistrationClient is nil")
|
||||||
@@ -516,8 +508,6 @@ func GenerateRelatedResource(objBytes []byte) (operatorapiv1.RelatedResourceMeta
|
|||||||
relatedResource = newRelatedResource(rbacv1.SchemeGroupVersion.WithResource("roles"), requiredObj)
|
relatedResource = newRelatedResource(rbacv1.SchemeGroupVersion.WithResource("roles"), requiredObj)
|
||||||
case *rbacv1.RoleBinding:
|
case *rbacv1.RoleBinding:
|
||||||
relatedResource = newRelatedResource(rbacv1.SchemeGroupVersion.WithResource("rolebindings"), requiredObj)
|
relatedResource = newRelatedResource(rbacv1.SchemeGroupVersion.WithResource("rolebindings"), requiredObj)
|
||||||
case *apiextensionsv1beta1.CustomResourceDefinition:
|
|
||||||
relatedResource = newRelatedResource(apiextensionsv1beta1.SchemeGroupVersion.WithResource("customresourcedefinitions"), requiredObj)
|
|
||||||
case *apiextensionsv1.CustomResourceDefinition:
|
case *apiextensionsv1.CustomResourceDefinition:
|
||||||
relatedResource = newRelatedResource(apiextensionsv1.SchemeGroupVersion.WithResource("customresourcedefinitions"), requiredObj)
|
relatedResource = newRelatedResource(apiextensionsv1.SchemeGroupVersion.WithResource("customresourcedefinitions"), requiredObj)
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ func TestDeleteStaticObject(t *testing.T) {
|
|||||||
"secret": newUnstructured(
|
"secret": newUnstructured(
|
||||||
"v1", "Secret", "ns1", "n1", map[string]interface{}{"data": map[string]interface{}{"key1": []byte("key1")}}),
|
"v1", "Secret", "ns1", "n1", map[string]interface{}{"data": map[string]interface{}{"key1": []byte("key1")}}),
|
||||||
"crd": newUnstructured(
|
"crd": newUnstructured(
|
||||||
"apiextensions.k8s.io/v1beta1", "CustomResourceDefinition", "", "", map[string]interface{}{}),
|
"apiextensions.k8s.io/v1", "CustomResourceDefinition", "", "", map[string]interface{}{}),
|
||||||
"kind1": newUnstructured(
|
"kind1": newUnstructured(
|
||||||
"v1", "Kind1", "ns1", "n1", map[string]interface{}{"spec": map[string]interface{}{"key1": []byte("key1")}}),
|
"v1", "Kind1", "ns1", "n1", map[string]interface{}{"spec": map[string]interface{}{"key1": []byte("key1")}}),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"github.com/openshift/library-go/pkg/operator/resource/resourceapply"
|
"github.com/openshift/library-go/pkg/operator/resource/resourceapply"
|
||||||
"github.com/openshift/library-go/pkg/operator/resource/resourcemerge"
|
"github.com/openshift/library-go/pkg/operator/resource/resourcemerge"
|
||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
@@ -41,11 +40,10 @@ var (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
utilruntime.Must(apiextensionsv1.AddToScheme(genericScheme))
|
utilruntime.Must(apiextensionsv1.AddToScheme(genericScheme))
|
||||||
utilruntime.Must(apiextensionsv1beta1.AddToScheme(genericScheme))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type CRD interface {
|
type CRD interface {
|
||||||
*apiextensionsv1.CustomResourceDefinition | *apiextensionsv1beta1.CustomResourceDefinition
|
*apiextensionsv1.CustomResourceDefinition
|
||||||
}
|
}
|
||||||
|
|
||||||
type Manager[T CRD] struct {
|
type Manager[T CRD] struct {
|
||||||
@@ -284,10 +282,3 @@ func EqualV1(old, new *apiextensionsv1.CustomResourceDefinition) bool {
|
|||||||
resourcemerge.EnsureCustomResourceDefinitionV1(modified, old, *new)
|
resourcemerge.EnsureCustomResourceDefinitionV1(modified, old, *new)
|
||||||
return !*modified
|
return !*modified
|
||||||
}
|
}
|
||||||
|
|
||||||
func EqualV1Beta1(old, new *apiextensionsv1beta1.CustomResourceDefinition) bool {
|
|
||||||
modified := pointer.Bool(false)
|
|
||||||
|
|
||||||
resourcemerge.EnsureCustomResourceDefinitionV1Beta1(modified, old, *new)
|
|
||||||
return !*modified
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
|
||||||
fakeapiextensions "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake"
|
fakeapiextensions "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake"
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
@@ -106,80 +105,6 @@ func TestApplyV1CRD(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestApplyV1Beta1CRD(t *testing.T) {
|
|
||||||
cases := []struct {
|
|
||||||
name string
|
|
||||||
desiredVersion string
|
|
||||||
requiredCRDs []runtime.Object
|
|
||||||
existingCRDs []runtime.Object
|
|
||||||
verify func(t *testing.T, actions []clienttesting.Action)
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
name: "create crd",
|
|
||||||
desiredVersion: "v0.9.0",
|
|
||||||
requiredCRDs: []runtime.Object{newV1Beta1CRD("foo", "")},
|
|
||||||
existingCRDs: []runtime.Object{},
|
|
||||||
verify: func(t *testing.T, actions []clienttesting.Action) {
|
|
||||||
testingcommon.AssertActions(t, actions, "get", "create")
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "update crd",
|
|
||||||
desiredVersion: "v0.9.0-16-g889bd8b",
|
|
||||||
requiredCRDs: []runtime.Object{newV1Beta1CRD("foo", "")},
|
|
||||||
existingCRDs: []runtime.Object{newV1Beta1CRD("foo", "v0.8.0")},
|
|
||||||
verify: func(t *testing.T, actions []clienttesting.Action) {
|
|
||||||
testingcommon.AssertActions(t, actions, "get", "update")
|
|
||||||
obj := actions[1].(clienttesting.UpdateActionImpl).Object
|
|
||||||
assertCRDVersion(t, obj, "0.9.0-16-g889bd8b")
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "update crd from none",
|
|
||||||
desiredVersion: "v0.9.0-16-g889bd8b",
|
|
||||||
requiredCRDs: []runtime.Object{newV1Beta1CRD("foo", "")},
|
|
||||||
existingCRDs: []runtime.Object{newV1Beta1CRD("foo", "")},
|
|
||||||
verify: func(t *testing.T, actions []clienttesting.Action) {
|
|
||||||
testingcommon.AssertActions(t, actions, "get", "update")
|
|
||||||
obj := actions[1].(clienttesting.UpdateActionImpl).Object
|
|
||||||
assertCRDVersion(t, obj, "0.9.0-16-g889bd8b")
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "noop crd",
|
|
||||||
desiredVersion: "v0.8.0-16-g889bd8b",
|
|
||||||
requiredCRDs: []runtime.Object{newV1Beta1CRD("foo", "")},
|
|
||||||
existingCRDs: []runtime.Object{newV1Beta1CRD("foo", "v0.9.0")},
|
|
||||||
verify: func(t *testing.T, actions []clienttesting.Action) {
|
|
||||||
testingcommon.AssertActions(t, actions, "get")
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, c := range cases {
|
|
||||||
t.Run(c.name, func(t *testing.T) {
|
|
||||||
client := fakeapiextensions.NewSimpleClientset(c.existingCRDs...)
|
|
||||||
manager := NewManager[*apiextensionsv1beta1.CustomResourceDefinition](client.ApiextensionsV1beta1().CustomResourceDefinitions(), EqualV1Beta1)
|
|
||||||
v, _ := versionutil.ParseSemantic(c.desiredVersion)
|
|
||||||
manager.version = v
|
|
||||||
var indices []string
|
|
||||||
for i := range c.requiredCRDs {
|
|
||||||
indices = append(indices, fmt.Sprintf("%d", i))
|
|
||||||
}
|
|
||||||
err := manager.Apply(context.TODO(), func(index string) ([]byte, error) {
|
|
||||||
i, _ := strconv.Atoi(index)
|
|
||||||
return json.Marshal(c.requiredCRDs[i])
|
|
||||||
}, indices...)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("apply error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
c.verify(t, client.Actions())
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestClean(t *testing.T) {
|
func TestClean(t *testing.T) {
|
||||||
cases := []struct {
|
cases := []struct {
|
||||||
name string
|
name string
|
||||||
@@ -263,23 +188,6 @@ func TestClean(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newV1Beta1CRD(name, version string) *apiextensionsv1beta1.CustomResourceDefinition {
|
|
||||||
crd := &apiextensionsv1beta1.CustomResourceDefinition{
|
|
||||||
TypeMeta: metav1.TypeMeta{
|
|
||||||
APIVersion: "apiextensions.k8s.io/v1beta1",
|
|
||||||
Kind: "CustomResourceDefinition",
|
|
||||||
},
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: name,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(version) > 0 {
|
|
||||||
crd.Annotations = map[string]string{versionAnnotationKey: version}
|
|
||||||
}
|
|
||||||
return crd
|
|
||||||
}
|
|
||||||
|
|
||||||
func newV1CRD(name, version string) *apiextensionsv1.CustomResourceDefinition {
|
func newV1CRD(name, version string) *apiextensionsv1.CustomResourceDefinition {
|
||||||
crd := &apiextensionsv1.CustomResourceDefinition{
|
crd := &apiextensionsv1.CustomResourceDefinition{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import (
|
|||||||
"github.com/openshift/library-go/pkg/operator/resource/resourcehelper"
|
"github.com/openshift/library-go/pkg/operator/resource/resourcehelper"
|
||||||
"github.com/openshift/library-go/pkg/operator/resource/resourcemerge"
|
"github.com/openshift/library-go/pkg/operator/resource/resourcemerge"
|
||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
@@ -45,8 +44,6 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// add apiextensions v1beta1 to scheme to support CustomResourceDefinition v1beta1
|
|
||||||
_ = apiextensionsv1beta1.AddToScheme(genericScheme)
|
|
||||||
_ = apiextensionsv1.AddToScheme(genericScheme)
|
_ = apiextensionsv1.AddToScheme(genericScheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user