/*
 * 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';

/**
 * Stamp capacity information.
 *
 */
class StampCapacity {
  /**
   * Create a StampCapacity.
   * @member {string} [name] Name of the stamp.
   * @member {number} [availableCapacity] Available capacity (# of machines,
   * bytes of storage etc...).
   * @member {number} [totalCapacity] Total capacity (# of machines, bytes of
   * storage etc...).
   * @member {string} [unit] Name of the unit.
   * @member {string} [computeMode] Shared/dedicated workers. Possible values
   * include: 'Shared', 'Dedicated', 'Dynamic'
   * @member {string} [workerSize] Size of the machines. Possible values
   * include: 'Small', 'Medium', 'Large', 'D1', 'D2', 'D3', 'Default'
   * @member {number} [workerSizeId] Size ID of machines:
   * 0 - Small
   * 1 - Medium
   * 2 - Large
   * @member {boolean} [excludeFromCapacityAllocation] If <code>true</code>, it
   * includes basic apps.
   * Basic apps are not used for capacity allocation.
   * @member {boolean} [isApplicableForAllComputeModes] <code>true</code> if
   * capacity is applicable for all apps; otherwise, <code>false</code>.
   * @member {string} [siteMode] Shared or Dedicated.
   * @member {boolean} [isLinux] Is this a linux stamp capacity
   */
  constructor() {
  }

  /**
   * Defines the metadata of StampCapacity
   *
   * @returns {object} metadata of StampCapacity
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'StampCapacity',
      type: {
        name: 'Composite',
        className: 'StampCapacity',
        modelProperties: {
          name: {
            required: false,
            serializedName: 'name',
            type: {
              name: 'String'
            }
          },
          availableCapacity: {
            required: false,
            serializedName: 'availableCapacity',
            type: {
              name: 'Number'
            }
          },
          totalCapacity: {
            required: false,
            serializedName: 'totalCapacity',
            type: {
              name: 'Number'
            }
          },
          unit: {
            required: false,
            serializedName: 'unit',
            type: {
              name: 'String'
            }
          },
          computeMode: {
            required: false,
            serializedName: 'computeMode',
            type: {
              name: 'Enum',
              allowedValues: [ 'Shared', 'Dedicated', 'Dynamic' ]
            }
          },
          workerSize: {
            required: false,
            serializedName: 'workerSize',
            type: {
              name: 'Enum',
              allowedValues: [ 'Small', 'Medium', 'Large', 'D1', 'D2', 'D3', 'Default' ]
            }
          },
          workerSizeId: {
            required: false,
            serializedName: 'workerSizeId',
            type: {
              name: 'Number'
            }
          },
          excludeFromCapacityAllocation: {
            required: false,
            serializedName: 'excludeFromCapacityAllocation',
            type: {
              name: 'Boolean'
            }
          },
          isApplicableForAllComputeModes: {
            required: false,
            serializedName: 'isApplicableForAllComputeModes',
            type: {
              name: 'Boolean'
            }
          },
          siteMode: {
            required: false,
            serializedName: 'siteMode',
            type: {
              name: 'String'
            }
          },
          isLinux: {
            required: false,
            serializedName: 'isLinux',
            type: {
              name: 'Boolean'
            }
          }
        }
      }
    };
  }
}

module.exports = StampCapacity;
