Skip to content

Commit a4fcb71

Browse files
committed
Don't error if the CRD is already present.
Fixes #342 Closes #457 Signed-off-by: Pires <pjpires@gmail.com>
1 parent 198197f commit a4fcb71

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

pkg/envtest/crd.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import (
2727

2828
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
2929
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
30+
apierrors "k8s.io/apimachinery/pkg/api/errors"
31+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3032
"k8s.io/apimachinery/pkg/runtime/schema"
3133
"k8s.io/apimachinery/pkg/util/sets"
3234
"k8s.io/apimachinery/pkg/util/wait"
@@ -190,8 +192,17 @@ func CreateCRDs(config *rest.Config, crds []*apiextensionsv1beta1.CustomResource
190192
// Create each CRD
191193
for _, crd := range crds {
192194
log.V(1).Info("installing CRD", "crd", crd.Name)
193-
if _, err := cs.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd); err != nil {
194-
return err
195+
var err error
196+
if _, err = cs.ApiextensionsV1beta1().CustomResourceDefinitions().Get(crd.Name, metav1.GetOptions{}); err != nil {
197+
if apierrors.IsNotFound(err) {
198+
_, err = cs.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd)
199+
}
200+
if apierrors.IsAlreadyExists(err) {
201+
_, err = cs.ApiextensionsV1beta1().CustomResourceDefinitions().Update(crd)
202+
}
203+
if err != nil {
204+
return err
205+
}
195206
}
196207
}
197208
return nil

0 commit comments

Comments
 (0)