Skip to content

Commit e23f4b8

Browse files
committed
hook improves
Signed-off-by: Viktor Kramarenko <[email protected]>
1 parent 2adc658 commit e23f4b8

File tree

1 file changed

+61
-40
lines changed

1 file changed

+61
-40
lines changed

hooks/convert_bd_names_to_selector.py

+61-40
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717
import os
1818
from typing import Any, List
1919

20+
import kubernetes
2021
import yaml
2122
from deckhouse import hook
2223

23-
import kubernetes
24-
2524
config = """
2625
configVersion: v1
2726
onStartup: 1
@@ -98,30 +97,20 @@ def main(ctx: hook.Context):
9897
return
9998

10099
print(f"{migrate_script} some lvmvolumegroup resource were found, tries to create LvmVolumeGroupBackup CRD")
101-
for dirpath, _, filenames in os.walk(top=find_crds_root(__file__)):
102-
for filename in filenames:
103-
if filename == 'lvmvolumegroupbackup.yaml':
104-
crd_path = os.path.join(dirpath, filename)
105-
with open(crd_path, "r", encoding="utf-8") as f:
106-
for manifest in yaml.safe_load_all(f):
107-
if manifest is None:
108-
continue
109-
try:
110-
ctx.kubernetes.create_or_update(manifest)
111-
except Exception as e:
112-
print(f"{migrate_script} unable to create LvmVolumeGroupBackup CRD, error: {e}")
113-
raise e
114-
break
100+
create_new_lvg_crd(ctx)
115101
print(f"{migrate_script} successfully created LvmVolumeGroupBackup CRD")
116102

117103
print(f"{migrate_script} starts to create backups and add 'kubernetes.io/hostname' to store the node name")
118104
for lvg in lvg_list.get('items', []):
119105
lvg_backup = copy.deepcopy(lvg)
120-
lvg_backup['kind'] = 'LvmVolumeGroupBackup'
106+
# lvg_backup['kind'] = 'LvmVolumeGroupBackup'
121107
lvg_backup['metadata']['labels']['kubernetes.io/hostname'] = lvg_backup['status']['nodes'][0]['name']
122108
lvg_backup['metadata']['labels'][migration_completed_label] = 'false'
123109
try:
124-
ctx.kubernetes.create_or_update(lvg_backup)
110+
custom_api.create_cluster_custom_object(group=group,
111+
version=version,
112+
plural='lvmvolumegroupbackups',
113+
body=lvg_backup)
125114
except Exception as e:
126115
print(f"{migrate_script} unable to create backup, error: {e}")
127116
raise e
@@ -132,7 +121,11 @@ def main(ctx: hook.Context):
132121
for lvg in lvg_list.get('items', []):
133122
del lvg['metadata']['finalizers']
134123
try:
135-
ctx.kubernetes.create_or_update(lvg)
124+
custom_api.patch_cluster_custom_object(group=group,
125+
plural='lvmvolumegroups',
126+
version=version,
127+
name=lvg['metadata']['name'],
128+
body=lvg)
136129
except Exception as e:
137130
print(f"{migrate_script} unable to remove finalizers from LvmVolumeGroups, error: {e}")
138131
raise e
@@ -142,6 +135,10 @@ def main(ctx: hook.Context):
142135
print(f"{migrate_script} tries to delete LvmVolumeGroup CRD")
143136
try:
144137
api_extenstion.delete_custom_resource_definition(crd_name)
138+
except kubernetes.client.exceptions.ApiException as e:
139+
if e.status == '404':
140+
print(f"{migrate_script} the LvmVolumeGroup CRD has been already deleted")
141+
pass
145142
except Exception as e:
146143
print(f"{migrate_script} unable to delete LvmVolumeGroup CRD")
147144
raise e
@@ -153,9 +150,9 @@ def main(ctx: hook.Context):
153150

154151
print(f"{migrate_script} tries to get LvmVolumeGroupBackups")
155152
try:
156-
lvg_backup_list: Any = kubernetes.client.CustomObjectsApi().list_cluster_custom_object(group=group,
157-
plural='lvmvolumegroupbackups',
158-
version=version)
153+
lvg_backup_list: Any = custom_api.list_cluster_custom_object(group=group,
154+
plural='lvmvolumegroupbackups',
155+
version=version)
159156
except Exception as e:
160157
print(f"{migrate_script} unable to list lvmvolumegroupbackups, error: {e}")
161158
raise e
@@ -165,14 +162,21 @@ def main(ctx: hook.Context):
165162
for lvg_backup in lvg_backup_list.get('items', []):
166163
lvg = configure_new_lvg(lvg_backup)
167164
try:
168-
ctx.kubernetes.create(lvg)
165+
custom_api.create_cluster_custom_object(group=group,
166+
version=version,
167+
plural='lvmvolumegroups',
168+
body=lvg)
169169
print(f"{migrate_script} LVMVolumeGroup {lvg['metadata']['name']} was created")
170170
except Exception as e:
171171
print(f"{migrate_script} unable to create LVMVolumeGroup {lvg['metadata']['name']}, error: {e}")
172172
raise e
173173
try:
174174
lvg_backup['metadata']['labels'][migration_completed_label] = 'true'
175-
ctx.kubernetes.create_or_update(lvg_backup)
175+
custom_api.patch_cluster_custom_object(group=group,
176+
version=version,
177+
plural='lvmvolumegroupbackups',
178+
name=lvg_backup['metadata']['name'],
179+
body=lvg_backup)
176180
print(
177181
f"{migrate_script} the LVMVolumeGroupBackup label {migration_completed_label} was updated to true")
178182
except Exception as e:
@@ -188,9 +192,9 @@ def main(ctx: hook.Context):
188192

189193
print(f"{migrate_script} tries to list LVMVolumeGroup resources")
190194
try:
191-
lvg_list: Any = kubernetes.client.CustomObjectsApi().list_cluster_custom_object(group=group,
192-
plural='lvmvolumegroups',
193-
version=version)
195+
lvg_list: Any = custom_api.list_cluster_custom_object(group=group,
196+
plural='lvmvolumegroups',
197+
version=version)
194198
except Exception as e:
195199
print(f"{migrate_script} unable to list LVMVolumeGroup resources")
196200
raise e
@@ -202,9 +206,9 @@ def main(ctx: hook.Context):
202206

203207
print(f"{migrate_script} tries to list lvmvolumegroupbackups")
204208
try:
205-
lvg_backup_list: Any = kubernetes.client.CustomObjectsApi().list_cluster_custom_object(group=group,
206-
plural='lvmvolumegroupbackups',
207-
version=version)
209+
lvg_backup_list: Any = custom_api.list_cluster_custom_object(group=group,
210+
plural='lvmvolumegroupbackups',
211+
version=version)
208212
except Exception as e:
209213
print(f"{migrate_script} unable to list lvmvolumegroupbackups, error: {e}")
210214
raise e
@@ -222,7 +226,11 @@ def main(ctx: hook.Context):
222226
print(f"{migrate_script} tries to create LVMVolumeGroup {lvg['metadata']['name']}")
223227
lvg = configure_new_lvg(backup)
224228
try:
225-
ctx.kubernetes.create_or_update(lvg)
229+
custom_api.replace_cluster_custom_object(group=group,
230+
plural='lvmvolumegroups',
231+
version=version,
232+
name=lvg['metadata']['name'],
233+
body=lvg)
226234
except Exception as e:
227235
print(f"{migrate_script} unable to create LVMVolumeGroup {lvg['metadata']['name']}, error: {e}")
228236
raise e
@@ -232,13 +240,18 @@ def main(ctx: hook.Context):
232240

233241
print(f"{migrate_script} tries to update LvmVolumeGroupBackup {backup['metadata']['name']}")
234242
try:
235-
ctx.kubernetes.create_or_update(backup)
243+
custom_api.patch_cluster_custom_object(group=group,
244+
version=version,
245+
plural='lvmvolumegroupbackups',
246+
name=backup['metadata']['name'],
247+
body=backup)
248+
print(
249+
f"{migrate_script} the LVMVolumeGroupBackup {backup['metadata']['name']} {migration_completed_label} was updated to true")
236250
except Exception as e:
237251
print(
238-
f"{migrate_script} unable to create LVMVolumeGroupBackup {backup['metadata']['name']}, error: {e}")
252+
f"{migrate_script} unable to update LVMVolumeGroupBackup {backup['metadata']['name']}, error: {e}")
239253
raise e
240-
print(
241-
f"{migrate_script} the LVMVolumeGroupBackup {backup['metadata']['name']} {migration_completed_label} was updated to true")
254+
242255
print(f"{migrate_script} every LVMVolumeGroup resources has been migrated")
243256
return
244257
### End of LVMVolumeGroup CRD flow
@@ -254,9 +267,9 @@ def main(ctx: hook.Context):
254267

255268
print(f"{migrate_script} tries to list lvmvolumegroupbackups")
256269
try:
257-
lvg_backup_list: Any = kubernetes.client.CustomObjectsApi().list_cluster_custom_object(group=group,
258-
plural='lvmvolumegroupbackups',
259-
version=version)
270+
lvg_backup_list: Any = custom_api.list_cluster_custom_object(group=group,
271+
plural='lvmvolumegroupbackups',
272+
version=version)
260273
except Exception as e:
261274
print(f"{migrate_script} unable to list lvmvolumegroupbackups, error: {e}")
262275
raise e
@@ -270,7 +283,11 @@ def main(ctx: hook.Context):
270283
print(f"{migrate_script} tries to create LVMVolumeGroup {lvg['metadata']['name']}")
271284
lvg = configure_new_lvg(backup)
272285
try:
273-
ctx.kubernetes.create_or_update(lvg)
286+
custom_api.replace_cluster_custom_object(group=group,
287+
version=version,
288+
plural='lvmvolumegroups',
289+
name=lvg['metadata']['name'],
290+
body=lvg)
274291
except Exception as e:
275292
print(f"{migrate_script} unable to create LVMVolumeGroup {lvg['metadata']['name']}, error: {e}")
276293
raise e
@@ -280,7 +297,11 @@ def main(ctx: hook.Context):
280297

281298
print(f"{migrate_script} tries to update LvmVolumeGroupBackup {backup['metadata']['name']}")
282299
try:
283-
ctx.kubernetes.create_or_update(backup)
300+
custom_api.patch_cluster_custom_object(group=group,
301+
version=version,
302+
plural='lvmvolumegroupbackups',
303+
name=backup['metadata']['name'],
304+
body=backup)
284305
except Exception as e:
285306
print(
286307
f"{migrate_script} unable to create LVMVolumeGroupBackup {backup['metadata']['name']}, error: {e}")

0 commit comments

Comments
 (0)