def start()

in production-deployment-sample-script/deployment.py [0:0]


def start(args):
    # Validate input json files before moving on to network calls
    print("Opening Build json file: %s" % args['build_json'])
    parsed_build = ParsedBuild(args['build_json'])
    print("Opening Fleet json file: %s" % args['fleet_json'])
    parsed_fleet = ParsedFleet(args['fleet_json'])

    # Validate input FleetId and AliasId exist
    game_lift_client = GameLiftClient()
    previous_fleet_id = args['fleet_id']
    alias_id = args['alias_id']
    utilities.validate_fleet_exists(game_lift_client, previous_fleet_id)
    utilities.validate_alias_exists(game_lift_client, alias_id)

    # Create the Build based on input file
    print("\nCreating new Build with Name: %s" % parsed_build.name)
    create_build_response = game_lift_client.create_build(parsed_build)
    new_build_id = create_build_response['Build']['BuildId']
    print("Build %s created." % new_build_id)

    # Loop to wait until the Build is READY
    utilities.wait_for_build_to_be_ready(game_lift_client, new_build_id)
    print("Build %s is READY!" % new_build_id)

    # Create the Fleet based on inputs - Make sure to apply the new BuildId when creating the Fleet
    parsed_fleet.build_id = new_build_id
    print("\nCreating new Fleet with Name: %s, BuildId: %s" % (parsed_fleet.name, parsed_fleet.build_id))
    create_fleet_response = game_lift_client.create_fleet(parsed_fleet)
    new_fleet_id = create_fleet_response['FleetAttributes']['FleetId']
    print("Fleet %s created." % new_fleet_id)

    # Loop until Fleet is ACTIVE
    utilities.wait_for_fleet_to_be_active(game_lift_client, new_fleet_id)
    print("All Fleet locations on %s are ACTIVE!" % new_fleet_id)

    # ===============================================================================================================================
    # NOTE: If your new Fleet requires more than 1 instance, this is where to insert calls to UpdateFleetCapacity / PutScalingPolicy.
    # ===============================================================================================================================

    # Update the Alias with the new FleetId
    print("\nUpdating Alias %s from Fleet %s to new Fleet %s" % (alias_id, previous_fleet_id, new_fleet_id))
    update_alias_response = game_lift_client.update_alias(alias_id, new_fleet_id)

    # Loop on existing Fleet and wait for all GameSessions to end.  This can take a long time.
    utilities.wait_for_game_sessions_to_terminate(game_lift_client, previous_fleet_id)
    print("Fleet %s has 0 GameSessions, all traffic has transitioned to new Fleet %s." % (previous_fleet_id, new_fleet_id))

    # Delete the previous Fleet
    print("\nDeleting previous Fleet %s." % previous_fleet_id)
    game_lift_client.delete_fleet(previous_fleet_id)
    print("Deployment complete to Fleet %s!" % new_fleet_id)