com.amazonaws.services.gamelift.model.CreateFleetRequest Maven / Gradle / Ivy
Show all versions of aws-java-sdk-osgi Show documentation
/*
 * Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights
 * Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package com.amazonaws.services.gamelift.model;
import java.io.Serializable;
import com.amazonaws.AmazonWebServiceRequest;
/**
 * 
 * Represents the input for a request action.
 * 
 */
public class CreateFleetRequest extends AmazonWebServiceRequest implements
        Serializable, Cloneable {
    /**
     * 
     * Descriptive label associated with this fleet. Fleet names do not need to
     * be unique.
     * 
     */
    private String name;
    /**
     * 
     * Human-readable description of the fleet.
     * 
     */
    private String description;
    /**
     * 
     * Unique identifier for the build you want the new fleet to use.
     * 
     */
    private String buildId;
    /**
     * 
     * Path to the launch executable for the game server. A game server is built
     * into a C:\game drive. This value must be expressed as
     * C:\game\[launchpath]. Example: If, when built, your game
     * server files are in a folder called "MyGame", your log path should be
     * C:\game\MyGame\server.exe.
     * 
     */
    private String serverLaunchPath;
    /**
     * 
     * Parameters required to launch your game server. These parameters should
     * be expressed as a string of command-line parameters. Example:
     * "+sv_port 33435 +start_lobby".
     * 
     */
    private String serverLaunchParameters;
    /**
     * 
     * Path to game-session log files generated by your game server. Once a game
     * session has been terminated, Amazon GameLift captures and stores the logs
     * on Amazon S3. Use the GameLift console to access the stored logs.
     * 
     */
    private java.util.List logPaths;
    /**
     * 
     * Type of EC2 instances used in the fleet. EC2 instance types define the
     * CPU, memory, storage, and networking capacity of the fleetaposs hosts.
     * Amazon GameLift supports the EC2 instance types listed below. See Amazon EC2 Instance
     * Types for detailed descriptions of each.
     * 
     */
    private String eC2InstanceType;
    /**
     * 
     * Access limits for incoming traffic. Setting these values limits game
     * server access to incoming traffic using specified IP ranges and port
     * numbers. Some ports in a range may be restricted. You can provide one or
     * more sets of permissions for the fleet.
     * 
     */
    private java.util.List eC2InboundPermissions;
    /**
     * 
     * Game session protection policy to apply to all instances created in this
     * fleet. If this parameter is not set, new instances in this fleet will
     * default to no protection. Protection can be set for individual instances
     * using UpdateGameSession.
     * 
     * - NoProtection: The game session can be terminated during a scale-down
     * event.
 
     * - FullProtection: If the game session is in an ACTIVE status, it cannot
     * be terminated during a scale-down event.
 
     * 
     * 
     */
    private String newGameSessionProtectionPolicy;
    /**
     * 
     * Descriptive label associated with this fleet. Fleet names do not need to
     * be unique.
     * 
     * 
     * @param name
     *        Descriptive label associated with this fleet. Fleet names do not
     *        need to be unique.
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * 
     * Descriptive label associated with this fleet. Fleet names do not need to
     * be unique.
     * 
     * 
     * @return Descriptive label associated with this fleet. Fleet names do not
     *         need to be unique.
     */
    public String getName() {
        return this.name;
    }
    /**
     * 
     * Descriptive label associated with this fleet. Fleet names do not need to
     * be unique.
     * 
     * 
     * @param name
     *        Descriptive label associated with this fleet. Fleet names do not
     *        need to be unique.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withName(String name) {
        setName(name);
        return this;
    }
    /**
     * 
     * Human-readable description of the fleet.
     * 
     * 
     * @param description
     *        Human-readable description of the fleet.
     */
    public void setDescription(String description) {
        this.description = description;
    }
    /**
     * 
     * Human-readable description of the fleet.
     * 
     * 
     * @return Human-readable description of the fleet.
     */
    public String getDescription() {
        return this.description;
    }
    /**
     * 
     * Human-readable description of the fleet.
     * 
     * 
     * @param description
     *        Human-readable description of the fleet.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withDescription(String description) {
        setDescription(description);
        return this;
    }
    /**
     * 
     * Unique identifier for the build you want the new fleet to use.
     * 
     * 
     * @param buildId
     *        Unique identifier for the build you want the new fleet to use.
     */
    public void setBuildId(String buildId) {
        this.buildId = buildId;
    }
    /**
     * 
     * Unique identifier for the build you want the new fleet to use.
     * 
     * 
     * @return Unique identifier for the build you want the new fleet to use.
     */
    public String getBuildId() {
        return this.buildId;
    }
    /**
     * 
     * Unique identifier for the build you want the new fleet to use.
     * 
     * 
     * @param buildId
     *        Unique identifier for the build you want the new fleet to use.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withBuildId(String buildId) {
        setBuildId(buildId);
        return this;
    }
    /**
     * 
     * Path to the launch executable for the game server. A game server is built
     * into a C:\game drive. This value must be expressed as
     * C:\game\[launchpath]. Example: If, when built, your game
     * server files are in a folder called "MyGame", your log path should be
     * C:\game\MyGame\server.exe.
     * 
     * 
     * @param serverLaunchPath
     *        Path to the launch executable for the game server. A game server
     *        is built into a C:\game drive. This value must be
     *        expressed as C:\game\[launchpath]. Example: If, when
     *        built, your game server files are in a folder called "MyGame",
     *        your log path should be C:\game\MyGame\server.exe.
     */
    public void setServerLaunchPath(String serverLaunchPath) {
        this.serverLaunchPath = serverLaunchPath;
    }
    /**
     * 
     * Path to the launch executable for the game server. A game server is built
     * into a C:\game drive. This value must be expressed as
     * C:\game\[launchpath]. Example: If, when built, your game
     * server files are in a folder called "MyGame", your log path should be
     * C:\game\MyGame\server.exe.
     * 
     * 
     * @return Path to the launch executable for the game server. A game server
     *         is built into a C:\game drive. This value must be
     *         expressed as C:\game\[launchpath]. Example: If, when
     *         built, your game server files are in a folder called "MyGame",
     *         your log path should be C:\game\MyGame\server.exe.
     */
    public String getServerLaunchPath() {
        return this.serverLaunchPath;
    }
    /**
     * 
     * Path to the launch executable for the game server. A game server is built
     * into a C:\game drive. This value must be expressed as
     * C:\game\[launchpath]. Example: If, when built, your game
     * server files are in a folder called "MyGame", your log path should be
     * C:\game\MyGame\server.exe.
     * 
     * 
     * @param serverLaunchPath
     *        Path to the launch executable for the game server. A game server
     *        is built into a C:\game drive. This value must be
     *        expressed as C:\game\[launchpath]. Example: If, when
     *        built, your game server files are in a folder called "MyGame",
     *        your log path should be C:\game\MyGame\server.exe.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withServerLaunchPath(String serverLaunchPath) {
        setServerLaunchPath(serverLaunchPath);
        return this;
    }
    /**
     * 
     * Parameters required to launch your game server. These parameters should
     * be expressed as a string of command-line parameters. Example:
     * "+sv_port 33435 +start_lobby".
     * 
     * 
     * @param serverLaunchParameters
     *        Parameters required to launch your game server. These parameters
     *        should be expressed as a string of command-line parameters.
     *        Example: "+sv_port 33435 +start_lobby".
     */
    public void setServerLaunchParameters(String serverLaunchParameters) {
        this.serverLaunchParameters = serverLaunchParameters;
    }
    /**
     * 
     * Parameters required to launch your game server. These parameters should
     * be expressed as a string of command-line parameters. Example:
     * "+sv_port 33435 +start_lobby".
     * 
     * 
     * @return Parameters required to launch your game server. These parameters
     *         should be expressed as a string of command-line parameters.
     *         Example: "+sv_port 33435 +start_lobby".
     */
    public String getServerLaunchParameters() {
        return this.serverLaunchParameters;
    }
    /**
     * 
     * Parameters required to launch your game server. These parameters should
     * be expressed as a string of command-line parameters. Example:
     * "+sv_port 33435 +start_lobby".
     * 
     * 
     * @param serverLaunchParameters
     *        Parameters required to launch your game server. These parameters
     *        should be expressed as a string of command-line parameters.
     *        Example: "+sv_port 33435 +start_lobby".
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withServerLaunchParameters(
            String serverLaunchParameters) {
        setServerLaunchParameters(serverLaunchParameters);
        return this;
    }
    /**
     * 
     * Path to game-session log files generated by your game server. Once a game
     * session has been terminated, Amazon GameLift captures and stores the logs
     * on Amazon S3. Use the GameLift console to access the stored logs.
     * 
     * 
     * @return Path to game-session log files generated by your game server.
     *         Once a game session has been terminated, Amazon GameLift captures
     *         and stores the logs on Amazon S3. Use the GameLift console to
     *         access the stored logs.
     */
    public java.util.List getLogPaths() {
        return logPaths;
    }
    /**
     * 
     * Path to game-session log files generated by your game server. Once a game
     * session has been terminated, Amazon GameLift captures and stores the logs
     * on Amazon S3. Use the GameLift console to access the stored logs.
     * 
     * 
     * @param logPaths
     *        Path to game-session log files generated by your game server. Once
     *        a game session has been terminated, Amazon GameLift captures and
     *        stores the logs on Amazon S3. Use the GameLift console to access
     *        the stored logs.
     */
    public void setLogPaths(java.util.Collection logPaths) {
        if (logPaths == null) {
            this.logPaths = null;
            return;
        }
        this.logPaths = new java.util.ArrayList(logPaths);
    }
    /**
     * 
     * Path to game-session log files generated by your game server. Once a game
     * session has been terminated, Amazon GameLift captures and stores the logs
     * on Amazon S3. Use the GameLift console to access the stored logs.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if
     * any). Use {@link #setLogPaths(java.util.Collection)} or
     * {@link #withLogPaths(java.util.Collection)} if you want to override the
     * existing values.
     * 
     * 
     * @param logPaths
     *        Path to game-session log files generated by your game server. Once
     *        a game session has been terminated, Amazon GameLift captures and
     *        stores the logs on Amazon S3. Use the GameLift console to access
     *        the stored logs.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withLogPaths(String... logPaths) {
        if (this.logPaths == null) {
            setLogPaths(new java.util.ArrayList(logPaths.length));
        }
        for (String ele : logPaths) {
            this.logPaths.add(ele);
        }
        return this;
    }
    /**
     * 
     * Path to game-session log files generated by your game server. Once a game
     * session has been terminated, Amazon GameLift captures and stores the logs
     * on Amazon S3. Use the GameLift console to access the stored logs.
     * 
     * 
     * @param logPaths
     *        Path to game-session log files generated by your game server. Once
     *        a game session has been terminated, Amazon GameLift captures and
     *        stores the logs on Amazon S3. Use the GameLift console to access
     *        the stored logs.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withLogPaths(java.util.Collection logPaths) {
        setLogPaths(logPaths);
        return this;
    }
    /**
     * 
     * Type of EC2 instances used in the fleet. EC2 instance types define the
     * CPU, memory, storage, and networking capacity of the fleetaposs hosts.
     * Amazon GameLift supports the EC2 instance types listed below. See Amazon EC2 Instance
     * Types for detailed descriptions of each.
     * 
     * 
     * @param eC2InstanceType
     *        Type of EC2 instances used in the fleet. EC2 instance types define
     *        the CPU, memory, storage, and networking capacity of the
     *        fleetaposs hosts. Amazon GameLift supports the EC2 instance types
     *        listed below. See Amazon EC2
     *        Instance Types for detailed descriptions of each.
     * @see EC2InstanceType
     */
    public void setEC2InstanceType(String eC2InstanceType) {
        this.eC2InstanceType = eC2InstanceType;
    }
    /**
     * 
     * Type of EC2 instances used in the fleet. EC2 instance types define the
     * CPU, memory, storage, and networking capacity of the fleetaposs hosts.
     * Amazon GameLift supports the EC2 instance types listed below. See Amazon EC2 Instance
     * Types for detailed descriptions of each.
     * 
     * 
     * @return Type of EC2 instances used in the fleet. EC2 instance types
     *         define the CPU, memory, storage, and networking capacity of the
     *         fleetaposs hosts. Amazon GameLift supports the EC2 instance types
     *         listed below. See Amazon EC2
     *         Instance Types for detailed descriptions of each.
     * @see EC2InstanceType
     */
    public String getEC2InstanceType() {
        return this.eC2InstanceType;
    }
    /**
     * 
     * Type of EC2 instances used in the fleet. EC2 instance types define the
     * CPU, memory, storage, and networking capacity of the fleetaposs hosts.
     * Amazon GameLift supports the EC2 instance types listed below. See Amazon EC2 Instance
     * Types for detailed descriptions of each.
     * 
     * 
     * @param eC2InstanceType
     *        Type of EC2 instances used in the fleet. EC2 instance types define
     *        the CPU, memory, storage, and networking capacity of the
     *        fleetaposs hosts. Amazon GameLift supports the EC2 instance types
     *        listed below. See Amazon EC2
     *        Instance Types for detailed descriptions of each.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     * @see EC2InstanceType
     */
    public CreateFleetRequest withEC2InstanceType(String eC2InstanceType) {
        setEC2InstanceType(eC2InstanceType);
        return this;
    }
    /**
     * 
     * Type of EC2 instances used in the fleet. EC2 instance types define the
     * CPU, memory, storage, and networking capacity of the fleetaposs hosts.
     * Amazon GameLift supports the EC2 instance types listed below. See Amazon EC2 Instance
     * Types for detailed descriptions of each.
     * 
     * 
     * @param eC2InstanceType
     *        Type of EC2 instances used in the fleet. EC2 instance types define
     *        the CPU, memory, storage, and networking capacity of the
     *        fleetaposs hosts. Amazon GameLift supports the EC2 instance types
     *        listed below. See Amazon EC2
     *        Instance Types for detailed descriptions of each.
     * @see EC2InstanceType
     */
    public void setEC2InstanceType(EC2InstanceType eC2InstanceType) {
        this.eC2InstanceType = eC2InstanceType.toString();
    }
    /**
     * 
     * Type of EC2 instances used in the fleet. EC2 instance types define the
     * CPU, memory, storage, and networking capacity of the fleetaposs hosts.
     * Amazon GameLift supports the EC2 instance types listed below. See Amazon EC2 Instance
     * Types for detailed descriptions of each.
     * 
     * 
     * @param eC2InstanceType
     *        Type of EC2 instances used in the fleet. EC2 instance types define
     *        the CPU, memory, storage, and networking capacity of the
     *        fleetaposs hosts. Amazon GameLift supports the EC2 instance types
     *        listed below. See Amazon EC2
     *        Instance Types for detailed descriptions of each.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     * @see EC2InstanceType
     */
    public CreateFleetRequest withEC2InstanceType(
            EC2InstanceType eC2InstanceType) {
        setEC2InstanceType(eC2InstanceType);
        return this;
    }
    /**
     * 
     * Access limits for incoming traffic. Setting these values limits game
     * server access to incoming traffic using specified IP ranges and port
     * numbers. Some ports in a range may be restricted. You can provide one or
     * more sets of permissions for the fleet.
     * 
     * 
     * @return Access limits for incoming traffic. Setting these values limits
     *         game server access to incoming traffic using specified IP ranges
     *         and port numbers. Some ports in a range may be restricted. You
     *         can provide one or more sets of permissions for the fleet.
     */
    public java.util.List getEC2InboundPermissions() {
        return eC2InboundPermissions;
    }
    /**
     * 
     * Access limits for incoming traffic. Setting these values limits game
     * server access to incoming traffic using specified IP ranges and port
     * numbers. Some ports in a range may be restricted. You can provide one or
     * more sets of permissions for the fleet.
     * 
     * 
     * @param eC2InboundPermissions
     *        Access limits for incoming traffic. Setting these values limits
     *        game server access to incoming traffic using specified IP ranges
     *        and port numbers. Some ports in a range may be restricted. You can
     *        provide one or more sets of permissions for the fleet.
     */
    public void setEC2InboundPermissions(
            java.util.Collection eC2InboundPermissions) {
        if (eC2InboundPermissions == null) {
            this.eC2InboundPermissions = null;
            return;
        }
        this.eC2InboundPermissions = new java.util.ArrayList(
                eC2InboundPermissions);
    }
    /**
     * 
     * Access limits for incoming traffic. Setting these values limits game
     * server access to incoming traffic using specified IP ranges and port
     * numbers. Some ports in a range may be restricted. You can provide one or
     * more sets of permissions for the fleet.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if
     * any). Use {@link #setEC2InboundPermissions(java.util.Collection)} or
     * {@link #withEC2InboundPermissions(java.util.Collection)} if you want to
     * override the existing values.
     * 
     * 
     * @param eC2InboundPermissions
     *        Access limits for incoming traffic. Setting these values limits
     *        game server access to incoming traffic using specified IP ranges
     *        and port numbers. Some ports in a range may be restricted. You can
     *        provide one or more sets of permissions for the fleet.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withEC2InboundPermissions(
            IpPermission... eC2InboundPermissions) {
        if (this.eC2InboundPermissions == null) {
            setEC2InboundPermissions(new java.util.ArrayList(
                    eC2InboundPermissions.length));
        }
        for (IpPermission ele : eC2InboundPermissions) {
            this.eC2InboundPermissions.add(ele);
        }
        return this;
    }
    /**
     * 
     * Access limits for incoming traffic. Setting these values limits game
     * server access to incoming traffic using specified IP ranges and port
     * numbers. Some ports in a range may be restricted. You can provide one or
     * more sets of permissions for the fleet.
     * 
     * 
     * @param eC2InboundPermissions
     *        Access limits for incoming traffic. Setting these values limits
     *        game server access to incoming traffic using specified IP ranges
     *        and port numbers. Some ports in a range may be restricted. You can
     *        provide one or more sets of permissions for the fleet.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public CreateFleetRequest withEC2InboundPermissions(
            java.util.Collection eC2InboundPermissions) {
        setEC2InboundPermissions(eC2InboundPermissions);
        return this;
    }
    /**
     * 
     * Game session protection policy to apply to all instances created in this
     * fleet. If this parameter is not set, new instances in this fleet will
     * default to no protection. Protection can be set for individual instances
     * using UpdateGameSession.
     * 
     * - NoProtection: The game session can be terminated during a scale-down
     * event.
 
     * - FullProtection: If the game session is in an ACTIVE status, it cannot
     * be terminated during a scale-down event.
 
     * 
     * 
     * 
     * @param newGameSessionProtectionPolicy
     *        Game session protection policy to apply to all instances created
     *        in this fleet. If this parameter is not set, new instances in this
     *        fleet will default to no protection. Protection can be set for
     *        individual instances using UpdateGameSession.
     *        
     *        - NoProtection: The game session can be terminated during a
     *        scale-down event.
 
     *        - FullProtection: If the game session is in an ACTIVE status, it
     *        cannot be terminated during a scale-down event.
 
     *        
     * @see ProtectionPolicy
     */
    public void setNewGameSessionProtectionPolicy(
            String newGameSessionProtectionPolicy) {
        this.newGameSessionProtectionPolicy = newGameSessionProtectionPolicy;
    }
    /**
     * 
     * Game session protection policy to apply to all instances created in this
     * fleet. If this parameter is not set, new instances in this fleet will
     * default to no protection. Protection can be set for individual instances
     * using UpdateGameSession.
     * 
     * - NoProtection: The game session can be terminated during a scale-down
     * event.
 
     * - FullProtection: If the game session is in an ACTIVE status, it cannot
     * be terminated during a scale-down event.
 
     * 
     * 
     * 
     * @return Game session protection policy to apply to all instances created
     *         in this fleet. If this parameter is not set, new instances in
     *         this fleet will default to no protection. Protection can be set
     *         for individual instances using UpdateGameSession.
     *         
     *         - NoProtection: The game session can be terminated during a
     *         scale-down event.
 
     *         - FullProtection: If the game session is in an ACTIVE status,
     *         it cannot be terminated during a scale-down event.
 
     *         
     * @see ProtectionPolicy
     */
    public String getNewGameSessionProtectionPolicy() {
        return this.newGameSessionProtectionPolicy;
    }
    /**
     * 
     * Game session protection policy to apply to all instances created in this
     * fleet. If this parameter is not set, new instances in this fleet will
     * default to no protection. Protection can be set for individual instances
     * using UpdateGameSession.
     * 
     * - NoProtection: The game session can be terminated during a scale-down
     * event.
 
     * - FullProtection: If the game session is in an ACTIVE status, it cannot
     * be terminated during a scale-down event.
 
     * 
     * 
     * 
     * @param newGameSessionProtectionPolicy
     *        Game session protection policy to apply to all instances created
     *        in this fleet. If this parameter is not set, new instances in this
     *        fleet will default to no protection. Protection can be set for
     *        individual instances using UpdateGameSession.
     *        
     *        - NoProtection: The game session can be terminated during a
     *        scale-down event.
 
     *        - FullProtection: If the game session is in an ACTIVE status, it
     *        cannot be terminated during a scale-down event.
 
     *        
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     * @see ProtectionPolicy
     */
    public CreateFleetRequest withNewGameSessionProtectionPolicy(
            String newGameSessionProtectionPolicy) {
        setNewGameSessionProtectionPolicy(newGameSessionProtectionPolicy);
        return this;
    }
    /**
     * 
     * Game session protection policy to apply to all instances created in this
     * fleet. If this parameter is not set, new instances in this fleet will
     * default to no protection. Protection can be set for individual instances
     * using UpdateGameSession.
     * 
     * - NoProtection: The game session can be terminated during a scale-down
     * event.
 
     * - FullProtection: If the game session is in an ACTIVE status, it cannot
     * be terminated during a scale-down event.
 
     * 
     * 
     * 
     * @param newGameSessionProtectionPolicy
     *        Game session protection policy to apply to all instances created
     *        in this fleet. If this parameter is not set, new instances in this
     *        fleet will default to no protection. Protection can be set for
     *        individual instances using UpdateGameSession.
     *        
     *        - NoProtection: The game session can be terminated during a
     *        scale-down event.
 
     *        - FullProtection: If the game session is in an ACTIVE status, it
     *        cannot be terminated during a scale-down event.
 
     *        
     * @see ProtectionPolicy
     */
    public void setNewGameSessionProtectionPolicy(
            ProtectionPolicy newGameSessionProtectionPolicy) {
        this.newGameSessionProtectionPolicy = newGameSessionProtectionPolicy
                .toString();
    }
    /**
     * 
     * Game session protection policy to apply to all instances created in this
     * fleet. If this parameter is not set, new instances in this fleet will
     * default to no protection. Protection can be set for individual instances
     * using UpdateGameSession.
     * 
     * - NoProtection: The game session can be terminated during a scale-down
     * event.
 
     * - FullProtection: If the game session is in an ACTIVE status, it cannot
     * be terminated during a scale-down event.
 
     * 
     * 
     * 
     * @param newGameSessionProtectionPolicy
     *        Game session protection policy to apply to all instances created
     *        in this fleet. If this parameter is not set, new instances in this
     *        fleet will default to no protection. Protection can be set for
     *        individual instances using UpdateGameSession.
     *        
     *        - NoProtection: The game session can be terminated during a
     *        scale-down event.
 
     *        - FullProtection: If the game session is in an ACTIVE status, it
     *        cannot be terminated during a scale-down event.
 
     *        
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     * @see ProtectionPolicy
     */
    public CreateFleetRequest withNewGameSessionProtectionPolicy(
            ProtectionPolicy newGameSessionProtectionPolicy) {
        setNewGameSessionProtectionPolicy(newGameSessionProtectionPolicy);
        return this;
    }
    /**
     * Returns a string representation of this object; useful for testing and
     * debugging.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getName() != null)
            sb.append("Name: " + getName() + ",");
        if (getDescription() != null)
            sb.append("Description: " + getDescription() + ",");
        if (getBuildId() != null)
            sb.append("BuildId: " + getBuildId() + ",");
        if (getServerLaunchPath() != null)
            sb.append("ServerLaunchPath: " + getServerLaunchPath() + ",");
        if (getServerLaunchParameters() != null)
            sb.append("ServerLaunchParameters: " + getServerLaunchParameters()
                    + ",");
        if (getLogPaths() != null)
            sb.append("LogPaths: " + getLogPaths() + ",");
        if (getEC2InstanceType() != null)
            sb.append("EC2InstanceType: " + getEC2InstanceType() + ",");
        if (getEC2InboundPermissions() != null)
            sb.append("EC2InboundPermissions: " + getEC2InboundPermissions()
                    + ",");
        if (getNewGameSessionProtectionPolicy() != null)
            sb.append("NewGameSessionProtectionPolicy: "
                    + getNewGameSessionProtectionPolicy());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof CreateFleetRequest == false)
            return false;
        CreateFleetRequest other = (CreateFleetRequest) obj;
        if (other.getName() == null ^ this.getName() == null)
            return false;
        if (other.getName() != null
                && other.getName().equals(this.getName()) == false)
            return false;
        if (other.getDescription() == null ^ this.getDescription() == null)
            return false;
        if (other.getDescription() != null
                && other.getDescription().equals(this.getDescription()) == false)
            return false;
        if (other.getBuildId() == null ^ this.getBuildId() == null)
            return false;
        if (other.getBuildId() != null
                && other.getBuildId().equals(this.getBuildId()) == false)
            return false;
        if (other.getServerLaunchPath() == null
                ^ this.getServerLaunchPath() == null)
            return false;
        if (other.getServerLaunchPath() != null
                && other.getServerLaunchPath().equals(
                        this.getServerLaunchPath()) == false)
            return false;
        if (other.getServerLaunchParameters() == null
                ^ this.getServerLaunchParameters() == null)
            return false;
        if (other.getServerLaunchParameters() != null
                && other.getServerLaunchParameters().equals(
                        this.getServerLaunchParameters()) == false)
            return false;
        if (other.getLogPaths() == null ^ this.getLogPaths() == null)
            return false;
        if (other.getLogPaths() != null
                && other.getLogPaths().equals(this.getLogPaths()) == false)
            return false;
        if (other.getEC2InstanceType() == null
                ^ this.getEC2InstanceType() == null)
            return false;
        if (other.getEC2InstanceType() != null
                && other.getEC2InstanceType().equals(this.getEC2InstanceType()) == false)
            return false;
        if (other.getEC2InboundPermissions() == null
                ^ this.getEC2InboundPermissions() == null)
            return false;
        if (other.getEC2InboundPermissions() != null
                && other.getEC2InboundPermissions().equals(
                        this.getEC2InboundPermissions()) == false)
            return false;
        if (other.getNewGameSessionProtectionPolicy() == null
                ^ this.getNewGameSessionProtectionPolicy() == null)
            return false;
        if (other.getNewGameSessionProtectionPolicy() != null
                && other.getNewGameSessionProtectionPolicy().equals(
                        this.getNewGameSessionProtectionPolicy()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode
                + ((getName() == null) ? 0 : getName().hashCode());
        hashCode = prime
                * hashCode
                + ((getDescription() == null) ? 0 : getDescription().hashCode());
        hashCode = prime * hashCode
                + ((getBuildId() == null) ? 0 : getBuildId().hashCode());
        hashCode = prime
                * hashCode
                + ((getServerLaunchPath() == null) ? 0 : getServerLaunchPath()
                        .hashCode());
        hashCode = prime
                * hashCode
                + ((getServerLaunchParameters() == null) ? 0
                        : getServerLaunchParameters().hashCode());
        hashCode = prime * hashCode
                + ((getLogPaths() == null) ? 0 : getLogPaths().hashCode());
        hashCode = prime
                * hashCode
                + ((getEC2InstanceType() == null) ? 0 : getEC2InstanceType()
                        .hashCode());
        hashCode = prime
                * hashCode
                + ((getEC2InboundPermissions() == null) ? 0
                        : getEC2InboundPermissions().hashCode());
        hashCode = prime
                * hashCode
                + ((getNewGameSessionProtectionPolicy() == null) ? 0
                        : getNewGameSessionProtectionPolicy().hashCode());
        return hashCode;
    }
    @Override
    public CreateFleetRequest clone() {
        return (CreateFleetRequest) super.clone();
    }
}