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';
  
  /**
   * Disk update resource.
   *
   */
  class DiskUpdate {
    /**
     * Create a DiskUpdate.
     * @property {string} [osType] the Operating System type. Possible values
     * include: 'Windows', 'Linux'
     * @property {number} [diskSizeGB] If creationData.createOption is Empty,
     * this field is mandatory and it indicates the size of the VHD to create. If
     * this field is present for updates or creation with other options, it
     * indicates a resize. Resizes are only allowed if the disk is not attached
     * to a running VM, and can only increase the disk's size.
     * @property {object} [encryptionSettingsCollection] Encryption settings
     * collection used be Azure Disk Encryption, can contain multiple encryption
     * settings per disk or snapshot.
     * @property {boolean} [encryptionSettingsCollection.enabled] Set this flag
     * to true and provide DiskEncryptionKey and optional KeyEncryptionKey to
     * enable encryption. Set this flag to false and remove DiskEncryptionKey and
     * KeyEncryptionKey to disable encryption. If EncryptionSettings is null in
     * the request object, the existing settings remain unchanged.
     * @property {array} [encryptionSettingsCollection.encryptionSettings] A
     * collection of encryption settings, one for each disk volume.
     * @property {number} [diskIOPSReadWrite] The number of IOPS allowed for this
     * disk; only settable for UltraSSD disks. One operation can transfer between
     * 4k and 256k bytes.
     * @property {number} [diskMBpsReadWrite] The bandwidth allowed for this
     * disk; only settable for UltraSSD disks. MBps means millions of bytes per
     * second - MB here uses the ISO notation, of powers of 10.
     * @property {object} [tags] Resource tags
     * @property {object} [sku]
     * @property {string} [sku.name] The sku name. Possible values include:
     * 'Standard_LRS', 'Premium_LRS', 'StandardSSD_LRS', 'UltraSSD_LRS'
     * @property {string} [sku.tier] The sku tier.
     */
    constructor() {
    }
  
    /**
     * Defines the metadata of DiskUpdate
     *
     * @returns {object} metadata of DiskUpdate
     *
     */
    mapper() {
      return {
        required: false,
        serializedName: 'DiskUpdate',
        type: {
          name: 'Composite',
          className: 'DiskUpdate',
          modelProperties: {
            osType: {
              required: false,
              serializedName: 'properties.osType',
              type: {
                name: 'Enum',
                allowedValues: [ 'Windows', 'Linux' ]
              }
            },
            diskSizeGB: {
              required: false,
              serializedName: 'properties.diskSizeGB',
              type: {
                name: 'Number'
              }
            },
            encryptionSettingsCollection: {
              required: false,
              serializedName: 'properties.encryptionSettingsCollection',
              type: {
                name: 'Composite',
                className: 'EncryptionSettingsCollection'
              }
            },
            diskIOPSReadWrite: {
              required: false,
              serializedName: 'properties.diskIOPSReadWrite',
              type: {
                name: 'Number'
              }
            },
            diskMBpsReadWrite: {
              required: false,
              serializedName: 'properties.diskMBpsReadWrite',
              type: {
                name: 'Number'
              }
            },
            tags: {
              required: false,
              serializedName: 'tags',
              type: {
                name: 'Dictionary',
                value: {
                    required: false,
                    serializedName: 'StringElementType',
                    type: {
                      name: 'String'
                    }
                }
              }
            },
            sku: {
              required: false,
              serializedName: 'sku',
              type: {
                name: 'Composite',
                className: 'DiskSku'
              }
            }
          }
        }
      };
    }
  }
  
  module.exports = DiskUpdate;
  