Beispiel #1
0
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
        }
    )
Beispiel #2
0
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 
        }
    )
Beispiel #3
0
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
        }
    )
Beispiel #4
0
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"))
Beispiel #5
0
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"
            }
        )
Beispiel #6
0
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")
        }
    )
Beispiel #7
0
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
        }
    )
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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
        }
    )
Beispiel #11
0
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")
        }
    )
Beispiel #12
0
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
        }
    )
Beispiel #13
0
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"))
Beispiel #14
0
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"
            }
        )
Beispiel #15
0
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
    )
Beispiel #16
0
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
            }
        )
Beispiel #17
0
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")
        }
    )