patch existing CRD each time there is an operator update
This commit is contained in:
		
							parent
							
								
									8f9dfffef1
								
							
						
					
					
						commit
						e084bc587a
					
				|  | @ -25,6 +25,7 @@ rules: | ||||||
|   verbs: |   verbs: | ||||||
|   - create |   - create | ||||||
|   - get |   - get | ||||||
|  |   - patch | ||||||
| - apiGroups: | - apiGroups: | ||||||
|   - "" |   - "" | ||||||
|   resources: |   resources: | ||||||
|  |  | ||||||
|  | @ -1,11 +1,13 @@ | ||||||
| package controller | package controller | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 
 | 
 | ||||||
| 	"k8s.io/api/core/v1" | 	"k8s.io/api/core/v1" | ||||||
| 	apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" | 	apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
|  | 	"k8s.io/apimachinery/pkg/types" | ||||||
| 	"k8s.io/apimachinery/pkg/util/wait" | 	"k8s.io/apimachinery/pkg/util/wait" | ||||||
| 
 | 
 | ||||||
| 	acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1" | 	acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1" | ||||||
|  | @ -52,7 +54,15 @@ func (c *Controller) createOperatorCRD(crd *apiextv1beta1.CustomResourceDefiniti | ||||||
| 		if !k8sutil.ResourceAlreadyExists(err) { | 		if !k8sutil.ResourceAlreadyExists(err) { | ||||||
| 			return fmt.Errorf("could not create customResourceDefinition: %v", err) | 			return fmt.Errorf("could not create customResourceDefinition: %v", err) | ||||||
| 		} | 		} | ||||||
| 		c.logger.Infof("customResourceDefinition %q is already registered", crd.Name) | 		c.logger.Infof("customResourceDefinition %q is already registered and will only be updated", crd.Name) | ||||||
|  | 
 | ||||||
|  | 		patch, err := json.Marshal(crd) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return fmt.Errorf("could not marshal new customResourceDefintion: %v", err) | ||||||
|  | 		} | ||||||
|  | 		if _, err := c.KubeClient.CustomResourceDefinitions().Patch(crd.Name, types.MergePatchType, patch); err != nil { | ||||||
|  | 			return fmt.Errorf("could not update customResourceDefinition: %v", err) | ||||||
|  | 		} | ||||||
| 	} else { | 	} else { | ||||||
| 		c.logger.Infof("customResourceDefinition %q has been registered", crd.Name) | 		c.logger.Infof("customResourceDefinition %q has been registered", crd.Name) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue