Skip to content

Commit ae7932c

Browse files
committed
feat(generated): add module for generic cluster-scoped resources
Signed-off-by: Oliver Bähler <[email protected]>
1 parent 9b24c01 commit ae7932c

File tree

26 files changed

+162
-22
lines changed

26 files changed

+162
-22
lines changed

api/v1beta1/proxysettings_types.go

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ type OwnerSpec struct {
1515
Name string `json:"name"`
1616
// Proxy settings for tenant owner.
1717
ProxyOperations []v1beta2.ProxySettings `json:"proxySettings,omitempty"`
18+
// Cluster Resources for tenant Owner.
19+
ClusterResources []ClusterResource `json:"clusterResources,omitempty"`
1820
}
1921

2022
// ProxySettingSpec defines the additional Capsule Proxy settings for additional users of the Tenant.

api/v1beta1/zz_generated.deepcopy.go

+43
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/controllers/watchdog/utils.go

+7-11
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,23 @@ import (
44
"strings"
55

66
"github.com/pkg/errors"
7-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7+
"k8s.io/apimachinery/pkg/runtime/schema"
88
"k8s.io/apimachinery/pkg/util/sets"
99
"k8s.io/client-go/discovery"
1010
"k8s.io/client-go/rest"
11-
)
1211

13-
type GroupVersionKind struct {
14-
metav1.GroupVersionKind
15-
// This must be used for path-based routing by the webserver filter
16-
URLName string
17-
}
12+
"github.com/projectcapsule/capsule-proxy/internal/utils"
13+
)
1814

19-
func API(config *rest.Config) ([]GroupVersionKind, error) {
15+
func API(config *rest.Config) ([]utils.ProxyGroupVersionKind, error) {
2016
discoveryClient := discovery.NewDiscoveryClientForConfigOrDie(config)
2117

2218
apiResourceLists, err := discoveryClient.ServerPreferredNamespacedResources()
2319
if err != nil {
2420
return nil, errors.Wrap(err, "cannot retrieve server's preferred namespaced resources")
2521
}
2622

27-
var out []GroupVersionKind
23+
var out []utils.ProxyGroupVersionKind
2824

2925
for _, ar := range apiResourceLists {
3026
parts := strings.Split(ar.GroupVersion, "/")
@@ -44,8 +40,8 @@ func API(config *rest.Config) ([]GroupVersionKind, error) {
4440
continue
4541
}
4642

47-
out = append(out, GroupVersionKind{
48-
GroupVersionKind: metav1.GroupVersionKind{
43+
out = append(out, utils.ProxyGroupVersionKind{
44+
GroupVersionKind: schema.GroupVersionKind{
4945
Group: group,
5046
Version: version,
5147
Kind: i.Kind,

internal/modules/ingressclass/get.go

+4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ func Get(client client.Reader) modules.Module {
3939
}
4040
}
4141

42+
func (g get) GroupKind() schema.GroupKind {
43+
return g.gk
44+
}
45+
4246
func (g get) Path() string {
4347
return "/apis/networking.k8s.io/{version}/{endpoint:ingressclasses}/{name}"
4448
}

internal/modules/ingressclass/list.go

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ func List(client client.Reader) modules.Module {
3636
}
3737
}
3838

39+
func (l list) GroupKind() schema.GroupKind {
40+
return l.gk
41+
}
42+
3943
func (l list) Path() string {
4044
return "/apis/networking.k8s.io/{version}/{endpoint:ingressclasses/?}"
4145
}

internal/modules/lease/get.go

+14-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
capsulev1beta2 "github.com/projectcapsule/capsule/api/v1beta2"
1010
corev1 "k8s.io/api/core/v1"
1111
"k8s.io/apimachinery/pkg/labels"
12+
"k8s.io/apimachinery/pkg/runtime/schema"
1213
"k8s.io/apimachinery/pkg/types"
1314
ctrl "sigs.k8s.io/controller-runtime"
1415
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -21,10 +22,22 @@ import (
2122
type get struct {
2223
client client.Reader
2324
log logr.Logger
25+
gk schema.GroupKind
2426
}
2527

2628
func Get(client client.Reader) modules.Module {
27-
return &get{client: client, log: ctrl.Log.WithName("node_get")}
29+
return &get{
30+
client: client,
31+
log: ctrl.Log.WithName("node_get"),
32+
gk: schema.GroupKind{
33+
Group: corev1.GroupName,
34+
Kind: "nodes",
35+
},
36+
}
37+
}
38+
39+
func (g get) GroupKind() schema.GroupKind {
40+
return g.gk
2841
}
2942

3043
func (g get) Path() string {

internal/modules/metric/get.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,16 @@ func Get(client client.Reader) modules.Module {
3232
client: client,
3333
log: ctrl.Log.WithName("metric_get"),
3434
gk: schema.GroupKind{
35-
Group: corev1.GroupName,
35+
Group: "metrics.k8s.io",
3636
Kind: "nodes",
3737
},
3838
}
3939
}
4040

41+
func (g get) GroupKind() schema.GroupKind {
42+
return g.gk
43+
}
44+
4145
func (g get) Path() string {
4246
return "/apis/metrics.k8s.io/{version}/nodes/{name}"
4347
}

internal/modules/metric/list.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,16 @@ func List(client client.Reader) modules.Module {
3030
client: client,
3131
log: ctrl.Log.WithName("metric_list"),
3232
gk: schema.GroupKind{
33-
Group: corev1.GroupName,
33+
Group: "metrics.k8s.io",
3434
Kind: "nodes",
3535
},
3636
}
3737
}
3838

39+
func (l list) GroupKind() schema.GroupKind {
40+
return l.gk
41+
}
42+
3943
func (l list) Path() string {
4044
return "/apis/metrics.k8s.io/{version}/{endpoint:nodes/?}"
4145
}

internal/modules/module.go

+2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ package modules
55

66
import (
77
"k8s.io/apimachinery/pkg/labels"
8+
"k8s.io/apimachinery/pkg/runtime/schema"
89

910
"github.com/projectcapsule/capsule-proxy/internal/request"
1011
"github.com/projectcapsule/capsule-proxy/internal/tenant"
1112
)
1213

1314
type Module interface {
15+
GroupKind() schema.GroupKind
1416
Path() string
1517
Methods() []string
1618
Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Request) (selector labels.Selector, err error)

internal/modules/namespace/get.go

+4
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ func Get(roleBindingsReflector *controllers.RoleBindingReflector, client client.
4848
}
4949
}
5050

51+
func (l get) GroupKind() schema.GroupKind {
52+
return l.gk
53+
}
54+
5155
func (l get) Path() string {
5256
return "/api/v1/namespaces/{name}"
5357
}

internal/modules/namespace/list.go

+4
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ func List(roleBindingsReflector *controllers.RoleBindingReflector) modules.Modul
3737
}
3838
}
3939

40+
func (l list) GroupKind() schema.GroupKind {
41+
return l.gk
42+
}
43+
4044
func (l list) Path() string {
4145
return basePath
4246
}

internal/modules/namespace/post.go

+5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"net/http"
88

99
"k8s.io/apimachinery/pkg/labels"
10+
"k8s.io/apimachinery/pkg/runtime/schema"
1011

1112
"github.com/projectcapsule/capsule-proxy/internal/modules"
1213
"github.com/projectcapsule/capsule-proxy/internal/request"
@@ -19,6 +20,10 @@ func Post() modules.Module {
1920
return &post{}
2021
}
2122

23+
func (l post) GroupKind() schema.GroupKind {
24+
return schema.GroupKind{}
25+
}
26+
2227
func (l post) Path() string {
2328
return basePath
2429
}

internal/modules/namespaced/catchall.go

+5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
v1 "k8s.io/api/authorization/v1"
88
"k8s.io/apimachinery/pkg/labels"
9+
"k8s.io/apimachinery/pkg/runtime/schema"
910
"k8s.io/apimachinery/pkg/selection"
1011
"sigs.k8s.io/controller-runtime/pkg/client"
1112

@@ -29,6 +30,10 @@ func CatchAll(client client.Reader, writer client.Writer, path string) modules.M
2930
}
3031
}
3132

33+
func (l catchall) GroupKind() schema.GroupKind {
34+
return schema.GroupKind{}
35+
}
36+
3237
func (l catchall) Path() string {
3338
return l.path
3439
}

internal/modules/node/get.go

+4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ func Get(client client.Reader) modules.Module {
3838
}
3939
}
4040

41+
func (g get) GroupKind() schema.GroupKind {
42+
return g.gk
43+
}
44+
4145
func (g get) Path() string {
4246
return "/api/v1/nodes/{name}"
4347
}

internal/modules/node/list.go

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ func List(client client.Reader) modules.Module {
3636
}
3737
}
3838

39+
func (l list) GroupKind() schema.GroupKind {
40+
return l.gk
41+
}
42+
3943
func (l list) Path() string {
4044
return "/api/v1/{endpoint:nodes/?}"
4145
}

internal/modules/persistentvolume/get.go

+4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ func Get(client client.Reader) modules.Module {
4040
}
4141
}
4242

43+
func (g get) GroupKind() schema.GroupKind {
44+
return g.gk
45+
}
46+
4347
func (g get) Path() string {
4448
return "/api/v1/{endpoint:persistentvolumes}/{name}"
4549
}

internal/modules/persistentvolume/list.go

+4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ func List(client client.Reader) modules.Module {
4040
}
4141
}
4242

43+
func (l list) GroupKind() schema.GroupKind {
44+
return l.gk
45+
}
46+
4347
func (l list) Path() string {
4448
return "/api/v1/{endpoint:persistentvolumes/?}"
4549
}

internal/modules/pod/get.go

+4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ func Get(client client.Reader) modules.Module {
3838
}
3939
}
4040

41+
func (g get) GroupKind() schema.GroupKind {
42+
return g.gk
43+
}
44+
4145
func (g get) Path() string {
4246
return "/api/v1/pods"
4347
}

internal/modules/priorityclass/get.go

+4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ func Get(client client.Reader) modules.Module {
3939
}
4040
}
4141

42+
func (g get) GroupKind() schema.GroupKind {
43+
return g.gk
44+
}
45+
4246
func (g get) Path() string {
4347
return "/apis/scheduling.k8s.io/v1/{endpoint:priorityclasses}/{name}"
4448
}

internal/modules/priorityclass/list.go

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ func List(client client.Reader) modules.Module {
3636
}
3737
}
3838

39+
func (l list) GroupKind() schema.GroupKind {
40+
return l.gk
41+
}
42+
3943
func (l list) Path() string {
4044
return "/apis/scheduling.k8s.io/v1/{endpoint:priorityclasses/?}"
4145
}

internal/modules/runtimeclass/get.go

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ func Get(client client.Reader) modules.Module {
3636
}
3737
}
3838

39+
func (g get) GroupKind() schema.GroupKind {
40+
return g.gk
41+
}
42+
3943
func (g get) Path() string {
4044
return "/apis/node.k8s.io/v1/{endpoint:runtimeclasses}/{name}"
4145
}

internal/modules/runtimeclass/list.go

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ func List(client client.Reader) modules.Module {
3636
}
3737
}
3838

39+
func (l list) GroupKind() schema.GroupKind {
40+
return l.gk
41+
}
42+
3943
func (l list) Path() string {
4044
return "/apis/node.k8s.io/v1/{endpoint:runtimeclasses/?}"
4145
}

internal/modules/storageclass/get.go

+4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ func Get(client client.Reader) modules.Module {
3939
}
4040
}
4141

42+
func (g get) GroupKind() schema.GroupKind {
43+
return g.gk
44+
}
45+
4246
func (g get) Path() string {
4347
return "/apis/storage.k8s.io/v1/{endpoint:storageclasses}/{name}"
4448
}

internal/modules/storageclass/list.go

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ func List(client client.Reader) modules.Module {
3636
}
3737
}
3838

39+
func (l list) GroupKind() schema.GroupKind {
40+
return l.gk
41+
}
42+
3943
func (l list) Path() string {
4044
return "/apis/storage.k8s.io/v1/{endpoint:storageclasses/?}"
4145
}

0 commit comments

Comments
 (0)