Files
deployment-portal-be/scripts/shared_alb_prod_migration.py

70 lines
2.4 KiB
Python
Raw Permalink Normal View History

import requests
import copy
import time
#gi credentials
url = "http://localhost:3000"
cookie = ""
x_xsrf_token = ""
s = requests.Session()
s.headers.update({'cookie': cookie, 'x-xsrf-token': x_xsrf_token})
list_manifest_path = "/api/manifest/list"
r = s.get(url + list_manifest_path)
manifest_list = r.json()
count=0
updated_manifests_ids = []
def addNewLb(manifest, existing_lb):
new_lb = copy.deepcopy(existing_lb)
print("New LB to be added:\n", new_lb)
del new_lb['id']
del new_lb['version']
new_lb['groupName'] = manifest['team']['name'].lower() + "-sharedalb"
parts = new_lb['endpoint'].split(".")
parts[0] = parts[0] + '-shared'
new_lb['endpoint'] = ".".join(parts)
new_lb['type'] = "sharedAlbAcrossNamespace"
new_lb['isDeployed'] = False
# Append the new load balancer to the list
manifest['deployment']['loadBalancers'].append(new_lb)
print("New load balancer added to manifest:\n", new_lb)
for i in manifest_list:
r = s.get(url + "/api/manifest/" + str(i['id']))
manifest = r.json()
perform_post = False
# environment should be prod
if manifest['environment'] == 'prod' and 'deployment' in manifest and 'loadBalancers' in manifest['deployment']:
# should not have any security groups attached to deployment
if 'securityGroup' in manifest['deployment'] and len(manifest['deployment']['securityGroup']) != 0:
continue
# Check conditions to decide whether to add new_lb
for lb in manifest['deployment']['loadBalancers']:
if not 'id' in lb:
continue # Skip already cloned load balancers
if ((lb['idleTimeout'] != 60) or (lb['stickiness'] != False) or (lb['type'] != 'alb') or
('internal' not in lb['accessPolicies']) or (len(lb['accessPolicies']) != 1) or
('extraSecurityGroups' in lb and len(lb['extraSecurityGroups']) != 0)):
continue
addNewLb(manifest, lb)
perform_post = True
count += 1
if perform_post:
response = s.post(url + "/api/manifest", json=manifest)
print(response.json())
if response.status_code == 200:
print('Submitted manifest\n')
updated_manifests_ids.append(manifest['id'])
time.sleep(2)
break
print(updated_manifests_ids)
print("Total count:", count)