Ejemplo n.º 1
0
def create_account():
    firstname = menu.text_input("Enter Your First Name")
    lastname = menu.text_input("Enter Your Last Name")
    email = menu.text_input("Enter Your Email Address")
    phone = menu.text_input("Enter Your 10 Digit Phone Number")

    menu.info_message("Setting up your account...")
    create_response = requests.post(
        f"{config.SPLIT_CLI_BACKEND_BASE_URL}/create-and-enroll-user",
        json={
            "fields": [{
                "name": "firstname",
                "value": firstname
            }, {
                "name": "lastname",
                "value": lastname
            }, {
                "name": "email",
                "value": email
            }, {
                "name": "phone",
                "value": phone
            }]
        })

    if create_response.status_code != 200:
        menu.error_message(create_response.json())
        exit()

    status = 403
    while status == 403:
        verify_response = verify_and_complete(firstname, lastname, email)
        status = verify_response.status_code
        if (status == 403):
            menu.warn_message("Incorrect confirmation code. Please try again")

    if verify_response.status_code != 200:
        menu.error_message(verify_response.json())
        exit()

    verify_response_json = verify_response.json()
    user = User(verify_response_json["apiToken"],
                verify_response_json["orgId"], verify_response_json["userId"],
                firstname, lastname, email)
    user.write()
    password = verify_response_json["password"]
    menu.info_message(
        f"\nYour admin api key has been written to: {config.config_file}.")
    menu.info_message(
        f"Your email is: {email} and your assigned password is: {password}.")
    menu.info_message(
        "Make note of your password as it will not be repeated. You can change your password by logging in to: https://app.split.io"
    )
Ejemplo n.º 2
0
def create_segment(workspace):
    try:
        segment_name = menu.text_input("Enter a name for your segment")
        segment_description = menu.text_input(
            "Enter a description for your segment")
        traffic_type = core_selectors.selection_traffic_type(workspace["id"])

        segments_api.create_segment(workspace["id"], traffic_type["name"],
                                    segment_name, segment_description)

        create_segment_in_all_environments(workspace, segment_name)
        menu.success_message("Your segment has been created!")
    except Exception as exc:
        menu.error_message("Could not create segment\n" + str(exc))
def ramp_split(workspace, split, environment, definition):
    try:
        total_ramp = 0
        treatment_map = {}
        default_treatment = definition['defaultTreatment']
        for treatment in definition['treatments']:
            treatment_name = treatment['name']
            if treatment_name != default_treatment:
                while True:
                    ramp_percent = int(
                        menu.text_input("Ramp percentage for " +
                                        treatment_name))
                    if total_ramp + ramp_percent > 100:
                        menu.error_message(
                            "Total ramp percentage must be less than 100: remaining="
                            + (100 - total_ramp))
                    else:
                        treatment_map[treatment_name] = ramp_percent
                        total_ramp += ramp_percent
                        break
        treatment_map[default_treatment] = 100 - total_ramp
        split_data = split_templates.ramp_default_rule(definition,
                                                       treatment_map)
        definitions_api.full_update(workspace["id"], environment["name"],
                                    split["name"], split_data)
    except Exception as exc:
        menu.error_message("Could not update split\n" + str(exc))
Ejemplo n.º 4
0
def create_split(workspace):
    try:
        split_name = menu.text_input("Enter a name for your split")
        split_description = menu.text_input(
            "Enter a description for your split")
        traffic_type = core_selectors.selection_traffic_type(workspace["id"])

        (treatments, baseline) = definition_selectors.select_treatments()

        create_split_operator(workspace["id"], traffic_type["name"],
                              split_name, split_description, treatments,
                              baseline)
        menu.success_message("Your split has been created!")

        split = splits_api.get_split(workspace['id'], split_name)
        manage_split(workspace, split)
    except Exception as exc:
        menu.error_message("Could not create split\n" + str(exc))
Ejemplo n.º 5
0
def sign_in():
    email = menu.text_input("Enter your email")
    menu.info_message(
        "To find your Admin API Key, follow the directions here:")
    menu.info_message("https://www.youtube.com/watch?v=80Bz2ZcZUrs")
    split_apikey = menu.password_input("Enter your Split Admin API Key")
    new_user = user.User(split_apikey, "", "", "", "", email)
    user.set_user(new_user)

    # Check user
    active_user = users_api.get_user_by_email(email)
    if active_user != None:
        new_user.firstname = active_user['name']
    else:
        new_user.firstname = email
        menu.warn_message("Email does not exist in organization")

    new_user.write()

    return new_user
Ejemplo n.º 6
0
def verify_and_complete(firstname, lastname, email):
    confirmation_code = menu.text_input(
        "Please enter the 6 digit confirmation code sent to your phone")
    menu.info_message("Processing account creation...")
    menu.info_message("This could take up to one minute.")
    # TODO - validate confirmation code is a 6-digit number
    verify_response = requests.post(
        f"{config.SPLIT_CLI_BACKEND_BASE_URL}/verify-and-complete",
        json={
            "fields": [{
                "name": "firstname",
                "value": firstname
            }, {
                "name": "lastname",
                "value": lastname
            }, {
                "name": "email",
                "value": email
            }, {
                "name": "passCode",
                "value": confirmation_code
            }]
        })
    return verify_response