Handle update path and renaming
- handle the update path to update sts and connection pooler deployment. This way no need to wait for sync - rename the parameter to downscaler_annotations - handle other review comments
This commit is contained in:
		
							parent
							
								
									1745c44c5e
								
							
						
					
					
						commit
						11ef0cf722
					
				|  | @ -166,11 +166,6 @@ These parameters are grouped directly under  the `spec` key in the manifest. | |||
|   If you set the `all` special item, it will be mounted in all containers (postgres + sidecars). | ||||
|   Else you can set the list of target containers in which the additional volumes will be mounted (eg : postgres, telegraf) | ||||
| 
 | ||||
|   * **statefulset_propagate_annotations** | ||||
|   An array of annotations from PostgresCRD that should be passed on to the statefulsets. | ||||
|   This also accepts the regular expression like downscaler/*, etc. | ||||
|   These annotations will also be passed to the connection-pooler deployments if any. | ||||
| 
 | ||||
| ## Postgres parameters | ||||
| 
 | ||||
| Those parameters are grouped under the `postgresql` top-level key, which is | ||||
|  |  | |||
|  | @ -151,7 +151,7 @@ Those are top-level keys, containing both leaf keys and groups. | |||
|   [operator deployment manually](../../manifests/postgres-operator.yaml#L20). | ||||
|   The default is `false`. | ||||
| 
 | ||||
| * **statefulset_propagate_annotations** | ||||
| * **downscaler_annotations** | ||||
|   An array of annotations from PostgresCRD that should be passed on to the statefulsets. | ||||
|   This also accepts the regular expression like downscaler/*, etc. | ||||
|   These annotations will also be passed to the connection-pooler deployments if any. | ||||
|  |  | |||
|  | @ -502,7 +502,7 @@ class EndToEndTestCase(unittest.TestCase): | |||
| 
 | ||||
|         patch_sset_propagate_annotations = { | ||||
|             "data": { | ||||
|                 "statefulset_propagate_annotations": "deployment-time,downscaler/*", | ||||
|                 "downscaler_annotations": "deployment-time,downscaler/*", | ||||
|             } | ||||
|         } | ||||
|         k8s.update_config(patch_sset_propagate_annotations) | ||||
|  |  | |||
|  | @ -94,7 +94,7 @@ data: | |||
|   # sidecar_docker_images: "" | ||||
|   # set_memory_request_to_limit: "false" | ||||
|   spilo_privileged: "false" | ||||
|   # statefulset_propagate_annotations: "deployment-time,downscaler/*" | ||||
|   # downscaler_annotations: "deployment-time,downscaler/*" | ||||
|   super_username: postgres | ||||
|   # team_admin_role: "admin" | ||||
|   # team_api_role_configuration: "log_statement:all" | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ spec: | |||
|         configuration: | ||||
|           type: object | ||||
|           properties: | ||||
|             # statefulset_propagate_annotations: | ||||
|             # downscaler_annotations: | ||||
|             #   type: array | ||||
|             #   items: | ||||
|             #     type: string | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ metadata: | |||
|   name: postgresql-operator-default-configuration | ||||
| configuration: | ||||
|   docker_image: registry.opensource.zalan.do/acid/spilo-cdp-12:1.6-p115 | ||||
|   # statefulset_propagate_annotations: | ||||
|   # downscaler_annotations: | ||||
|   #   - deployment-time | ||||
|   #   - downscaler/* | ||||
|   # enable_crd_validation: true | ||||
|  |  | |||
|  | @ -888,7 +888,7 @@ var OperatorConfigCRDResourceValidation = apiextv1beta1.CustomResourceValidation | |||
| 									}, | ||||
| 								}, | ||||
| 							}, | ||||
| 							"statefulset_propagate_annotations": { | ||||
| 							"downscaler_annotations": { | ||||
| 								Type: "array", | ||||
| 								Items: &apiextv1beta1.JSONSchemaPropsOrArray{ | ||||
| 									Schema: &apiextv1beta1.JSONSchemaProps{ | ||||
|  |  | |||
|  | @ -73,7 +73,7 @@ type KubernetesMetaConfiguration struct { | |||
| 	EnablePodAntiAffinity      bool                `json:"enable_pod_antiaffinity,omitempty"` | ||||
| 	PodAntiAffinityTopologyKey string              `json:"pod_antiaffinity_topology_key,omitempty"` | ||||
| 	PodManagementPolicy        string              `json:"pod_management_policy,omitempty"` | ||||
| 	StatefulsetPropagateAnnotations []string            `json:"statefulset_propagate_annotations,omitempty"` | ||||
| 	DownscalerAnnotations      []string            `json:"downscaler_annotations,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // PostgresPodResourcesDefaults defines the spec of default resources
 | ||||
|  | @ -210,7 +210,7 @@ type OperatorConfigurationData struct { | |||
| 	Scalyr                     ScalyrConfiguration                `json:"scalyr"` | ||||
| 	LogicalBackup              OperatorLogicalBackupConfiguration `json:"logical_backup"` | ||||
| 	ConnectionPooler           ConnectionPoolerConfiguration      `json:"connection_pooler"` | ||||
| 	StatefulsetPropagateAnnotations []string                           `json:"statefulset_propagate_annotations,omitempty"` | ||||
| 	DownscalerAnnotations      []string                           `json:"downscaler_annotations,omitempty"` | ||||
| } | ||||
| 
 | ||||
| //Duration shortens this frequently used name
 | ||||
|  |  | |||
|  | @ -202,8 +202,8 @@ func (in *KubernetesMetaConfiguration) DeepCopyInto(out *KubernetesMetaConfigura | |||
| 		} | ||||
| 	} | ||||
| 	out.PodEnvironmentConfigMap = in.PodEnvironmentConfigMap | ||||
| 	if in.StatefulsetPropagateAnnotations != nil { | ||||
| 		in, out := &in.StatefulsetPropagateAnnotations, &out.StatefulsetPropagateAnnotations | ||||
| 	if in.DownscalerAnnotations != nil { | ||||
| 		in, out := &in.DownscalerAnnotations, &out.DownscalerAnnotations | ||||
| 		*out = make([]string, len(*in)) | ||||
| 		copy(*out, *in) | ||||
| 	} | ||||
|  | @ -343,8 +343,8 @@ func (in *OperatorConfigurationData) DeepCopyInto(out *OperatorConfigurationData | |||
| 	out.Scalyr = in.Scalyr | ||||
| 	out.LogicalBackup = in.LogicalBackup | ||||
| 	in.ConnectionPooler.DeepCopyInto(&out.ConnectionPooler) | ||||
| 	if in.StatefulsetPropagateAnnotations != nil { | ||||
| 		in, out := &in.StatefulsetPropagateAnnotations, &out.StatefulsetPropagateAnnotations | ||||
| 	if in.DownscalerAnnotations != nil { | ||||
| 		in, out := &in.DownscalerAnnotations, &out.DownscalerAnnotations | ||||
| 		*out = make([]string, len(*in)) | ||||
| 		copy(*out, *in) | ||||
| 	} | ||||
|  |  | |||
|  | @ -711,8 +711,7 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error { | |||
| 			updateFailed = true | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| 		if !reflect.DeepEqual(oldSs, newSs) { | ||||
| 		if !reflect.DeepEqual(oldSs, newSs) || !reflect.DeepEqual(oldSpec.Annotations, newSpec.Annotations) { | ||||
| 			c.logger.Debugf("syncing statefulsets") | ||||
| 			// TODO: avoid generating the StatefulSet object twice by passing it to syncStatefulSet
 | ||||
| 			if err := c.syncStatefulSet(); err != nil { | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ var cl = New( | |||
| 				SuperUsername:       superUserName, | ||||
| 				ReplicationUsername: replicationUserName, | ||||
| 			}, | ||||
| 			StatefulsetPropagateAnnotations: []string{"downscaler/*"}, | ||||
| 			DownscalerAnnotations: []string{"downscaler/*"}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	k8sutil.NewMockKubernetesClient(), | ||||
|  |  | |||
|  | @ -403,7 +403,7 @@ func (c *Cluster) syncStatefulSet() error { | |||
| // AnnotationsToPropagate get the annotations to update if required
 | ||||
| // based on the annotations in postgres CRD
 | ||||
| func (c *Cluster) AnnotationsToPropagate(annotations map[string]string) map[string]string { | ||||
| 	toPropagateAnnotations := c.OpConfig.StatefulsetPropagateAnnotations | ||||
| 	toPropagateAnnotations := c.OpConfig.DownscalerAnnotations | ||||
| 	pgCRDAnnotations := c.Postgresql.ObjectMeta.GetAnnotations() | ||||
| 
 | ||||
| 	if toPropagateAnnotations != nil && pgCRDAnnotations != nil { | ||||
|  |  | |||
|  | @ -48,7 +48,7 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur | |||
| 	result.SidecarImages = fromCRD.SidecarImages | ||||
| 	result.SidecarContainers = fromCRD.SidecarContainers | ||||
| 
 | ||||
| 	result.StatefulsetPropagateAnnotations = fromCRD.StatefulsetPropagateAnnotations | ||||
| 	result.DownscalerAnnotations = fromCRD.Kubernetes.DownscalerAnnotations | ||||
| 
 | ||||
| 	// user config
 | ||||
| 	result.SuperUsername = fromCRD.PostgresUsersConfiguration.SuperUsername | ||||
|  |  | |||
|  | @ -487,8 +487,10 @@ func (c *Controller) postgresqlUpdate(prev, cur interface{}) { | |||
| 	if pgOld != nil && pgNew != nil { | ||||
| 		// Avoid the inifinite recursion for status updates
 | ||||
| 		if reflect.DeepEqual(pgOld.Spec, pgNew.Spec) { | ||||
| 			if pgNew.Annotations != nil && pgOld.Annotations != nil && !reflect.DeepEqual(pgNew.Annotations, pgOld.Annotations) { | ||||
| 				return | ||||
| 			} | ||||
| 		} | ||||
| 		c.queueClusterEvent(pgOld, pgNew, EventUpdate) | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -137,7 +137,7 @@ type Config struct { | |||
| 	EnableReplicaLoadBalancer              bool              `name:"enable_replica_load_balancer" default:"false"` | ||||
| 	CustomServiceAnnotations               map[string]string `name:"custom_service_annotations"` | ||||
| 	CustomPodAnnotations                   map[string]string `name:"custom_pod_annotations"` | ||||
| 	StatefulsetPropagateAnnotations        []string          `name:"statefulset_propagate_annotations"` | ||||
| 	DownscalerAnnotations                  []string          `name:"downscaler_annotations"` | ||||
| 	EnablePodAntiAffinity                  bool              `name:"enable_pod_antiaffinity" default:"false"` | ||||
| 	PodAntiAffinityTopologyKey             string            `name:"pod_antiaffinity_topology_key" default:"kubernetes.io/hostname"` | ||||
| 	// deprecated and kept for backward compatibility
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue