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)