Skip to content

Commit 1c8efad

Browse files
ranatrkenekofb
authored andcommitted
Explorer extending - gitopssets (#3267)
* Add gitopsset kind to supported objects in explorer query * add gitopssets to rbac rules * Add gitopssets to ToFluxObject * Add gitopssets to getKindRoute fn in ui * Add gitopssets query server testcase to server integration tests * Use allowGitOpsSetsAnyOnDefaultNamespace for gitopsset support query server test * Add gitopssets crd to query suite test * changed category gitopsset (#3290) --------- Co-authored-by: Eneko Fernández <[email protected]>
1 parent 4627b45 commit 1c8efad

File tree

6 files changed

+1047
-35
lines changed

6 files changed

+1047
-35
lines changed

charts/mccp/templates/clusters-service/collector.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ rules:
2626
- apiGroups: [""]
2727
resources: ["events"]
2828
verbs: ["get", "list", "watch"]
29+
- apiGroups: ["templates.weave.works"]
30+
resources: ["gitopssets"]
31+
verbs: ["get", "list", "watch"]
2932
---
3033
apiVersion: rbac.authorization.k8s.io/v1
3134
kind: ClusterRoleBinding

pkg/query/configuration/objectkind.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
helmv2beta1 "github.com/fluxcd/helm-controller/api/v2beta1"
1111
kustomizev1 "github.com/fluxcd/kustomize-controller/api/v1"
1212
sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2"
13+
gitopssets "github.com/weaveworks/gitopssets-controller/api/v1alpha1"
1314
rbacv1 "k8s.io/api/rbac/v1"
1415
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1516
"k8s.io/apimachinery/pkg/runtime"
@@ -27,6 +28,7 @@ const (
2728
CategoryAutomation ObjectCategory = "automation"
2829
CategorySource ObjectCategory = "source"
2930
CategoryEvent ObjectCategory = "event"
31+
CategoryGitopsSet ObjectCategory = "gitopsset"
3032
)
3133

3234
type ObjectKind struct {
@@ -220,6 +222,17 @@ var (
220222
},
221223
Category: CategoryEvent,
222224
}
225+
226+
GitOpsSetsObjectKind = ObjectKind{
227+
Gvk: gitopssets.GroupVersion.WithKind("GitOpsSet"),
228+
NewClientObjectFunc: func() client.Object {
229+
return &gitopssets.GitOpsSet{}
230+
},
231+
AddToSchemeFunc: gitopssets.AddToScheme,
232+
StatusFunc: defaultFluxObjectStatusFunc,
233+
MessageFunc: defaultFluxObjectMessageFunc,
234+
Category: CategoryGitopsSet,
235+
}
223236
)
224237

225238
// SupportedObjectKinds list with the default supported Object resources to query.
@@ -232,6 +245,7 @@ var SupportedObjectKinds = []ObjectKind{
232245
OCIRepositoryObjectKind,
233246
BucketObjectKind,
234247
PolicyAgentAuditEventObjectKind,
248+
GitOpsSetsObjectKind,
235249
}
236250

237251
// SupportedRbacKinds list with the default supported RBAC resources.
@@ -297,6 +311,8 @@ func ToFluxObject(obj client.Object) (FluxObject, error) {
297311
return t, nil
298312
case *sourcev1beta2.OCIRepository:
299313
return t, nil
314+
case *gitopssets.GitOpsSet:
315+
return t, nil
300316
case *corev1.Event:
301317
e, ok := obj.(*corev1.Event)
302318
if !ok {

pkg/query/server/server_integration_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@ import (
1212
helmv2 "github.com/fluxcd/helm-controller/api/v2beta1"
1313
kustomizev1 "github.com/fluxcd/kustomize-controller/api/v1"
1414
sourcev1 "github.com/fluxcd/source-controller/api/v1"
15+
gitopssetstemplatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1"
16+
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
1517

1618
sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2"
1719
"github.com/go-logr/logr/testr"
1820
. "github.com/onsi/gomega"
21+
gitopssets "github.com/weaveworks/gitopssets-controller/api/v1alpha1"
1922
api "github.com/weaveworks/weave-gitops-enterprise/pkg/api/query"
2023
"github.com/weaveworks/weave-gitops/pkg/server/auth"
2124
v1 "k8s.io/api/core/v1"
@@ -169,6 +172,36 @@ func TestQueryServer(t *testing.T) {
169172
query: fmt.Sprintf("kind:%s", sourcev1beta2.BucketKind),
170173
expectedNumObjects: 1, // should allow only on default namespace,
171174
},
175+
{
176+
name: "should support gitopssets",
177+
access: allowGitOpsSetsAnyOnDefaultNamespace(principal.ID),
178+
objects: []client.Object{
179+
&gitopssets.GitOpsSet{
180+
ObjectMeta: metav1.ObjectMeta{
181+
Name: "gitopsset-list",
182+
Namespace: defaultNamespace,
183+
},
184+
TypeMeta: metav1.TypeMeta{
185+
Kind: "GitOpsSet",
186+
APIVersion: gitopssets.GroupVersion.String(),
187+
},
188+
Spec: gitopssets.GitOpsSetSpec{
189+
Generators: []gitopssetstemplatesv1.GitOpsSetGenerator{
190+
{
191+
List: &gitopssetstemplatesv1.ListGenerator{
192+
Elements: []apiextensionsv1.JSON{
193+
{Raw: []byte(`{"cluster": "engineering-dev"}`)},
194+
},
195+
},
196+
},
197+
},
198+
Templates: []gitopssetstemplatesv1.GitOpsSetTemplate{},
199+
},
200+
},
201+
},
202+
query: "kind:GitOpsSet",
203+
expectedNumObjects: 1,
204+
},
172205
}
173206
for _, tt := range tests {
174207
t.Run(tt.name, func(t *testing.T) {
@@ -362,6 +395,29 @@ func allowSourcesAnyOnDefaultNamespace(username string) []client.Object {
362395
)
363396
}
364397

398+
func allowGitOpsSetsAnyOnDefaultNamespace(username string) []client.Object {
399+
roleName := "gitopssets-admin"
400+
roleBindingName := "wego-admin-gitopssets-release-admin"
401+
402+
return append(createCollectorSecurityContext(),
403+
newRole(roleName, "default",
404+
[]rbacv1.PolicyRule{{
405+
APIGroups: []string{"*"},
406+
Resources: []string{"*"},
407+
Verbs: []string{"*"},
408+
}}),
409+
newRoleBinding(roleBindingName,
410+
"default",
411+
"Role",
412+
roleName,
413+
[]rbacv1.Subject{
414+
{
415+
Kind: "User",
416+
Name: username,
417+
},
418+
}))
419+
}
420+
365421
func newRoleBinding(name, namespace, roleKind, roleName string, subjects []rbacv1.Subject) *rbacv1.RoleBinding {
366422
return &rbacv1.RoleBinding{
367423
TypeMeta: roleBindingTypeMeta,

pkg/query/server/suite_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2"
2121
"github.com/go-logr/logr"
2222
clusterctrlv1alpha1 "github.com/weaveworks/cluster-controller/api/v1alpha1"
23+
gitopssets "github.com/weaveworks/gitopssets-controller/api/v1alpha1"
2324
pb "github.com/weaveworks/weave-gitops-enterprise/cmd/clusters-service/pkg/protos"
2425
"github.com/weaveworks/weave-gitops-enterprise/cmd/clusters-service/pkg/server"
2526
api "github.com/weaveworks/weave-gitops-enterprise/pkg/api/query"
@@ -93,6 +94,11 @@ func TestMain(m *testing.M) {
9394
if err != nil {
9495
log.Fatalf("add GitopsCluster to schema failed: %s", err)
9596
}
97+
98+
err = gitopssets.AddToScheme(scheme.Scheme)
99+
if err != nil {
100+
log.Fatalf("add GitopsSet to schema failed: %s", err)
101+
}
96102
_, cancel := context.WithCancel(context.Background())
97103

98104
k8sClient, err = client.New(cfg, client.Options{

0 commit comments

Comments
 (0)