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

/**
 * The Data Lake Analytics job statistics vertex stage information.
 *
 */
class JobStatisticsVertexStage {
  /**
   * Create a JobStatisticsVertexStage.
   * @member {number} [dataRead] the amount of data read, in bytes.
   * @member {number} [dataReadCrossPod] the amount of data read across
   * multiple pods, in bytes.
   * @member {number} [dataReadIntraPod] the amount of data read in one pod, in
   * bytes.
   * @member {number} [dataToRead] the amount of data remaining to be read, in
   * bytes.
   * @member {number} [dataWritten] the amount of data written, in bytes.
   * @member {number} [duplicateDiscardCount] the number of duplicates that
   * were discarded.
   * @member {number} [failedCount] the number of failures that occured in this
   * stage.
   * @member {number} [maxVertexDataRead] the maximum amount of data read in a
   * single vertex, in bytes.
   * @member {number} [minVertexDataRead] the minimum amount of data read in a
   * single vertex, in bytes.
   * @member {number} [readFailureCount] the number of read failures in this
   * stage.
   * @member {number} [revocationCount] the number of vertices that were
   * revoked during this stage.
   * @member {number} [runningCount] the number of currently running vertices
   * in this stage.
   * @member {number} [scheduledCount] the number of currently scheduled
   * vertices in this stage
   * @member {string} [stageName] the name of this stage in job execution.
   * @member {number} [succeededCount] the number of vertices that succeeded in
   * this stage.
   * @member {number} [tempDataWritten] the amount of temporary data written,
   * in bytes.
   * @member {number} [totalCount] the total vertex count for this stage.
   * @member {moment.duration} [totalFailedTime] the amount of time that failed
   * vertices took up in this stage.
   * @member {number} [totalProgress] the current progress of this stage, as a
   * percentage.
   * @member {moment.duration} [totalSucceededTime] the amount of time all
   * successful vertices took in this stage.
   */
  constructor() {
  }

  /**
   * Defines the metadata of JobStatisticsVertexStage
   *
   * @returns {object} metadata of JobStatisticsVertexStage
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'JobStatisticsVertexStage',
      type: {
        name: 'Composite',
        className: 'JobStatisticsVertexStage',
        modelProperties: {
          dataRead: {
            required: false,
            readOnly: true,
            serializedName: 'dataRead',
            type: {
              name: 'Number'
            }
          },
          dataReadCrossPod: {
            required: false,
            readOnly: true,
            serializedName: 'dataReadCrossPod',
            type: {
              name: 'Number'
            }
          },
          dataReadIntraPod: {
            required: false,
            readOnly: true,
            serializedName: 'dataReadIntraPod',
            type: {
              name: 'Number'
            }
          },
          dataToRead: {
            required: false,
            readOnly: true,
            serializedName: 'dataToRead',
            type: {
              name: 'Number'
            }
          },
          dataWritten: {
            required: false,
            readOnly: true,
            serializedName: 'dataWritten',
            type: {
              name: 'Number'
            }
          },
          duplicateDiscardCount: {
            required: false,
            readOnly: true,
            serializedName: 'duplicateDiscardCount',
            type: {
              name: 'Number'
            }
          },
          failedCount: {
            required: false,
            readOnly: true,
            serializedName: 'failedCount',
            type: {
              name: 'Number'
            }
          },
          maxVertexDataRead: {
            required: false,
            readOnly: true,
            serializedName: 'maxVertexDataRead',
            type: {
              name: 'Number'
            }
          },
          minVertexDataRead: {
            required: false,
            readOnly: true,
            serializedName: 'minVertexDataRead',
            type: {
              name: 'Number'
            }
          },
          readFailureCount: {
            required: false,
            readOnly: true,
            serializedName: 'readFailureCount',
            type: {
              name: 'Number'
            }
          },
          revocationCount: {
            required: false,
            readOnly: true,
            serializedName: 'revocationCount',
            type: {
              name: 'Number'
            }
          },
          runningCount: {
            required: false,
            readOnly: true,
            serializedName: 'runningCount',
            type: {
              name: 'Number'
            }
          },
          scheduledCount: {
            required: false,
            readOnly: true,
            serializedName: 'scheduledCount',
            type: {
              name: 'Number'
            }
          },
          stageName: {
            required: false,
            readOnly: true,
            serializedName: 'stageName',
            type: {
              name: 'String'
            }
          },
          succeededCount: {
            required: false,
            readOnly: true,
            serializedName: 'succeededCount',
            type: {
              name: 'Number'
            }
          },
          tempDataWritten: {
            required: false,
            readOnly: true,
            serializedName: 'tempDataWritten',
            type: {
              name: 'Number'
            }
          },
          totalCount: {
            required: false,
            readOnly: true,
            serializedName: 'totalCount',
            type: {
              name: 'Number'
            }
          },
          totalFailedTime: {
            required: false,
            readOnly: true,
            serializedName: 'totalFailedTime',
            type: {
              name: 'TimeSpan'
            }
          },
          totalProgress: {
            required: false,
            readOnly: true,
            serializedName: 'totalProgress',
            type: {
              name: 'Number'
            }
          },
          totalSucceededTime: {
            required: false,
            readOnly: true,
            serializedName: 'totalSucceededTime',
            type: {
              name: 'TimeSpan'
            }
          }
        }
      }
    };
  }
}

module.exports = JobStatisticsVertexStage;
