def aws_account(event): #update selected AWS account and send VPC list menu aws_account = event.get("response").split("+")[0] aws_id = event.get("response").split("+")[1] data = prepare_data_for_lambda(event, "list_vpc") data.update( { "linked_account_id": aws_id, "region": event.get("region") } ) event.update( { "vpc_list": call_lambda_sync( "slack_vmc", data ) } ) message_handler(msg_const.AWS_VPC, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.AWS_VPC, "aws_account": aws_account, "connected_account_id": aws_id } )
def instance_type(event): if "i3" == event.get("response"): event.update( { "num_hosts_list": list_num_hosts( event.get("max_hosts"), event.get("deployment_type") ) } ) message_handler(msg_const.NUM_HOSTS, event) status = cmd_const.NUM_HOSTS instance_type = "I3_METAL" elif "r5" == event.get("response"): message_handler(msg_const.STORAGE_CAPACITY, event) status = cmd_const.STORAGE_CAPACITY instance_type = "R5_METAL" write_event_db( event.get("db_url"), event.get("user_id"), { "status": status, "host_instance_type": instance_type } )
def aws_vpc(event): #update selected VPC and send list of AWS Subnet menu vpc_id = event.get("response") data = prepare_data_for_lambda(event, "list_subnet") data.update( { "linked_account_id": event.get("aws_id"), "region": event.get("region"), "connected_account_id": event.get("connected_account_id"), "vpc_id": vpc_id } ) event.update( { "subnet_list": call_lambda_sync( "slack_vmc", data ) } ) message_handler(msg_const.AWS_SUBNET, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.AWS_SUBNET, "vpc_id": vpc_id } )
def check_max_hosts(event): #response if proceed with this wizard or not and send select menu of AWS Region if "yes" in event.get("response"): data = prepare_data_for_lambda(event, "list_region") event.update( { "region_list": call_lambda_sync( "slack_vmc", data ) } # { # "region_list": [ # { # "text": "AP_NORTHEAST_1", #for internal use # "value": "AP_NORTHEAST_1" #for internal use # } # ] # } ) message_handler(msg_const.REGION, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.AWS_REGION } ) else: message_handler(msg_const.CANCEL_SDDC, event) delete_event_db(event.get("db_url"), event.get("user_id"))
def create_sddc(event): #first create sddc command from text message message_handler(msg_const.SDDC_WIZARD, event) message_handler(msg_const.CHECK_RESOURCE, event) data = prepare_data_for_lambda(event, "check_max_hosts") max_hosts = call_lambda_sync( "slack_vmc", data ) # max_hosts = 10 #for test max_hosts = 5 #for test event.update({"max_hosts": max_hosts}) if max_hosts < 1: message_handler(msg_const.NOT_ENOUGH, event) delete_event_db(event.get("db_url"), event.get("user_id")) else: message_handler(msg_const.MAX_HOSTS, event) write_event_db( event.get("db_url"), event.get("user_id"), { "command": cmd_const.COMMAND_SDDC[event.get("text")], "status": cmd_const.CHECK_MAX_HOSTS, "max_hosts": max_hosts, "provider": "AWS" } )
def aws_subnet(event): message_handler(msg_const.CIDR, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.MGMT_CIDR, "customer_subnet_id": event.get("response") } )
def aws_region(event): #update AWS Region and send sddc name message message_handler(msg_const.SDDC_NAME, event) write_event_db( event.get("db_url"), event.get("user_id"), { "region": event.get("response"), "status": cmd_const.SDDC_NAME } )
def selected_sddc_to_delete(event): sddc_name = event.get("response").split("+")[0] sddc_id = event.get("response").split("+")[1] event.update( {"sddc_name": sddc_name} ) write_event_db( event.get("db_url"), event.get("user_id"), { "sddc_name": sddc_name, "sddc_id": sddc_id # "sddc_id": "ffcdc226-c3a6-4c8c-bc9b-3b14de2e089c" } ) message_handler(msg_const.CONFIRM_DELETE, event)
def mgmt_cidr(event): text = event.get("text") if is_network(text): if is_valid_network(text): event.update({"vpc_cidr": text}) message_handler(msg_const.SDDC_CONFIRM, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.CHECK_CONFIG, "vpc_cidr": text } ) else: message_handler(msg_const.WRONG_NETWORK, event) else: message_handler(msg_const.WRONG_NETWORK, event)
def num_hosts(event): #update num hosts and send AWS account menu list_aws_account(event) num_hosts = int(event.get("response")) storage_capacity = None if event.get("storage_capacity") is not None: storage_capacity = event.get("storage_capacity") storage_capacity *= num_hosts write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.AWS_ACCOUNT, "num_hosts": num_hosts, "storage_capacity": storage_capacity } )
def link_aws(event): #in case of Single host sddc, and update link aws and send AWS account menu or enter mgmt cider message if "True" in event.get("response"): #in case of linking customer AWS VPC to this SDDC list_aws_account(event) status = cmd_const.AWS_ACCOUNT else: #in case of not linking customer AWS VPC message_handler(msg_const.CIDR, event) status = cmd_const.MGMT_CIDR write_event_db( event.get("db_url"), event.get("user_id"), { "status": status, "num_hosts": 1, "sddc_type": "1NODE", "link_aws": event.get("response") } )
def storage_capacity(event): #storage capacity is 15003 or 20004,25005,30006,35007 per host event.update( { "num_hosts_list": list_num_hosts( event.get("max_hosts"), event.get("deployment_type") ) } ) message_handler(msg_const.NUM_HOSTS, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.NUM_HOSTS, "storage_capacity": int(event.get("response")) #need to multiply by num_hosts later } )
def check_config(event): if "yes" in event.get("response"): message_handler(msg_const.CREATE, event) event.update({"vmc_command": "create_sddc"}) try: task_id = call_lambda_sync("slack_vmc", event) except Exception as e: event.update( { "message": "Sorry, failed to create sddc. {}".format(str(e)), # "text": str(e), # "status": "task_failed" } ) message_handler(msg_const.SDDC_RESULT, event) delete_event_db(event.get("db_url"), event.get("user_id")) else: event.update( { "task_id": task_id, "status": "task_started", "lambda_name": "check_task" } ) write_event_db( event.get("db_url"), event.get("user_id"), { "status": "creating", } ) call_lambda_async("check_task", event) message_handler(msg_const.TASK_MSG, event) message_handler(msg_const.CRUD_SDDC, event) message_handler(msg_const.TASK_WH, event) else: message_handler(msg_const.CANCEL_SDDC, event) delete_event_db(event.get("db_url"), event.get("user_id"))
def single_multi(event): #update single or multi hosts and send link aws nemu or max hosts menu if "single" in event.get("response"): message_handler(msg_const.LINK_AWS, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.LINK_AWS, "host_instance_type": "I3_METAL" } ) elif "multi" in event.get("response"): message_handler(msg_const.INSTANCE_TYPE, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.INSTANCE_TYPE, "link_aws": "True" } ) else: message_handler(msg_const.INSTANCE_TYPE, event) write_event_db( event.get("db_url"), event.get("user_id"), { "status": cmd_const.INSTANCE_TYPE, "deployment_type": "MultiAZ", "link_aws": "True" } )
def medium_large(event): max_hosts = event.get("max_hosts") data = { "size": event.get("response") } if max_hosts == 1: message_handler(msg_const.LINK_AWS, event) # status = cmd_const.AWS_ACCOUNT data.update( { "status": cmd_const.AWS_ACCOUNT, "host_instance_type": "I3_METAL" } ) elif max_hosts < 6: message_handler(msg_const.SINGLE_MULTI, event) # status = cmd_const.SINGLE_MULTI data.update( { "status": cmd_const.SINGLE_MULTI } ) else: message_handler(msg_const.STRETCH, event) # status = cmd_const.SINGLE_MULTI data.update( { "status": cmd_const.SINGLE_MULTI } ) write_event_db( event.get("db_url"), event.get("user_id"), data )
def delete_sddc(event): data = prepare_data_for_lambda(event, "list_sddcs_name_id") try: event.update( { "option_list": call_lambda_sync( "slack_vmc", data ) } ) except Exception as e: event.update({"text": str(e)}) message_handler(msg_const.ERROR, event) else: message_handler(msg_const.DELETE_SDDC, event) write_event_db( event.get("db_url"), event.get("user_id"), { "command": cmd_const.COMMAND_SDDC[event.get("text")], "status": cmd_const.DELETE_SDDC } )
def sddc_name(event): #update sddc name and send link aws menu or single mult menu # max_hosts = event.get("max_hosts") message_handler(msg_const.MEDIUM_LARGE, event) status = cmd_const.MEDIUM_LARGE # if max_hosts == 1: # message_handler(msg_const.LINK_AWS, event) # status = cmd_const.AWS_ACCOUNT # elif max_hosts < 6: # message_handler(msg_const.SINGLE_MULTI, event) # status = cmd_const.SINGLE_MULTI # else: # message_handler(msg_const.STRETCH, event) # status = cmd_const.SINGLE_MULTI write_event_db( event.get("db_url"), event.get("user_id"), { "status": status, "sddc_name": event.get("text") } )