diff --git a/pkg/master/controller/crdregistration/crdregistration_controller.go b/pkg/master/controller/crdregistration/crdregistration_controller.go index 3f67871bb31..26cab14b3f4 100644 --- a/pkg/master/controller/crdregistration/crdregistration_controller.go +++ b/pkg/master/controller/crdregistration/crdregistration_controller.go @@ -22,7 +22,7 @@ import ( "k8s.io/klog" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" crdinformers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1" crdlisters "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -73,24 +73,24 @@ func NewCRDRegistrationController(crdinformer crdinformers.CustomResourceDefinit crdinformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { - cast := obj.(*apiextensions.CustomResourceDefinition) + cast := obj.(*apiextensionsv1.CustomResourceDefinition) c.enqueueCRD(cast) }, UpdateFunc: func(oldObj, newObj interface{}) { // Enqueue both old and new object to make sure we remove and add appropriate API services. // The working queue will resolve any duplicates and only changes will stay in the queue. - c.enqueueCRD(oldObj.(*apiextensions.CustomResourceDefinition)) - c.enqueueCRD(newObj.(*apiextensions.CustomResourceDefinition)) + c.enqueueCRD(oldObj.(*apiextensionsv1.CustomResourceDefinition)) + c.enqueueCRD(newObj.(*apiextensionsv1.CustomResourceDefinition)) }, DeleteFunc: func(obj interface{}) { - cast, ok := obj.(*apiextensions.CustomResourceDefinition) + cast, ok := obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { klog.V(2).Infof("Couldn't get object from tombstone %#v", obj) return } - cast, ok = tombstone.Obj.(*apiextensions.CustomResourceDefinition) + cast, ok = tombstone.Obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { klog.V(2).Infof("Tombstone contained unexpected object: %#v", obj) return @@ -184,7 +184,7 @@ func (c *crdRegistrationController) processNextWorkItem() bool { return true } -func (c *crdRegistrationController) enqueueCRD(crd *apiextensions.CustomResourceDefinition) { +func (c *crdRegistrationController) enqueueCRD(crd *apiextensionsv1.CustomResourceDefinition) { for _, version := range crd.Spec.Versions { c.queue.Add(schema.GroupVersion{Group: crd.Spec.Group, Version: version.Name}) } diff --git a/pkg/master/controller/crdregistration/crdregistration_controller_test.go b/pkg/master/controller/crdregistration/crdregistration_controller_test.go index 3d98d68f1d8..e99e5702184 100644 --- a/pkg/master/controller/crdregistration/crdregistration_controller_test.go +++ b/pkg/master/controller/crdregistration/crdregistration_controller_test.go @@ -20,7 +20,7 @@ import ( "reflect" "testing" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" crdlisters "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" @@ -31,7 +31,7 @@ import ( func TestHandleVersionUpdate(t *testing.T) { tests := []struct { name string - startingCRDs []*apiextensions.CustomResourceDefinition + startingCRDs []*apiextensionsv1.CustomResourceDefinition version schema.GroupVersion expectedAdded []*apiregistration.APIService @@ -39,13 +39,13 @@ func TestHandleVersionUpdate(t *testing.T) { }{ { name: "simple add crd", - startingCRDs: []*apiextensions.CustomResourceDefinition{ + startingCRDs: []*apiextensionsv1.CustomResourceDefinition{ { - Spec: apiextensions.CustomResourceDefinitionSpec{ + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "group.com", // Version field is deprecated and crd registration won't rely on it at all. // defaulting route will fill up Versions field if user only provided version field. - Versions: []apiextensions.CustomResourceDefinitionVersion{ + Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1", Served: true, @@ -71,11 +71,11 @@ func TestHandleVersionUpdate(t *testing.T) { }, { name: "simple remove crd", - startingCRDs: []*apiextensions.CustomResourceDefinition{ + startingCRDs: []*apiextensionsv1.CustomResourceDefinition{ { - Spec: apiextensions.CustomResourceDefinitionSpec{ + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "group.com", - Versions: []apiextensions.CustomResourceDefinitionVersion{ + Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1", Served: true, diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apihelpers/helpers.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apihelpers/helpers.go index 523d968a500..6ead5b1113c 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apihelpers/helpers.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apihelpers/helpers.go @@ -22,7 +22,7 @@ import ( "strings" "time" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -56,24 +56,24 @@ const ( // GetAPIApprovalState returns the state of the API approval and reason for that state func GetAPIApprovalState(annotations map[string]string) (state APIApprovalState, reason string) { - annotation := annotations[apiextensions.KubeAPIApprovedAnnotation] + annotation := annotations[apiextensionsv1.KubeAPIApprovedAnnotation] // we use the result of this parsing in the switch/case below url, annotationURLParseErr := url.ParseRequestURI(annotation) switch { case len(annotation) == 0: - return APIApprovalMissing, fmt.Sprintf("protected groups must have approval annotation %q, see https://github.com/kubernetes/enhancements/pull/1111", apiextensions.KubeAPIApprovedAnnotation) + return APIApprovalMissing, fmt.Sprintf("protected groups must have approval annotation %q, see https://github.com/kubernetes/enhancements/pull/1111", apiextensionsv1.KubeAPIApprovedAnnotation) case strings.HasPrefix(annotation, "unapproved"): return APIApprovalBypassed, fmt.Sprintf("not approved: %q", annotation) case annotationURLParseErr == nil && url != nil && len(url.Host) > 0 && len(url.Scheme) > 0: return APIApproved, fmt.Sprintf("approved in %v", annotation) default: - return APIApprovalInvalid, fmt.Sprintf("protected groups must have approval annotation %q with either a URL or a reason starting with \"unapproved\", see https://github.com/kubernetes/enhancements/pull/1111", apiextensions.KubeAPIApprovedAnnotation) + return APIApprovalInvalid, fmt.Sprintf("protected groups must have approval annotation %q with either a URL or a reason starting with \"unapproved\", see https://github.com/kubernetes/enhancements/pull/1111", apiextensionsv1.KubeAPIApprovedAnnotation) } } // SetCRDCondition sets the status condition. It either overwrites the existing one or creates a new one. -func SetCRDCondition(crd *apiextensions.CustomResourceDefinition, newCondition apiextensions.CustomResourceDefinitionCondition) { +func SetCRDCondition(crd *apiextensionsv1.CustomResourceDefinition, newCondition apiextensionsv1.CustomResourceDefinitionCondition) { newCondition.LastTransitionTime = metav1.NewTime(time.Now()) existingCondition := FindCRDCondition(crd, newCondition.Type) @@ -92,8 +92,8 @@ func SetCRDCondition(crd *apiextensions.CustomResourceDefinition, newCondition a } // RemoveCRDCondition removes the status condition. -func RemoveCRDCondition(crd *apiextensions.CustomResourceDefinition, conditionType apiextensions.CustomResourceDefinitionConditionType) { - newConditions := []apiextensions.CustomResourceDefinitionCondition{} +func RemoveCRDCondition(crd *apiextensionsv1.CustomResourceDefinition, conditionType apiextensionsv1.CustomResourceDefinitionConditionType) { + newConditions := []apiextensionsv1.CustomResourceDefinitionCondition{} for _, condition := range crd.Status.Conditions { if condition.Type != conditionType { newConditions = append(newConditions, condition) @@ -103,7 +103,7 @@ func RemoveCRDCondition(crd *apiextensions.CustomResourceDefinition, conditionTy } // FindCRDCondition returns the condition you're looking for or nil. -func FindCRDCondition(crd *apiextensions.CustomResourceDefinition, conditionType apiextensions.CustomResourceDefinitionConditionType) *apiextensions.CustomResourceDefinitionCondition { +func FindCRDCondition(crd *apiextensionsv1.CustomResourceDefinition, conditionType apiextensionsv1.CustomResourceDefinitionConditionType) *apiextensionsv1.CustomResourceDefinitionCondition { for i := range crd.Status.Conditions { if crd.Status.Conditions[i].Type == conditionType { return &crd.Status.Conditions[i] @@ -114,17 +114,17 @@ func FindCRDCondition(crd *apiextensions.CustomResourceDefinition, conditionType } // IsCRDConditionTrue indicates if the condition is present and strictly true. -func IsCRDConditionTrue(crd *apiextensions.CustomResourceDefinition, conditionType apiextensions.CustomResourceDefinitionConditionType) bool { - return IsCRDConditionPresentAndEqual(crd, conditionType, apiextensions.ConditionTrue) +func IsCRDConditionTrue(crd *apiextensionsv1.CustomResourceDefinition, conditionType apiextensionsv1.CustomResourceDefinitionConditionType) bool { + return IsCRDConditionPresentAndEqual(crd, conditionType, apiextensionsv1.ConditionTrue) } // IsCRDConditionFalse indicates if the condition is present and false. -func IsCRDConditionFalse(crd *apiextensions.CustomResourceDefinition, conditionType apiextensions.CustomResourceDefinitionConditionType) bool { - return IsCRDConditionPresentAndEqual(crd, conditionType, apiextensions.ConditionFalse) +func IsCRDConditionFalse(crd *apiextensionsv1.CustomResourceDefinition, conditionType apiextensionsv1.CustomResourceDefinitionConditionType) bool { + return IsCRDConditionPresentAndEqual(crd, conditionType, apiextensionsv1.ConditionFalse) } // IsCRDConditionPresentAndEqual indicates if the condition is present and equal to the given status. -func IsCRDConditionPresentAndEqual(crd *apiextensions.CustomResourceDefinition, conditionType apiextensions.CustomResourceDefinitionConditionType, status apiextensions.ConditionStatus) bool { +func IsCRDConditionPresentAndEqual(crd *apiextensionsv1.CustomResourceDefinition, conditionType apiextensionsv1.CustomResourceDefinitionConditionType, status apiextensionsv1.ConditionStatus) bool { for _, condition := range crd.Status.Conditions { if condition.Type == conditionType { return condition.Status == status @@ -134,7 +134,7 @@ func IsCRDConditionPresentAndEqual(crd *apiextensions.CustomResourceDefinition, } // IsCRDConditionEquivalent returns true if the lhs and rhs are equivalent except for times. -func IsCRDConditionEquivalent(lhs, rhs *apiextensions.CustomResourceDefinitionCondition) bool { +func IsCRDConditionEquivalent(lhs, rhs *apiextensionsv1.CustomResourceDefinitionCondition) bool { if lhs == nil && rhs == nil { return true } @@ -146,7 +146,7 @@ func IsCRDConditionEquivalent(lhs, rhs *apiextensions.CustomResourceDefinitionCo } // CRDHasFinalizer returns true if the finalizer is in the list. -func CRDHasFinalizer(crd *apiextensions.CustomResourceDefinition, needle string) bool { +func CRDHasFinalizer(crd *apiextensionsv1.CustomResourceDefinition, needle string) bool { for _, finalizer := range crd.Finalizers { if finalizer == needle { return true @@ -157,7 +157,7 @@ func CRDHasFinalizer(crd *apiextensions.CustomResourceDefinition, needle string) } // CRDRemoveFinalizer removes the finalizer if present. -func CRDRemoveFinalizer(crd *apiextensions.CustomResourceDefinition, needle string) { +func CRDRemoveFinalizer(crd *apiextensionsv1.CustomResourceDefinition, needle string) { newFinalizers := []string{} for _, finalizer := range crd.Finalizers { if finalizer != needle { @@ -168,7 +168,7 @@ func CRDRemoveFinalizer(crd *apiextensions.CustomResourceDefinition, needle stri } // HasServedCRDVersion returns true if the given version is in the list of CRD's versions and the Served flag is set. -func HasServedCRDVersion(crd *apiextensions.CustomResourceDefinition, version string) bool { +func HasServedCRDVersion(crd *apiextensionsv1.CustomResourceDefinition, version string) bool { for _, v := range crd.Spec.Versions { if v.Name == version { return v.Served @@ -178,18 +178,18 @@ func HasServedCRDVersion(crd *apiextensions.CustomResourceDefinition, version st } // GetCRDStorageVersion returns the storage version for given CRD. -func GetCRDStorageVersion(crd *apiextensions.CustomResourceDefinition) (string, error) { +func GetCRDStorageVersion(crd *apiextensionsv1.CustomResourceDefinition) (string, error) { for _, v := range crd.Spec.Versions { if v.Storage { return v.Name, nil } } // This should not happened if crd is valid - return "", fmt.Errorf("invalid apiextensions.CustomResourceDefinition, no storage version") + return "", fmt.Errorf("invalid apiextensionsv1.CustomResourceDefinition, no storage version") } // IsStoredVersion returns whether the given version is the storage version of the CRD. -func IsStoredVersion(crd *apiextensions.CustomResourceDefinition, version string) bool { +func IsStoredVersion(crd *apiextensionsv1.CustomResourceDefinition, version string) bool { for _, v := range crd.Status.StoredVersions { if version == v { return true @@ -199,27 +199,27 @@ func IsStoredVersion(crd *apiextensions.CustomResourceDefinition, version string } // GetSchemaForVersion returns the validation schema for the given version or nil. -func GetSchemaForVersion(crd *apiextensions.CustomResourceDefinition, version string) (*apiextensions.CustomResourceValidation, error) { +func GetSchemaForVersion(crd *apiextensionsv1.CustomResourceDefinition, version string) (*apiextensionsv1.CustomResourceValidation, error) { for _, v := range crd.Spec.Versions { if version == v.Name { return v.Schema, nil } } - return nil, fmt.Errorf("version %s not found in apiextensions.CustomResourceDefinition: %v", version, crd.Name) + return nil, fmt.Errorf("version %s not found in apiextensionsv1.CustomResourceDefinition: %v", version, crd.Name) } // GetSubresourcesForVersion returns the subresources for given version or nil. -func GetSubresourcesForVersion(crd *apiextensions.CustomResourceDefinition, version string) (*apiextensions.CustomResourceSubresources, error) { +func GetSubresourcesForVersion(crd *apiextensionsv1.CustomResourceDefinition, version string) (*apiextensionsv1.CustomResourceSubresources, error) { for _, v := range crd.Spec.Versions { if version == v.Name { return v.Subresources, nil } } - return nil, fmt.Errorf("version %s not found in apiextensions.CustomResourceDefinition: %v", version, crd.Name) + return nil, fmt.Errorf("version %s not found in apiextensionsv1.CustomResourceDefinition: %v", version, crd.Name) } // HasPerVersionSchema returns true if a CRD uses per-version schema. -func HasPerVersionSchema(versions []apiextensions.CustomResourceDefinitionVersion) bool { +func HasPerVersionSchema(versions []apiextensionsv1.CustomResourceDefinitionVersion) bool { for _, v := range versions { if v.Schema != nil { return true @@ -229,7 +229,7 @@ func HasPerVersionSchema(versions []apiextensions.CustomResourceDefinitionVersio } // HasPerVersionSubresources returns true if a CRD uses per-version subresources. -func HasPerVersionSubresources(versions []apiextensions.CustomResourceDefinitionVersion) bool { +func HasPerVersionSubresources(versions []apiextensionsv1.CustomResourceDefinitionVersion) bool { for _, v := range versions { if v.Subresources != nil { return true @@ -239,7 +239,7 @@ func HasPerVersionSubresources(versions []apiextensions.CustomResourceDefinition } // HasPerVersionColumns returns true if a CRD uses per-version columns. -func HasPerVersionColumns(versions []apiextensions.CustomResourceDefinitionVersion) bool { +func HasPerVersionColumns(versions []apiextensionsv1.CustomResourceDefinitionVersion) bool { for _, v := range versions { if len(v.AdditionalPrinterColumns) > 0 { return true @@ -249,7 +249,7 @@ func HasPerVersionColumns(versions []apiextensions.CustomResourceDefinitionVersi } // HasVersionServed returns true if given CRD has given version served. -func HasVersionServed(crd *apiextensions.CustomResourceDefinition, version string) bool { +func HasVersionServed(crd *apiextensionsv1.CustomResourceDefinition, version string) bool { for _, v := range crd.Spec.Versions { if !v.Served || v.Name != version { continue diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apihelpers/helpers_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apihelpers/helpers_test.go index 1b8fef9ae98..470ac5f5745 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apihelpers/helpers_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apihelpers/helpers_test.go @@ -21,7 +21,7 @@ import ( "testing" "time" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -79,22 +79,22 @@ func TestGetAPIApprovalState(t *testing.T) { }{ { name: "bare unapproved", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: "unapproved"}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: "unapproved"}, expected: APIApprovalBypassed, }, { name: "unapproved with message", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: "unapproved, experimental-only"}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: "unapproved, experimental-only"}, expected: APIApprovalBypassed, }, { name: "mismatched case", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: "Unapproved"}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: "Unapproved"}, expected: APIApprovalInvalid, }, { name: "empty", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: ""}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: ""}, expected: APIApprovalMissing, }, { @@ -104,27 +104,27 @@ func TestGetAPIApprovalState(t *testing.T) { }, { name: "url", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: "https://github.com/kubernetes/kubernetes/pull/78458"}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: "https://github.com/kubernetes/kubernetes/pull/78458"}, expected: APIApproved, }, { name: "url - no scheme", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: "github.com/kubernetes/kubernetes/pull/78458"}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: "github.com/kubernetes/kubernetes/pull/78458"}, expected: APIApprovalInvalid, }, { name: "url - no host", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: "http:///kubernetes/kubernetes/pull/78458"}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: "http:///kubernetes/kubernetes/pull/78458"}, expected: APIApprovalInvalid, }, { name: "url - just path", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: "/"}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: "/"}, expected: APIApprovalInvalid, }, { name: "missing scheme", - annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: "github.com/kubernetes/kubernetes/pull/78458"}, + annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: "github.com/kubernetes/kubernetes/pull/78458"}, expected: APIApprovalInvalid, }, } @@ -143,14 +143,14 @@ func TestGetAPIApprovalState(t *testing.T) { func TestCRDHasFinalizer(t *testing.T) { tests := []struct { name string - crd *apiextensions.CustomResourceDefinition + crd *apiextensionsv1.CustomResourceDefinition finalizerToCheck string expected bool }{ { name: "missing", - crd: &apiextensions.CustomResourceDefinition{ + crd: &apiextensionsv1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{Finalizers: []string{"not-it"}}, }, finalizerToCheck: "it", @@ -158,7 +158,7 @@ func TestCRDHasFinalizer(t *testing.T) { }, { name: "present", - crd: &apiextensions.CustomResourceDefinition{ + crd: &apiextensionsv1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{Finalizers: []string{"not-it", "it"}}, }, finalizerToCheck: "it", @@ -176,14 +176,14 @@ func TestCRDHasFinalizer(t *testing.T) { func TestCRDRemoveFinalizer(t *testing.T) { tests := []struct { name string - crd *apiextensions.CustomResourceDefinition + crd *apiextensionsv1.CustomResourceDefinition finalizerToCheck string expected []string }{ { name: "missing", - crd: &apiextensions.CustomResourceDefinition{ + crd: &apiextensionsv1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{Finalizers: []string{"not-it"}}, }, finalizerToCheck: "it", @@ -191,7 +191,7 @@ func TestCRDRemoveFinalizer(t *testing.T) { }, { name: "present", - crd: &apiextensions.CustomResourceDefinition{ + crd: &apiextensionsv1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{Finalizers: []string{"not-it", "it"}}, }, finalizerToCheck: "it", @@ -209,32 +209,32 @@ func TestCRDRemoveFinalizer(t *testing.T) { func TestSetCRDCondition(t *testing.T) { tests := []struct { name string - crdCondition []apiextensions.CustomResourceDefinitionCondition - newCondition apiextensions.CustomResourceDefinitionCondition - expectedcrdCondition []apiextensions.CustomResourceDefinitionCondition + crdCondition []apiextensionsv1.CustomResourceDefinitionCondition + newCondition apiextensionsv1.CustomResourceDefinitionCondition + expectedcrdCondition []apiextensionsv1.CustomResourceDefinitionCondition }{ { name: "test setCRDcondition when one condition", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - newCondition: apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Established, - Status: apiextensions.ConditionFalse, + newCondition: apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionFalse, Reason: "NotAccepted", Message: "Not accepted", LastTransitionTime: metav1.Date(2018, 1, 2, 0, 0, 0, 0, time.UTC), }, - expectedcrdCondition: []apiextensions.CustomResourceDefinitionCondition{ + expectedcrdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionFalse, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionFalse, Reason: "NotAccepted", Message: "Not accepted", LastTransitionTime: metav1.Date(2018, 1, 2, 0, 0, 0, 0, time.UTC), @@ -243,40 +243,40 @@ func TestSetCRDCondition(t *testing.T) { }, { name: "test setCRDcondition when two condition", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionTrue, Reason: "NoConflicts", Message: "no conflicts found", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - newCondition: apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionFalse, + newCondition: apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionFalse, Reason: "Conflicts", Message: "conflicts found", LastTransitionTime: metav1.Date(2018, 1, 2, 0, 0, 0, 0, time.UTC), }, - expectedcrdCondition: []apiextensions.CustomResourceDefinitionCondition{ + expectedcrdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionFalse, + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionFalse, Reason: "Conflicts", Message: "conflicts found", LastTransitionTime: metav1.Date(2018, 1, 2, 0, 0, 0, 0, time.UTC), @@ -285,60 +285,60 @@ func TestSetCRDCondition(t *testing.T) { }, { name: "test setCRDcondition when condition needs to be appended", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - newCondition: apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionFalse, - Reason: "Neverapiextensions.Established", - Message: "resource was never apiextensions.Established", + newCondition: apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionFalse, + Reason: "Neverapiextensionsv1.Established", + Message: "resource was never apiextensionsv1.Established", LastTransitionTime: metav1.Date(2018, 2, 1, 0, 0, 0, 0, time.UTC), }, - expectedcrdCondition: []apiextensions.CustomResourceDefinitionCondition{ + expectedcrdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.Terminating, - Status: apiextensions.ConditionFalse, - Reason: "Neverapiextensions.Established", - Message: "resource was never apiextensions.Established", + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionFalse, + Reason: "Neverapiextensionsv1.Established", + Message: "resource was never apiextensionsv1.Established", LastTransitionTime: metav1.Date(2018, 2, 1, 0, 0, 0, 0, time.UTC), }, }, }, { name: "set new condition which doesn't have lastTransitionTime set", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - newCondition: apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Established, - Status: apiextensions.ConditionFalse, + newCondition: apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionFalse, Reason: "NotAccepted", Message: "Not accepted", }, - expectedcrdCondition: []apiextensions.CustomResourceDefinitionCondition{ + expectedcrdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionFalse, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionFalse, Reason: "NotAccepted", Message: "Not accepted", LastTransitionTime: metav1.Date(2018, 1, 2, 0, 0, 0, 0, time.UTC), @@ -347,34 +347,34 @@ func TestSetCRDCondition(t *testing.T) { }, { name: "append new condition which doesn't have lastTransitionTime set", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - newCondition: apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionFalse, - Reason: "Neverapiextensions.Established", - Message: "resource was never apiextensions.Established", + newCondition: apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionFalse, + Reason: "Neverapiextensionsv1.Established", + Message: "resource was never apiextensionsv1.Established", }, - expectedcrdCondition: []apiextensions.CustomResourceDefinitionCondition{ + expectedcrdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.Terminating, - Status: apiextensions.ConditionFalse, - Reason: "Neverapiextensions.Established", - Message: "resource was never apiextensions.Established", + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionFalse, + Reason: "Neverapiextensionsv1.Established", + Message: "resource was never apiextensionsv1.Established", LastTransitionTime: metav1.Date(2018, 2, 1, 0, 0, 0, 0, time.UTC), }, }, @@ -400,33 +400,33 @@ func TestSetCRDCondition(t *testing.T) { func TestRemoveCRDCondition(t *testing.T) { tests := []struct { name string - crdCondition []apiextensions.CustomResourceDefinitionCondition - conditionType apiextensions.CustomResourceDefinitionConditionType - expectedcrdCondition []apiextensions.CustomResourceDefinitionCondition + crdCondition []apiextensionsv1.CustomResourceDefinitionCondition + conditionType apiextensionsv1.CustomResourceDefinitionConditionType + expectedcrdCondition []apiextensionsv1.CustomResourceDefinitionCondition }{ { name: "test remove CRDCondition when the conditionType meets", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionTrue, Reason: "NoConflicts", Message: "no conflicts found", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - conditionType: apiextensions.NamesAccepted, - expectedcrdCondition: []apiextensions.CustomResourceDefinitionCondition{ + conditionType: apiextensionsv1.NamesAccepted, + expectedcrdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2011, 1, 2, 0, 0, 0, 0, time.UTC), @@ -435,34 +435,34 @@ func TestRemoveCRDCondition(t *testing.T) { }, { name: "test remove CRDCondition when the conditionType not meets", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionTrue, Reason: "NoConflicts", Message: "no conflicts found", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - conditionType: apiextensions.Terminating, - expectedcrdCondition: []apiextensions.CustomResourceDefinitionCondition{ + conditionType: apiextensionsv1.Terminating, + expectedcrdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionTrue, Reason: "NoConflicts", Message: "no conflicts found", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), @@ -487,75 +487,75 @@ func TestRemoveCRDCondition(t *testing.T) { func TestIsCRDConditionPresentAndEqual(t *testing.T) { tests := []struct { name string - crdCondition []apiextensions.CustomResourceDefinitionCondition - conditionType apiextensions.CustomResourceDefinitionConditionType - status apiextensions.ConditionStatus + crdCondition []apiextensionsv1.CustomResourceDefinitionCondition + conditionType apiextensionsv1.CustomResourceDefinitionConditionType + status apiextensionsv1.ConditionStatus expectresult bool }{ { name: "test CRDCondition is not Present", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionTrue, Reason: "NoConflicts", Message: "no conflicts found", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - conditionType: apiextensions.Terminating, - status: apiextensions.ConditionTrue, + conditionType: apiextensionsv1.Terminating, + status: apiextensionsv1.ConditionTrue, expectresult: false, }, { name: "test CRDCondition is Present but not Equal", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionTrue, Reason: "NoConflicts", Message: "no conflicts found", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - conditionType: apiextensions.Established, - status: apiextensions.ConditionFalse, + conditionType: apiextensionsv1.Established, + status: apiextensionsv1.ConditionFalse, expectresult: false, }, { name: "test CRDCondition is Present and Equal", - crdCondition: []apiextensions.CustomResourceDefinitionCondition{ + crdCondition: []apiextensionsv1.CustomResourceDefinitionCondition{ { - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "Accepted", Message: "the initial names have been accepted", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, { - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionTrue, + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionTrue, Reason: "NoConflicts", Message: "no conflicts found", LastTransitionTime: metav1.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC), }, }, - conditionType: apiextensions.NamesAccepted, - status: apiextensions.ConditionTrue, + conditionType: apiextensionsv1.NamesAccepted, + status: apiextensionsv1.ConditionTrue, expectresult: true, }, } @@ -568,30 +568,30 @@ func TestIsCRDConditionPresentAndEqual(t *testing.T) { } } -func generateCRDwithCondition(conditions []apiextensions.CustomResourceDefinitionCondition) *apiextensions.CustomResourceDefinition { +func generateCRDwithCondition(conditions []apiextensionsv1.CustomResourceDefinitionCondition) *apiextensionsv1.CustomResourceDefinition { testCRDObjectMeta := metav1.ObjectMeta{ Name: "plural.group.com", ResourceVersion: "12", } - testCRDSpec := apiextensions.CustomResourceDefinitionSpec{ + testCRDSpec := apiextensionsv1.CustomResourceDefinitionSpec{ Group: "group.com", - Names: apiextensions.CustomResourceDefinitionNames{ + Names: apiextensionsv1.CustomResourceDefinitionNames{ Plural: "plural", Singular: "singular", Kind: "kind", ListKind: "listkind", }, } - testCRDAcceptedNames := apiextensions.CustomResourceDefinitionNames{ + testCRDAcceptedNames := apiextensionsv1.CustomResourceDefinitionNames{ Plural: "plural", Singular: "singular", Kind: "kind", ListKind: "listkind", } - return &apiextensions.CustomResourceDefinition{ + return &apiextensionsv1.CustomResourceDefinition{ ObjectMeta: testCRDObjectMeta, Spec: testCRDSpec, - Status: apiextensions.CustomResourceDefinitionStatus{ + Status: apiextensionsv1.CustomResourceDefinitionStatus{ AcceptedNames: testCRDAcceptedNames, Conditions: conditions, }, diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/converter.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/converter.go index 625c7ae20c4..dcd5443c659 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/converter.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/converter.go @@ -20,7 +20,7 @@ import ( "fmt" autoscalingv1 "k8s.io/api/autoscaling/v1" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" @@ -55,7 +55,7 @@ func NewCRConverterFactory(serviceResolver webhook.ServiceResolver, authResolver } // NewConverter returns a new CR converter based on the conversion settings in crd object. -func (m *CRConverterFactory) NewConverter(crd *apiextensions.CustomResourceDefinition) (safe, unsafe runtime.ObjectConvertor, err error) { +func (m *CRConverterFactory) NewConverter(crd *apiextensionsv1.CustomResourceDefinition) (safe, unsafe runtime.ObjectConvertor, err error) { validVersions := map[schema.GroupVersion]bool{} for _, version := range crd.Spec.Versions { validVersions[schema.GroupVersion{Group: crd.Spec.Group, Version: version.Name}] = true @@ -63,9 +63,9 @@ func (m *CRConverterFactory) NewConverter(crd *apiextensions.CustomResourceDefin var converter crConverterInterface switch crd.Spec.Conversion.Strategy { - case apiextensions.NoneConverter: + case apiextensionsv1.NoneConverter: converter = &nopConverter{} - case apiextensions.WebhookConverter: + case apiextensionsv1.WebhookConverter: if !utilfeature.DefaultFeatureGate.Enabled(apiextensionsfeatures.CustomResourceWebhookConversion) { return nil, nil, fmt.Errorf("webhook conversion is disabled on this cluster") } @@ -94,7 +94,7 @@ func (m *CRConverterFactory) NewConverter(crd *apiextensions.CustomResourceDefin unsafe = &crConverter{ convertScale: convertScale, validVersions: validVersions, - clusterScoped: crd.Spec.Scope == apiextensions.ClusterScoped, + clusterScoped: crd.Spec.Scope == apiextensionsv1.ClusterScoped, converter: converter, } return &safeConverterWrapper{unsafe}, unsafe, nil diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/converter_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/converter_test.go index 1b5ebd3e0e6..3866dbd36bf 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/converter_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/converter_test.go @@ -21,7 +21,7 @@ import ( "strings" "testing" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -159,16 +159,16 @@ func TestConversion(t *testing.T) { t.Fatalf("Cannot create conversion factory: %v", err) } for _, test := range tests { - testCRD := apiextensions.CustomResourceDefinition{ - Spec: apiextensions.CustomResourceDefinitionSpec{ - Conversion: &apiextensions.CustomResourceConversion{ - Strategy: apiextensions.NoneConverter, + testCRD := apiextensionsv1.CustomResourceDefinition{ + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ + Conversion: &apiextensionsv1.CustomResourceConversion{ + Strategy: apiextensionsv1.NoneConverter, }, }, } for _, v := range test.ValidVersions { gv, _ := schema.ParseGroupVersion(v) - testCRD.Spec.Versions = append(testCRD.Spec.Versions, apiextensions.CustomResourceDefinitionVersion{Name: gv.Version, Served: true}) + testCRD.Spec.Versions = append(testCRD.Spec.Versions, apiextensionsv1.CustomResourceDefinitionVersion{Name: gv.Version, Served: true}) testCRD.Spec.Group = gv.Group } safeConverter, _, err := CRConverterFactory.NewConverter(&testCRD) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/webhook_converter.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/webhook_converter.go index 0cdf39a5ec4..36771c4acc9 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/webhook_converter.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion/webhook_converter.go @@ -22,7 +22,7 @@ import ( "fmt" "time" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" apivalidation "k8s.io/apimachinery/pkg/api/validation" @@ -73,7 +73,7 @@ type webhookConverter struct { conversionReviewVersions []string } -func webhookClientConfigForCRD(crd *apiextensions.CustomResourceDefinition) *webhook.ClientConfig { +func webhookClientConfigForCRD(crd *apiextensionsv1.CustomResourceDefinition) *webhook.ClientConfig { apiConfig := crd.Spec.Conversion.Webhook.ClientConfig ret := webhook.ClientConfig{ Name: fmt.Sprintf("conversion_webhook_for_%s", crd.Name), @@ -97,7 +97,7 @@ func webhookClientConfigForCRD(crd *apiextensions.CustomResourceDefinition) *web var _ crConverterInterface = &webhookConverter{} -func (f *webhookConverterFactory) NewWebhookConverter(crd *apiextensions.CustomResourceDefinition) (*webhookConverter, error) { +func (f *webhookConverterFactory) NewWebhookConverter(crd *apiextensionsv1.CustomResourceDefinition) (*webhookConverter, error) { restClient, err := f.clientManager.HookClient(*webhookClientConfigForCRD(crd)) if err != nil { return nil, err diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_discovery_controller.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_discovery_controller.go index 8d6030eb4b8..f897abd9ac5 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_discovery_controller.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_discovery_controller.go @@ -35,7 +35,7 @@ import ( "k8s.io/client-go/util/workqueue" apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" informers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" ) @@ -87,7 +87,7 @@ func (c *DiscoveryController) sync(version schema.GroupVersion) error { foundVersion := false foundGroup := false for _, crd := range crds { - if !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensions.Established) { + if !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensionsv1.Established) { continue } @@ -127,14 +127,14 @@ func (c *DiscoveryController) sync(version schema.GroupVersion) error { verbs := metav1.Verbs([]string{"delete", "deletecollection", "get", "list", "patch", "create", "update", "watch"}) // if we're terminating we don't allow some verbs - if apiextensionshelpers.IsCRDConditionTrue(crd, apiextensions.Terminating) { + if apiextensionshelpers.IsCRDConditionTrue(crd, apiextensionsv1.Terminating) { verbs = metav1.Verbs([]string{"delete", "deletecollection", "get", "list", "watch"}) } apiResourcesForDiscovery = append(apiResourcesForDiscovery, metav1.APIResource{ Name: crd.Status.AcceptedNames.Plural, SingularName: crd.Status.AcceptedNames.Singular, - Namespaced: crd.Spec.Scope == apiextensions.NamespaceScoped, + Namespaced: crd.Spec.Scope == apiextensionsv1.NamespaceScoped, Kind: crd.Status.AcceptedNames.Kind, Verbs: verbs, ShortNames: crd.Status.AcceptedNames.ShortNames, @@ -149,7 +149,7 @@ func (c *DiscoveryController) sync(version schema.GroupVersion) error { if subresources != nil && subresources.Status != nil { apiResourcesForDiscovery = append(apiResourcesForDiscovery, metav1.APIResource{ Name: crd.Status.AcceptedNames.Plural + "/status", - Namespaced: crd.Spec.Scope == apiextensions.NamespaceScoped, + Namespaced: crd.Spec.Scope == apiextensionsv1.NamespaceScoped, Kind: crd.Status.AcceptedNames.Kind, Verbs: metav1.Verbs([]string{"get", "patch", "update"}), }) @@ -161,7 +161,7 @@ func (c *DiscoveryController) sync(version schema.GroupVersion) error { Version: "v1", Kind: "Scale", Name: crd.Status.AcceptedNames.Plural + "/scale", - Namespaced: crd.Spec.Scope == apiextensions.NamespaceScoped, + Namespaced: crd.Spec.Scope == apiextensionsv1.NamespaceScoped, Verbs: metav1.Verbs([]string{"get", "patch", "update"}), }) } @@ -244,21 +244,21 @@ func (c *DiscoveryController) processNextWorkItem() bool { return true } -func (c *DiscoveryController) enqueue(obj *apiextensions.CustomResourceDefinition) { +func (c *DiscoveryController) enqueue(obj *apiextensionsv1.CustomResourceDefinition) { for _, v := range obj.Spec.Versions { c.queue.Add(schema.GroupVersion{Group: obj.Spec.Group, Version: v.Name}) } } func (c *DiscoveryController) addCustomResourceDefinition(obj interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Adding customresourcedefinition %s", castObj.Name) c.enqueue(castObj) } func (c *DiscoveryController) updateCustomResourceDefinition(oldObj, newObj interface{}) { - castNewObj := newObj.(*apiextensions.CustomResourceDefinition) - castOldObj := oldObj.(*apiextensions.CustomResourceDefinition) + castNewObj := newObj.(*apiextensionsv1.CustomResourceDefinition) + castOldObj := oldObj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Updating customresourcedefinition %s", castOldObj.Name) // Enqueue both old and new object to make sure we remove and add appropriate Versions. // The working queue will resolve any duplicates and only changes will stay in the queue. @@ -267,14 +267,14 @@ func (c *DiscoveryController) updateCustomResourceDefinition(oldObj, newObj inte } func (c *DiscoveryController) deleteCustomResourceDefinition(obj interface{}) { - castObj, ok := obj.(*apiextensions.CustomResourceDefinition) + castObj, ok := obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { klog.Errorf("Couldn't get object from tombstone %#v", obj) return } - castObj, ok = tombstone.Obj.(*apiextensions.CustomResourceDefinition) + castObj, ok = tombstone.Obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { klog.Errorf("Tombstone contained object that is not expected %#v", obj) return diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go index ef701fece09..0c58cf191b3 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go @@ -31,7 +31,7 @@ import ( apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" apiextensionsinternal "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apiextensions-apiserver/pkg/apiserver/conversion" structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema" structuraldefaulting "k8s.io/apiextensions-apiserver/pkg/apiserver/schema/defaulting" @@ -137,8 +137,8 @@ type crdHandler struct { type crdInfo struct { // spec and acceptedNames are used to compare against if a change is made on a CRD. We only update // the storage if one of these changes. - spec *apiextensions.CustomResourceDefinitionSpec - acceptedNames *apiextensions.CustomResourceDefinitionNames + spec *apiextensionsv1.CustomResourceDefinitionSpec + acceptedNames *apiextensionsv1.CustomResourceDefinitionNames // Storage per version storages map[string]customresource.CustomResourceStorage @@ -279,7 +279,7 @@ func (r *crdHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { // if the scope in the CRD and the scope in request differ (with exception of the verbs in possiblyAcrossAllNamespacesVerbs // for namespaced resources), pass request to the delegate, which is supposed to lead to a 404. - namespacedCRD, namespacedReq := crd.Spec.Scope == apiextensions.NamespaceScoped, len(requestInfo.Namespace) > 0 + namespacedCRD, namespacedReq := crd.Spec.Scope == apiextensionsv1.NamespaceScoped, len(requestInfo.Namespace) > 0 if !namespacedCRD && namespacedReq { r.delegate.ServeHTTP(w, req) return @@ -298,13 +298,13 @@ func (r *crdHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { // but it becomes "unserved" because another names update leads to a conflict // and EstablishingController wasn't fast enough to put the CRD into the Established condition. // We accept this as the problem is small and self-healing. - if !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensions.NamesAccepted) && - !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensions.Established) { + if !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensionsv1.NamesAccepted) && + !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensionsv1.Established) { r.delegate.ServeHTTP(w, req) return } - terminating := apiextensionshelpers.IsCRDConditionTrue(crd, apiextensions.Terminating) + terminating := apiextensionshelpers.IsCRDConditionTrue(crd, apiextensionsv1.Terminating) crdInfo, err := r.getOrCreateServingInfoFor(crd.UID, crd.Name) if apierrors.IsNotFound(err) { @@ -450,7 +450,7 @@ func (r *crdHandler) serveScale(w http.ResponseWriter, req *http.Request, reques // createCustomResourceDefinition removes potentially stale storage so it gets re-created func (r *crdHandler) createCustomResourceDefinition(obj interface{}) { - crd := obj.(*apiextensions.CustomResourceDefinition) + crd := obj.(*apiextensionsv1.CustomResourceDefinition) r.customStorageLock.Lock() defer r.customStorageLock.Unlock() // this could happen if the create event is merged from create-update events @@ -459,8 +459,8 @@ func (r *crdHandler) createCustomResourceDefinition(obj interface{}) { // updateCustomResourceDefinition removes potentially stale storage so it gets re-created func (r *crdHandler) updateCustomResourceDefinition(oldObj, newObj interface{}) { - oldCRD := oldObj.(*apiextensions.CustomResourceDefinition) - newCRD := newObj.(*apiextensions.CustomResourceDefinition) + oldCRD := oldObj.(*apiextensionsv1.CustomResourceDefinition) + newCRD := newObj.(*apiextensionsv1.CustomResourceDefinition) r.customStorageLock.Lock() defer r.customStorageLock.Unlock() @@ -469,8 +469,8 @@ func (r *crdHandler) updateCustomResourceDefinition(oldObj, newObj interface{}) // For HA clusters, we want to prevent race conditions when changing status to Established, // so we want to be sure that CRD is Installing at least for 5 seconds before Establishing it. // TODO: find a real HA safe checkpointing mechanism instead of an arbitrary wait. - if !apiextensionshelpers.IsCRDConditionTrue(newCRD, apiextensions.Established) && - apiextensionshelpers.IsCRDConditionTrue(newCRD, apiextensions.NamesAccepted) { + if !apiextensionshelpers.IsCRDConditionTrue(newCRD, apiextensionsv1.Established) && + apiextensionshelpers.IsCRDConditionTrue(newCRD, apiextensionsv1.NamesAccepted) { if r.masterCount > 1 { r.establishingController.QueueCRD(newCRD.Name, 5*time.Second) } else { @@ -577,7 +577,7 @@ func (r *crdHandler) tearDown(oldInfo *crdInfo) { // GetCustomResourceListerCollectionDeleter returns the ListerCollectionDeleter of // the given crd. -func (r *crdHandler) GetCustomResourceListerCollectionDeleter(crd *apiextensions.CustomResourceDefinition) (finalizer.ListerCollectionDeleter, error) { +func (r *crdHandler) GetCustomResourceListerCollectionDeleter(crd *apiextensionsv1.CustomResourceDefinition) (finalizer.ListerCollectionDeleter, error) { info, err := r.getOrCreateServingInfoFor(crd.UID, crd.Name) if err != nil { return nil, err @@ -633,7 +633,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd continue } internalValidation := &apiextensionsinternal.CustomResourceValidation{} - if err := apiextensions.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(val, internalValidation, nil); err != nil { + if err := apiextensionsv1.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(val, internalValidation, nil); err != nil { return nil, fmt.Errorf("failed converting CRD validation to internal version: %v", err) } s, err := structuralschema.NewStructural(internalValidation.OpenAPIV3Schema) @@ -693,7 +693,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd var internalValidationSchema *apiextensionsinternal.CustomResourceValidation if validationSchema != nil { internalValidationSchema = &apiextensionsinternal.CustomResourceValidation{} - if err := apiextensions.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(validationSchema, internalValidationSchema, nil); err != nil { + if err := apiextensionsv1.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(validationSchema, internalValidationSchema, nil); err != nil { return nil, fmt.Errorf("failed to convert CRD validation to internal version: %v", err) } } @@ -712,7 +712,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd if utilfeature.DefaultFeatureGate.Enabled(apiextensionsfeatures.CustomResourceSubresources) && subresources != nil && subresources.Status != nil { equivalentResourceRegistry.RegisterKindFor(resource, "status", kind) statusSpec = &apiextensionsinternal.CustomResourceSubresourceStatus{} - if err := apiextensions.Convert_v1_CustomResourceSubresourceStatus_To_apiextensions_CustomResourceSubresourceStatus(subresources.Status, statusSpec, nil); err != nil { + if err := apiextensionsv1.Convert_v1_CustomResourceSubresourceStatus_To_apiextensions_CustomResourceSubresourceStatus(subresources.Status, statusSpec, nil); err != nil { return nil, fmt.Errorf("failed converting CRD status subresource to internal version: %v", err) } // for the status subresource, validate only against the status schema @@ -731,7 +731,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd if utilfeature.DefaultFeatureGate.Enabled(apiextensionsfeatures.CustomResourceSubresources) && subresources != nil && subresources.Scale != nil { equivalentResourceRegistry.RegisterKindFor(resource, "scale", autoscalingv1.SchemeGroupVersion.WithKind("Scale")) scaleSpec = &apiextensionsinternal.CustomResourceSubresourceScale{} - if err := apiextensions.Convert_v1_CustomResourceSubresourceScale_To_apiextensions_CustomResourceSubresourceScale(subresources.Scale, scaleSpec, nil); err != nil { + if err := apiextensionsv1.Convert_v1_CustomResourceSubresourceScale_To_apiextensions_CustomResourceSubresourceScale(subresources.Scale, scaleSpec, nil); err != nil { return nil, fmt.Errorf("failed converting CRD status subresource to internal version: %v", err) } } @@ -752,7 +752,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd schema.GroupVersionKind{Group: crd.Spec.Group, Version: v.Name, Kind: crd.Status.AcceptedNames.ListKind}, customresource.NewStrategy( typer, - crd.Spec.Scope == apiextensions.NamespaceScoped, + crd.Spec.Scope == apiextensionsv1.NamespaceScoped, kind, validator, statusValidator, @@ -775,13 +775,13 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd selfLinkPrefix := "" switch crd.Spec.Scope { - case apiextensions.ClusterScoped: + case apiextensionsv1.ClusterScoped: selfLinkPrefix = "/" + path.Join("apis", crd.Spec.Group, v.Name) + "/" + crd.Status.AcceptedNames.Plural + "/" - case apiextensions.NamespaceScoped: + case apiextensionsv1.NamespaceScoped: selfLinkPrefix = "/" + path.Join("apis", crd.Spec.Group, v.Name, "namespaces") + "/" } - clusterScoped := crd.Spec.Scope == apiextensions.ClusterScoped + clusterScoped := crd.Spec.Scope == apiextensionsv1.ClusterScoped // CRDs explicitly do not support protobuf, but some objects returned by the API server do negotiatedSerializer := unstructuredNegotiatedSerializer{ @@ -1222,7 +1222,7 @@ func (v *unstructuredSchemaCoercer) apply(u *unstructured.Unstructured) error { } // hasServedCRDVersion returns true if the given version is in the list of CRD's versions and the Served flag is set. -func hasServedCRDVersion(spec *apiextensions.CustomResourceDefinitionSpec, version string) bool { +func hasServedCRDVersion(spec *apiextensionsv1.CustomResourceDefinitionSpec, version string) bool { for _, v := range spec.Versions { if v.Name == version { return v.Served @@ -1246,7 +1246,7 @@ func serverStartingError() error { // buildOpenAPIModelsForApply constructs openapi models from any validation schemas specified in the custom resource, // and merges it with the models defined in the static OpenAPI spec. // Returns nil models if the ServerSideApply feature is disabled, or the static spec is nil, or an error is encountered. -func buildOpenAPIModelsForApply(staticOpenAPISpec *spec.Swagger, crd *apiextensions.CustomResourceDefinition) (proto.Models, error) { +func buildOpenAPIModelsForApply(staticOpenAPISpec *spec.Swagger, crd *apiextensionsv1.CustomResourceDefinition) (proto.Models, error) { if !utilfeature.DefaultFeatureGate.Enabled(features.ServerSideApply) { return nil, nil } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler_test.go index 951d02d6278..874390f21d3 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler_test.go @@ -25,7 +25,7 @@ import ( "sigs.k8s.io/yaml" "testing" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apiextensions-apiserver/pkg/apiserver/conversion" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -78,18 +78,18 @@ func TestConvertFieldLabel(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - crd := apiextensions.CustomResourceDefinition{ - Spec: apiextensions.CustomResourceDefinitionSpec{ - Conversion: &apiextensions.CustomResourceConversion{ + crd := apiextensionsv1.CustomResourceDefinition{ + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ + Conversion: &apiextensionsv1.CustomResourceConversion{ Strategy: "None", }, }, } if test.clusterScoped { - crd.Spec.Scope = apiextensions.ClusterScoped + crd.Spec.Scope = apiextensionsv1.ClusterScoped } else { - crd.Spec.Scope = apiextensions.NamespaceScoped + crd.Spec.Scope = apiextensionsv1.NamespaceScoped } f, err := conversion.NewCRConverterFactory(nil, nil) if err != nil { diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/apiapproval/apiapproval_controller.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/apiapproval/apiapproval_controller.go index b2c860c8d43..3b32a0dac6b 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/apiapproval/apiapproval_controller.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/apiapproval/apiapproval_controller.go @@ -22,7 +22,7 @@ import ( "time" "k8s.io/apiextensions-apiserver/pkg/apihelpers" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1" informers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" @@ -77,7 +77,7 @@ func NewKubernetesAPIApprovalPolicyConformantConditionController( } // calculateCondition determines the new KubernetesAPIApprovalPolicyConformant condition -func calculateCondition(crd *apiextensions.CustomResourceDefinition) *apiextensions.CustomResourceDefinitionCondition { +func calculateCondition(crd *apiextensionsv1.CustomResourceDefinition) *apiextensionsv1.CustomResourceDefinitionCondition { if !apihelpers.IsProtectedCommunityGroup(crd.Spec.Group) { return nil } @@ -85,37 +85,37 @@ func calculateCondition(crd *apiextensions.CustomResourceDefinition) *apiextensi approvalState, reason := apihelpers.GetAPIApprovalState(crd.Annotations) switch approvalState { case apihelpers.APIApprovalInvalid: - return &apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.KubernetesAPIApprovalPolicyConformant, - Status: apiextensions.ConditionFalse, + return &apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.KubernetesAPIApprovalPolicyConformant, + Status: apiextensionsv1.ConditionFalse, Reason: "InvalidAnnotation", Message: reason, } case apihelpers.APIApprovalMissing: - return &apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.KubernetesAPIApprovalPolicyConformant, - Status: apiextensions.ConditionFalse, + return &apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.KubernetesAPIApprovalPolicyConformant, + Status: apiextensionsv1.ConditionFalse, Reason: "MissingAnnotation", Message: reason, } case apihelpers.APIApproved: - return &apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.KubernetesAPIApprovalPolicyConformant, - Status: apiextensions.ConditionTrue, + return &apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.KubernetesAPIApprovalPolicyConformant, + Status: apiextensionsv1.ConditionTrue, Reason: "ApprovedAnnotation", Message: reason, } case apihelpers.APIApprovalBypassed: - return &apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.KubernetesAPIApprovalPolicyConformant, - Status: apiextensions.ConditionFalse, + return &apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.KubernetesAPIApprovalPolicyConformant, + Status: apiextensionsv1.ConditionFalse, Reason: "UnapprovedAnnotation", Message: reason, } default: - return &apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.KubernetesAPIApprovalPolicyConformant, - Status: apiextensions.ConditionUnknown, + return &apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.KubernetesAPIApprovalPolicyConformant, + Status: apiextensionsv1.ConditionUnknown, Reason: "UnknownAnnotation", Message: reason, } @@ -132,7 +132,7 @@ func (c *KubernetesAPIApprovalPolicyConformantConditionController) sync(key stri } // avoid repeated calculation for the same annotation - protectionAnnotationValue := inCustomResourceDefinition.Annotations[apiextensions.KubeAPIApprovedAnnotation] + protectionAnnotationValue := inCustomResourceDefinition.Annotations[apiextensionsv1.KubeAPIApprovedAnnotation] c.lastSeenProtectedAnnotationLock.Lock() lastSeen, seenBefore := c.lastSeenProtectedAnnotation[inCustomResourceDefinition.Name] c.lastSeenProtectedAnnotationLock.Unlock() @@ -146,7 +146,7 @@ func (c *KubernetesAPIApprovalPolicyConformantConditionController) sync(key stri // because group is immutable, if we have no condition now, we have no need to remove a condition. return nil } - old := apihelpers.FindCRDCondition(inCustomResourceDefinition, apiextensions.KubernetesAPIApprovalPolicyConformant) + old := apihelpers.FindCRDCondition(inCustomResourceDefinition, apiextensionsv1.KubernetesAPIApprovalPolicyConformant) // don't attempt a write if all the condition details are the same if old != nil && old.Status == cond.Status && old.Reason == cond.Reason && old.Message == cond.Message { @@ -220,7 +220,7 @@ func (c *KubernetesAPIApprovalPolicyConformantConditionController) processNextWo return true } -func (c *KubernetesAPIApprovalPolicyConformantConditionController) enqueue(obj *apiextensions.CustomResourceDefinition) { +func (c *KubernetesAPIApprovalPolicyConformantConditionController) enqueue(obj *apiextensionsv1.CustomResourceDefinition) { key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { utilruntime.HandleError(fmt.Errorf("Couldn't get key for object %#v: %v", obj, err)) @@ -231,26 +231,26 @@ func (c *KubernetesAPIApprovalPolicyConformantConditionController) enqueue(obj * } func (c *KubernetesAPIApprovalPolicyConformantConditionController) addCustomResourceDefinition(obj interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Adding %s", castObj.Name) c.enqueue(castObj) } func (c *KubernetesAPIApprovalPolicyConformantConditionController) updateCustomResourceDefinition(obj, _ interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Updating %s", castObj.Name) c.enqueue(castObj) } func (c *KubernetesAPIApprovalPolicyConformantConditionController) deleteCustomResourceDefinition(obj interface{}) { - castObj, ok := obj.(*apiextensions.CustomResourceDefinition) + castObj, ok := obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { klog.Errorf("Couldn't get object from tombstone %#v", obj) return } - castObj, ok = tombstone.Obj.(*apiextensions.CustomResourceDefinition) + castObj, ok = tombstone.Obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { klog.Errorf("Tombstone contained object that is not expected %#v", obj) return diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/apiapproval/apiapproval_controller_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/apiapproval/apiapproval_controller_test.go index 387ea9b8729..725d3aba38d 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/apiapproval/apiapproval_controller_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/apiapproval/apiapproval_controller_test.go @@ -19,20 +19,20 @@ package apiapproval import ( "testing" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func TestCalculateCondition(t *testing.T) { - noConditionFn := func(t *testing.T, condition *apiextensions.CustomResourceDefinitionCondition) { + noConditionFn := func(t *testing.T, condition *apiextensionsv1.CustomResourceDefinitionCondition) { t.Helper() if condition != nil { t.Fatal(condition) } } - verifyCondition := func(status apiextensions.ConditionStatus, message string) func(t *testing.T, condition *apiextensions.CustomResourceDefinitionCondition) { - return func(t *testing.T, condition *apiextensions.CustomResourceDefinitionCondition) { + verifyCondition := func(status apiextensionsv1.ConditionStatus, message string) func(t *testing.T, condition *apiextensionsv1.CustomResourceDefinitionCondition) { + return func(t *testing.T, condition *apiextensionsv1.CustomResourceDefinitionCondition) { t.Helper() if condition == nil { t.Fatal("missing condition") @@ -51,7 +51,7 @@ func TestCalculateCondition(t *testing.T) { group string annotationValue string - validateCondition func(t *testing.T, condition *apiextensions.CustomResourceDefinitionCondition) + validateCondition func(t *testing.T, condition *apiextensionsv1.CustomResourceDefinitionCondition) }{ { name: "for other group", @@ -63,33 +63,33 @@ func TestCalculateCondition(t *testing.T) { name: "missing annotation", group: "sigs.k8s.io", annotationValue: "", - validateCondition: verifyCondition(apiextensions.ConditionFalse, `protected groups must have approval annotation "api-approved.kubernetes.io", see https://github.com/kubernetes/enhancements/pull/1111`), + validateCondition: verifyCondition(apiextensionsv1.ConditionFalse, `protected groups must have approval annotation "api-approved.kubernetes.io", see https://github.com/kubernetes/enhancements/pull/1111`), }, { name: "invalid annotation", group: "sigs.k8s.io", annotationValue: "bad value", - validateCondition: verifyCondition(apiextensions.ConditionFalse, `protected groups must have approval annotation "api-approved.kubernetes.io" with either a URL or a reason starting with "unapproved", see https://github.com/kubernetes/enhancements/pull/1111`), + validateCondition: verifyCondition(apiextensionsv1.ConditionFalse, `protected groups must have approval annotation "api-approved.kubernetes.io" with either a URL or a reason starting with "unapproved", see https://github.com/kubernetes/enhancements/pull/1111`), }, { name: "approved", group: "sigs.k8s.io", annotationValue: "https://github.com/kubernetes/kubernetes/pull/79724", - validateCondition: verifyCondition(apiextensions.ConditionTrue, `approved in https://github.com/kubernetes/kubernetes/pull/79724`), + validateCondition: verifyCondition(apiextensionsv1.ConditionTrue, `approved in https://github.com/kubernetes/kubernetes/pull/79724`), }, { name: "unapproved", group: "sigs.k8s.io", annotationValue: "unapproved for reasons", - validateCondition: verifyCondition(apiextensions.ConditionFalse, `not approved: "unapproved for reasons"`), + validateCondition: verifyCondition(apiextensionsv1.ConditionFalse, `not approved: "unapproved for reasons"`), }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { - crd := &apiextensions.CustomResourceDefinition{ - ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{apiextensions.KubeAPIApprovedAnnotation: test.annotationValue}}, - Spec: apiextensions.CustomResourceDefinitionSpec{ + crd := &apiextensionsv1.CustomResourceDefinition{ + ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: test.annotationValue}}, + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: test.group, }, } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/establish/establishing_controller.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/establish/establishing_controller.go index 37c22791f9b..1d1501669bb 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/establish/establishing_controller.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/establish/establishing_controller.go @@ -28,7 +28,7 @@ import ( "k8s.io/klog" apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1" informers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" @@ -120,15 +120,15 @@ func (ec *EstablishingController) sync(key string) error { return err } - if !apiextensionshelpers.IsCRDConditionTrue(cachedCRD, apiextensions.NamesAccepted) || - apiextensionshelpers.IsCRDConditionTrue(cachedCRD, apiextensions.Established) { + if !apiextensionshelpers.IsCRDConditionTrue(cachedCRD, apiextensionsv1.NamesAccepted) || + apiextensionshelpers.IsCRDConditionTrue(cachedCRD, apiextensionsv1.Established) { return nil } crd := cachedCRD.DeepCopy() - establishedCondition := apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Established, - Status: apiextensions.ConditionTrue, + establishedCondition := apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, Reason: "InitialNamesAccepted", Message: "the initial names have been accepted", } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/crd_finalizer.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/crd_finalizer.go index f3b1a43f954..aac8bd64352 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/crd_finalizer.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/crd_finalizer.go @@ -37,7 +37,7 @@ import ( "k8s.io/client-go/util/workqueue" apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1" informers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" @@ -77,7 +77,7 @@ type ListerCollectionDeleter interface { type CRClientGetter interface { // GetCustomResourceListerCollectionDeleter gets the ListerCollectionDeleter for the given CRD // UID. - GetCustomResourceListerCollectionDeleter(crd *apiextensions.CustomResourceDefinition) (ListerCollectionDeleter, error) + GetCustomResourceListerCollectionDeleter(crd *apiextensionsv1.CustomResourceDefinition) (ListerCollectionDeleter, error) } // NewCRDFinalizer creates a new CRDFinalizer. @@ -114,16 +114,16 @@ func (c *CRDFinalizer) sync(key string) error { } // no work to do - if cachedCRD.DeletionTimestamp.IsZero() || !apiextensionshelpers.CRDHasFinalizer(cachedCRD, apiextensions.CustomResourceCleanupFinalizer) { + if cachedCRD.DeletionTimestamp.IsZero() || !apiextensionshelpers.CRDHasFinalizer(cachedCRD, apiextensionsv1.CustomResourceCleanupFinalizer) { return nil } crd := cachedCRD.DeepCopy() // update the status condition. This cleanup could take a while. - apiextensionshelpers.SetCRDCondition(crd, apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionTrue, + apiextensionshelpers.SetCRDCondition(crd, apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionTrue, Reason: "InstanceDeletionInProgress", Message: "CustomResource deletion is in progress", }) @@ -140,13 +140,13 @@ func (c *CRDFinalizer) sync(key string) error { // Since we control the endpoints, we know that delete collection works. No need to delete if not established. if OverlappingBuiltInResources()[schema.GroupResource{Group: crd.Spec.Group, Resource: crd.Spec.Names.Plural}] { // Skip deletion, explain why, and proceed to remove the finalizer and delete the CRD - apiextensionshelpers.SetCRDCondition(crd, apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionFalse, + apiextensionshelpers.SetCRDCondition(crd, apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionFalse, Reason: "OverlappingBuiltInResource", Message: "instances overlap with built-in resources in storage", }) - } else if apiextensionshelpers.IsCRDConditionTrue(crd, apiextensions.Established) { + } else if apiextensionshelpers.IsCRDConditionTrue(crd, apiextensionsv1.Established) { cond, deleteErr := c.deleteInstances(crd) apiextensionshelpers.SetCRDCondition(crd, cond) if deleteErr != nil { @@ -156,15 +156,15 @@ func (c *CRDFinalizer) sync(key string) error { return deleteErr } } else { - apiextensionshelpers.SetCRDCondition(crd, apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionFalse, + apiextensionshelpers.SetCRDCondition(crd, apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionFalse, Reason: "NeverEstablished", Message: "resource was never established", }) } - apiextensionshelpers.CRDRemoveFinalizer(crd, apiextensions.CustomResourceCleanupFinalizer) + apiextensionshelpers.CRDRemoveFinalizer(crd, apiextensionsv1.CustomResourceCleanupFinalizer) _, err = c.crdClient.CustomResourceDefinitions().UpdateStatus(crd) if apierrors.IsNotFound(err) || apierrors.IsConflict(err) { // deleted or changed in the meantime, we'll get called again @@ -173,16 +173,16 @@ func (c *CRDFinalizer) sync(key string) error { return err } -func (c *CRDFinalizer) deleteInstances(crd *apiextensions.CustomResourceDefinition) (apiextensions.CustomResourceDefinitionCondition, error) { +func (c *CRDFinalizer) deleteInstances(crd *apiextensionsv1.CustomResourceDefinition) (apiextensionsv1.CustomResourceDefinitionCondition, error) { // Now we can start deleting items. While it would be ideal to use a REST API client, doing so // could incorrectly delete a ThirdPartyResource with the same URL as the CustomResource, so we go // directly to the storage instead. Since we control the storage, we know that delete collection works. crClient, err := c.crClientGetter.GetCustomResourceListerCollectionDeleter(crd) if err != nil { err = fmt.Errorf("unable to find a custom resource client for %s.%s: %v", crd.Status.AcceptedNames.Plural, crd.Spec.Group, err) - return apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionTrue, + return apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionTrue, Reason: "InstanceDeletionFailed", Message: fmt.Sprintf("could not list instances: %v", err), }, err @@ -191,9 +191,9 @@ func (c *CRDFinalizer) deleteInstances(crd *apiextensions.CustomResourceDefiniti ctx := genericapirequest.NewContext() allResources, err := crClient.List(ctx, nil) if err != nil { - return apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionTrue, + return apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionTrue, Reason: "InstanceDeletionFailed", Message: fmt.Sprintf("could not list instances: %v", err), }, err @@ -219,9 +219,9 @@ func (c *CRDFinalizer) deleteInstances(crd *apiextensions.CustomResourceDefiniti } } if deleteError := utilerrors.NewAggregate(deleteErrors); deleteError != nil { - return apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionTrue, + return apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionTrue, Reason: "InstanceDeletionFailed", Message: fmt.Sprintf("could not issue all deletes: %v", deleteError), }, deleteError @@ -242,16 +242,16 @@ func (c *CRDFinalizer) deleteInstances(crd *apiextensions.CustomResourceDefiniti return false, nil }) if err != nil { - return apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionTrue, + return apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionTrue, Reason: "InstanceDeletionCheck", Message: fmt.Sprintf("could not confirm zero CustomResources remaining: %v", err), }, err } - return apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Terminating, - Status: apiextensions.ConditionFalse, + return apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Terminating, + Status: apiextensionsv1.ConditionFalse, Reason: "InstanceDeletionCompleted", Message: "removed all instances", }, nil @@ -300,7 +300,7 @@ func (c *CRDFinalizer) processNextWorkItem() bool { return true } -func (c *CRDFinalizer) enqueue(obj *apiextensions.CustomResourceDefinition) { +func (c *CRDFinalizer) enqueue(obj *apiextensionsv1.CustomResourceDefinition) { key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { utilruntime.HandleError(fmt.Errorf("couldn't get key for object %#v: %v", obj, err)) @@ -311,18 +311,18 @@ func (c *CRDFinalizer) enqueue(obj *apiextensions.CustomResourceDefinition) { } func (c *CRDFinalizer) addCustomResourceDefinition(obj interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) // only queue deleted things - if !castObj.DeletionTimestamp.IsZero() && apiextensionshelpers.CRDHasFinalizer(castObj, apiextensions.CustomResourceCleanupFinalizer) { + if !castObj.DeletionTimestamp.IsZero() && apiextensionshelpers.CRDHasFinalizer(castObj, apiextensionsv1.CustomResourceCleanupFinalizer) { c.enqueue(castObj) } } func (c *CRDFinalizer) updateCustomResourceDefinition(oldObj, newObj interface{}) { - oldCRD := oldObj.(*apiextensions.CustomResourceDefinition) - newCRD := newObj.(*apiextensions.CustomResourceDefinition) + oldCRD := oldObj.(*apiextensionsv1.CustomResourceDefinition) + newCRD := newObj.(*apiextensionsv1.CustomResourceDefinition) // only queue deleted things that haven't been finalized by us - if newCRD.DeletionTimestamp.IsZero() || !apiextensionshelpers.CRDHasFinalizer(newCRD, apiextensions.CustomResourceCleanupFinalizer) { + if newCRD.DeletionTimestamp.IsZero() || !apiextensionshelpers.CRDHasFinalizer(newCRD, apiextensionsv1.CustomResourceCleanupFinalizer) { return } @@ -340,8 +340,8 @@ func (c *CRDFinalizer) updateCustomResourceDefinition(oldObj, newObj interface{} newCopy := newCRD.DeepCopy() oldCopy.ResourceVersion = "" newCopy.ResourceVersion = "" - apiextensionshelpers.RemoveCRDCondition(oldCopy, apiextensions.Terminating) - apiextensionshelpers.RemoveCRDCondition(newCopy, apiextensions.Terminating) + apiextensionshelpers.RemoveCRDCondition(oldCopy, apiextensionsv1.Terminating) + apiextensionshelpers.RemoveCRDCondition(newCopy, apiextensionsv1.Terminating) if !reflect.DeepEqual(oldCopy, newCopy) { c.enqueue(newCRD) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/nonstructuralschema/nonstructuralschema_controller.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/nonstructuralschema/nonstructuralschema_controller.go index 18fe3a22a48..1bdd4fbd0ac 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/nonstructuralschema/nonstructuralschema_controller.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/nonstructuralschema/nonstructuralschema_controller.go @@ -32,7 +32,7 @@ import ( apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" apiextensionsinternal "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apiextensions-apiserver/pkg/apiserver/schema" client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1" informers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1" @@ -81,10 +81,10 @@ func NewConditionController( return c } -func calculateCondition(in *apiextensions.CustomResourceDefinition) *apiextensions.CustomResourceDefinitionCondition { - cond := &apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.NonStructuralSchema, - Status: apiextensions.ConditionUnknown, +func calculateCondition(in *apiextensionsv1.CustomResourceDefinition) *apiextensionsv1.CustomResourceDefinitionCondition { + cond := &apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.NonStructuralSchema, + Status: apiextensionsv1.ConditionUnknown, } allErrs := field.ErrorList{} @@ -95,7 +95,7 @@ func calculateCondition(in *apiextensions.CustomResourceDefinition) *apiextensio } internalSchema := &apiextensionsinternal.CustomResourceValidation{} - if err := apiextensions.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(v.Schema, internalSchema, nil); err != nil { + if err := apiextensionsv1.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(v.Schema, internalSchema, nil); err != nil { klog.Errorf("failed to convert CRD validation to internal version: %v", err) continue } @@ -115,7 +115,7 @@ func calculateCondition(in *apiextensions.CustomResourceDefinition) *apiextensio return nil } - cond.Status = apiextensions.ConditionTrue + cond.Status = apiextensionsv1.ConditionTrue cond.Reason = "Violations" cond.Message = allErrs.ToAggregate().Error() @@ -141,7 +141,7 @@ func (c *ConditionController) sync(key string) error { // check old condition cond := calculateCondition(inCustomResourceDefinition) - old := apiextensionshelpers.FindCRDCondition(inCustomResourceDefinition, apiextensions.NonStructuralSchema) + old := apiextensionshelpers.FindCRDCondition(inCustomResourceDefinition, apiextensionsv1.NonStructuralSchema) if cond == nil && old == nil { return nil @@ -153,7 +153,7 @@ func (c *ConditionController) sync(key string) error { // update condition crd := inCustomResourceDefinition.DeepCopy() if cond == nil { - apiextensionshelpers.RemoveCRDCondition(crd, apiextensions.NonStructuralSchema) + apiextensionshelpers.RemoveCRDCondition(crd, apiextensionsv1.NonStructuralSchema) } else { cond.LastTransitionTime = metav1.NewTime(time.Now()) apiextensionshelpers.SetCRDCondition(crd, *cond) @@ -221,7 +221,7 @@ func (c *ConditionController) processNextWorkItem() bool { return true } -func (c *ConditionController) enqueue(obj *apiextensions.CustomResourceDefinition) { +func (c *ConditionController) enqueue(obj *apiextensionsv1.CustomResourceDefinition) { key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { utilruntime.HandleError(fmt.Errorf("couldn't get key for object %#v: %v", obj, err)) @@ -232,26 +232,26 @@ func (c *ConditionController) enqueue(obj *apiextensions.CustomResourceDefinitio } func (c *ConditionController) addCustomResourceDefinition(obj interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Adding %s", castObj.Name) c.enqueue(castObj) } func (c *ConditionController) updateCustomResourceDefinition(obj, _ interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Updating %s", castObj.Name) c.enqueue(castObj) } func (c *ConditionController) deleteCustomResourceDefinition(obj interface{}) { - castObj, ok := obj.(*apiextensions.CustomResourceDefinition) + castObj, ok := obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { klog.Errorf("Couldn't get object from tombstone %#v", obj) return } - castObj, ok = tombstone.Obj.(*apiextensions.CustomResourceDefinition) + castObj, ok = tombstone.Obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { klog.Errorf("Tombstone contained object that is not expected %#v", obj) return diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder.go index 607f9e0e8fc..06dfc7f1add 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder.go @@ -28,7 +28,7 @@ import ( v1 "k8s.io/api/autoscaling/v1" apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" apiextensionsinternal "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation" structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema" openapiv2 "k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2" @@ -86,7 +86,7 @@ type Options struct { } // BuildSwagger builds swagger for the given crd in the given version -func BuildSwagger(crd *apiextensions.CustomResourceDefinition, version string, opts Options) (*spec.Swagger, error) { +func BuildSwagger(crd *apiextensionsv1.CustomResourceDefinition, version string, opts Options) (*spec.Swagger, error) { var schema *structuralschema.Structural s, err := apiextensionshelpers.GetSchemaForVersion(crd, version) if err != nil { @@ -95,7 +95,7 @@ func BuildSwagger(crd *apiextensions.CustomResourceDefinition, version string, o if s != nil && s.OpenAPIV3Schema != nil { internalCRDSchema := &apiextensionsinternal.CustomResourceValidation{} - if err := apiextensions.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(s, internalCRDSchema, nil); err != nil { + if err := apiextensionsv1.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(s, internalCRDSchema, nil); err != nil { return nil, fmt.Errorf("failed converting CRD validation to internal version: %v", err) } if !validation.SchemaHasInvalidTypes(internalCRDSchema.OpenAPIV3Schema) { @@ -504,7 +504,7 @@ func (b *builder) getOpenAPIConfig() *common.Config { } } -func newBuilder(crd *apiextensions.CustomResourceDefinition, version string, schema *structuralschema.Structural, v2 bool) *builder { +func newBuilder(crd *apiextensionsv1.CustomResourceDefinition, version string, schema *structuralschema.Structural, v2 bool) *builder { b := &builder{ schema: &spec.Schema{ SchemaProps: spec.SchemaProps{Type: []string{"object"}}, @@ -518,7 +518,7 @@ func newBuilder(crd *apiextensions.CustomResourceDefinition, version string, sch listKind: crd.Spec.Names.ListKind, plural: crd.Spec.Names.Plural, } - if crd.Spec.Scope == apiextensions.NamespaceScoped { + if crd.Spec.Scope == apiextensionsv1.NamespaceScoped { b.namespaced = true } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder_test.go index e2b7c2498d7..449e1219f8a 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder_test.go @@ -25,7 +25,7 @@ import ( "github.com/stretchr/testify/require" apiextensionsinternal "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema" "k8s.io/apimachinery/pkg/util/diff" "k8s.io/apimachinery/pkg/util/json" @@ -352,12 +352,12 @@ func TestNewBuilder(t *testing.T) { t.Run(tt.name, func(t *testing.T) { var schema *structuralschema.Structural if len(tt.schema) > 0 { - v1beta1Schema := &apiextensions.JSONSchemaProps{} + v1beta1Schema := &apiextensionsv1.JSONSchemaProps{} if err := json.Unmarshal([]byte(tt.schema), &v1beta1Schema); err != nil { t.Fatal(err) } internalSchema := &apiextensionsinternal.JSONSchemaProps{} - apiextensions.Convert_v1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(v1beta1Schema, internalSchema, nil) + apiextensionsv1.Convert_v1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(v1beta1Schema, internalSchema, nil) var err error schema, err = structuralschema.NewStructural(internalSchema) if err != nil { @@ -369,21 +369,21 @@ func TestNewBuilder(t *testing.T) { schema = schema.Unfold() } - got := newBuilder(&apiextensions.CustomResourceDefinition{ - Spec: apiextensions.CustomResourceDefinitionSpec{ + got := newBuilder(&apiextensionsv1.CustomResourceDefinition{ + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "bar.k8s.io", - Versions: []apiextensions.CustomResourceDefinitionVersion{ + Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1", }, }, - Names: apiextensions.CustomResourceDefinitionNames{ + Names: apiextensionsv1.CustomResourceDefinitionNames{ Plural: "foos", Singular: "foo", Kind: "Foo", ListKind: "FooList", }, - Scope: apiextensions.NamespaceScoped, + Scope: apiextensionsv1.NamespaceScoped, }, }, "v1", schema, tt.v2) @@ -434,7 +434,7 @@ func TestCRDRouteParameterBuilder(t *testing.T) { testCRDResourceName := "foos" testCases := []struct { - scope apiextensions.ResourceScope + scope apiextensionsv1.ResourceScope paths map[string]struct { expectNamespaceParam bool expectNameParam bool @@ -442,7 +442,7 @@ func TestCRDRouteParameterBuilder(t *testing.T) { } }{ { - scope: apiextensions.NamespaceScoped, + scope: apiextensionsv1.NamespaceScoped, paths: map[string]struct { expectNamespaceParam bool expectNameParam bool @@ -456,7 +456,7 @@ func TestCRDRouteParameterBuilder(t *testing.T) { }, }, { - scope: apiextensions.ClusterScoped, + scope: apiextensionsv1.ClusterScoped, paths: map[string]struct { expectNamespaceParam bool expectNameParam bool @@ -471,20 +471,20 @@ func TestCRDRouteParameterBuilder(t *testing.T) { } for _, testCase := range testCases { - testNamespacedCRD := &apiextensions.CustomResourceDefinition{ - Spec: apiextensions.CustomResourceDefinitionSpec{ + testNamespacedCRD := &apiextensionsv1.CustomResourceDefinition{ + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Scope: testCase.scope, Group: testCRDGroup, - Names: apiextensions.CustomResourceDefinitionNames{ + Names: apiextensionsv1.CustomResourceDefinitionNames{ Kind: testCRDKind, Plural: testCRDResourceName, }, - Versions: []apiextensions.CustomResourceDefinitionVersion{ + Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: testCRDVersion, - Subresources: &apiextensions.CustomResourceSubresources{ - Status: &apiextensions.CustomResourceSubresourceStatus{}, - Scale: &apiextensions.CustomResourceSubresourceScale{}, + Subresources: &apiextensionsv1.CustomResourceSubresources{ + Status: &apiextensionsv1.CustomResourceSubresourceStatus{}, + Scale: &apiextensionsv1.CustomResourceSubresourceScale{}, }, }, }, @@ -631,13 +631,13 @@ func TestBuildSwagger(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - var validation *apiextensions.CustomResourceValidation + var validation *apiextensionsv1.CustomResourceValidation if len(tt.schema) > 0 { - v1Schema := &apiextensions.JSONSchemaProps{} + v1Schema := &apiextensionsv1.JSONSchemaProps{} if err := json.Unmarshal([]byte(tt.schema), &v1Schema); err != nil { t.Fatal(err) } - validation = &apiextensions.CustomResourceValidation{ + validation = &apiextensionsv1.CustomResourceValidation{ OpenAPIV3Schema: v1Schema, } } @@ -646,22 +646,22 @@ func TestBuildSwagger(t *testing.T) { } // TODO: mostly copied from the test above. reuse code to cleanup - got, err := BuildSwagger(&apiextensions.CustomResourceDefinition{ - Spec: apiextensions.CustomResourceDefinitionSpec{ + got, err := BuildSwagger(&apiextensionsv1.CustomResourceDefinition{ + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "bar.k8s.io", - Versions: []apiextensions.CustomResourceDefinitionVersion{ + Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1", Schema: validation, }, }, - Names: apiextensions.CustomResourceDefinitionNames{ + Names: apiextensionsv1.CustomResourceDefinitionNames{ Plural: "foos", Singular: "foo", Kind: "Foo", ListKind: "FooList", }, - Scope: apiextensions.NamespaceScoped, + Scope: apiextensionsv1.NamespaceScoped, }, }, "v1", tt.opts) if err != nil { diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go index f18c9f16c51..06bd37a318f 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go @@ -34,7 +34,7 @@ import ( "k8s.io/kube-openapi/pkg/handler" apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" informers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" "k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder" @@ -100,7 +100,7 @@ func (c *Controller) Run(staticSpec *spec.Swagger, openAPIService *handler.OpenA return } for _, crd := range crds { - if !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensions.Established) { + if !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensionsv1.Established) { continue } newSpecs, changed, err := buildVersionSpecs(crd, nil) @@ -164,7 +164,7 @@ func (c *Controller) sync(name string) error { } // do we have to remove all specs of this CRD? - if errors.IsNotFound(err) || !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensions.Established) { + if errors.IsNotFound(err) || !apiextensionshelpers.IsCRDConditionTrue(crd, apiextensionsv1.Established) { if _, found := c.crdSpecs[name]; !found { return nil } @@ -195,7 +195,7 @@ func (c *Controller) sync(name string) error { return c.updateSpecLocked() } -func buildVersionSpecs(crd *apiextensions.CustomResourceDefinition, oldSpecs map[string]*spec.Swagger) (map[string]*spec.Swagger, bool, error) { +func buildVersionSpecs(crd *apiextensionsv1.CustomResourceDefinition, oldSpecs map[string]*spec.Swagger) (map[string]*spec.Swagger, bool, error) { newSpecs := map[string]*spec.Swagger{} anyChanged := false for _, v := range crd.Spec.Versions { @@ -235,26 +235,26 @@ func (c *Controller) updateSpecLocked() error { } func (c *Controller) addCustomResourceDefinition(obj interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Adding customresourcedefinition %s", castObj.Name) c.enqueue(castObj) } func (c *Controller) updateCustomResourceDefinition(oldObj, newObj interface{}) { - castNewObj := newObj.(*apiextensions.CustomResourceDefinition) + castNewObj := newObj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Updating customresourcedefinition %s", castNewObj.Name) c.enqueue(castNewObj) } func (c *Controller) deleteCustomResourceDefinition(obj interface{}) { - castObj, ok := obj.(*apiextensions.CustomResourceDefinition) + castObj, ok := obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { klog.Errorf("Couldn't get object from tombstone %#v", obj) return } - castObj, ok = tombstone.Obj.(*apiextensions.CustomResourceDefinition) + castObj, ok = tombstone.Obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { klog.Errorf("Tombstone contained object that is not expected %#v", obj) return @@ -264,6 +264,6 @@ func (c *Controller) deleteCustomResourceDefinition(obj interface{}) { c.enqueue(castObj) } -func (c *Controller) enqueue(obj *apiextensions.CustomResourceDefinition) { +func (c *Controller) enqueue(obj *apiextensionsv1.CustomResourceDefinition) { c.queue.Add(obj.Name) } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller.go index 4c82065bc09..b3abd739958 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller.go @@ -35,7 +35,7 @@ import ( "k8s.io/client-go/util/workqueue" apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1" informers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" @@ -104,7 +104,7 @@ func (c *NamingConditionController) getAcceptedNamesForGroup(group string) (allR item := curr obj, exists, err := c.crdMutationCache.GetByKey(curr.Name) if exists && err == nil { - item = obj.(*apiextensions.CustomResourceDefinition) + item = obj.(*apiextensionsv1.CustomResourceDefinition) } allResources.Insert(item.Status.AcceptedNames.Plural) @@ -118,13 +118,13 @@ func (c *NamingConditionController) getAcceptedNamesForGroup(group string) (allR return allResources, allKinds } -func (c *NamingConditionController) calculateNamesAndConditions(in *apiextensions.CustomResourceDefinition) (apiextensions.CustomResourceDefinitionNames, apiextensions.CustomResourceDefinitionCondition, apiextensions.CustomResourceDefinitionCondition) { +func (c *NamingConditionController) calculateNamesAndConditions(in *apiextensionsv1.CustomResourceDefinition) (apiextensionsv1.CustomResourceDefinitionNames, apiextensionsv1.CustomResourceDefinitionCondition, apiextensionsv1.CustomResourceDefinitionCondition) { // Get the names that have already been claimed allResources, allKinds := c.getAcceptedNamesForGroup(in.Spec.Group) - namesAcceptedCondition := apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionUnknown, + namesAcceptedCondition := apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionUnknown, } requestedNames := in.Spec.Names @@ -134,14 +134,14 @@ func (c *NamingConditionController) calculateNamesAndConditions(in *apiextension // Check each name for mismatches. If there's a mismatch between spec and status, then try to deconflict. // Continue on errors so that the status is the best match possible if err := equalToAcceptedOrFresh(requestedNames.Plural, acceptedNames.Plural, allResources); err != nil { - namesAcceptedCondition.Status = apiextensions.ConditionFalse + namesAcceptedCondition.Status = apiextensionsv1.ConditionFalse namesAcceptedCondition.Reason = "PluralConflict" namesAcceptedCondition.Message = err.Error() } else { newNames.Plural = requestedNames.Plural } if err := equalToAcceptedOrFresh(requestedNames.Singular, acceptedNames.Singular, allResources); err != nil { - namesAcceptedCondition.Status = apiextensions.ConditionFalse + namesAcceptedCondition.Status = apiextensionsv1.ConditionFalse namesAcceptedCondition.Reason = "SingularConflict" namesAcceptedCondition.Message = err.Error() } else { @@ -161,7 +161,7 @@ func (c *NamingConditionController) calculateNamesAndConditions(in *apiextension } if err := utilerrors.NewAggregate(errs); err != nil { - namesAcceptedCondition.Status = apiextensions.ConditionFalse + namesAcceptedCondition.Status = apiextensionsv1.ConditionFalse namesAcceptedCondition.Reason = "ShortNamesConflict" namesAcceptedCondition.Message = err.Error() } else { @@ -170,14 +170,14 @@ func (c *NamingConditionController) calculateNamesAndConditions(in *apiextension } if err := equalToAcceptedOrFresh(requestedNames.Kind, acceptedNames.Kind, allKinds); err != nil { - namesAcceptedCondition.Status = apiextensions.ConditionFalse + namesAcceptedCondition.Status = apiextensionsv1.ConditionFalse namesAcceptedCondition.Reason = "KindConflict" namesAcceptedCondition.Message = err.Error() } else { newNames.Kind = requestedNames.Kind } if err := equalToAcceptedOrFresh(requestedNames.ListKind, acceptedNames.ListKind, allKinds); err != nil { - namesAcceptedCondition.Status = apiextensions.ConditionFalse + namesAcceptedCondition.Status = apiextensionsv1.ConditionFalse namesAcceptedCondition.Reason = "ListKindConflict" namesAcceptedCondition.Message = err.Error() } else { @@ -187,8 +187,8 @@ func (c *NamingConditionController) calculateNamesAndConditions(in *apiextension newNames.Categories = requestedNames.Categories // if we haven't changed the condition, then our names must be good. - if namesAcceptedCondition.Status == apiextensions.ConditionUnknown { - namesAcceptedCondition.Status = apiextensions.ConditionTrue + if namesAcceptedCondition.Status == apiextensionsv1.ConditionUnknown { + namesAcceptedCondition.Status = apiextensionsv1.ConditionTrue namesAcceptedCondition.Reason = "NoConflicts" namesAcceptedCondition.Message = "no conflicts found" } @@ -197,19 +197,19 @@ func (c *NamingConditionController) calculateNamesAndConditions(in *apiextension // The Establishing Controller will see the NamesAccepted condition when it arrives through the shared informer. // At that time the API endpoint handler will serve the endpoint, avoiding a race // which we had if we set Established to true here. - establishedCondition := apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Established, - Status: apiextensions.ConditionFalse, + establishedCondition := apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionFalse, Reason: "NotAccepted", Message: "not all names are accepted", } - if old := apiextensionshelpers.FindCRDCondition(in, apiextensions.Established); old != nil { + if old := apiextensionshelpers.FindCRDCondition(in, apiextensionsv1.Established); old != nil { establishedCondition = *old } - if establishedCondition.Status != apiextensions.ConditionTrue && namesAcceptedCondition.Status == apiextensions.ConditionTrue { - establishedCondition = apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Established, - Status: apiextensions.ConditionFalse, + if establishedCondition.Status != apiextensionsv1.ConditionTrue && namesAcceptedCondition.Status == apiextensionsv1.ConditionTrue { + establishedCondition = apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionFalse, Reason: "Installing", Message: "the initial names have been accepted", } @@ -252,7 +252,7 @@ func (c *NamingConditionController) sync(key string) error { // nothing to do if accepted names and NamesAccepted condition didn't change if reflect.DeepEqual(inCustomResourceDefinition.Status.AcceptedNames, acceptedNames) && - apiextensionshelpers.IsCRDConditionEquivalent(&namingCondition, apiextensionshelpers.FindCRDCondition(inCustomResourceDefinition, apiextensions.NamesAccepted)) { + apiextensionshelpers.IsCRDConditionEquivalent(&namingCondition, apiextensionshelpers.FindCRDCondition(inCustomResourceDefinition, apiextensionsv1.NamesAccepted)) { return nil } @@ -324,7 +324,7 @@ func (c *NamingConditionController) processNextWorkItem() bool { return true } -func (c *NamingConditionController) enqueue(obj *apiextensions.CustomResourceDefinition) { +func (c *NamingConditionController) enqueue(obj *apiextensionsv1.CustomResourceDefinition) { key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { utilruntime.HandleError(fmt.Errorf("couldn't get key for object %#v: %v", obj, err)) @@ -335,26 +335,26 @@ func (c *NamingConditionController) enqueue(obj *apiextensions.CustomResourceDef } func (c *NamingConditionController) addCustomResourceDefinition(obj interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Adding %s", castObj.Name) c.enqueue(castObj) } func (c *NamingConditionController) updateCustomResourceDefinition(obj, _ interface{}) { - castObj := obj.(*apiextensions.CustomResourceDefinition) + castObj := obj.(*apiextensionsv1.CustomResourceDefinition) klog.V(4).Infof("Updating %s", castObj.Name) c.enqueue(castObj) } func (c *NamingConditionController) deleteCustomResourceDefinition(obj interface{}) { - castObj, ok := obj.(*apiextensions.CustomResourceDefinition) + castObj, ok := obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { klog.Errorf("Couldn't get object from tombstone %#v", obj) return } - castObj, ok = tombstone.Obj.(*apiextensions.CustomResourceDefinition) + castObj, ok = tombstone.Obj.(*apiextensionsv1.CustomResourceDefinition) if !ok { klog.Errorf("Tombstone contained object that is not expected %#v", obj) return diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller_test.go index 8b141e2534a..5ca9eb639b3 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller_test.go @@ -23,24 +23,24 @@ import ( "time" apiextensionshelpers "k8s.io/apiextensions-apiserver/pkg/apihelpers" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/cache" ) type crdBuilder struct { - curr apiextensions.CustomResourceDefinition + curr apiextensionsv1.CustomResourceDefinition } func newCRD(name string) *crdBuilder { tokens := strings.SplitN(name, ".", 2) return &crdBuilder{ - curr: apiextensions.CustomResourceDefinition{ + curr: apiextensionsv1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{Name: name}, - Spec: apiextensions.CustomResourceDefinitionSpec{ + Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: tokens[1], - Names: apiextensions.CustomResourceDefinitionNames{ + Names: apiextensionsv1.CustomResourceDefinitionNames{ Plural: tokens[0], }, }, @@ -68,14 +68,14 @@ func (b *crdBuilder) StatusNames(plural, singular, kind, listKind string, shortN return b } -func (b *crdBuilder) Condition(c apiextensions.CustomResourceDefinitionCondition) *crdBuilder { +func (b *crdBuilder) Condition(c apiextensionsv1.CustomResourceDefinitionCondition) *crdBuilder { b.curr.Status.Conditions = append(b.curr.Status.Conditions, c) return b } -func names(plural, singular, kind, listKind string, shortNames ...string) apiextensions.CustomResourceDefinitionNames { - ret := apiextensions.CustomResourceDefinitionNames{ +func names(plural, singular, kind, listKind string, shortNames ...string) apiextensionsv1.CustomResourceDefinitionNames { + ret := apiextensionsv1.CustomResourceDefinitionNames{ Plural: plural, Singular: singular, Kind: kind, @@ -85,42 +85,42 @@ func names(plural, singular, kind, listKind string, shortNames ...string) apiext return ret } -func (b *crdBuilder) NewOrDie() *apiextensions.CustomResourceDefinition { +func (b *crdBuilder) NewOrDie() *apiextensionsv1.CustomResourceDefinition { return &b.curr } -var acceptedCondition = apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionTrue, +var acceptedCondition = apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionTrue, Reason: "NoConflicts", Message: "no conflicts found", } -var notAcceptedCondition = apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionFalse, +var notAcceptedCondition = apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionFalse, Reason: "NotAccepted", Message: "not all names are accepted", } -var installingCondition = apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Established, - Status: apiextensions.ConditionFalse, +var installingCondition = apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionFalse, Reason: "Installing", Message: "the initial names have been accepted", } -var notEstablishedCondition = apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.Established, - Status: apiextensions.ConditionFalse, +var notEstablishedCondition = apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionFalse, Reason: "NotAccepted", Message: "not all names are accepted", } -func nameConflictCondition(reason, message string) apiextensions.CustomResourceDefinitionCondition { - return apiextensions.CustomResourceDefinitionCondition{ - Type: apiextensions.NamesAccepted, - Status: apiextensions.ConditionFalse, +func nameConflictCondition(reason, message string) apiextensionsv1.CustomResourceDefinitionCondition { + return apiextensionsv1.CustomResourceDefinitionCondition{ + Type: apiextensionsv1.NamesAccepted, + Status: apiextensionsv1.ConditionFalse, Reason: reason, Message: message, } @@ -130,17 +130,17 @@ func TestSync(t *testing.T) { tests := []struct { name string - in *apiextensions.CustomResourceDefinition - existing []*apiextensions.CustomResourceDefinition - expectedNames apiextensions.CustomResourceDefinitionNames - expectedNameConflictCondition apiextensions.CustomResourceDefinitionCondition - expectedEstablishedCondition apiextensions.CustomResourceDefinitionCondition + in *apiextensionsv1.CustomResourceDefinition + existing []*apiextensionsv1.CustomResourceDefinition + expectedNames apiextensionsv1.CustomResourceDefinitionNames + expectedNameConflictCondition apiextensionsv1.CustomResourceDefinitionCondition + expectedEstablishedCondition apiextensionsv1.CustomResourceDefinitionCondition }{ { name: "first resource", in: newCRD("alfa.bravo.com").NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{}, - expectedNames: apiextensions.CustomResourceDefinitionNames{ + existing: []*apiextensionsv1.CustomResourceDefinition{}, + expectedNames: apiextensionsv1.CustomResourceDefinitionNames{ Plural: "alfa", }, expectedNameConflictCondition: acceptedCondition, @@ -149,7 +149,7 @@ func TestSync(t *testing.T) { { name: "different groups", in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2").NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("alfa.charlie.com").StatusNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2").NewOrDie(), }, expectedNames: names("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"), @@ -159,7 +159,7 @@ func TestSync(t *testing.T) { { name: "conflict plural to singular", in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2").NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "alfa", "", "").NewOrDie(), }, expectedNames: names("", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"), @@ -169,7 +169,7 @@ func TestSync(t *testing.T) { { name: "conflict singular to shortName", in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2").NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "indias", "", "", "delta-singular").NewOrDie(), }, expectedNames: names("alfa", "", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"), @@ -179,7 +179,7 @@ func TestSync(t *testing.T) { { name: "conflict on shortName to shortName", in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2").NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "indias", "", "", "hotel-shortname-2").NewOrDie(), }, expectedNames: names("alfa", "delta-singular", "echo-kind", "foxtrot-listkind"), @@ -189,7 +189,7 @@ func TestSync(t *testing.T) { { name: "conflict on kind to listkind", in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2").NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "indias", "", "echo-kind").NewOrDie(), }, expectedNames: names("alfa", "delta-singular", "", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"), @@ -199,7 +199,7 @@ func TestSync(t *testing.T) { { name: "conflict on listkind to kind", in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2").NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "indias", "foxtrot-listkind", "").NewOrDie(), }, expectedNames: names("alfa", "delta-singular", "echo-kind", "", "golf-shortname-1", "hotel-shortname-2"), @@ -209,7 +209,7 @@ func TestSync(t *testing.T) { { name: "no conflict on resource and kind", in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2").NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "echo-kind", "", "").NewOrDie(), }, expectedNames: names("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"), @@ -222,7 +222,7 @@ func TestSync(t *testing.T) { SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). StatusNames("zulu", "yankee-singular", "xray-kind", "whiskey-listkind", "victor-shortname-1", "uniform-shortname-2"). NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "indias", "foxtrot-listkind", "", "delta-singular").NewOrDie(), }, expectedNames: names("alfa", "yankee-singular", "echo-kind", "whiskey-listkind", "golf-shortname-1", "hotel-shortname-2"), @@ -235,7 +235,7 @@ func TestSync(t *testing.T) { SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). StatusNames("zulu", "yankee-singular", "xray-kind", "whiskey-listkind", "victor-shortname-1", "uniform-shortname-2"). NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "indias", "foxtrot-listkind", "", "delta-singular", "golf-shortname-1").NewOrDie(), }, expectedNames: names("alfa", "yankee-singular", "echo-kind", "whiskey-listkind", "victor-shortname-1", "uniform-shortname-2"), @@ -248,7 +248,7 @@ func TestSync(t *testing.T) { SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). StatusNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("alfa.bravo.com"). SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). StatusNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). @@ -264,7 +264,7 @@ func TestSync(t *testing.T) { SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1"). StatusNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("alfa.bravo.com"). SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). StatusNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). @@ -277,8 +277,8 @@ func TestSync(t *testing.T) { { name: "installing before with true condition", in: newCRD("alfa.bravo.com").Condition(acceptedCondition).NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{}, - expectedNames: apiextensions.CustomResourceDefinitionNames{ + existing: []*apiextensionsv1.CustomResourceDefinition{}, + expectedNames: apiextensionsv1.CustomResourceDefinitionNames{ Plural: "alfa", }, expectedNameConflictCondition: acceptedCondition, @@ -287,8 +287,8 @@ func TestSync(t *testing.T) { { name: "not installing before with false condition", in: newCRD("alfa.bravo.com").Condition(notAcceptedCondition).NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{}, - expectedNames: apiextensions.CustomResourceDefinitionNames{ + existing: []*apiextensionsv1.CustomResourceDefinition{}, + expectedNames: apiextensionsv1.CustomResourceDefinitionNames{ Plural: "alfa", }, expectedNameConflictCondition: acceptedCondition, @@ -299,7 +299,7 @@ func TestSync(t *testing.T) { in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). Condition(acceptedCondition). NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "alfa", "", "").NewOrDie(), }, expectedNames: names("", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"), @@ -311,7 +311,7 @@ func TestSync(t *testing.T) { in: newCRD("alfa.bravo.com").SpecNames("alfa", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"). Condition(notAcceptedCondition). NewOrDie(), - existing: []*apiextensions.CustomResourceDefinition{ + existing: []*apiextensionsv1.CustomResourceDefinition{ newCRD("india.bravo.com").StatusNames("india", "alfa", "", "").NewOrDie(), }, expectedNames: names("", "delta-singular", "echo-kind", "foxtrot-listkind", "golf-shortname-1", "hotel-shortname-2"), diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd_test.go index 66c749e9610..1bd740d7fff 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd_test.go @@ -40,7 +40,7 @@ import ( etcd3testing "k8s.io/apiserver/pkg/storage/etcd3/testing" apiextensionsinternal "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apiextensions-apiserver/pkg/apiserver" "k8s.io/apiextensions-apiserver/pkg/crdserverscheme" "k8s.io/apiextensions-apiserver/pkg/registry/customresource" @@ -76,7 +76,7 @@ func newStorage(t *testing.T) (customresource.CustomResourceStorage, *etcd3testi status := &apiextensionsinternal.CustomResourceSubresourceStatus{} - headers := []apiextensions.CustomResourceColumnDefinition{ + headers := []apiextensionsv1.CustomResourceColumnDefinition{ {Name: "Age", Type: "date", JSONPath: ".metadata.creationTimestamp"}, {Name: "Replicas", Type: "integer", JSONPath: ".spec.replicas"}, {Name: "Missing", Type: "string", JSONPath: ".spec.missing"}, diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor/tableconvertor.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor/tableconvertor.go index e335cecc04a..ba807103cde 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor/tableconvertor.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor/tableconvertor.go @@ -23,7 +23,7 @@ import ( "fmt" "reflect" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apimachinery/pkg/api/meta" metatable "k8s.io/apimachinery/pkg/api/meta/table" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -36,7 +36,7 @@ var swaggerMetadataDescriptions = metav1.ObjectMeta{}.SwaggerDoc() // New creates a new table convertor for the provided CRD column definition. If the printer definition cannot be parsed, // error will be returned along with a default table convertor. -func New(crdColumns []apiextensions.CustomResourceColumnDefinition) (rest.TableConvertor, error) { +func New(crdColumns []apiextensionsv1.CustomResourceColumnDefinition) (rest.TableConvertor, error) { headers := []metav1.TableColumnDefinition{ {Name: "Name", Type: "string", Format: "name", Description: swaggerMetadataDescriptions["name"]}, }