allow it to disable CRD creation
This commit is contained in:
		| @@ -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 |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user