23
23
import openshift as oc
24
24
import yaml
25
25
26
+ from kubernetes import client , config
27
+ from .cluster import _kube_api_error_handling
28
+
26
29
27
30
class AWManager :
28
31
"""
@@ -40,10 +43,10 @@ def __init__(self, filename: str) -> None:
40
43
self .filename = filename
41
44
try :
42
45
with open (self .filename ) as f :
43
- awyaml = yaml .load (f , Loader = yaml .FullLoader )
44
- assert awyaml ["kind" ] == "AppWrapper"
45
- self .name = awyaml ["metadata" ]["name" ]
46
- self .namespace = awyaml ["metadata" ]["namespace" ]
46
+ self . awyaml = yaml .load (f , Loader = yaml .FullLoader )
47
+ assert self . awyaml ["kind" ] == "AppWrapper"
48
+ self .name = self . awyaml ["metadata" ]["name" ]
49
+ self .namespace = self . awyaml ["metadata" ]["namespace" ]
47
50
except :
48
51
raise ValueError (
49
52
f"{ filename } is not a correctly formatted AppWrapper yaml"
@@ -55,19 +58,17 @@ def submit(self) -> None:
55
58
Attempts to create the AppWrapper custom resource using the yaml file
56
59
"""
57
60
try :
58
- with oc .project (self .namespace ):
59
- oc .invoke ("create" , ["-f" , self .filename ])
60
- except oc .OpenShiftPythonException as osp : # pragma: no cover
61
- error_msg = osp .result .err ()
62
- if "Unauthorized" in error_msg or "Forbidden" in error_msg :
63
- raise PermissionError (
64
- "Action not permitted, have you put in correct/up-to-date auth credentials?"
65
- )
66
- elif "AlreadyExists" in error_msg :
67
- raise FileExistsError (
68
- f"An AppWrapper of the name { self .name } already exists in namespace { self .namespace } "
69
- )
70
- raise osp
61
+ config .load_kube_config ()
62
+ api_instance = client .CustomObjectsApi ()
63
+ api_instance .create_namespaced_custom_object (
64
+ group = "mcad.ibm.com" ,
65
+ version = "v1beta1" ,
66
+ namespace = self .namespace ,
67
+ plural = "appwrappers" ,
68
+ body = self .awyaml ,
69
+ )
70
+ except Exception as e :
71
+ return _kube_api_error_handling (e )
71
72
72
73
self .submitted = True
73
74
print (f"AppWrapper { self .filename } submitted!" )
@@ -82,25 +83,17 @@ def remove(self) -> None:
82
83
return
83
84
84
85
try :
85
- with oc .project (self .namespace ):
86
- oc .invoke ("delete" , ["AppWrapper" , self .name ])
87
- except oc .OpenShiftPythonException as osp : # pragma: no cover
88
- error_msg = osp .result .err ()
89
- if (
90
- 'the server doesn\' t have a resource type "AppWrapper"' in error_msg
91
- or "forbidden" in error_msg
92
- or "Unauthorized" in error_msg
93
- or "Missing or incomplete configuration" in error_msg
94
- ):
95
- raise PermissionError (
96
- "Action not permitted, have you put in correct/up-to-date auth credentials?"
97
- )
98
- elif "not found" in error_msg :
99
- self .submitted = False
100
- print ("AppWrapper not found, was deleted in another manner" )
101
- return
102
- else :
103
- raise osp
86
+ config .load_kube_config ()
87
+ api_instance = client .CustomObjectsApi ()
88
+ api_instance .delete_namespaced_custom_object (
89
+ group = "mcad.ibm.com" ,
90
+ version = "v1beta1" ,
91
+ namespace = self .namespace ,
92
+ plural = "appwrappers" ,
93
+ name = self .name ,
94
+ )
95
+ except Exception as e :
96
+ return _kube_api_error_handling (e )
104
97
105
98
self .submitted = False
106
99
print (f"AppWrapper { self .name } removed!" )
0 commit comments