mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #81989 from RainbowMango/pr_cleanup_staticcheck_for_apiextension
Cleanup staticcheck issues for apiextension
This commit is contained in:
commit
d82ab4054d
@ -126,16 +126,6 @@ test/integration/serving
|
|||||||
test/integration/ttlcontroller
|
test/integration/ttlcontroller
|
||||||
test/integration/volume
|
test/integration/volume
|
||||||
test/utils
|
test/utils
|
||||||
vendor/k8s.io/apiextensions-apiserver/pkg/apiserver
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/conversion
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/schema
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/objectmeta
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/test/integration
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/test/integration/conversion
|
|
||||||
vendor/k8s.io/apiextensions-apiserver/test/integration/fixtures
|
|
||||||
vendor/k8s.io/apimachinery/pkg/api/meta
|
vendor/k8s.io/apimachinery/pkg/api/meta
|
||||||
vendor/k8s.io/apimachinery/pkg/api/resource
|
vendor/k8s.io/apimachinery/pkg/api/resource
|
||||||
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured
|
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured
|
||||||
|
@ -112,16 +112,6 @@ func (f *webhookConverterFactory) NewWebhookConverter(crd *internal.CustomResour
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// hasConversionReviewVersion check whether a version is accepted by a given webhook.
|
|
||||||
func (c *webhookConverter) hasConversionReviewVersion(v string) bool {
|
|
||||||
for _, b := range c.conversionReviewVersions {
|
|
||||||
if b == v {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// getObjectsToConvert returns a list of objects requiring conversion.
|
// getObjectsToConvert returns a list of objects requiring conversion.
|
||||||
// if obj is a list, getObjectsToConvert returns a (potentially empty) list of the items that are not already in the desired version.
|
// if obj is a list, getObjectsToConvert returns a (potentially empty) list of the items that are not already in the desired version.
|
||||||
// if obj is not a list, and is already in the desired version, getObjectsToConvert returns an empty list.
|
// if obj is not a list, and is already in the desired version, getObjectsToConvert returns an empty list.
|
||||||
|
@ -96,6 +96,9 @@ func TestConvertFieldLabel(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
_, c, err := f.NewConverter(&crd)
|
_, c, err := f.NewConverter(&crd)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to create CR converter. error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
label, value, err := c.ConvertFieldLabel(schema.GroupVersionKind{}, test.label, "value")
|
label, value, err := c.ConvertFieldLabel(schema.GroupVersionKind{}, test.label, "value")
|
||||||
if e, a := test.expectError, err != nil; e != a {
|
if e, a := test.expectError, err != nil; e != a {
|
||||||
|
@ -19,7 +19,6 @@ package schema
|
|||||||
import (
|
import (
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -31,8 +30,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/json"
|
"k8s.io/apimachinery/pkg/util/json"
|
||||||
)
|
)
|
||||||
|
|
||||||
var nullTypeRE = regexp.MustCompile(`"type":\["([^"]*)","null"]`)
|
|
||||||
|
|
||||||
func TestStructuralRoundtrip(t *testing.T) {
|
func TestStructuralRoundtrip(t *testing.T) {
|
||||||
f := fuzz.New()
|
f := fuzz.New()
|
||||||
seed := time.Now().UnixNano()
|
seed := time.Now().UnixNano()
|
||||||
|
@ -225,18 +225,6 @@ func required(path ...string) validationMatch {
|
|||||||
func invalid(path ...string) validationMatch {
|
func invalid(path ...string) validationMatch {
|
||||||
return validationMatch{path: field.NewPath(path[0], path[1:]...), errorType: field.ErrorTypeInvalid}
|
return validationMatch{path: field.NewPath(path[0], path[1:]...), errorType: field.ErrorTypeInvalid}
|
||||||
}
|
}
|
||||||
func invalidIndex(index int, path ...string) validationMatch {
|
|
||||||
return validationMatch{path: field.NewPath(path[0], path[1:]...).Index(index), errorType: field.ErrorTypeInvalid}
|
|
||||||
}
|
|
||||||
func unsupported(path ...string) validationMatch {
|
|
||||||
return validationMatch{path: field.NewPath(path[0], path[1:]...), errorType: field.ErrorTypeNotSupported}
|
|
||||||
}
|
|
||||||
func immutable(path ...string) validationMatch {
|
|
||||||
return validationMatch{path: field.NewPath(path[0], path[1:]...), errorType: field.ErrorTypeInvalid}
|
|
||||||
}
|
|
||||||
func forbidden(path ...string) validationMatch {
|
|
||||||
return validationMatch{path: field.NewPath(path[0], path[1:]...), errorType: field.ErrorTypeForbidden}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v validationMatch) matches(err *field.Error) bool {
|
func (v validationMatch) matches(err *field.Error) bool {
|
||||||
return err.Type == v.errorType && err.Field == v.path.String()
|
return err.Type == v.errorType && err.Field == v.path.String()
|
||||||
|
@ -636,6 +636,7 @@ func BenchmarkDeepCopy(b *testing.B) {
|
|||||||
|
|
||||||
b.StartTimer()
|
b.StartTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
|
//lint:ignore SA4010 the result of append is never used, it's acceptable since in benchmark testing.
|
||||||
instances = append(instances, runtime.DeepCopyJSON(obj))
|
instances = append(instances, runtime.DeepCopyJSON(obj))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,8 +149,7 @@ func (c *CRDFinalizer) sync(key string) error {
|
|||||||
cond, deleteErr := c.deleteInstances(crd)
|
cond, deleteErr := c.deleteInstances(crd)
|
||||||
apiextensions.SetCRDCondition(crd, cond)
|
apiextensions.SetCRDCondition(crd, cond)
|
||||||
if deleteErr != nil {
|
if deleteErr != nil {
|
||||||
crd, err = c.crdClient.CustomResourceDefinitions().UpdateStatus(crd)
|
if _, err = c.crdClient.CustomResourceDefinitions().UpdateStatus(crd); err != nil {
|
||||||
if err != nil {
|
|
||||||
utilruntime.HandleError(err)
|
utilruntime.HandleError(err)
|
||||||
}
|
}
|
||||||
return deleteErr
|
return deleteErr
|
||||||
@ -165,7 +164,7 @@ func (c *CRDFinalizer) sync(key string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
apiextensions.CRDRemoveFinalizer(crd, apiextensions.CustomResourceCleanupFinalizer)
|
apiextensions.CRDRemoveFinalizer(crd, apiextensions.CustomResourceCleanupFinalizer)
|
||||||
crd, err = c.crdClient.CustomResourceDefinitions().UpdateStatus(crd)
|
_, err = c.crdClient.CustomResourceDefinitions().UpdateStatus(crd)
|
||||||
if apierrors.IsNotFound(err) || apierrors.IsConflict(err) {
|
if apierrors.IsNotFound(err) || apierrors.IsConflict(err) {
|
||||||
// deleted or changed in the meantime, we'll get called again
|
// deleted or changed in the meantime, we'll get called again
|
||||||
return nil
|
return nil
|
||||||
|
@ -342,7 +342,7 @@ func scaleFromCustomResource(cr *unstructured.Unstructured, specReplicasPath, st
|
|||||||
var labelSelector string
|
var labelSelector string
|
||||||
if len(labelSelectorPath) > 0 {
|
if len(labelSelectorPath) > 0 {
|
||||||
labelSelectorPath = strings.TrimPrefix(labelSelectorPath, ".") // ignore leading period
|
labelSelectorPath = strings.TrimPrefix(labelSelectorPath, ".") // ignore leading period
|
||||||
labelSelector, found, err = unstructured.NestedString(cr.UnstructuredContent(), strings.Split(labelSelectorPath, ".")...)
|
labelSelector, _, err = unstructured.NestedString(cr.UnstructuredContent(), strings.Split(labelSelectorPath, ".")...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
@ -524,8 +524,7 @@ func TestDiscovery(t *testing.T) {
|
|||||||
|
|
||||||
scope := apiextensionsv1beta1.NamespaceScoped
|
scope := apiextensionsv1beta1.NamespaceScoped
|
||||||
noxuDefinition := fixtures.NewNoxuCustomResourceDefinition(scope)
|
noxuDefinition := fixtures.NewNoxuCustomResourceDefinition(scope)
|
||||||
noxuDefinition, err = fixtures.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient)
|
if _, err = fixtures.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -828,12 +827,18 @@ func TestCrossNamespaceListWatch(t *testing.T) {
|
|||||||
noxuNamespacedResourceClient1 := newNamespacedCustomResourceClient(ns1, dynamicClient, noxuDefinition)
|
noxuNamespacedResourceClient1 := newNamespacedCustomResourceClient(ns1, dynamicClient, noxuDefinition)
|
||||||
instances[ns1] = createInstanceWithNamespaceHelper(t, ns1, "foo1", noxuNamespacedResourceClient1, noxuDefinition)
|
instances[ns1] = createInstanceWithNamespaceHelper(t, ns1, "foo1", noxuNamespacedResourceClient1, noxuDefinition)
|
||||||
noxuNamespacesWatch1, err := noxuNamespacedResourceClient1.Watch(metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()})
|
noxuNamespacesWatch1, err := noxuNamespacedResourceClient1.Watch(metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to watch namespace: %s, error: %v", ns1, err)
|
||||||
|
}
|
||||||
defer noxuNamespacesWatch1.Stop()
|
defer noxuNamespacesWatch1.Stop()
|
||||||
|
|
||||||
ns2 := "namespace-2"
|
ns2 := "namespace-2"
|
||||||
noxuNamespacedResourceClient2 := newNamespacedCustomResourceClient(ns2, dynamicClient, noxuDefinition)
|
noxuNamespacedResourceClient2 := newNamespacedCustomResourceClient(ns2, dynamicClient, noxuDefinition)
|
||||||
instances[ns2] = createInstanceWithNamespaceHelper(t, ns2, "foo2", noxuNamespacedResourceClient2, noxuDefinition)
|
instances[ns2] = createInstanceWithNamespaceHelper(t, ns2, "foo2", noxuNamespacedResourceClient2, noxuDefinition)
|
||||||
noxuNamespacesWatch2, err := noxuNamespacedResourceClient2.Watch(metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()})
|
noxuNamespacesWatch2, err := noxuNamespacedResourceClient2.Watch(metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to watch namespace: %s, error: %v", ns2, err)
|
||||||
|
}
|
||||||
defer noxuNamespacesWatch2.Stop()
|
defer noxuNamespacesWatch2.Stop()
|
||||||
|
|
||||||
createdList, err := noxuResourceClient.List(metav1.ListOptions{})
|
createdList, err := noxuResourceClient.List(metav1.ListOptions{})
|
||||||
|
@ -73,9 +73,12 @@ func TestChangeCRD(t *testing.T) {
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
time.Sleep(10 * time.Millisecond)
|
||||||
|
|
||||||
noxuDefinitionToUpdate, err := apiExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Get(noxuDefinition.Name, metav1.GetOptions{})
|
noxuDefinitionToUpdate, err := apiExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Get(noxuDefinition.Name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
if len(noxuDefinitionToUpdate.Spec.Versions) == 1 {
|
if len(noxuDefinitionToUpdate.Spec.Versions) == 1 {
|
||||||
v2 := noxuDefinitionToUpdate.Spec.Versions[0]
|
v2 := noxuDefinitionToUpdate.Spec.Versions[0]
|
||||||
@ -87,9 +90,9 @@ func TestChangeCRD(t *testing.T) {
|
|||||||
noxuDefinitionToUpdate.Spec.Versions = noxuDefinitionToUpdate.Spec.Versions[0:1]
|
noxuDefinitionToUpdate.Spec.Versions = noxuDefinitionToUpdate.Spec.Versions[0:1]
|
||||||
}
|
}
|
||||||
if _, err := apiExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(noxuDefinitionToUpdate); err != nil && !apierrors.IsConflict(err) {
|
if _, err := apiExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(noxuDefinitionToUpdate); err != nil && !apierrors.IsConflict(err) {
|
||||||
t.Fatal(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
time.Sleep(10 * time.Millisecond)
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -100,18 +103,20 @@ func TestChangeCRD(t *testing.T) {
|
|||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, fmt.Sprintf("foo-%d", i))
|
noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, fmt.Sprintf("foo-%d", i))
|
||||||
if _, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}); err != nil {
|
if _, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}); err != nil {
|
||||||
t.Fatal(err)
|
t.Error(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
|
time.Sleep(10 * time.Millisecond)
|
||||||
select {
|
select {
|
||||||
case <-stopChan:
|
case <-stopChan:
|
||||||
return
|
return
|
||||||
default:
|
default:
|
||||||
if _, err := noxuNamespacedResourceClient.Get(noxuInstanceToCreate.GetName(), metav1.GetOptions{}); err != nil {
|
if _, err := noxuNamespacedResourceClient.Get(noxuInstanceToCreate.GetName(), metav1.GetOptions{}); err != nil {
|
||||||
t.Fatal(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
time.Sleep(10 * time.Millisecond)
|
|
||||||
}
|
}
|
||||||
}(i)
|
}(i)
|
||||||
|
|
||||||
@ -119,13 +124,15 @@ func TestChangeCRD(t *testing.T) {
|
|||||||
go func(i int) {
|
go func(i int) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
for {
|
for {
|
||||||
|
time.Sleep(10 * time.Millisecond)
|
||||||
select {
|
select {
|
||||||
case <-stopChan:
|
case <-stopChan:
|
||||||
return
|
return
|
||||||
default:
|
default:
|
||||||
w, err := noxuNamespacedResourceClient.Watch(metav1.ListOptions{})
|
w, err := noxuNamespacedResourceClient.Watch(metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error establishing watch: %v", err)
|
t.Errorf("unexpected error establishing watch: %v", err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
for event := range w.ResultChan() {
|
for event := range w.ResultChan() {
|
||||||
switch event.Type {
|
switch event.Type {
|
||||||
@ -136,7 +143,6 @@ func TestChangeCRD(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
time.Sleep(10 * time.Millisecond)
|
|
||||||
}
|
}
|
||||||
}(i)
|
}(i)
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,6 @@ import (
|
|||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
|
||||||
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
||||||
apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features"
|
apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features"
|
||||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||||
@ -271,8 +270,7 @@ func validateStorageVersion(t *testing.T, ctc *conversionTestContext) {
|
|||||||
}
|
}
|
||||||
ctc.setAndWaitStorageVersion(t, "v1beta2")
|
ctc.setAndWaitStorageVersion(t, "v1beta2")
|
||||||
|
|
||||||
obj, err = client.Get(obj.GetName(), metav1.GetOptions{})
|
if _, err = client.Get(obj.GetName(), metav1.GetOptions{}); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -942,7 +940,6 @@ type conversionTestContext struct {
|
|||||||
namespace string
|
namespace string
|
||||||
apiExtensionsClient clientset.Interface
|
apiExtensionsClient clientset.Interface
|
||||||
dynamicClient dynamic.Interface
|
dynamicClient dynamic.Interface
|
||||||
options *options.CustomResourceDefinitionsServerOptions
|
|
||||||
crd *apiextensionsv1beta1.CustomResourceDefinition
|
crd *apiextensionsv1beta1.CustomResourceDefinition
|
||||||
etcdObjectReader *storage.EtcdObjectReader
|
etcdObjectReader *storage.EtcdObjectReader
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,9 @@ import (
|
|||||||
func StartDefaultServer(t servertesting.Logger, flags ...string) (func(), *rest.Config, *options.CustomResourceDefinitionsServerOptions, error) {
|
func StartDefaultServer(t servertesting.Logger, flags ...string) (func(), *rest.Config, *options.CustomResourceDefinitionsServerOptions, error) {
|
||||||
// create kubeconfig which will not actually be used. But authz/authn needs it to startup.
|
// create kubeconfig which will not actually be used. But authz/authn needs it to startup.
|
||||||
fakeKubeConfig, err := ioutil.TempFile("", "kubeconfig")
|
fakeKubeConfig, err := ioutil.TempFile("", "kubeconfig")
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
fakeKubeConfig.WriteString(`
|
fakeKubeConfig.WriteString(`
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Config
|
kind: Config
|
||||||
|
@ -536,7 +536,7 @@ func TestValidateOnlyStatus(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error setting .status.num: %v", err)
|
t.Fatalf("unexpected error setting .status.num: %v", err)
|
||||||
}
|
}
|
||||||
createdNoxuInstance, err = noxuResourceClient.UpdateStatus(createdNoxuInstance, metav1.UpdateOptions{})
|
_, err = noxuResourceClient.UpdateStatus(createdNoxuInstance, metav1.UpdateOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("expected error, but got none")
|
t.Fatal("expected error, but got none")
|
||||||
}
|
}
|
||||||
|
@ -582,8 +582,7 @@ spec:
|
|||||||
|
|
||||||
// create CRDs
|
// create CRDs
|
||||||
t.Logf("Creating CRD %s", crd.Name)
|
t.Logf("Creating CRD %s", crd.Name)
|
||||||
crd, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd)
|
if _, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected create error: %v", err)
|
t.Fatalf("unexpected create error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -613,8 +612,7 @@ spec:
|
|||||||
t.Fatalf("unexpected get error: %v", err)
|
t.Fatalf("unexpected get error: %v", err)
|
||||||
}
|
}
|
||||||
crd.Spec.Validation = nil
|
crd.Spec.Validation = nil
|
||||||
crd, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(crd)
|
if _, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(crd); apierrors.IsConflict(err) {
|
||||||
if apierrors.IsConflict(err) {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -647,8 +645,7 @@ spec:
|
|||||||
t.Fatalf("unexpected get error: %v", err)
|
t.Fatalf("unexpected get error: %v", err)
|
||||||
}
|
}
|
||||||
crd.Spec.Validation = &apiextensionsv1beta1.CustomResourceValidation{OpenAPIV3Schema: origSchema}
|
crd.Spec.Validation = &apiextensionsv1beta1.CustomResourceValidation{OpenAPIV3Schema: origSchema}
|
||||||
crd, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(crd)
|
if _, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(crd); apierrors.IsConflict(err) {
|
||||||
if apierrors.IsConflict(err) {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user