(event ClusterEvent)
| 182 | } |
| 183 | |
| 184 | func (c *Controller) processEvent(event ClusterEvent) { |
| 185 | var clusterName spec.NamespacedName |
| 186 | var clHistory ringlog.RingLogger |
| 187 | var err error |
| 188 | |
| 189 | lg := c.logger.WithField("worker", event.WorkerID) |
| 190 | |
| 191 | if event.EventType == EventAdd || event.EventType == EventSync || event.EventType == EventRepair { |
| 192 | clusterName = util.NameFromMeta(event.NewSpec.ObjectMeta) |
| 193 | } else { |
| 194 | clusterName = util.NameFromMeta(event.OldSpec.ObjectMeta) |
| 195 | } |
| 196 | lg = lg.WithField("cluster-name", clusterName) |
| 197 | |
| 198 | c.clustersMu.RLock() |
| 199 | cl, clusterFound := c.clusters[clusterName] |
| 200 | if clusterFound { |
| 201 | clHistory = c.clusterHistory[clusterName] |
| 202 | } |
| 203 | c.clustersMu.RUnlock() |
| 204 | |
| 205 | defer c.curWorkerCluster.Store(event.WorkerID, nil) |
| 206 | |
| 207 | if event.EventType == EventRepair { |
| 208 | runRepair, lastOperationStatus := cl.NeedsRepair() |
| 209 | if !runRepair { |
| 210 | lg.Debugf("observed cluster status %s, repair is not required", lastOperationStatus) |
| 211 | return |
| 212 | } |
| 213 | lg.Debugf("observed cluster status %s, running sync scan to repair the cluster", lastOperationStatus) |
| 214 | event.EventType = EventSync |
| 215 | } |
| 216 | |
| 217 | if event.EventType == EventAdd || event.EventType == EventUpdate || event.EventType == EventSync { |
| 218 | // handle deprecated parameters by possibly assigning their values to the new ones. |
| 219 | if event.OldSpec != nil { |
| 220 | c.mergeDeprecatedPostgreSQLSpecParameters(&event.OldSpec.Spec) |
| 221 | } |
| 222 | if event.NewSpec != nil { |
| 223 | c.warnOnDeprecatedPostgreSQLSpecParameters(&event.NewSpec.Spec) |
| 224 | c.mergeDeprecatedPostgreSQLSpecParameters(&event.NewSpec.Spec) |
| 225 | } |
| 226 | |
| 227 | if err = c.submitRBACCredentials(event); err != nil { |
| 228 | c.logger.Warnf("pods and/or Patroni may misfunction due to the lack of permissions: %v", err) |
| 229 | } |
| 230 | |
| 231 | } |
| 232 | |
| 233 | switch event.EventType { |
| 234 | case EventAdd: |
| 235 | if clusterFound { |
| 236 | lg.Infof("received add event for already existing Postgres cluster") |
| 237 | return |
| 238 | } |
| 239 | |
| 240 | lg.Infof("creating a new Postgres cluster") |
| 241 |
no test coverage detected