/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
 */

'use strict';

/**
 * A network adapter assessed for an assessment.
 *
 */
class AssessedNetworkAdapter {
  /**
   * Create a AssessedNetworkAdapter.
   * @member {string} [macAddress] MAC Address of the network adapter.
   * @member {array} [ipAddresses] List of IP Addresses on the network adapter.
   * @member {number} [monthlyBandwidthCosts] Monthly cost estimate for network
   * bandwidth used by this network adapter.
   * @member {number} [megabytesPerSecondReceived] Adapter throughput for
   * incoming traffic in MegaBytes per second.
   * @member {number} [megabytesPerSecondReceivedDataPointsExpected] Expected
   * data points for incoming traffic in MegaBytes per second.
   * @member {number} [megabytesPerSecondOfReadDataPointsReceived] Received
   * data points for incoming traffic in MegaBytes per second.
   * @member {number} [megabytesPerSecondTransmitted] Adapter throughput for
   * outgoing traffic in MegaBytes per second.
   * @member {number} [megabytesPerSecondTransmittedDataPointsExpected]
   * Expected data points for outgoing traffic in MegaBytes per second.
   * @member {number} [megabytesPerSecondTransmittedDataPointsReceived]
   * Received data points for outgoing traffic in MegaBytes per second.
   * @member {number} [netGigabytesTransmittedPerMonth] Gigabytes transmitted
   * through this adapter each month.
   * @member {string} [suitability] Whether this adapter is suitable for Azure.
   * Possible values include: 'Unknown', 'NotSuitable', 'Suitable',
   * 'ConditionallySuitable', 'ReadinessUnknown'
   * @member {string} [suitabilityExplanation] If network adapter is suitable,
   * this explains the reasons and mitigation steps. Possible values include:
   * 'Unknown', 'NotApplicable', 'InternalErrorOccured'
   */
  constructor() {
  }

  /**
   * Defines the metadata of AssessedNetworkAdapter
   *
   * @returns {object} metadata of AssessedNetworkAdapter
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'AssessedNetworkAdapter',
      type: {
        name: 'Composite',
        className: 'AssessedNetworkAdapter',
        modelProperties: {
          macAddress: {
            required: false,
            readOnly: true,
            serializedName: 'macAddress',
            type: {
              name: 'String'
            }
          },
          ipAddresses: {
            required: false,
            readOnly: true,
            serializedName: 'ipAddresses',
            type: {
              name: 'Sequence',
              element: {
                  required: false,
                  serializedName: 'StringElementType',
                  type: {
                    name: 'String'
                  }
              }
            }
          },
          monthlyBandwidthCosts: {
            required: false,
            readOnly: true,
            serializedName: 'monthlyBandwidthCosts',
            type: {
              name: 'Number'
            }
          },
          megabytesPerSecondReceived: {
            required: false,
            readOnly: true,
            serializedName: 'megabytesPerSecondReceived',
            type: {
              name: 'Number'
            }
          },
          megabytesPerSecondReceivedDataPointsExpected: {
            required: false,
            readOnly: true,
            serializedName: 'megabytesPerSecondReceivedDataPointsExpected',
            type: {
              name: 'Number'
            }
          },
          megabytesPerSecondOfReadDataPointsReceived: {
            required: false,
            readOnly: true,
            serializedName: 'megabytesPerSecondOfReadDataPointsReceived',
            type: {
              name: 'Number'
            }
          },
          megabytesPerSecondTransmitted: {
            required: false,
            readOnly: true,
            serializedName: 'megabytesPerSecondTransmitted',
            type: {
              name: 'Number'
            }
          },
          megabytesPerSecondTransmittedDataPointsExpected: {
            required: false,
            readOnly: true,
            serializedName: 'megabytesPerSecondTransmittedDataPointsExpected',
            type: {
              name: 'Number'
            }
          },
          megabytesPerSecondTransmittedDataPointsReceived: {
            required: false,
            readOnly: true,
            serializedName: 'megabytesPerSecondTransmittedDataPointsReceived',
            type: {
              name: 'Number'
            }
          },
          netGigabytesTransmittedPerMonth: {
            required: false,
            serializedName: 'netGigabytesTransmittedPerMonth',
            type: {
              name: 'Number'
            }
          },
          suitability: {
            required: false,
            readOnly: true,
            serializedName: 'suitability',
            type: {
              name: 'String'
            }
          },
          suitabilityExplanation: {
            required: false,
            readOnly: true,
            serializedName: 'suitabilityExplanation',
            type: {
              name: 'String'
            }
          }
        }
      }
    };
  }
}

module.exports = AssessedNetworkAdapter;
