in source/Tools Integration/MGN-Integration/Lambdas/lambda_mgn.py [0:0]
def get_factory_servers(waveid, accountid):
try:
# Get all Apps and servers from migration factory
getserver = scan_dynamodb_server_table()
servers = sorted(getserver, key = lambda i: i['server_name'])
getapp = scan_dynamodb_app_table()
apps = sorted(getapp, key = lambda i: i['app_name'])
# Get Unique target AWS account and region
aws_accounts = []
for app in apps:
if 'wave_id' in app and 'aws_accountid' in app and 'aws_region' in app:
if str(app['wave_id']) == str(waveid):
if len(str(app['aws_accountid']).strip()) == 12 and str(app['aws_accountid']).isdigit():
target_account = {}
target_account['aws_accountid'] = str(app['aws_accountid']).strip()
target_account['aws_region'] = app['aws_region'].lower().strip()
target_account['servers'] = []
if accountid.strip() == 'All Accounts':
if target_account not in aws_accounts:
aws_accounts.append(target_account)
else:
if str(app['aws_accountid']).strip() == str(accountid).strip():
if target_account not in aws_accounts:
aws_accounts.append(target_account)
else:
msg = "ERROR: Incorrect AWS Account Id for app: " + app['app_name']
log.error(msg)
return msg
if len(aws_accounts) == 0:
msg = "ERROR: Server list for wave " + waveid + " is empty...."
log.error(msg)
return msg
# Get server list
for account in aws_accounts:
for app in apps:
if 'wave_id' in app and 'aws_accountid' in app and 'aws_region' in app:
if str(app['wave_id']) == str(waveid):
if str(app['aws_accountid']).strip() == str(account['aws_accountid']):
if app['aws_region'].lower().strip() == account['aws_region']:
for server in servers:
if 'app_id' in server:
if server['app_id'] == app['app_id']:
account['servers'].append(server)
if len(account['servers']) == 0:
msg = "ERROR: Server list for wave " + waveid + " and account: " + account['aws_accountid'] + " region: " + account['aws_region'] + " is empty...."
log.error(msg)
return msg
return aws_accounts
except botocore.exceptions.ClientError as error:
if ":" in str(error):
err = ''
msgs = str(error).split(":")[1:]
for msg in msgs:
err = err + msg
msg = "ERROR: " + err
log.error(msg)
return msg
else:
msg = "ERROR: " + str(error)
log.error(msg)
return msg