Do not create roles if cluster is masterless

fix pod deletion
This commit is contained in:
Murat Kabilov
2017-05-12 11:41:34 +02:00
parent da438aab3a
commit a7c57874d5
5 changed files with 59 additions and 42 deletions
+33 -26
View File
@@ -56,12 +56,14 @@ type Cluster struct {
kubeResources
spec.Postgresql
Config
logger *logrus.Entry
pgUsers map[string]spec.PgUser
podEvents chan spec.PodEvent
podSubscribers map[spec.NamespacedName]chan spec.PodEvent
pgDb *sql.DB
mu sync.Mutex
logger *logrus.Entry
pgUsers map[string]spec.PgUser
podEvents chan spec.PodEvent
podSubscribers map[spec.NamespacedName]chan spec.PodEvent
pgDb *sql.DB
mu sync.Mutex
masterLess bool
podDispatcherRunning bool
}
func New(cfg Config, pgSpec spec.Postgresql, logger *logrus.Logger) *Cluster {
@@ -69,13 +71,15 @@ func New(cfg Config, pgSpec spec.Postgresql, logger *logrus.Logger) *Cluster {
kubeResources := kubeResources{Secrets: make(map[types.UID]*v1.Secret)}
cluster := &Cluster{
Config: cfg,
Postgresql: pgSpec,
logger: lg,
pgUsers: make(map[string]spec.PgUser),
podEvents: make(chan spec.PodEvent),
podSubscribers: make(map[spec.NamespacedName]chan spec.PodEvent),
kubeResources: kubeResources,
Config: cfg,
Postgresql: pgSpec,
logger: lg,
pgUsers: make(map[string]spec.PgUser),
podEvents: make(chan spec.PodEvent),
podSubscribers: make(map[spec.NamespacedName]chan spec.PodEvent),
kubeResources: kubeResources,
masterLess: false,
podDispatcherRunning: false,
}
return cluster
@@ -90,12 +94,6 @@ func (c *Cluster) TeamName() string {
return c.Spec.TeamId
}
func (c *Cluster) Run(stopCh <-chan struct{}) {
go c.podEventsDispatcher(stopCh)
<-stopCh
}
func (c *Cluster) SetStatus(status spec.PostgresStatus) {
c.Status = status
b, err := json.Marshal(status)
@@ -155,7 +153,12 @@ func (c *Cluster) etcdKeyExists(keyName string) (bool, error) {
return resp != nil, err
}
func (c *Cluster) Create() error {
func (c *Cluster) Create(stopCh <-chan struct{}) error {
if !c.podDispatcherRunning {
go c.podEventsDispatcher(stopCh)
c.podDispatcherRunning = true
}
keyExist, err := c.etcdKeyExists(fmt.Sprintf("/%s/%s", c.OpConfig.EtcdScope, c.Metadata.Name))
if err != nil {
c.logger.Warnf("Can't check etcd key: %s", err)
@@ -203,14 +206,18 @@ func (c *Cluster) Create() error {
return err
}
if err := c.initDbConn(); err != nil {
return fmt.Errorf("Can't init db connection: %s", err)
}
if !c.masterLess {
if err := c.initDbConn(); err != nil {
return fmt.Errorf("Can't init db connection: %s", err)
}
if err := c.createUsers(); err != nil {
return fmt.Errorf("Can't create users: %s", err)
if err := c.createUsers(); err != nil {
return fmt.Errorf("Can't create users: %s", err)
} else {
c.logger.Infof("Users have been successfully created")
}
} else {
c.logger.Infof("Users have been successfully created")
c.logger.Warnln("Cluster is masterless")
}
c.ListResources()