in source/backend/lambda_ams_wig/lambda_ams_wig.py [0:0]
def lambda_handler(event, context):
try:
body = json.loads(event['body'])
if 'userapitoken' not in body:
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': 'userapitoken is required'}
if 'projectname' not in body:
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': 'projectname is required'}
if 'waveid' not in body:
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': 'waveid is required'}
if 'key_id' not in body:
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': 'AWS Credentials is required'}
if 'secret' not in body:
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': 'AWS Credentials is required'}
except Exception as e:
print(e)
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': 'malformed json input'}
print("")
print("************************")
print("* Login to CloudEndure *")
print("************************")
r = CElogin(body['userapitoken'], endpoint)
if r is not None and "ERROR" in r:
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': r}
if r is not None and "ERROR" in r:
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': r}
ServerList = GetServerList(body['projectname'], body['waveid'], body['key_id'], body['secret'], session, headers, endpoint, HOST)
print(ServerList)
print("************************************")
print("Creating a workload ingest RFC....")
print("************************************")
success_servers = ""
failed_servers = ""
for server in ServerList:
if 'InstanceId' in server:
if 'ams_vpc_id' not in server:
msg = 'ams_vpc_id attribute for ' + server['server_name'] + ' does not exist'
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': msg}
if 'ams_subnet_id' not in server:
msg = 'ams_subnet_id attribute for ' + server['server_name'] + ' does not exist'
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': msg}
if 'ams_securitygroup_ids' not in server:
msg = 'ams_securitygroup_ids attribute for ' + server['server_name'] + ' does not exist'
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': msg}
msg = "WIG for " + server['server_name'] + '-' + server['InstanceId']
para = {
"InstanceId":server['InstanceId'],
"TargetVpcId":server['ams_vpc_id'],
"TargetSubnetId":server['ams_subnet_id'],
"Name":msg,
"Description":msg,
"TargetInstanceType":server['instanceType'],
"TargetSecurityGroupIds": server['ams_securitygroup_ids']
}
try:
print("***************************************")
print("Submitting the workload ingest RFC....")
print("***************************************")
ams_client = boto3.client('amscm', aws_access_key_id=body['key_id'], aws_secret_access_key=body['secret'])
rfc = ams_client.create_rfc(ChangeTypeId="ct-257p9zjk14ija", ChangeTypeVersion="1.0",
Title=msg, ExecutionParameters=json.dumps(para))
result=ams_client.submit_rfc(RfcId=rfc['RfcId'])
if result['ResponseMetadata']['HTTPStatusCode'] == 200:
success_servers = success_servers + server["server_name"] + ","
else:
failed_servers = failed_servers + server["server_name"] + ","
except Exception as e:
print(e)
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': str(e)}
else:
msg = 'Target Instance for Server ' + server['server_name'] + ' does not exist'
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': msg}
message1 = ""
message2 = ""
if len(failed_servers) > 0:
failed_servers = failed_servers[:-1]
message1 = "ERROR: " + " AMS Workload Ingest RFC submission failed for server: " + failed_servers
if len(success_servers) > 0:
success_servers = success_servers[:-1]
message2 = "The AMS Workload Ingest RFC submission was successful for server: " + success_servers
msg = message1 + ' | ' + message2
print(msg)
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': msg}
else:
print(message1)
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 400, 'body': message1}
elif len(success_servers) > 0:
success_servers = success_servers[:-1]
message2 = "The AMS Workload Ingest RFC submission was successful for server: " + success_servers
print(message2)
return {'headers': {'Access-Control-Allow-Origin': '*'},
'statusCode': 200, 'body': message2}