/**
 * Amazon Elastic Compute Cloud
 * <fullname>Amazon Elastic Compute Cloud</fullname> <p>Amazon Elastic Compute Cloud (Amazon EC2) provides secure and resizable computing capacity in the AWS cloud. Using Amazon EC2 eliminates the need to invest in hardware up front, so you can develop and deploy applications faster.</p> <p>To learn more, see the following resources:</p> <ul> <li> <p>Amazon EC2: <a href=\"http://aws.amazon.com/ec2\">AmazonEC2 product page</a>, <a href=\"http://aws.amazon.com/documentation/ec2\">Amazon EC2 documentation</a> </p> </li> <li> <p>Amazon EBS: <a href=\"http://aws.amazon.com/ebs\">Amazon EBS product page</a>, <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html\">Amazon EBS documentation</a> </p> </li> <li> <p>Amazon VPC: <a href=\"http://aws.amazon.com/vpc\">Amazon VPC product page</a>, <a href=\"http://aws.amazon.com/documentation/vpc\">Amazon VPC documentation</a> </p> </li> <li> <p>AWS VPN: <a href=\"http://aws.amazon.com/vpn\">AWS VPN product page</a>, <a href=\"http://aws.amazon.com/documentation/vpn\">AWS VPN documentation</a> </p> </li> </ul>
 *
 * The version of the OpenAPI document: 2016-11-15
 * Contact: mike.ralphson@gmail.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 *
 */

import ApiClient from '../ApiClient';
import TrafficMirrorSessionField from './TrafficMirrorSessionField';

/**
 * The ModifyTrafficMirrorSessionRequest model module.
 * @module model/ModifyTrafficMirrorSessionRequest
 * @version 1.1.0
 */
class ModifyTrafficMirrorSessionRequest {
    /**
     * Constructs a new <code>ModifyTrafficMirrorSessionRequest</code>.
     * @alias module:model/ModifyTrafficMirrorSessionRequest
     * @param trafficMirrorSessionId {String} 
     */
    constructor(trafficMirrorSessionId) { 
        
        ModifyTrafficMirrorSessionRequest.initialize(this, trafficMirrorSessionId);
    }

    /**
     * Initializes the fields of this object.
     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
     * Only for internal use.
     */
    static initialize(obj, trafficMirrorSessionId) { 
        obj['TrafficMirrorSessionId'] = trafficMirrorSessionId;
    }

    /**
     * Constructs a <code>ModifyTrafficMirrorSessionRequest</code> from a plain JavaScript object, optionally creating a new instance.
     * Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
     * @param {Object} data The plain JavaScript object bearing properties of interest.
     * @param {module:model/ModifyTrafficMirrorSessionRequest} obj Optional instance to populate.
     * @return {module:model/ModifyTrafficMirrorSessionRequest} The populated <code>ModifyTrafficMirrorSessionRequest</code> instance.
     */
    static constructFromObject(data, obj) {
        if (data) {
            obj = obj || new ModifyTrafficMirrorSessionRequest();

            if (data.hasOwnProperty('Description')) {
                obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
            }
            if (data.hasOwnProperty('DryRun')) {
                obj['DryRun'] = ApiClient.convertToType(data['DryRun'], 'Boolean');
            }
            if (data.hasOwnProperty('PacketLength')) {
                obj['PacketLength'] = ApiClient.convertToType(data['PacketLength'], 'Number');
            }
            if (data.hasOwnProperty('RemoveFields')) {
                obj['RemoveFields'] = ApiClient.convertToType(data['RemoveFields'], [TrafficMirrorSessionField]);
            }
            if (data.hasOwnProperty('SessionNumber')) {
                obj['SessionNumber'] = ApiClient.convertToType(data['SessionNumber'], 'Number');
            }
            if (data.hasOwnProperty('TrafficMirrorFilterId')) {
                obj['TrafficMirrorFilterId'] = ApiClient.convertToType(data['TrafficMirrorFilterId'], 'String');
            }
            if (data.hasOwnProperty('TrafficMirrorSessionId')) {
                obj['TrafficMirrorSessionId'] = ApiClient.convertToType(data['TrafficMirrorSessionId'], 'String');
            }
            if (data.hasOwnProperty('TrafficMirrorTargetId')) {
                obj['TrafficMirrorTargetId'] = ApiClient.convertToType(data['TrafficMirrorTargetId'], 'String');
            }
            if (data.hasOwnProperty('VirtualNetworkId')) {
                obj['VirtualNetworkId'] = ApiClient.convertToType(data['VirtualNetworkId'], 'Number');
            }
        }
        return obj;
    }


}

/**
 * @member {String} Description
 */
ModifyTrafficMirrorSessionRequest.prototype['Description'] = undefined;

/**
 * @member {Boolean} DryRun
 */
ModifyTrafficMirrorSessionRequest.prototype['DryRun'] = undefined;

/**
 * @member {Number} PacketLength
 */
ModifyTrafficMirrorSessionRequest.prototype['PacketLength'] = undefined;

/**
 * @member {Array.<module:model/TrafficMirrorSessionField>} RemoveFields
 */
ModifyTrafficMirrorSessionRequest.prototype['RemoveFields'] = undefined;

/**
 * @member {Number} SessionNumber
 */
ModifyTrafficMirrorSessionRequest.prototype['SessionNumber'] = undefined;

/**
 * @member {String} TrafficMirrorFilterId
 */
ModifyTrafficMirrorSessionRequest.prototype['TrafficMirrorFilterId'] = undefined;

/**
 * @member {String} TrafficMirrorSessionId
 */
ModifyTrafficMirrorSessionRequest.prototype['TrafficMirrorSessionId'] = undefined;

/**
 * @member {String} TrafficMirrorTargetId
 */
ModifyTrafficMirrorSessionRequest.prototype['TrafficMirrorTargetId'] = undefined;

/**
 * @member {Number} VirtualNetworkId
 */
ModifyTrafficMirrorSessionRequest.prototype['VirtualNetworkId'] = undefined;






export default ModifyTrafficMirrorSessionRequest;

