Commit 9b5bec1d authored by Song.Jin's avatar Song.Jin

check if crd exist before try creating them

parent d2daa4e2
...@@ -40,7 +40,6 @@ type Config struct { ...@@ -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 ...@@ -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 ...@@ -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) { ...@@ -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
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment