allow it to disable CRD creation

This commit is contained in:
Song.Jin 2018-11-02 20:24:40 +11:00
parent 65b0c91992
commit d2daa4e2ac

View file

@ -40,6 +40,7 @@ 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.
@ -85,37 +86,38 @@ 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")
if !cli.registerCustomResources(c.UseTPR) {
if waitForResources {
cancel()
return nil, fmt.Errorf("failed creating custom resources")
}
logger.Info("creating custom Kubernetes resources") // Try to synchronously create the custom resources once. This doesn't mean
if !cli.registerCustomResources(c.UseTPR) { // they'll immediately be available, but ensures that the client will actually try
if waitForResources { // once.
cancel() logger.Errorf("failed creating custom resources: %v", err)
return nil, fmt.Errorf("failed creating custom resources") go func() {
for {
if cli.registerCustomResources(c.UseTPR) {
return
}
select {
case <-ctx.Done():
return
case <-time.After(30 * time.Second):
}
}
}()
} }
// Try to synchronously create the custom resources once. This doesn't mean if waitForResources {
// they'll immediately be available, but ensures that the client will actually try if err := cli.waitForCRDs(ctx); err != nil {
// once. cancel()
logger.Errorf("failed creating custom resources: %v", err) return nil, err
go func() {
for {
if cli.registerCustomResources(c.UseTPR) {
return
}
select {
case <-ctx.Done():
return
case <-time.After(30 * time.Second):
}
} }
}()
}
if waitForResources {
if err := cli.waitForCRDs(ctx); err != nil {
cancel()
return nil, err
} }
} }