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

/**
 * @summary Properties used to create a user account on a Linux node.
  *
 */
class LinuxUserConfiguration {
  /**
   * Create a LinuxUserConfiguration.
   * @property {number} [uid] The user ID of the user account. The uid and gid
   * properties must be specified together or not at all. If not specified the
   * underlying operating system picks the uid.
   * @property {number} [gid] The group ID for the user account. The uid and
   * gid properties must be specified together or not at all. If not specified
   * the underlying operating system picks the gid.
   * @property {string} [sshPrivateKey] The SSH private key for the user
   * account. The private key must not be password protected. The private key
   * is used to automatically configure asymmetric-key based authentication for
   * SSH between nodes in a Linux pool when the pool's
   * enableInterNodeCommunication property is true (it is ignored if
   * enableInterNodeCommunication is false). It does this by placing the key
   * pair into the user's .ssh directory. If not specified, password-less SSH
   * is not configured between nodes (no modification of the user's .ssh
   * directory is done).
   */
  constructor() {
  }

  /**
   * Defines the metadata of LinuxUserConfiguration
   *
   * @returns {object} metadata of LinuxUserConfiguration
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'LinuxUserConfiguration',
      type: {
        name: 'Composite',
        className: 'LinuxUserConfiguration',
        modelProperties: {
          uid: {
            required: false,
            serializedName: 'uid',
            type: {
              name: 'Number'
            }
          },
          gid: {
            required: false,
            serializedName: 'gid',
            type: {
              name: 'Number'
            }
          },
          sshPrivateKey: {
            required: false,
            serializedName: 'sshPrivateKey',
            type: {
              name: 'String'
            }
          }
        }
      }
    };
  }
}

module.exports = LinuxUserConfiguration;
