check if crd exist before try creating them
This commit is contained in:
		| @@ -40,7 +40,6 @@ type Config struct { | |||||||
| 	InCluster      bool   `json:"inCluster"` | 	InCluster      bool   `json:"inCluster"` | ||||||
| 	KubeConfigFile string `json:"kubeConfigFile"` | 	KubeConfigFile string `json:"kubeConfigFile"` | ||||||
| 	UseTPR         bool   `json:"useTPR"` // Flag option to use TPRs instead of CRDs | 	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. | // 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()) | 	ctx, cancel := context.WithCancel(context.Background()) | ||||||
| 	if !c.NoCrdCreation { |  | ||||||
| 	logger.Info("creating custom Kubernetes resources") | 	logger.Info("creating custom Kubernetes resources") | ||||||
| 	if !cli.registerCustomResources(c.UseTPR) { | 	if !cli.registerCustomResources(c.UseTPR) { | ||||||
| 		if waitForResources { | 		if waitForResources { | ||||||
| @@ -119,7 +118,6 @@ func (c *Config) open(logger logrus.FieldLogger, waitForResources bool) (*client | |||||||
| 			return nil, err | 			return nil, err | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// If the client is closed, stop trying to create resources. | 	// If the client is closed, stop trying to create resources. | ||||||
| 	cli.cancel = cancel | 	cli.cancel = cancel | ||||||
| @@ -150,6 +148,12 @@ func (cli *client) registerCustomResources(useTPR bool) (ok bool) { | |||||||
| 			resourceName = r.ObjectMeta.Name | 			resourceName = r.ObjectMeta.Name | ||||||
| 		} else { | 		} else { | ||||||
| 			r := customResourceDefinitions[i] | 			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) | 			err = cli.postResource("apiextensions.k8s.io/v1beta1", "", "customresourcedefinitions", r) | ||||||
| 			resourceName = r.ObjectMeta.Name | 			resourceName = r.ObjectMeta.Name | ||||||
| 		} | 		} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user