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

var models = require('./index');

var util = require('util');

/**
 * @class
 * Initializes a new instance of the DataLakeAnalyticsAccountProperties class.
 * @constructor
 * The account specific properties that are associated with an underlying Data
 * Lake Analytics account.
 *
 * @member {string} [provisioningState] the provisioning status of the Data
 * Lake Analytics account. Possible values include: 'Failed', 'Creating',
 * 'Running', 'Succeeded', 'Patching', 'Suspending', 'Resuming', 'Deleting',
 * 'Deleted'
 * 
 * @member {string} [state] the state of the Data Lake Analytics account.
 * Possible values include: 'active', 'suspended'
 * 
 * @member {string} [defaultDataLakeStoreAccount] the default data lake
 * storage account associated with this Data Lake Analytics account.
 * 
 * @member {number} [maxDegreeOfParallelism] the maximum supported degree of
 * parallelism for this account.
 * 
 * @member {number} [maxJobCount] the maximum supported jobs running under the
 * account at the same time.
 * 
 * @member {array} [dataLakeStoreAccounts] the list of Data Lake storage
 * accounts associated with this account.
 * 
 * @member {array} [storageAccounts] the list of Azure Blob storage accounts
 * associated with this account.
 * 
 * @member {date} [creationTime] the account creation time.
 * 
 * @member {date} [lastModifiedTime] the account last modified time.
 * 
 * @member {string} [endpoint] the full CName endpoint for this account.
 * 
 */
function DataLakeAnalyticsAccountProperties() {
}

/**
 * Defines the metadata of DataLakeAnalyticsAccountProperties
 *
 * @returns {object} metadata of DataLakeAnalyticsAccountProperties
 *
 */
DataLakeAnalyticsAccountProperties.prototype.mapper = function () {
  return {
    required: false,
    serializedName: 'DataLakeAnalyticsAccountProperties',
    type: {
      name: 'Composite',
      className: 'DataLakeAnalyticsAccountProperties',
      modelProperties: {
        provisioningState: {
          required: false,
          readOnly: true,
          serializedName: 'provisioningState',
          type: {
            name: 'Enum',
            allowedValues: [ 'Failed', 'Creating', 'Running', 'Succeeded', 'Patching', 'Suspending', 'Resuming', 'Deleting', 'Deleted' ]
          }
        },
        state: {
          required: false,
          readOnly: true,
          serializedName: 'state',
          type: {
            name: 'Enum',
            allowedValues: [ 'active', 'suspended' ]
          }
        },
        defaultDataLakeStoreAccount: {
          required: false,
          serializedName: 'defaultDataLakeStoreAccount',
          type: {
            name: 'String'
          }
        },
        maxDegreeOfParallelism: {
          required: false,
          serializedName: 'maxDegreeOfParallelism',
          type: {
            name: 'Number'
          }
        },
        maxJobCount: {
          required: false,
          serializedName: 'maxJobCount',
          type: {
            name: 'Number'
          }
        },
        dataLakeStoreAccounts: {
          required: false,
          serializedName: 'dataLakeStoreAccounts',
          type: {
            name: 'Sequence',
            element: {
                required: false,
                serializedName: 'DataLakeStoreAccountInfoElementType',
                type: {
                  name: 'Composite',
                  className: 'DataLakeStoreAccountInfo'
                }
            }
          }
        },
        storageAccounts: {
          required: false,
          serializedName: 'storageAccounts',
          type: {
            name: 'Sequence',
            element: {
                required: false,
                serializedName: 'StorageAccountInfoElementType',
                type: {
                  name: 'Composite',
                  className: 'StorageAccountInfo'
                }
            }
          }
        },
        creationTime: {
          required: false,
          readOnly: true,
          serializedName: 'creationTime',
          type: {
            name: 'DateTime'
          }
        },
        lastModifiedTime: {
          required: false,
          readOnly: true,
          serializedName: 'lastModifiedTime',
          type: {
            name: 'DateTime'
          }
        },
        endpoint: {
          required: false,
          readOnly: true,
          serializedName: 'endpoint',
          type: {
            name: 'String'
          }
        }
      }
    }
  };
};

module.exports = DataLakeAnalyticsAccountProperties;
