introduce cluster interface;
remove cluster types separate file
This commit is contained in:
		
							parent
							
								
									a6c1e8f64d
								
							
						
					
					
						commit
						685e0c533e
					
				|  | @ -28,6 +28,24 @@ import ( | |||
| 	"github.com/zalando-incubator/postgres-operator/pkg/util/volumes" | ||||
| ) | ||||
| 
 | ||||
| type Interface interface { | ||||
| 	Create() error | ||||
| 	Delete() error | ||||
| 	ExecCommand(podName *spec.NamespacedName, command ...string) (string, error) | ||||
| 	ReceivePodEvent(event spec.PodEvent) | ||||
| 	Run(stopCh <-chan struct{}) | ||||
| 	Sync() error | ||||
| 	Update(newSpec *spec.Postgresql) error | ||||
| 	SetFailed(err error) | ||||
| } | ||||
| 
 | ||||
| type PostgresRole string | ||||
| 
 | ||||
| const ( | ||||
| 	Master  PostgresRole = "master" | ||||
| 	Replica PostgresRole = "replica" | ||||
| ) | ||||
| 
 | ||||
| // Config contains operator-wide clients and configuration used from a cluster. TODO: remove struct duplication.
 | ||||
| type Config struct { | ||||
| 	KubeClient          *kubernetes.Clientset //TODO: move clients to the better place?
 | ||||
|  | @ -630,3 +648,7 @@ func (c *Cluster) initInfrastructureRoles() error { | |||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) SetFailed(err error) { | ||||
| 	c.Error = err | ||||
| } | ||||
|  |  | |||
|  | @ -1,8 +0,0 @@ | |||
| package cluster | ||||
| 
 | ||||
| type PostgresRole string | ||||
| 
 | ||||
| const ( | ||||
| 	Master  PostgresRole = "master" | ||||
| 	Replica PostgresRole = "replica" | ||||
| ) | ||||
|  | @ -31,7 +31,7 @@ type Controller struct { | |||
| 	logger   *logrus.Entry | ||||
| 
 | ||||
| 	clustersMu sync.RWMutex | ||||
| 	clusters   map[spec.NamespacedName]*cluster.Cluster | ||||
| 	clusters   map[spec.NamespacedName]cluster.Interface | ||||
| 	stopChs    map[spec.NamespacedName]chan struct{} | ||||
| 
 | ||||
| 	postgresqlInformer cache.SharedIndexInformer | ||||
|  | @ -56,7 +56,7 @@ func New(controllerConfig *Config, operatorConfig *config.Config) *Controller { | |||
| 		Config:   *controllerConfig, | ||||
| 		opConfig: operatorConfig, | ||||
| 		logger:   logger.WithField("pkg", "controller"), | ||||
| 		clusters: make(map[spec.NamespacedName]*cluster.Cluster), | ||||
| 		clusters: make(map[spec.NamespacedName]cluster.Interface), | ||||
| 		stopChs:  make(map[spec.NamespacedName]chan struct{}), | ||||
| 		podCh:    make(chan spec.PodEvent), | ||||
| 	} | ||||
|  |  | |||
|  | @ -134,8 +134,9 @@ func (c *Controller) processEvent(obj interface{}) error { | |||
| 		c.clustersMu.Unlock() | ||||
| 
 | ||||
| 		if err := cl.Create(); err != nil { | ||||
| 			cl.Error = fmt.Errorf("could not create cluster: %v", err) | ||||
| 			logger.Errorf("%v", cl.Error) | ||||
| 			err = fmt.Errorf("could not create cluster: %v", err) | ||||
| 			logger.Errorf("%v", err) | ||||
| 			cl.SetFailed(err) | ||||
| 
 | ||||
| 			return nil | ||||
| 		} | ||||
|  | @ -149,12 +150,13 @@ func (c *Controller) processEvent(obj interface{}) error { | |||
| 			return nil | ||||
| 		} | ||||
| 		if err := cl.Update(event.NewSpec); err != nil { | ||||
| 			cl.Error = fmt.Errorf("could not update cluster: %s", err) | ||||
| 			logger.Errorf("%v", cl.Error) | ||||
| 			err = fmt.Errorf("could not update cluster: %s", err) | ||||
| 			logger.Errorf("%v", err) | ||||
| 			cl.SetFailed(err) | ||||
| 
 | ||||
| 			return nil | ||||
| 		} | ||||
| 		cl.Error = nil | ||||
| 		cl.SetFailed(nil) | ||||
| 		logger.Infof("Cluster '%s' has been updated", clusterName) | ||||
| 	case spec.EventDelete: | ||||
| 		logger.Infof("Deletion of the '%s' cluster started", clusterName) | ||||
|  | @ -191,11 +193,12 @@ func (c *Controller) processEvent(obj interface{}) error { | |||
| 		} | ||||
| 
 | ||||
| 		if err := cl.Sync(); err != nil { | ||||
| 			cl.Error = fmt.Errorf("could not sync cluster '%s': %v", clusterName, err) | ||||
| 			logger.Errorf("%v", cl.Error) | ||||
| 			err = fmt.Errorf("could not sync cluster '%s': %v", clusterName, err) | ||||
| 			logger.Errorf("%v", err) | ||||
| 			cl.SetFailed(err) | ||||
| 			return nil | ||||
| 		} | ||||
| 		cl.Error = nil | ||||
| 		cl.SetFailed(nil) | ||||
| 
 | ||||
| 		logger.Infof("Cluster '%s' has been synced", clusterName) | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue