check if crd exist before try creating them
This commit is contained in:
parent
d2daa4e2ac
commit
9b5bec1ddf
1 changed files with 33 additions and 29 deletions
|
@ -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 a new issue