text: /*
   * 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';
  
  const models = require('./index');
  
  /**
   * A SQL virtual machine group.
   *
   * @extends models['TrackedResource']
   */
  class SqlVirtualMachineGroup extends models['TrackedResource'] {
    /**
     * Create a SqlVirtualMachineGroup.
     * @property {string} [provisioningState] Provisioning state to track the
     * aysnc operation status.
     * @property {string} [sqlImageOffer] SQL image offer. Examples may include
     * SQL2016-WS2016, SQL2017-WS2016.
     * @property {string} [sqlImageSku] SQL image sku. Possible values include:
     * 'Developer', 'Enterprise'
     * @property {string} [scaleType] Scale type. Possible values include: 'HA'
     * @property {string} [clusterManagerType] Type of cluster manager: Windows
     * Server Failover Cluster (WSFC), implied by the scale type of the group and
     * the OS type. Possible values include: 'WSFC'
     * @property {string} [clusterConfiguration] Cluster type. Possible values
     * include: 'Domainful'
     * @property {object} [wsfcDomainProfile] Cluster Active Directory domain
     * profile.
     * @property {string} [wsfcDomainProfile.domainFqdn] Fully qualified name of
     * the domain.
     * @property {string} [wsfcDomainProfile.ouPath] Organizational Unit path in
     * which the nodes and cluster will be present.
     * @property {string} [wsfcDomainProfile.clusterBootstrapAccount] Account
     * name used for creating cluster (at minimum needs permissions to 'Create
     * Computer Objects' in domain).
     * @property {string} [wsfcDomainProfile.clusterOperatorAccount] Account name
     * used for operating cluster i.e. will be part of administrators group on
     * all the participating virtual machines in the cluster.
     * @property {string} [wsfcDomainProfile.sqlServiceAccount] Account name
     * under which SQL service will run on all participating SQL virtual machines
     * in the cluster.
     * @property {string} [wsfcDomainProfile.fileShareWitnessPath] Optional path
     * for fileshare witness.
     * @property {string} [wsfcDomainProfile.storageAccountUrl] Fully qualified
     * ARM resource id of the witness storage account.
     * @property {string} [wsfcDomainProfile.storageAccountPrimaryKey] Primary
     * key of the witness storage account.
     */
    constructor() {
      super();
    }
  
    /**
     * Defines the metadata of SqlVirtualMachineGroup
     *
     * @returns {object} metadata of SqlVirtualMachineGroup
     *
     */
    mapper() {
      return {
        required: false,
        serializedName: 'SqlVirtualMachineGroup',
        type: {
          name: 'Composite',
          className: 'SqlVirtualMachineGroup',
          modelProperties: {
            id: {
              required: false,
              readOnly: true,
              serializedName: 'id',
              type: {
                name: 'String'
              }
            },
            name: {
              required: false,
              readOnly: true,
              serializedName: 'name',
              type: {
                name: 'String'
              }
            },
            type: {
              required: false,
              readOnly: true,
              serializedName: 'type',
              type: {
                name: 'String'
              }
            },
            location: {
              required: true,
              serializedName: 'location',
              type: {
                name: 'String'
              }
            },
            tags: {
              required: false,
              serializedName: 'tags',
              type: {
                name: 'Dictionary',
                value: {
                    required: false,
                    serializedName: 'StringElementType',
                    type: {
                      name: 'String'
                    }
                }
              }
            },
            provisioningState: {
              required: false,
              readOnly: true,
              serializedName: 'properties.provisioningState',
              type: {
                name: 'String'
              }
            },
            sqlImageOffer: {
              required: false,
              serializedName: 'properties.sqlImageOffer',
              type: {
                name: 'String'
              }
            },
            sqlImageSku: {
              required: false,
              serializedName: 'properties.sqlImageSku',
              type: {
                name: 'String'
              }
            },
            scaleType: {
              required: false,
              readOnly: true,
              serializedName: 'properties.scaleType',
              type: {
                name: 'String'
              }
            },
            clusterManagerType: {
              required: false,
              readOnly: true,
              serializedName: 'properties.clusterManagerType',
              type: {
                name: 'String'
              }
            },
            clusterConfiguration: {
              required: false,
              readOnly: true,
              serializedName: 'properties.clusterConfiguration',
              type: {
                name: 'String'
              }
            },
            wsfcDomainProfile: {
              required: false,
              serializedName: 'properties.wsfcDomainProfile',
              type: {
                name: 'Composite',
                className: 'WsfcDomainProfile'
              }
            }
          }
        }
      };
    }
  }
  
  module.exports = SqlVirtualMachineGroup;
  