check if crd exist before try creating them
This commit is contained in:
		| @@ -40,7 +40,6 @@ type Config struct { | ||||
| 	InCluster      bool   `json:"inCluster"` | ||||
| 	KubeConfigFile string `json:"kubeConfigFile"` | ||||
| 	UseTPR         bool   `json:"useTPR"` // Flag option to use TPRs instead of CRDs | ||||
| 	NoCrdCreation  bool   `json:"noCrdCreation"` // Flag to disable creation of CRDs at cluster level | ||||
| } | ||||
|  | ||||
| // Open returns a storage using Kubernetes third party resource. | ||||
| @@ -86,7 +85,7 @@ func (c *Config) open(logger logrus.FieldLogger, waitForResources bool) (*client | ||||
| 	} | ||||
|  | ||||
| 	ctx, cancel := context.WithCancel(context.Background()) | ||||
| 	if !c.NoCrdCreation { | ||||
|  | ||||
| 	logger.Info("creating custom Kubernetes resources") | ||||
| 	if !cli.registerCustomResources(c.UseTPR) { | ||||
| 		if waitForResources { | ||||
| @@ -119,7 +118,6 @@ func (c *Config) open(logger logrus.FieldLogger, waitForResources bool) (*client | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
| 	} | ||||
|  | ||||
| 	// If the client is closed, stop trying to create resources. | ||||
| 	cli.cancel = cancel | ||||
| @@ -150,6 +148,12 @@ func (cli *client) registerCustomResources(useTPR bool) (ok bool) { | ||||
| 			resourceName = r.ObjectMeta.Name | ||||
| 		} else { | ||||
| 			r := customResourceDefinitions[i] | ||||
| 			var i interface{} | ||||
| 			cli.logger.Infof("checking if resource %s has been created already...", r.ObjectMeta.Name) | ||||
| 			if err := cli.list(r.Spec.Names.Plural, &i); err == nil { | ||||
| 				cli.logger.Infof("The custom resource already created %s, hence continue", r.ObjectMeta.Name) | ||||
| 				continue | ||||
| 			} | ||||
| 			err = cli.postResource("apiextensions.k8s.io/v1beta1", "", "customresourcedefinitions", r) | ||||
| 			resourceName = r.ObjectMeta.Name | ||||
| 		} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user