diff --git a/cmd/configuration-domain-controller/main.go b/cmd/configuration-domain-controller/main.go index e8c4859..6acbb67 100644 --- a/cmd/configuration-domain-controller/main.go +++ b/cmd/configuration-domain-controller/main.go @@ -84,6 +84,8 @@ func main() { // InitFlags is for explicitly initializing the flags. func InitFlags() { + klog.InitFlags(nil) + flag.Set("alsologtostderr", "true") if home := homedir.HomeDir(); home != "" { flag.StringVar(&kubeConfigPath, "kubeConfigPath", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file") @@ -91,8 +93,6 @@ func InitFlags() { flag.StringVar(&kubeConfigPath, "kubeConfigPath", "", "absolute path to the kubeconfig file") } - klog.InitFlags(nil) - flag.Parse() } diff --git a/cmd/platform-controller/main.go b/cmd/platform-controller/main.go index fff2d6a..0ecb775 100644 --- a/cmd/platform-controller/main.go +++ b/cmd/platform-controller/main.go @@ -75,6 +75,8 @@ func main() { // InitFlags is for explicitly initializing the flags. func InitFlags() { + klog.InitFlags(nil) + flag.Set("alsologtostderr", "true") if home := homedir.HomeDir(); home != "" { flag.StringVar(&kubeConfigPath, "kubeConfigPath", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file") @@ -82,8 +84,6 @@ func InitFlags() { flag.StringVar(&kubeConfigPath, "kubeConfigPath", "", "absolute path to the kubeconfig file") } - klog.InitFlags(nil) - flag.Parse() } diff --git a/internal/controllers/platform/platform_controller.go b/internal/controllers/platform/platform_controller.go index 50d26cd..4c8dae9 100644 --- a/internal/controllers/platform/platform_controller.go +++ b/internal/controllers/platform/platform_controller.go @@ -331,7 +331,7 @@ func (c *PlatformController) syncHandler(key string) error { } domains = domains[:n] - platformCfgMap := c.genPlatformTenantsCfgMap(platform, tenants) + platformCfgMap := c.genPlatformTenantsCfgMap(platform, tenants, domains) err = c.syncConfigMap(platformCfgMap, platform) // If an error occurs we'll requeue the item so we can @@ -459,12 +459,16 @@ func (c *PlatformController) enqueuePlatform(platform *platformv1.Platform) { c.workqueue.Add(platform.Name) } -func (c *PlatformController) genPlatformTenantsCfgMap(platform *platformv1.Platform, tenants []*platformv1.Tenant) *corev1.ConfigMap { +func (c *PlatformController) genPlatformTenantsCfgMap(platform *platformv1.Platform, tenants []*platformv1.Tenant, domains []*platformv1.Domain) *corev1.ConfigMap { cfgMapName := fmt.Sprintf("%s-tenants", platform.Name) tenantData := map[string]string{} for _, tenant := range tenants { tenantData[fmt.Sprintf("MultiTenancy__Tenants__%s__TenantId", tenant.Name)] = tenant.Spec.Id tenantData[fmt.Sprintf("MultiTenancy__Tenants__%s__Enabled", tenant.Name)] = strconv.FormatBool(tenant.Spec.Enabled) + for _, domain := range domains { + tenantHasAccessToDomain := tenantHasAccessToDomain(tenant, domain.Name) + tenantData[fmt.Sprintf("MultiTenancy__Tenants__%s__Domains_%s_Enabled", tenant.Name, domain.Name)] = strconv.FormatBool(tenantHasAccessToDomain) + } } return &corev1.ConfigMap{ @@ -488,16 +492,8 @@ func (c *PlatformController) genDomainTenantsCfgMap(platform *platformv1.Platfor cfgMapName := fmt.Sprintf("%s-tenants", domain.Name) tenantData := map[string]string{} for _, tenant := range tenants { - tenantHasAccessToDomain := false - if tenant.Spec.Enabled { - for _, d := range tenant.Spec.DomainRefs { - if d == domain.Name { - tenantHasAccessToDomain = true - break - } - } - } - tenantData[fmt.Sprintf("MultiTenancy__Tenants__%s__Enabled", tenant.Name)] = strconv.FormatBool(tenant.Spec.Enabled && tenantHasAccessToDomain) + tenantEnabled := tenant.Spec.Enabled && tenantHasAccessToDomain(tenant, domain.Name) + tenantData[fmt.Sprintf("MultiTenancy__Tenants__%s__Enabled", tenant.Name)] = strconv.FormatBool(tenant.Spec.Enabled && tenantEnabled) } return &corev1.ConfigMap{ @@ -516,3 +512,14 @@ func (c *PlatformController) genDomainTenantsCfgMap(platform *platformv1.Platfor Immutable: func(b bool) *bool { return &b }(true), } } + +func tenantHasAccessToDomain(tenant *platformv1.Tenant, domainName string) bool { + + for _, d := range tenant.Spec.DomainRefs { + if d == domainName { + return true + } + } + + return false +}