Skip to content

Commit 86ad924

Browse files
authored
Merge pull request #61 from cybozu-go/delegated-namespaces
Add delegated namespaces to destinations in AppProject
2 parents 83f1da0 + 67ff7b4 commit 86ad924

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

controllers/tenant_controller.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,11 @@ func (r *TenantReconciler) reconcileArgoCD(ctx context.Context, tenant *cattagev
488488
for i, ns := range nss.Items {
489489
namespaces[i] = ns.Name
490490
}
491+
delegatedNamespaces, err := r.getDelegatedNamespaces(ctx, tenant.Spec.Delegates)
492+
if err != nil {
493+
return err
494+
}
495+
namespaces = append(namespaces, delegatedNamespaces...)
491496

492497
tpl, err := template.New("AppProject Template").Parse(r.config.ArgoCD.AppProjectTemplate)
493498
if err != nil {
@@ -552,6 +557,21 @@ func (r *TenantReconciler) reconcileArgoCD(ctx context.Context, tenant *cattagev
552557
return nil
553558
}
554559

560+
func (r *TenantReconciler) getDelegatedNamespaces(ctx context.Context, delegates []cattagev1beta1.DelegateSpec) ([]string, error) {
561+
result := make([]string, 0)
562+
563+
for _, d := range delegates {
564+
nss := &corev1.NamespaceList{}
565+
if err := r.client.List(ctx, nss, client.MatchingFields{constants.TenantNamespaceIndex: d.Name}); err != nil {
566+
return nil, err
567+
}
568+
for _, ns := range nss.Items {
569+
result = append(result, ns.Name)
570+
}
571+
}
572+
return result, nil
573+
}
574+
555575
func (r *TenantReconciler) reconcileConfigMapForApplicationController(ctx context.Context, tenant *cattagev1beta1.Tenant) error {
556576
cmList := &corev1.ConfigMapList{}
557577
err := r.client.List(ctx, cmList, client.MatchingLabels{constants.ManagedByLabel: "cattage"})

controllers/tenant_controller_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,10 @@ var _ = Describe("Tenant controller", Ordered, func() {
221221
"namespace": Equal("extra-namespace-y"),
222222
"server": Equal("*"),
223223
}),
224+
MatchAllKeys(Keys{
225+
"namespace": Equal("app-c"),
226+
"server": Equal("*"),
227+
}),
224228
),
225229
"namespaceResourceBlacklist": ConsistOf(
226230
MatchAllKeys(Keys{

0 commit comments

Comments
 (0)