Skip to content

Commit 4f63f5d

Browse files
authored
Merge pull request #514 from AdiZav/clusterrolebinding
Allow creating ClusterRoleBinding with parameters, and adding rules to ClusterRoles
2 parents 926a7a9 + e5e5aa7 commit 4f63f5d

File tree

4 files changed

+64
-12
lines changed

4 files changed

+64
-12
lines changed

ocp_resources/cluster_role.py

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,44 @@ def __init__(
3333
self.api_groups = api_groups
3434
self.permissions_to_resources = permissions_to_resources
3535
self.verbs = verbs
36+
self.desired_state = {"rules": []}
3637

3738
def to_dict(self):
38-
res = super().to_dict()
39+
self.res = super().to_dict()
3940
if self.yaml_file:
40-
return res
41+
return self.res
4142

42-
rules = {}
43-
if self.api_groups:
44-
rules["apiGroups"] = self.api_groups
4543
if self.permissions_to_resources:
46-
rules["resources"] = self.permissions_to_resources
47-
if self.verbs:
48-
rules["verbs"] = self.verbs
49-
if rules:
50-
res["rules"] = [rules]
51-
return res
44+
self.add_rule(
45+
api_groups=self.api_groups,
46+
permissions_to_resources=self.permissions_to_resources,
47+
verbs=self.verbs,
48+
)
49+
50+
return self.res
51+
52+
def add_rule(
53+
self,
54+
api_groups=None,
55+
permissions_to_resources=None,
56+
verbs=None,
57+
):
58+
if not self.res:
59+
self.res = super().to_dict()
60+
61+
rule = {}
62+
if api_groups:
63+
rule["apiGroups"] = api_groups
64+
if permissions_to_resources:
65+
rule["resources"] = permissions_to_resources
66+
if verbs:
67+
rule["verbs"] = verbs
68+
if rule:
69+
self._set_rule(rule=rule)
70+
71+
return self.res
72+
73+
def _set_rule(self, rule):
74+
75+
self.desired_state["rules"].append(rule)
76+
self.res["rules"] = self.desired_state["rules"]

ocp_resources/cluster_role_binding.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# -*- coding: utf-8 -*-
22

3+
from ocp_resources.cluster_role import ClusterRole
34
from ocp_resources.resource import Resource
45

56

@@ -9,3 +10,28 @@ class ClusterRoleBinding(Resource):
910
"""
1011

1112
api_group = Resource.ApiGroup.RBAC_AUTHORIZATION_K8S_IO
13+
14+
def __init__(
15+
self,
16+
name=None,
17+
cluster_role=None,
18+
subjects=None,
19+
):
20+
super().__init__(name=name)
21+
self.cluster_role = cluster_role
22+
self.subjects = subjects
23+
24+
def to_dict(self):
25+
self.res = super().to_dict()
26+
27+
self.res.setdefault("roleRef", {})
28+
self.res["roleRef"] = {
29+
"apiGroup": self.api_group,
30+
"kind": ClusterRole.kind,
31+
"name": self.cluster_role,
32+
}
33+
34+
if self.subjects:
35+
self.res.setdefault("subjects", self.subjects)
36+
37+
return self.res

ocp_resources/node_network_configuration_policy.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ def __init__(
106106
self.set_ipv6 = set_ipv6
107107
self.success_timeout = success_timeout
108108
self.max_unavailable = max_unavailable
109-
self.res = None
110109
self.ipv4_ports_backup_dict = {}
111110
self.ipv6_ports_backup_dict = {}
112111
self.nodes = self._nodes()

ocp_resources/resource.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ class ApiGroup:
330330
SSP_KUBEVIRT_IO = "ssp.kubevirt.io"
331331
STORAGE_K8S_IO = "storage.k8s.io"
332332
STORAGECLASS_KUBERNETES_IO = "storageclass.kubernetes.io"
333+
SUBRESOURCES_KUBEVIRT_IO = "subresources.kubevirt.io"
333334
TEKTON_TASKS_KUBEVIRT_IO = "tektontasks.kubevirt.io"
334335
TEMPLATE_KUBEVIRT_IO = "template.kubevirt.io"
335336
TEMPLATE_OPENSHIFT_IO = "template.openshift.io"
@@ -400,6 +401,7 @@ def __init__(
400401
self.node_selector = node_selector
401402
self.node_selector_labels = node_selector_labels
402403
self.node_selector_spec = self._prepare_node_selector_spec()
404+
self.res = None
403405

404406
def _prepare_node_selector_spec(self):
405407
if self.node_selector:

0 commit comments

Comments
 (0)