Skip to content

Commit af3eba4

Browse files
authored
Merge pull request #72 from myakove/resource-from-yaml
Support create resources from YAML file
2 parents c4c2d8b + 1d82e2c commit af3eba4

38 files changed

+515
-144
lines changed

ocp_resources/catalog_source.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,22 @@ class CatalogSource(NamespacedResource):
1111

1212
def __init__(
1313
self,
14-
name,
15-
namespace,
14+
name=None,
15+
namespace=None,
1616
client=None,
1717
source_type=None,
1818
image=None,
1919
display_name=None,
2020
publisher=None,
2121
teardown=True,
22+
yaml_file=None,
2223
):
2324
super().__init__(
24-
name=name, namespace=namespace, client=client, teardown=teardown
25+
name=name,
26+
namespace=namespace,
27+
client=client,
28+
teardown=teardown,
29+
yaml_file=yaml_file,
2530
)
2631
self.source_type = source_type
2732
self.image = image
@@ -30,6 +35,9 @@ def __init__(
3035

3136
def to_dict(self):
3237
res = super().to_dict()
38+
if self.yaml_file:
39+
return res
40+
3341
res.update(
3442
{
3543
"spec": {

ocp_resources/catalog_source_config.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,23 @@ class CatalogSourceConfig(NamespacedResource):
1414

1515
def __init__(
1616
self,
17-
name,
18-
namespace,
19-
source,
20-
target_namespace,
21-
packages,
22-
cs_display_name,
23-
cs_publisher,
17+
name=None,
18+
namespace=None,
19+
source=None,
20+
target_namespace=None,
21+
packages=None,
22+
cs_display_name=None,
23+
cs_publisher=None,
2424
client=None,
2525
teardown=True,
26+
yaml_file=None,
2627
):
2728
super().__init__(
28-
name=name, namespace=namespace, client=client, teardown=teardown
29+
name=name,
30+
namespace=namespace,
31+
client=client,
32+
teardown=teardown,
33+
yaml_file=yaml_file,
2934
)
3035
self.source = source
3136
self.target_namespace = target_namespace
@@ -35,6 +40,9 @@ def __init__(
3540

3641
def to_dict(self):
3742
res = super().to_dict()
43+
if self.yaml_file:
44+
return res
45+
3846
res.update(
3947
{
4048
"spec": {

ocp_resources/cluster_role.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,26 @@ class ClusterRole(Resource):
1212

1313
def __init__(
1414
self,
15-
name,
15+
name=None,
1616
client=None,
1717
api_groups=None,
1818
permissions_to_resources=None,
1919
verbs=None,
2020
teardown=True,
21+
yaml_file=None,
2122
):
22-
super().__init__(client=client, name=name, teardown=teardown)
23+
super().__init__(
24+
client=client, name=name, teardown=teardown, yaml_file=yaml_file
25+
)
2326
self.api_groups = api_groups
2427
self.permissions_to_resources = permissions_to_resources
2528
self.verbs = verbs
2629

2730
def to_dict(self):
2831
res = super().to_dict()
32+
if self.yaml_file:
33+
return res
34+
2935
rules = {}
3036
if self.api_groups:
3137
rules["apiGroups"] = self.api_groups

ocp_resources/configmap.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,28 @@ class ConfigMap(NamespacedResource):
88

99
api_version = NamespacedResource.ApiVersion.V1
1010

11-
def __init__(self, name, namespace, data=None, teardown=True, client=None):
11+
def __init__(
12+
self,
13+
name=None,
14+
namespace=None,
15+
data=None,
16+
teardown=True,
17+
client=None,
18+
yaml_file=None,
19+
):
1220
super().__init__(
13-
name=name, namespace=namespace, client=client, teardown=teardown
21+
name=name,
22+
namespace=namespace,
23+
client=client,
24+
teardown=teardown,
25+
yaml_file=yaml_file,
1426
)
1527
self.data = data
1628

1729
def to_dict(self):
1830
res = super().to_dict()
31+
if self.yaml_file:
32+
return res
33+
1934
res.setdefault("data", {}).update(self.data)
2035
return res

ocp_resources/datavolume.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ class Status(Resource.Condition.Status):
6666

6767
def __init__(
6868
self,
69-
name,
70-
namespace,
69+
name=None,
70+
namespace=None,
7171
source=None,
7272
size=None,
7373
storage_class=None,
@@ -86,13 +86,15 @@ def __init__(
8686
preallocation=None,
8787
teardown=True,
8888
privileged_client=None,
89+
yaml_file=None,
8990
):
9091
super().__init__(
9192
name=name,
9293
namespace=namespace,
9394
client=client,
9495
teardown=teardown,
9596
privileged_client=privileged_client,
97+
yaml_file=yaml_file,
9698
)
9799
self.source = source
98100
self.url = url
@@ -112,6 +114,9 @@ def __init__(
112114

113115
def to_dict(self):
114116
res = super().to_dict()
117+
if self.yaml_file:
118+
return res
119+
115120
res.update(
116121
{
117122
"spec": {

ocp_resources/hostpath_provisioner.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,25 @@ class Name:
1414
HOSTPATH_PROVISIONER = "hostpath-provisioner"
1515

1616
def __init__(
17-
self, name, path=None, image_pull_policy=None, client=None, teardown=True
17+
self,
18+
name=None,
19+
path=None,
20+
image_pull_policy=None,
21+
client=None,
22+
teardown=True,
23+
yaml_file=None,
1824
):
19-
super().__init__(name=name, client=client, teardown=teardown)
25+
super().__init__(
26+
name=name, client=client, teardown=teardown, yaml_file=yaml_file
27+
)
2028
self.path = path
2129
self.image_pull_policy = image_pull_policy
2230

2331
def to_dict(self):
2432
res = super().to_dict()
33+
if self.yaml_file:
34+
return res
35+
2536
spec = res.setdefault("spec", {})
2637
path_config = spec.setdefault("pathConfig", {})
2738
if self.path:

ocp_resources/hyperconverged.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,28 @@ class HyperConverged(NamespacedResource):
66

77
def __init__(
88
self,
9-
name,
10-
namespace,
9+
name=None,
10+
namespace=None,
1111
client=None,
1212
infra=None,
1313
workloads=None,
1414
teardown=True,
15+
yaml_file=None,
1516
):
1617
super().__init__(
17-
name=name, namespace=namespace, client=client, teardown=teardown
18+
name=name,
19+
namespace=namespace,
20+
client=client,
21+
teardown=teardown,
22+
yaml_file=yaml_file,
1823
)
1924
self.infra = infra
2025
self.workloads = workloads
2126

2227
def to_dict(self):
2328
res = super().to_dict()
29+
if self.yaml_file:
30+
return res
2431

2532
if self.infra:
2633
res.setdefault("spec", {}).setdefault("infra", {}).update(self.infra)

ocp_resources/kube_descheduler.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ class KubeDescheduler(NamespacedResource):
66

77
def __init__(
88
self,
9-
name,
10-
namespace,
11-
profiles=["AffinityAndTaints"],
9+
name=None,
10+
namespace=None,
11+
profiles=None,
1212
descheduling_interval=3600,
1313
log_level="Normal",
1414
managemet_state="Managed",
1515
operator_log_level="Normal",
1616
teardown=True,
1717
client=None,
18+
yaml_file=None,
1819
):
1920
"""
2021
Create Descheduler object.
@@ -28,16 +29,23 @@ def __init__(
2829
operator_log_level (str): logging of an operator. Supported: "Normal", "Debug", "Trace", "TraceAll"
2930
"""
3031
super().__init__(
31-
name=name, namespace=namespace, client=client, teardown=teardown
32+
name=name,
33+
namespace=namespace,
34+
client=client,
35+
teardown=teardown,
36+
yaml_file=yaml_file,
3237
)
33-
self.profiles = profiles
38+
self.profiles = profiles or ["AffinityAndTaints"]
3439
self.descheduling_interval = descheduling_interval
3540
self.log_level = log_level
3641
self.managemet_state = managemet_state
3742
self.operator_log_level = operator_log_level
3843

3944
def to_dict(self):
4045
res = super().to_dict()
46+
if self.yaml_file:
47+
return res
48+
4149
res.update(
4250
{
4351
"spec": {

ocp_resources/machine.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@ class Machine(NamespacedResource):
88

99
api_group = NamespacedResource.ApiGroup.MACHINE_OPENSHIFT_IO
1010

11-
def __init__(self, name, namespace, teardown=True, client=None):
11+
def __init__(
12+
self, name=None, namespace=None, teardown=True, client=None, yaml_file=None
13+
):
1214
super().__init__(
13-
name=name, namespace=namespace, client=client, teardown=teardown
15+
name=name,
16+
namespace=namespace,
17+
client=client,
18+
teardown=teardown,
19+
yaml_file=yaml_file,
1420
)
1521

1622
@property

ocp_resources/machine_health_check.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ class MachineHealthCheck(NamespacedResource):
1010

1111
def __init__(
1212
self,
13-
name,
14-
namespace,
15-
cluster_name,
16-
machineset_name,
13+
name=None,
14+
namespace=None,
15+
cluster_name=None,
16+
machineset_name=None,
1717
client=None,
1818
machine_role="worker",
1919
machine_type="worker",
@@ -22,9 +22,14 @@ def __init__(
2222
unhealthy_timeout="300s",
2323
reboot_strategy=False,
2424
teardown=True,
25+
yaml_file=None,
2526
):
2627
super().__init__(
27-
name=name, namespace=namespace, client=client, teardown=teardown
28+
name=name,
29+
namespace=namespace,
30+
client=client,
31+
teardown=teardown,
32+
yaml_file=yaml_file,
2833
)
2934
self.cluster_name = cluster_name
3035
self.machineset_name = machineset_name
@@ -37,6 +42,9 @@ def __init__(
3742

3843
def to_dict(self):
3944
res = super().to_dict()
45+
if self.yaml_file:
46+
return res
47+
4048
if self.reboot_strategy:
4149
res["metadata"]["annotations"] = {
4250
f"{self.api_group}/remediation-strategy": "external-baremetal"

0 commit comments

Comments
 (0)