INFRA-3149 | Dhruv | py script to migrate amc manifest
This commit is contained in:
2
kutegen
2
kutegen
Submodule kutegen updated: 088b3091dd...671c84b202
64
scripts/amc_manifest_migration.py
Normal file
64
scripts/amc_manifest_migration.py
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import requests
|
||||
|
||||
url_to_fetch = "" # FILL ME
|
||||
url_to_post = "" # FILL ME
|
||||
get_cookie = "" # FILL ME
|
||||
get_x_xsrf_token = "" # FILL ME
|
||||
post_cookie = "" # FILL ME
|
||||
post_x_xsrf_token = "" # FILL ME
|
||||
get_manifest = requests.Session()
|
||||
get_manifest.headers.update({'cookie': get_cookie, 'x-xsrf-token': get_x_xsrf_token})
|
||||
post_manifest = requests.Session()
|
||||
post_manifest.headers.update({'cookie': post_cookie, 'x-xsrf-token': post_x_xsrf_token})
|
||||
|
||||
ids = [] # FILL ME
|
||||
|
||||
|
||||
def remove_version_id_keys(data):
|
||||
if isinstance(data, dict):
|
||||
return {key: remove_version_id_keys(value) for key, value in data.items() if
|
||||
key not in ['version', 'id']}
|
||||
elif isinstance(data, list):
|
||||
return [remove_version_id_keys(item) for item in data]
|
||||
else:
|
||||
return data
|
||||
|
||||
|
||||
def replace_key(data, key_to_replace, value_to_replace, replace_with):
|
||||
if isinstance(data, dict):
|
||||
return {
|
||||
key: replace_key(value, key_to_replace, value_to_replace, replace_with) if isinstance(
|
||||
value, (dict, list))
|
||||
else (
|
||||
value.replace(value_to_replace, replace_with) if isinstance(value,
|
||||
str) and key == key_to_replace
|
||||
else replace_with if value == value_to_replace and key == key_to_replace and isinstance(
|
||||
value, type(value_to_replace))
|
||||
else value
|
||||
)
|
||||
for key, value in data.items()
|
||||
}
|
||||
elif isinstance(data, list):
|
||||
return [replace_key(item, key_to_replace, value_to_replace, replace_with) for item in data]
|
||||
else:
|
||||
return data
|
||||
|
||||
|
||||
replacements = [
|
||||
('product', 'lending', 'amc'),
|
||||
('infraVertical', 'lending', 'amc'),
|
||||
('cluster', 'nonprod.np.navi-tech.in', 'aps1.np.navi-amc.in'),
|
||||
('endpoint', 'np.navi-tech.in', 'np.navi-amc.in'),
|
||||
('isDeployed', True, False)
|
||||
]
|
||||
|
||||
for id in ids:
|
||||
r = get_manifest.get(url_to_fetch + id)
|
||||
get_manifest_response = r.json()
|
||||
manifest_data_to_post = remove_version_id_keys(get_manifest_response)
|
||||
for key, old_value, new_value in replacements:
|
||||
manifest_data_to_post = replace_key(manifest_data_to_post, key, old_value, new_value)
|
||||
post_manifest_response = post_manifest.post(f"{url_to_post}", json=manifest_data_to_post)
|
||||
print(f'manifestId:{id} status code {post_manifest_response.status_code}')
|
||||
Reference in New Issue
Block a user