adding the essential missing pieces
This commit is contained in:
parent
c4ee9f9225
commit
7add4dc105
|
|
@ -1148,16 +1148,6 @@ func (c *Cluster) initHumanUsers() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if clusterIsOwnedBySuperuserTeam {
|
|
||||||
c.logger.Infof("Team %q owning the cluster is also a team of superusers. Created superuser roles for its members instead of admin roles.", c.Spec.TeamID)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
err := c.initTeamMembers(c.Spec.TeamID, false)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Cannot create a team %q of admins owning the PG cluster: %v", c.Spec.TeamID, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
additionalTeams := c.PgTeamMap.GetAdditionalTeams(c.Spec.TeamID, true)
|
additionalTeams := c.PgTeamMap.GetAdditionalTeams(c.Spec.TeamID, true)
|
||||||
for _, additionalTeam := range additionalTeams {
|
for _, additionalTeam := range additionalTeams {
|
||||||
if !(util.SliceContains(superuserTeams, additionalTeam)) {
|
if !(util.SliceContains(superuserTeams, additionalTeam)) {
|
||||||
|
|
@ -1168,6 +1158,16 @@ func (c *Cluster) initHumanUsers() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if clusterIsOwnedBySuperuserTeam {
|
||||||
|
c.logger.Infof("Team %q owning the cluster is also a team of superusers. Created superuser roles for its members instead of admin roles.", c.Spec.TeamID)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
err := c.initTeamMembers(c.Spec.TeamID, false)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Cannot create a team %q of admins owning the PG cluster: %v", c.Spec.TeamID, err)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ import (
|
||||||
type Controller struct {
|
type Controller struct {
|
||||||
config spec.ControllerConfig
|
config spec.ControllerConfig
|
||||||
opConfig *config.Config
|
opConfig *config.Config
|
||||||
pgTeamMap *teams.PostgresTeamMap
|
pgTeamMap teams.PostgresTeamMap
|
||||||
|
|
||||||
logger *logrus.Entry
|
logger *logrus.Entry
|
||||||
KubeClient k8sutil.KubernetesClient
|
KubeClient k8sutil.KubernetesClient
|
||||||
|
|
@ -297,6 +297,7 @@ func (c *Controller) initController() {
|
||||||
|
|
||||||
c.initPodServiceAccount()
|
c.initPodServiceAccount()
|
||||||
c.initSharedInformers()
|
c.initSharedInformers()
|
||||||
|
c.loadPostgresTeams()
|
||||||
|
|
||||||
if c.opConfig.DebugLogging {
|
if c.opConfig.DebugLogging {
|
||||||
c.logger.Logger.Level = logrus.DebugLevel
|
c.logger.Logger.Level = logrus.DebugLevel
|
||||||
|
|
@ -348,8 +349,8 @@ func (c *Controller) initSharedInformers() {
|
||||||
cache.Indexers{})
|
cache.Indexers{})
|
||||||
|
|
||||||
c.postgresTeamInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
|
c.postgresTeamInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
|
||||||
AddFunc: c.loadPostgresTeams,
|
AddFunc: c.postgresTeamAdd,
|
||||||
UpdateFunc: c.updatePostgresTeams,
|
UpdateFunc: c.postgresTeamUpdate,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Pods
|
// Pods
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ func (c *Controller) makeClusterConfig() cluster.Config {
|
||||||
return cluster.Config{
|
return cluster.Config{
|
||||||
RestConfig: c.config.RestConfig,
|
RestConfig: c.config.RestConfig,
|
||||||
OpConfig: config.Copy(c.opConfig),
|
OpConfig: config.Copy(c.opConfig),
|
||||||
|
PgTeamMap: c.pgTeamMap,
|
||||||
InfrastructureRoles: infrastructureRoles,
|
InfrastructureRoles: infrastructureRoles,
|
||||||
PodServiceAccount: c.PodServiceAccount,
|
PodServiceAccount: c.PodServiceAccount,
|
||||||
}
|
}
|
||||||
|
|
@ -395,25 +396,34 @@ func (c *Controller) getInfrastructureRole(
|
||||||
return roles, nil
|
return roles, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) loadPostgresTeams(obj interface{}) {
|
func (c *Controller) loadPostgresTeams() {
|
||||||
pgTeamMap := teams.PostgresTeamMap{}
|
// reset team map
|
||||||
|
c.pgTeamMap = teams.PostgresTeamMap{}
|
||||||
|
|
||||||
pgTeam, ok := obj.(*acidv1.PostgresTeam)
|
pgTeams, err := c.KubeClient.AcidV1ClientSet.AcidV1().PostgresTeams(c.opConfig.WatchedNamespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
if !ok {
|
|
||||||
c.logger.Errorf("could not cast to PostgresTeam spec")
|
|
||||||
}
|
|
||||||
|
|
||||||
pgTeams, err := c.KubeClient.AcidV1ClientSet.AcidV1().PostgresTeams(pgTeam.Namespace).List(context.TODO(), metav1.ListOptions{})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.logger.Errorf("could not list postgres team objects: %v", err)
|
c.logger.Errorf("could not list postgres team objects: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
pgTeamMap.Load(pgTeams)
|
c.pgTeamMap.Load(pgTeams)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) updatePostgresTeams(prev, obj interface{}) {
|
func (c *Controller) postgresTeamAdd(obj interface{}) {
|
||||||
c.logger.Debugf("reloading postgres team CRDs and overwriting cached map")
|
pgTeam, ok := obj.(*acidv1.PostgresTeam)
|
||||||
c.loadPostgresTeams(obj)
|
if !ok {
|
||||||
|
c.logger.Errorf("could not cast to PostgresTeam spec")
|
||||||
|
}
|
||||||
|
c.logger.Debugf("PostgreTeam %q added. Reloading postgres team CRDs and overwriting cached map", pgTeam.Name)
|
||||||
|
c.loadPostgresTeams()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Controller) postgresTeamUpdate(prev, obj interface{}) {
|
||||||
|
pgTeam, ok := obj.(*acidv1.PostgresTeam)
|
||||||
|
if !ok {
|
||||||
|
c.logger.Errorf("could not cast to PostgresTeam spec")
|
||||||
|
}
|
||||||
|
c.logger.Debugf("PostgreTeam %q updated. Reloading postgres team CRDs and overwriting cached map", pgTeam.Name)
|
||||||
|
c.loadPostgresTeams()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) podClusterName(pod *v1.Pod) spec.NamespacedName {
|
func (c *Controller) podClusterName(pod *v1.Pod) spec.NamespacedName {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue