patch CRD on operator update (#558)
* patch existing CRD each time there is an operator update
This commit is contained in:
		
							parent
							
								
									0fbfbb23bb
								
							
						
					
					
						commit
						ad0b250b5b
					
				| 
						 | 
					@ -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