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

/**
 * A Slo Usage Metric.
 *
 */
class SloUsageMetric {
  /**
   * Create a SloUsageMetric.
   * @property {string} [serviceLevelObjective] The serviceLevelObjective for
   * SLO usage metric. Possible values include: 'System', 'System0', 'System1',
   * 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L',
   * 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12',
   * 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4',
   * 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000',
   * 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000',
   * 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c',
   * 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400',
   * 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'
   * @property {uuid} [serviceLevelObjectiveId] The serviceLevelObjectiveId for
   * SLO usage metric.
   * @property {number} [inRangeTimeRatio] Gets or sets inRangeTimeRatio for
   * SLO usage metric.
   */
  constructor() {
  }

  /**
   * Defines the metadata of SloUsageMetric
   *
   * @returns {object} metadata of SloUsageMetric
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'SloUsageMetric',
      type: {
        name: 'Composite',
        className: 'SloUsageMetric',
        modelProperties: {
          serviceLevelObjective: {
            required: false,
            readOnly: true,
            serializedName: 'serviceLevelObjective',
            type: {
              name: 'String'
            }
          },
          serviceLevelObjectiveId: {
            required: false,
            nullable: false,
            readOnly: true,
            serializedName: 'serviceLevelObjectiveId',
            type: {
              name: 'String'
            }
          },
          inRangeTimeRatio: {
            required: false,
            nullable: false,
            readOnly: true,
            serializedName: 'inRangeTimeRatio',
            type: {
              name: 'Number'
            }
          }
        }
      }
    };
  }
}

module.exports = SloUsageMetric;
