# frozen_string_literal: true

# Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

module TencentCloud
  module Emr
    module V20190103
      # AddMetricScaleStrategy请求参数结构体
      class AddMetricScaleStrategyRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param StrategyType: 1表示按负载规则扩容,2表示按时间规则扩容。必须填写,并且和下面的规则策略匹配
        # @type StrategyType: Integer
        # @param LoadAutoScaleStrategy: 按负载扩容的规则。
        # @type LoadAutoScaleStrategy: :class:`Tencentcloud::Emr.v20190103.models.LoadAutoScaleStrategy`
        # @param TimeAutoScaleStrategy: 按时间扩缩容的规则。
        # @type TimeAutoScaleStrategy: :class:`Tencentcloud::Emr.v20190103.models.TimeAutoScaleStrategy`

        attr_accessor :InstanceId, :StrategyType, :LoadAutoScaleStrategy, :TimeAutoScaleStrategy

        def initialize(instanceid=nil, strategytype=nil, loadautoscalestrategy=nil, timeautoscalestrategy=nil)
          @InstanceId = instanceid
          @StrategyType = strategytype
          @LoadAutoScaleStrategy = loadautoscalestrategy
          @TimeAutoScaleStrategy = timeautoscalestrategy
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StrategyType = params['StrategyType']
          unless params['LoadAutoScaleStrategy'].nil?
            @LoadAutoScaleStrategy = LoadAutoScaleStrategy.new
            @LoadAutoScaleStrategy.deserialize(params['LoadAutoScaleStrategy'])
          end
          unless params['TimeAutoScaleStrategy'].nil?
            @TimeAutoScaleStrategy = TimeAutoScaleStrategy.new
            @TimeAutoScaleStrategy.deserialize(params['TimeAutoScaleStrategy'])
          end
        end
      end

      # AddMetricScaleStrategy返回参数结构体
      class AddMetricScaleStrategyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # AddUsersForUserManager请求参数结构体
      class AddUsersForUserManagerRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群字符串ID
        # @type InstanceId: String
        # @param UserManagerUserList: 用户信息列表
        # @type UserManagerUserList: Array

        attr_accessor :InstanceId, :UserManagerUserList

        def initialize(instanceid=nil, usermanageruserlist=nil)
          @InstanceId = instanceid
          @UserManagerUserList = usermanageruserlist
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          unless params['UserManagerUserList'].nil?
            @UserManagerUserList = []
            params['UserManagerUserList'].each do |i|
              userinfoforusermanager_tmp = UserInfoForUserManager.new
              userinfoforusermanager_tmp.deserialize(i)
              @UserManagerUserList << userinfoforusermanager_tmp
            end
          end
        end
      end

      # AddUsersForUserManager返回参数结构体
      class AddUsersForUserManagerResponse < TencentCloud::Common::AbstractModel
        # @param SuccessUserList: 添加成功的用户列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SuccessUserList: Array
        # @param FailedUserList: 添加失败的用户列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailedUserList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SuccessUserList, :FailedUserList, :RequestId

        def initialize(successuserlist=nil, faileduserlist=nil, requestid=nil)
          @SuccessUserList = successuserlist
          @FailedUserList = faileduserlist
          @RequestId = requestid
        end

        def deserialize(params)
          @SuccessUserList = params['SuccessUserList']
          @FailedUserList = params['FailedUserList']
          @RequestId = params['RequestId']
        end
      end

      # 资源描述
      class AllNodeResourceSpec < TencentCloud::Common::AbstractModel
        # @param MasterResourceSpec: 描述Master节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MasterResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NodeResourceSpec`
        # @param CoreResourceSpec: 描述Core节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CoreResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NodeResourceSpec`
        # @param TaskResourceSpec: 描述Taskr节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NodeResourceSpec`
        # @param CommonResourceSpec: 描述Common节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CommonResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NodeResourceSpec`
        # @param MasterCount: Master节点数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MasterCount: Integer
        # @param CoreCount: Corer节点数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CoreCount: Integer
        # @param TaskCount: Task节点数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskCount: Integer
        # @param CommonCount: Common节点数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CommonCount: Integer

        attr_accessor :MasterResourceSpec, :CoreResourceSpec, :TaskResourceSpec, :CommonResourceSpec, :MasterCount, :CoreCount, :TaskCount, :CommonCount

        def initialize(masterresourcespec=nil, coreresourcespec=nil, taskresourcespec=nil, commonresourcespec=nil, mastercount=nil, corecount=nil, taskcount=nil, commoncount=nil)
          @MasterResourceSpec = masterresourcespec
          @CoreResourceSpec = coreresourcespec
          @TaskResourceSpec = taskresourcespec
          @CommonResourceSpec = commonresourcespec
          @MasterCount = mastercount
          @CoreCount = corecount
          @TaskCount = taskcount
          @CommonCount = commoncount
        end

        def deserialize(params)
          unless params['MasterResourceSpec'].nil?
            @MasterResourceSpec = NodeResourceSpec.new
            @MasterResourceSpec.deserialize(params['MasterResourceSpec'])
          end
          unless params['CoreResourceSpec'].nil?
            @CoreResourceSpec = NodeResourceSpec.new
            @CoreResourceSpec.deserialize(params['CoreResourceSpec'])
          end
          unless params['TaskResourceSpec'].nil?
            @TaskResourceSpec = NodeResourceSpec.new
            @TaskResourceSpec.deserialize(params['TaskResourceSpec'])
          end
          unless params['CommonResourceSpec'].nil?
            @CommonResourceSpec = NodeResourceSpec.new
            @CommonResourceSpec.deserialize(params['CommonResourceSpec'])
          end
          @MasterCount = params['MasterCount']
          @CoreCount = params['CoreCount']
          @TaskCount = params['TaskCount']
          @CommonCount = params['CommonCount']
        end
      end

      # yarn application 统计信息
      class ApplicationStatics < TencentCloud::Common::AbstractModel
        # @param Queue: 队列名
        # @type Queue: String
        # @param User: 用户名
        # @type User: String
        # @param ApplicationType: 作业类型
        # @type ApplicationType: String
        # @param SumMemorySeconds: SumMemorySeconds含义
        # @type SumMemorySeconds: Integer
        # @param SumVCoreSeconds: SumVCoreSeconds含义
        # @type SumVCoreSeconds: Integer
        # @param SumHDFSBytesWritten: SumHDFSBytesWritten(带单位)
        # @type SumHDFSBytesWritten: String
        # @param SumHDFSBytesRead: SumHDFSBytesRead(待单位)
        # @type SumHDFSBytesRead: String
        # @param CountApps: 作业数
        # @type CountApps: Integer

        attr_accessor :Queue, :User, :ApplicationType, :SumMemorySeconds, :SumVCoreSeconds, :SumHDFSBytesWritten, :SumHDFSBytesRead, :CountApps

        def initialize(queue=nil, user=nil, applicationtype=nil, summemoryseconds=nil, sumvcoreseconds=nil, sumhdfsbyteswritten=nil, sumhdfsbytesread=nil, countapps=nil)
          @Queue = queue
          @User = user
          @ApplicationType = applicationtype
          @SumMemorySeconds = summemoryseconds
          @SumVCoreSeconds = sumvcoreseconds
          @SumHDFSBytesWritten = sumhdfsbyteswritten
          @SumHDFSBytesRead = sumhdfsbytesread
          @CountApps = countapps
        end

        def deserialize(params)
          @Queue = params['Queue']
          @User = params['User']
          @ApplicationType = params['ApplicationType']
          @SumMemorySeconds = params['SumMemorySeconds']
          @SumVCoreSeconds = params['SumVCoreSeconds']
          @SumHDFSBytesWritten = params['SumHDFSBytesWritten']
          @SumHDFSBytesRead = params['SumHDFSBytesRead']
          @CountApps = params['CountApps']
        end
      end

      # 通用的参数
      class Arg < TencentCloud::Common::AbstractModel
        # @param Key: key
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Key: String
        # @param Values: 值列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Values: Array

        attr_accessor :Key, :Values

        def initialize(key=nil, values=nil)
          @Key = key
          @Values = values
        end

        def deserialize(params)
          @Key = params['Key']
          @Values = params['Values']
        end
      end

      # 弹性扩缩容记录
      class AutoScaleRecord < TencentCloud::Common::AbstractModel
        # @param StrategyName: 扩缩容规则名。
        # @type StrategyName: String
        # @param ScaleAction: "SCALE_OUT"和"SCALE_IN",分别表示扩容和缩容。
        # @type ScaleAction: String
        # @param ActionStatus: 取值为"SUCCESS","FAILED","PART_SUCCESS","IN_PROCESS",分别表示成功、失败、部分成功和流程中。
        # @type ActionStatus: String
        # @param ActionTime: 流程触发时间。
        # @type ActionTime: String
        # @param ScaleInfo: 扩缩容相关描述信息。
        # @type ScaleInfo: String
        # @param ExpectScaleNum: 只在ScaleAction为SCALE_OUT时有效。
        # @type ExpectScaleNum: Integer
        # @param EndTime: 流程结束时间。
        # @type EndTime: String
        # @param StrategyType: 策略类型,按负载或者按时间,1表示负载伸缩,2表示时间伸缩
        # @type StrategyType: Integer
        # @param SpecInfo: 扩容时所使用规格信息。
        # @type SpecInfo: String
        # @param CompensateFlag: 补偿扩容,0表示不开启,1表示开启
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CompensateFlag: Integer
        # @param CompensateCount: 补偿次数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CompensateCount: Integer
        # @param RetryCount: 重试次数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RetryCount: Integer
        # @param RetryInfo: 重试信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RetryInfo: String
        # @param RetryEnReason: 重试英文描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RetryEnReason: String
        # @param RetryReason: 重试描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RetryReason: String

        attr_accessor :StrategyName, :ScaleAction, :ActionStatus, :ActionTime, :ScaleInfo, :ExpectScaleNum, :EndTime, :StrategyType, :SpecInfo, :CompensateFlag, :CompensateCount, :RetryCount, :RetryInfo, :RetryEnReason, :RetryReason

        def initialize(strategyname=nil, scaleaction=nil, actionstatus=nil, actiontime=nil, scaleinfo=nil, expectscalenum=nil, endtime=nil, strategytype=nil, specinfo=nil, compensateflag=nil, compensatecount=nil, retrycount=nil, retryinfo=nil, retryenreason=nil, retryreason=nil)
          @StrategyName = strategyname
          @ScaleAction = scaleaction
          @ActionStatus = actionstatus
          @ActionTime = actiontime
          @ScaleInfo = scaleinfo
          @ExpectScaleNum = expectscalenum
          @EndTime = endtime
          @StrategyType = strategytype
          @SpecInfo = specinfo
          @CompensateFlag = compensateflag
          @CompensateCount = compensatecount
          @RetryCount = retrycount
          @RetryInfo = retryinfo
          @RetryEnReason = retryenreason
          @RetryReason = retryreason
        end

        def deserialize(params)
          @StrategyName = params['StrategyName']
          @ScaleAction = params['ScaleAction']
          @ActionStatus = params['ActionStatus']
          @ActionTime = params['ActionTime']
          @ScaleInfo = params['ScaleInfo']
          @ExpectScaleNum = params['ExpectScaleNum']
          @EndTime = params['EndTime']
          @StrategyType = params['StrategyType']
          @SpecInfo = params['SpecInfo']
          @CompensateFlag = params['CompensateFlag']
          @CompensateCount = params['CompensateCount']
          @RetryCount = params['RetryCount']
          @RetryInfo = params['RetryInfo']
          @RetryEnReason = params['RetryEnReason']
          @RetryReason = params['RetryReason']
        end
      end

      # 弹性扩缩容规格配置
      class AutoScaleResourceConf < TencentCloud::Common::AbstractModel
        # @param Id: 配置ID。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Id: Integer
        # @param ClusterId: 集群实例ID。
        # @type ClusterId: Integer
        # @param ScaleLowerBound: 自动扩缩容保留最小实例数。
        # @type ScaleLowerBound: Integer
        # @param ScaleUpperBound: 自动扩缩容最大实例数。
        # @type ScaleUpperBound: Integer
        # @param StrategyType: 扩容规则类型,1为按负载指标扩容规则,2为按时间扩容规则
        # @type StrategyType: Integer
        # @param NextTimeCanScale: 下次能可扩容时间。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NextTimeCanScale: Integer
        # @param GraceDownFlag: 优雅缩容开关
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GraceDownFlag: Boolean
        # @param HardwareType: "CVM"表示规格全部使用CVM相关类型,"POD"表示规格使用容器相关类型,默认为"CVM"。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HardwareType: String
        # @param PayMode: "POSTPAY"表示只使用按量计费,"SPOT_FIRST"表示竞价实例优先,只有HardwareType为"HOST"时支持竞价实例优先,"POD"只支持纯按量计费。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PayMode: String
        # @param PostPayPercentMin: 竞价实例优先的场景下,按量计费资源数量的最低百分比,整数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PostPayPercentMin: Integer
        # @param ChangeToPod: 预设资源类型为HOST时,支持勾选“资源不足时切换POD”;支持取消勾选;默认不勾选(0),勾选(1)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChangeToPod: Integer
        # @param GroupName: 伸缩组名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupName: String
        # @param YarnNodeLabel: 标签
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type YarnNodeLabel: String
        # @param GroupStatus: 伸缩组状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupStatus: Integer
        # @param Parallel: 并行伸缩 0关闭;1开启
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Parallel: Integer
        # @param EnableMNode: 是否支持MNode
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EnableMNode: Integer

        attr_accessor :Id, :ClusterId, :ScaleLowerBound, :ScaleUpperBound, :StrategyType, :NextTimeCanScale, :GraceDownFlag, :HardwareType, :PayMode, :PostPayPercentMin, :ChangeToPod, :GroupName, :YarnNodeLabel, :GroupStatus, :Parallel, :EnableMNode

        def initialize(id=nil, clusterid=nil, scalelowerbound=nil, scaleupperbound=nil, strategytype=nil, nexttimecanscale=nil, gracedownflag=nil, hardwaretype=nil, paymode=nil, postpaypercentmin=nil, changetopod=nil, groupname=nil, yarnnodelabel=nil, groupstatus=nil, parallel=nil, enablemnode=nil)
          @Id = id
          @ClusterId = clusterid
          @ScaleLowerBound = scalelowerbound
          @ScaleUpperBound = scaleupperbound
          @StrategyType = strategytype
          @NextTimeCanScale = nexttimecanscale
          @GraceDownFlag = gracedownflag
          @HardwareType = hardwaretype
          @PayMode = paymode
          @PostPayPercentMin = postpaypercentmin
          @ChangeToPod = changetopod
          @GroupName = groupname
          @YarnNodeLabel = yarnnodelabel
          @GroupStatus = groupstatus
          @Parallel = parallel
          @EnableMNode = enablemnode
        end

        def deserialize(params)
          @Id = params['Id']
          @ClusterId = params['ClusterId']
          @ScaleLowerBound = params['ScaleLowerBound']
          @ScaleUpperBound = params['ScaleUpperBound']
          @StrategyType = params['StrategyType']
          @NextTimeCanScale = params['NextTimeCanScale']
          @GraceDownFlag = params['GraceDownFlag']
          @HardwareType = params['HardwareType']
          @PayMode = params['PayMode']
          @PostPayPercentMin = params['PostPayPercentMin']
          @ChangeToPod = params['ChangeToPod']
          @GroupName = params['GroupName']
          @YarnNodeLabel = params['YarnNodeLabel']
          @GroupStatus = params['GroupStatus']
          @Parallel = params['Parallel']
          @EnableMNode = params['EnableMNode']
        end
      end

      # 引导脚本
      class BootstrapAction < TencentCloud::Common::AbstractModel
        # @param Path: 脚本位置,支持cos上的文件,且只支持https协议。
        # @type Path: String
        # @param WhenRun: 执行时间。
        # resourceAfter 表示在机器资源申请成功后执行。
        # clusterBefore 表示在集群初始化前执行。
        # clusterAfter 表示在集群初始化后执行。
        # @type WhenRun: String
        # @param Args: 脚本参数
        # @type Args: Array

        attr_accessor :Path, :WhenRun, :Args

        def initialize(path=nil, whenrun=nil, args=nil)
          @Path = path
          @WhenRun = whenrun
          @Args = args
        end

        def deserialize(params)
          @Path = params['Path']
          @WhenRun = params['WhenRun']
          @Args = params['Args']
        end
      end

      # COS 相关配置
      class COSSettings < TencentCloud::Common::AbstractModel
        # @param CosSecretId: COS SecretId
        # @type CosSecretId: String
        # @param CosSecretKey: COS SecrectKey
        # @type CosSecretKey: String
        # @param LogOnCosPath: 日志存储在COS上的路径
        # @type LogOnCosPath: String

        attr_accessor :CosSecretId, :CosSecretKey, :LogOnCosPath

        def initialize(cossecretid=nil, cossecretkey=nil, logoncospath=nil)
          @CosSecretId = cossecretid
          @CosSecretKey = cossecretkey
          @LogOnCosPath = logoncospath
        end

        def deserialize(params)
          @CosSecretId = params['CosSecretId']
          @CosSecretKey = params['CosSecretKey']
          @LogOnCosPath = params['LogOnCosPath']
        end
      end

      # 出参
      class CdbInfo < TencentCloud::Common::AbstractModel
        # @param InstanceName: 数据库实例
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceName: String
        # @param Ip: 数据库IP
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Ip: String
        # @param Port: 数据库端口
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Port: Integer
        # @param MemSize: 数据库内存规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MemSize: Integer
        # @param Volume: 数据库磁盘规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Volume: Integer
        # @param Service: 服务标识
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Service: String
        # @param ExpireTime: 过期时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExpireTime: String
        # @param ApplyTime: 申请时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApplyTime: String
        # @param PayType: 付费类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PayType: Integer
        # @param ExpireFlag: 过期标识
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExpireFlag: Boolean
        # @param Status: 数据库状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Status: Integer
        # @param IsAutoRenew: 续费标识
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsAutoRenew: Integer
        # @param SerialNo: 数据库字符串
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SerialNo: String
        # @param ZoneId: ZoneId
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ZoneId: Integer
        # @param RegionId: RegionId
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RegionId: Integer

        attr_accessor :InstanceName, :Ip, :Port, :MemSize, :Volume, :Service, :ExpireTime, :ApplyTime, :PayType, :ExpireFlag, :Status, :IsAutoRenew, :SerialNo, :ZoneId, :RegionId

        def initialize(instancename=nil, ip=nil, port=nil, memsize=nil, volume=nil, service=nil, expiretime=nil, applytime=nil, paytype=nil, expireflag=nil, status=nil, isautorenew=nil, serialno=nil, zoneid=nil, regionid=nil)
          @InstanceName = instancename
          @Ip = ip
          @Port = port
          @MemSize = memsize
          @Volume = volume
          @Service = service
          @ExpireTime = expiretime
          @ApplyTime = applytime
          @PayType = paytype
          @ExpireFlag = expireflag
          @Status = status
          @IsAutoRenew = isautorenew
          @SerialNo = serialno
          @ZoneId = zoneid
          @RegionId = regionid
        end

        def deserialize(params)
          @InstanceName = params['InstanceName']
          @Ip = params['Ip']
          @Port = params['Port']
          @MemSize = params['MemSize']
          @Volume = params['Volume']
          @Service = params['Service']
          @ExpireTime = params['ExpireTime']
          @ApplyTime = params['ApplyTime']
          @PayType = params['PayType']
          @ExpireFlag = params['ExpireFlag']
          @Status = params['Status']
          @IsAutoRenew = params['IsAutoRenew']
          @SerialNo = params['SerialNo']
          @ZoneId = params['ZoneId']
          @RegionId = params['RegionId']
        end
      end

      # 当前集群共用组件与集群对应关系
      class ClusterExternalServiceInfo < TencentCloud::Common::AbstractModel
        # @param DependType: 依赖关系,0:被其他集群依赖,1:依赖其他集群
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DependType: Integer
        # @param Service: 共用组件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Service: String
        # @param ClusterId: 共用集群
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterId: String
        # @param ClusterStatus: 共用集群状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterStatus: Integer

        attr_accessor :DependType, :Service, :ClusterId, :ClusterStatus

        def initialize(dependtype=nil, service=nil, clusterid=nil, clusterstatus=nil)
          @DependType = dependtype
          @Service = service
          @ClusterId = clusterid
          @ClusterStatus = clusterstatus
        end

        def deserialize(params)
          @DependType = params['DependType']
          @Service = params['Service']
          @ClusterId = params['ClusterId']
          @ClusterStatus = params['ClusterStatus']
        end
      end

      # 集群id与流程id的mapping
      class ClusterIDToFlowID < TencentCloud::Common::AbstractModel
        # @param ClusterId: 集群id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterId: String
        # @param FlowId: 流程id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowId: Integer

        attr_accessor :ClusterId, :FlowId

        def initialize(clusterid=nil, flowid=nil)
          @ClusterId = clusterid
          @FlowId = flowid
        end

        def deserialize(params)
          @ClusterId = params['ClusterId']
          @FlowId = params['FlowId']
        end
      end

      # 集群实例信息
      class ClusterInstancesInfo < TencentCloud::Common::AbstractModel
        # @param Id: ID号
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Id: Integer
        # @param ClusterId: 集群ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterId: String
        # @param Ftitle: 标题
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Ftitle: String
        # @param ClusterName: 集群名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterName: String
        # @param RegionId: 地域ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RegionId: Integer
        # @param ZoneId: 地区ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ZoneId: Integer
        # @param AppId: 用户APPID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AppId: Integer
        # @param Uin: 用户UIN
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Uin: String
        # @param ProjectId: 项目Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProjectId: Integer
        # @param VpcId: 集群VPCID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VpcId: Integer
        # @param SubnetId: 子网ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetId: Integer
        # @param Status: 实例的状态码。取值范围:
        # <li>2:表示集群运行中。</li>
        # <li>3:表示集群创建中。</li>
        # <li>4:表示集群扩容中。</li>
        # <li>5:表示集群增加router节点中。</li>
        # <li>6:表示集群安装组件中。</li>
        # <li>7:表示集群执行命令中。</li>
        # <li>8:表示重启服务中。</li>
        # <li>9:表示进入维护中。</li>
        # <li>10:表示服务暂停中。</li>
        # <li>11:表示退出维护中。</li>
        # <li>12:表示退出暂停中。</li>
        # <li>13:表示配置下发中。</li>
        # <li>14:表示销毁集群中。</li>
        # <li>15:表示销毁core节点中。</li>
        # <li>16:销毁task节点中。</li>
        # <li>17:表示销毁router节点中。</li>
        # <li>18:表示更改webproxy密码中。</li>
        # <li>19:表示集群隔离中。</li>
        # <li>20:表示集群冲正中。</li>
        # <li>21:表示集群回收中。</li>
        # <li>22:表示变配等待中。</li>
        # <li>23:表示集群已隔离。</li>
        # <li>24:表示缩容节点中。</li>
        # <li>33:表示集群等待退费中。</li>
        # <li>34:表示集群已退费。</li>
        # <li>301:表示创建失败。</li>
        # <li>302:表示扩容失败。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Status: Integer
        # @param AddTime: 添加时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AddTime: String
        # @param RunTime: 已经运行时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RunTime: String
        # @param Config: 集群产品配置信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Config: :class:`Tencentcloud::Emr.v20190103.models.EmrProductConfigOutter`
        # @param MasterIp: 主节点外网IP
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MasterIp: String
        # @param EmrVersion: EMR版本
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EmrVersion: String
        # @param ChargeType: 收费类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChargeType: Integer
        # @param TradeVersion: 交易版本
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TradeVersion: Integer
        # @param ResourceOrderId: 资源订单ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ResourceOrderId: Integer
        # @param IsTradeCluster: 是否计费集群
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsTradeCluster: Integer
        # @param AlarmInfo: 集群错误状态告警信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlarmInfo: String
        # @param IsWoodpeckerCluster: 是否采用新架构
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsWoodpeckerCluster: Integer
        # @param MetaDb: 元数据库信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetaDb: String
        # @param Tags: 标签信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param HiveMetaDb: Hive元数据信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HiveMetaDb: String
        # @param ServiceClass: 集群类型:EMR,CLICKHOUSE,DRUID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ServiceClass: String
        # @param AliasInfo: 集群所有节点的别名序列化
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AliasInfo: String
        # @param ProductId: 集群版本Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProductId: Integer
        # @param Zone: 地区ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Zone: String
        # @param SceneName: 场景名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SceneName: String
        # @param SceneServiceClass: 场景化集群类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SceneServiceClass: String
        # @param SceneEmrVersion: 场景化EMR版本
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SceneEmrVersion: String
        # @param DisplayName: 场景化集群类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DisplayName: String
        # @param VpcName: vpc name
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VpcName: String
        # @param SubnetName: subnet name
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetName: String
        # @param ClusterExternalServiceInfo: 集群依赖关系
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterExternalServiceInfo: Array
        # @param UniqVpcId: 集群vpcid 字符串类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UniqVpcId: String
        # @param UniqSubnetId: 子网id 字符串类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UniqSubnetId: String
        # @param TopologyInfoList: 节点信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TopologyInfoList: Array
        # @param IsMultiZoneCluster: 是否是跨AZ集群
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsMultiZoneCluster: Boolean
        # @param IsCvmReplace: 是否开通异常节点自动补偿
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsCvmReplace: Boolean
        # @param ClusterTitle: 标题
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterTitle: String
        # @param ConfigDetail: 集群产品配置信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConfigDetail: :class:`Tencentcloud::Emr.v20190103.models.EmrProductConfigDetail`

        attr_accessor :Id, :ClusterId, :Ftitle, :ClusterName, :RegionId, :ZoneId, :AppId, :Uin, :ProjectId, :VpcId, :SubnetId, :Status, :AddTime, :RunTime, :Config, :MasterIp, :EmrVersion, :ChargeType, :TradeVersion, :ResourceOrderId, :IsTradeCluster, :AlarmInfo, :IsWoodpeckerCluster, :MetaDb, :Tags, :HiveMetaDb, :ServiceClass, :AliasInfo, :ProductId, :Zone, :SceneName, :SceneServiceClass, :SceneEmrVersion, :DisplayName, :VpcName, :SubnetName, :ClusterExternalServiceInfo, :UniqVpcId, :UniqSubnetId, :TopologyInfoList, :IsMultiZoneCluster, :IsCvmReplace, :ClusterTitle, :ConfigDetail
        extend Gem::Deprecate
        deprecate :Ftitle, :none, 2024, 8
        deprecate :Ftitle=, :none, 2024, 8
        deprecate :Config, :none, 2024, 8
        deprecate :Config=, :none, 2024, 8

        def initialize(id=nil, clusterid=nil, ftitle=nil, clustername=nil, regionid=nil, zoneid=nil, appid=nil, uin=nil, projectid=nil, vpcid=nil, subnetid=nil, status=nil, addtime=nil, runtime=nil, config=nil, masterip=nil, emrversion=nil, chargetype=nil, tradeversion=nil, resourceorderid=nil, istradecluster=nil, alarminfo=nil, iswoodpeckercluster=nil, metadb=nil, tags=nil, hivemetadb=nil, serviceclass=nil, aliasinfo=nil, productid=nil, zone=nil, scenename=nil, sceneserviceclass=nil, sceneemrversion=nil, displayname=nil, vpcname=nil, subnetname=nil, clusterexternalserviceinfo=nil, uniqvpcid=nil, uniqsubnetid=nil, topologyinfolist=nil, ismultizonecluster=nil, iscvmreplace=nil, clustertitle=nil, configdetail=nil)
          @Id = id
          @ClusterId = clusterid
          @Ftitle = ftitle
          @ClusterName = clustername
          @RegionId = regionid
          @ZoneId = zoneid
          @AppId = appid
          @Uin = uin
          @ProjectId = projectid
          @VpcId = vpcid
          @SubnetId = subnetid
          @Status = status
          @AddTime = addtime
          @RunTime = runtime
          @Config = config
          @MasterIp = masterip
          @EmrVersion = emrversion
          @ChargeType = chargetype
          @TradeVersion = tradeversion
          @ResourceOrderId = resourceorderid
          @IsTradeCluster = istradecluster
          @AlarmInfo = alarminfo
          @IsWoodpeckerCluster = iswoodpeckercluster
          @MetaDb = metadb
          @Tags = tags
          @HiveMetaDb = hivemetadb
          @ServiceClass = serviceclass
          @AliasInfo = aliasinfo
          @ProductId = productid
          @Zone = zone
          @SceneName = scenename
          @SceneServiceClass = sceneserviceclass
          @SceneEmrVersion = sceneemrversion
          @DisplayName = displayname
          @VpcName = vpcname
          @SubnetName = subnetname
          @ClusterExternalServiceInfo = clusterexternalserviceinfo
          @UniqVpcId = uniqvpcid
          @UniqSubnetId = uniqsubnetid
          @TopologyInfoList = topologyinfolist
          @IsMultiZoneCluster = ismultizonecluster
          @IsCvmReplace = iscvmreplace
          @ClusterTitle = clustertitle
          @ConfigDetail = configdetail
        end

        def deserialize(params)
          @Id = params['Id']
          @ClusterId = params['ClusterId']
          @Ftitle = params['Ftitle']
          @ClusterName = params['ClusterName']
          @RegionId = params['RegionId']
          @ZoneId = params['ZoneId']
          @AppId = params['AppId']
          @Uin = params['Uin']
          @ProjectId = params['ProjectId']
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
          @Status = params['Status']
          @AddTime = params['AddTime']
          @RunTime = params['RunTime']
          unless params['Config'].nil?
            @Config = EmrProductConfigOutter.new
            @Config.deserialize(params['Config'])
          end
          @MasterIp = params['MasterIp']
          @EmrVersion = params['EmrVersion']
          @ChargeType = params['ChargeType']
          @TradeVersion = params['TradeVersion']
          @ResourceOrderId = params['ResourceOrderId']
          @IsTradeCluster = params['IsTradeCluster']
          @AlarmInfo = params['AlarmInfo']
          @IsWoodpeckerCluster = params['IsWoodpeckerCluster']
          @MetaDb = params['MetaDb']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @HiveMetaDb = params['HiveMetaDb']
          @ServiceClass = params['ServiceClass']
          @AliasInfo = params['AliasInfo']
          @ProductId = params['ProductId']
          @Zone = params['Zone']
          @SceneName = params['SceneName']
          @SceneServiceClass = params['SceneServiceClass']
          @SceneEmrVersion = params['SceneEmrVersion']
          @DisplayName = params['DisplayName']
          @VpcName = params['VpcName']
          @SubnetName = params['SubnetName']
          unless params['ClusterExternalServiceInfo'].nil?
            @ClusterExternalServiceInfo = []
            params['ClusterExternalServiceInfo'].each do |i|
              clusterexternalserviceinfo_tmp = ClusterExternalServiceInfo.new
              clusterexternalserviceinfo_tmp.deserialize(i)
              @ClusterExternalServiceInfo << clusterexternalserviceinfo_tmp
            end
          end
          @UniqVpcId = params['UniqVpcId']
          @UniqSubnetId = params['UniqSubnetId']
          unless params['TopologyInfoList'].nil?
            @TopologyInfoList = []
            params['TopologyInfoList'].each do |i|
              topologyinfo_tmp = TopologyInfo.new
              topologyinfo_tmp.deserialize(i)
              @TopologyInfoList << topologyinfo_tmp
            end
          end
          @IsMultiZoneCluster = params['IsMultiZoneCluster']
          @IsCvmReplace = params['IsCvmReplace']
          @ClusterTitle = params['ClusterTitle']
          unless params['ConfigDetail'].nil?
            @ConfigDetail = EmrProductConfigDetail.new
            @ConfigDetail.deserialize(params['ConfigDetail'])
          end
        end
      end

      # 集群配置。
      class ClusterSetting < TencentCloud::Common::AbstractModel
        # @param InstanceChargeType: 付费方式。
        # PREPAID 包年包月。
        # POSTPAID_BY_HOUR 按量计费,默认方式。
        # @type InstanceChargeType: String
        # @param SupportHA: 是否为HA集群。
        # @type SupportHA: Boolean
        # @param SecurityGroupIds: 集群所使用的安全组,目前仅支持一个。
        # @type SecurityGroupIds: Array
        # @param Placement: 实例位置。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param VPCSettings: 实例所在VPC。
        # @type VPCSettings: :class:`Tencentcloud::Emr.v20190103.models.VPCSettings`
        # @param LoginSettings: 实例登录配置。
        # @type LoginSettings: :class:`Tencentcloud::Emr.v20190103.models.LoginSettings`
        # @param TagSpecification: 实例标签,示例:["{\"TagKey\":\"test-tag1\",\"TagValue\":\"001\"}","{\"TagKey\":\"test-tag2\",\"TagValue\":\"002\"}"]。
        # @type TagSpecification: Array
        # @param MetaDB: 元数据库配置。
        # @type MetaDB: :class:`Tencentcloud::Emr.v20190103.models.MetaDbInfo`
        # @param ResourceSpec: 实例硬件配置。
        # @type ResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.JobFlowResourceSpec`
        # @param PublicIpAssigned: 是否申请公网IP,默认为false。
        # @type PublicIpAssigned: Boolean
        # @param InstanceChargePrepaid: 包年包月配置,只对包年包月集群生效。
        # @type InstanceChargePrepaid: :class:`Tencentcloud::Emr.v20190103.models.InstanceChargePrepaid`
        # @param DisasterRecoverGroupIds: 集群置放群组。
        # @type DisasterRecoverGroupIds: String
        # @param CbsEncryptFlag: 是否使用cbs加密。
        # @type CbsEncryptFlag: Boolean
        # @param RemoteTcpDefaultPort: 是否使用远程登录,默认为false。
        # @type RemoteTcpDefaultPort: Boolean

        attr_accessor :InstanceChargeType, :SupportHA, :SecurityGroupIds, :Placement, :VPCSettings, :LoginSettings, :TagSpecification, :MetaDB, :ResourceSpec, :PublicIpAssigned, :InstanceChargePrepaid, :DisasterRecoverGroupIds, :CbsEncryptFlag, :RemoteTcpDefaultPort

        def initialize(instancechargetype=nil, supportha=nil, securitygroupids=nil, placement=nil, vpcsettings=nil, loginsettings=nil, tagspecification=nil, metadb=nil, resourcespec=nil, publicipassigned=nil, instancechargeprepaid=nil, disasterrecovergroupids=nil, cbsencryptflag=nil, remotetcpdefaultport=nil)
          @InstanceChargeType = instancechargetype
          @SupportHA = supportha
          @SecurityGroupIds = securitygroupids
          @Placement = placement
          @VPCSettings = vpcsettings
          @LoginSettings = loginsettings
          @TagSpecification = tagspecification
          @MetaDB = metadb
          @ResourceSpec = resourcespec
          @PublicIpAssigned = publicipassigned
          @InstanceChargePrepaid = instancechargeprepaid
          @DisasterRecoverGroupIds = disasterrecovergroupids
          @CbsEncryptFlag = cbsencryptflag
          @RemoteTcpDefaultPort = remotetcpdefaultport
        end

        def deserialize(params)
          @InstanceChargeType = params['InstanceChargeType']
          @SupportHA = params['SupportHA']
          @SecurityGroupIds = params['SecurityGroupIds']
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          unless params['VPCSettings'].nil?
            @VPCSettings = VPCSettings.new
            @VPCSettings.deserialize(params['VPCSettings'])
          end
          unless params['LoginSettings'].nil?
            @LoginSettings = LoginSettings.new
            @LoginSettings.deserialize(params['LoginSettings'])
          end
          @TagSpecification = params['TagSpecification']
          unless params['MetaDB'].nil?
            @MetaDB = MetaDbInfo.new
            @MetaDB.deserialize(params['MetaDB'])
          end
          unless params['ResourceSpec'].nil?
            @ResourceSpec = JobFlowResourceSpec.new
            @ResourceSpec.deserialize(params['ResourceSpec'])
          end
          @PublicIpAssigned = params['PublicIpAssigned']
          unless params['InstanceChargePrepaid'].nil?
            @InstanceChargePrepaid = InstanceChargePrepaid.new
            @InstanceChargePrepaid.deserialize(params['InstanceChargePrepaid'])
          end
          @DisasterRecoverGroupIds = params['DisasterRecoverGroupIds']
          @CbsEncryptFlag = params['CbsEncryptFlag']
          @RemoteTcpDefaultPort = params['RemoteTcpDefaultPort']
        end
      end

      # 操作的进程范围
      class ComponentBasicRestartInfo < TencentCloud::Common::AbstractModel
        # @param ComponentName: 进程名,必填,如NameNode
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComponentName: String
        # @param IpList: 操作的IP列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IpList: Array

        attr_accessor :ComponentName, :IpList

        def initialize(componentname=nil, iplist=nil)
          @ComponentName = componentname
          @IpList = iplist
        end

        def deserialize(params)
          @ComponentName = params['ComponentName']
          @IpList = params['IpList']
        end
      end

      # 自定义配置参数
      class Configuration < TencentCloud::Common::AbstractModel
        # @param Classification: 配置文件名,支持SPARK、HIVE、HDFS、YARN的部分配置文件自定义。
        # @type Classification: String
        # @param Properties: 配置参数通过KV的形式传入,部分文件支持自定义,可以通过特殊的键"content"传入所有内容。
        # @type Properties: String

        attr_accessor :Classification, :Properties

        def initialize(classification=nil, properties=nil)
          @Classification = classification
          @Properties = properties
        end

        def deserialize(params)
          @Classification = params['Classification']
          @Properties = params['Properties']
        end
      end

      # CreateCluster请求参数结构体
      class CreateClusterRequest < TencentCloud::Common::AbstractModel
        # @param ProductVersion: EMR产品版本名称如EMR-V2.3.0 表示2.3.0版本的EMR, 当前支持产品版本名称查询:[产品版本名称](https://cloud.tencent.com/document/product/589/66338)
        # @type ProductVersion: String
        # @param EnableSupportHAFlag: 是否开启节点高可用。取值范围:
        # <li>true:表示开启节点高可用。</li>
        # <li>false:表示不开启节点高可用。</li>
        # @type EnableSupportHAFlag: Boolean
        # @param InstanceName: 实例名称。
        # <li>长度限制为6-36个字符。</li>
        # <li>只允许包含中文、字母、数字、-、_。</li>
        # @type InstanceName: String
        # @param InstanceChargeType: 实例计费模式。取值范围:
        # <li>PREPAID:预付费,即包年包月。</li>
        # <li>POSTPAID_BY_HOUR:按小时后付费。</li>
        # @type InstanceChargeType: String
        # @param LoginSettings: 实例登录设置。通过该参数可以设置所购买节点的登录方式密码或者密钥。
        # <li>设置密钥时,密码仅用于组件原生WebUI快捷入口登录。</li>
        # <li>未设置密钥时,密码用于登录所购节点以及组件原生WebUI快捷入口登录。</li>
        # @type LoginSettings: :class:`Tencentcloud::Emr.v20190103.models.LoginSettings`
        # @param SceneSoftwareConfig: 集群应用场景以及支持部署组件配置
        # @type SceneSoftwareConfig: :class:`Tencentcloud::Emr.v20190103.models.SceneSoftwareConfig`
        # @param InstanceChargePrepaid: 即包年包月相关参数设置。通过该参数可以指定包年包月实例的购买时长、是否设置自动续费等属性。若指定实例的付费模式为预付费则该参数必传。
        # @type InstanceChargePrepaid: :class:`Tencentcloud::Emr.v20190103.models.InstanceChargePrepaid`
        # @param SecurityGroupIds: 实例所属安全组的ID,形如sg-xxxxxxxx。该参数可以通过调用 [DescribeSecurityGroups](https://cloud.tencent.com/document/api/215/15808) 的返回值中的SecurityGroupId字段来获取。
        # @type SecurityGroupIds: Array
        # @param ScriptBootstrapActionConfig: [引导操作](https://cloud.tencent.com/document/product/589/35656)脚本设置。
        # @type ScriptBootstrapActionConfig: Array
        # @param ClientToken: 唯一随机标识,时效性为5分钟,需要调用者指定 防止客户端重复创建资源,例如 a9a90aa6-751a-41b6-aad6-fae360632808
        # @type ClientToken: String
        # @param NeedMasterWan: 是否开启集群Master节点公网。取值范围:
        # <li>NEED_MASTER_WAN:表示开启集群Master节点公网。</li>
        # <li>NOT_NEED_MASTER_WAN:表示不开启。</li>默认开启集群Master节点公网。
        # @type NeedMasterWan: String
        # @param EnableRemoteLoginFlag: 是否开启外网远程登录。(在SecurityGroupId不为空时,该参数无效)不填默认为不开启 取值范围:
        # <li>true:表示开启</li>
        # <li>false:表示不开启</li>
        # @type EnableRemoteLoginFlag: Boolean
        # @param EnableKerberosFlag: 是否开启Kerberos认证。默认不开启 取值范围:
        # <li>true:表示开启</li>
        # <li>false:表示不开启</li>
        # @type EnableKerberosFlag: Boolean
        # @param CustomConf: [自定义软件配置](https://cloud.tencent.com/document/product/589/35655?from_cn_redirect=1)
        # @type CustomConf: String
        # @param Tags: 标签描述列表。通过指定该参数可以同时绑定标签到相应的实例。
        # @type Tags: Array
        # @param DisasterRecoverGroupIds: 分散置放群组ID列表,当前只支持指定一个。
        # 该参数可以通过调用 [DescribeDisasterRecoverGroups](https://cloud.tencent.com/document/product/213/17810)的返回值中的DisasterRecoverGroupId字段来获取。
        # @type DisasterRecoverGroupIds: Array
        # @param EnableCbsEncryptFlag: 是否开启集群维度CBS加密。默认不加密 取值范围:
        # <li>true:表示加密</li>
        # <li>false:表示不加密</li>
        # @type EnableCbsEncryptFlag: Boolean
        # @param MetaDBInfo: MetaDB信息,当MetaType选择EMR_NEW_META时,MetaDataJdbcUrl MetaDataUser MetaDataPass UnifyMetaInstanceId不用填
        # 当MetaType选择EMR_EXIT_META时,填写UnifyMetaInstanceId
        # 当MetaType选择USER_CUSTOM_META时,填写MetaDataJdbcUrl MetaDataUser MetaDataPass
        # @type MetaDBInfo: :class:`Tencentcloud::Emr.v20190103.models.CustomMetaDBInfo`
        # @param DependService: 共享组件信息
        # @type DependService: Array
        # @param ZoneResourceConfiguration: 节点资源的规格,有几个可用区,就填几个,按顺序第一个为主可用区,第二个为备可用区,第三个为仲裁可用区。如果没有开启跨AZ,则长度为1即可。
        # @type ZoneResourceConfiguration: Array
        # @param CosBucket: cos桶路径,创建StarRocks存算分离集群时用到
        # @type CosBucket: String

        attr_accessor :ProductVersion, :EnableSupportHAFlag, :InstanceName, :InstanceChargeType, :LoginSettings, :SceneSoftwareConfig, :InstanceChargePrepaid, :SecurityGroupIds, :ScriptBootstrapActionConfig, :ClientToken, :NeedMasterWan, :EnableRemoteLoginFlag, :EnableKerberosFlag, :CustomConf, :Tags, :DisasterRecoverGroupIds, :EnableCbsEncryptFlag, :MetaDBInfo, :DependService, :ZoneResourceConfiguration, :CosBucket

        def initialize(productversion=nil, enablesupporthaflag=nil, instancename=nil, instancechargetype=nil, loginsettings=nil, scenesoftwareconfig=nil, instancechargeprepaid=nil, securitygroupids=nil, scriptbootstrapactionconfig=nil, clienttoken=nil, needmasterwan=nil, enableremoteloginflag=nil, enablekerberosflag=nil, customconf=nil, tags=nil, disasterrecovergroupids=nil, enablecbsencryptflag=nil, metadbinfo=nil, dependservice=nil, zoneresourceconfiguration=nil, cosbucket=nil)
          @ProductVersion = productversion
          @EnableSupportHAFlag = enablesupporthaflag
          @InstanceName = instancename
          @InstanceChargeType = instancechargetype
          @LoginSettings = loginsettings
          @SceneSoftwareConfig = scenesoftwareconfig
          @InstanceChargePrepaid = instancechargeprepaid
          @SecurityGroupIds = securitygroupids
          @ScriptBootstrapActionConfig = scriptbootstrapactionconfig
          @ClientToken = clienttoken
          @NeedMasterWan = needmasterwan
          @EnableRemoteLoginFlag = enableremoteloginflag
          @EnableKerberosFlag = enablekerberosflag
          @CustomConf = customconf
          @Tags = tags
          @DisasterRecoverGroupIds = disasterrecovergroupids
          @EnableCbsEncryptFlag = enablecbsencryptflag
          @MetaDBInfo = metadbinfo
          @DependService = dependservice
          @ZoneResourceConfiguration = zoneresourceconfiguration
          @CosBucket = cosbucket
        end

        def deserialize(params)
          @ProductVersion = params['ProductVersion']
          @EnableSupportHAFlag = params['EnableSupportHAFlag']
          @InstanceName = params['InstanceName']
          @InstanceChargeType = params['InstanceChargeType']
          unless params['LoginSettings'].nil?
            @LoginSettings = LoginSettings.new
            @LoginSettings.deserialize(params['LoginSettings'])
          end
          unless params['SceneSoftwareConfig'].nil?
            @SceneSoftwareConfig = SceneSoftwareConfig.new
            @SceneSoftwareConfig.deserialize(params['SceneSoftwareConfig'])
          end
          unless params['InstanceChargePrepaid'].nil?
            @InstanceChargePrepaid = InstanceChargePrepaid.new
            @InstanceChargePrepaid.deserialize(params['InstanceChargePrepaid'])
          end
          @SecurityGroupIds = params['SecurityGroupIds']
          unless params['ScriptBootstrapActionConfig'].nil?
            @ScriptBootstrapActionConfig = []
            params['ScriptBootstrapActionConfig'].each do |i|
              scriptbootstrapactionconfig_tmp = ScriptBootstrapActionConfig.new
              scriptbootstrapactionconfig_tmp.deserialize(i)
              @ScriptBootstrapActionConfig << scriptbootstrapactionconfig_tmp
            end
          end
          @ClientToken = params['ClientToken']
          @NeedMasterWan = params['NeedMasterWan']
          @EnableRemoteLoginFlag = params['EnableRemoteLoginFlag']
          @EnableKerberosFlag = params['EnableKerberosFlag']
          @CustomConf = params['CustomConf']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @DisasterRecoverGroupIds = params['DisasterRecoverGroupIds']
          @EnableCbsEncryptFlag = params['EnableCbsEncryptFlag']
          unless params['MetaDBInfo'].nil?
            @MetaDBInfo = CustomMetaDBInfo.new
            @MetaDBInfo.deserialize(params['MetaDBInfo'])
          end
          unless params['DependService'].nil?
            @DependService = []
            params['DependService'].each do |i|
              dependservice_tmp = DependService.new
              dependservice_tmp.deserialize(i)
              @DependService << dependservice_tmp
            end
          end
          unless params['ZoneResourceConfiguration'].nil?
            @ZoneResourceConfiguration = []
            params['ZoneResourceConfiguration'].each do |i|
              zoneresourceconfiguration_tmp = ZoneResourceConfiguration.new
              zoneresourceconfiguration_tmp.deserialize(i)
              @ZoneResourceConfiguration << zoneresourceconfiguration_tmp
            end
          end
          @CosBucket = params['CosBucket']
        end
      end

      # CreateCluster返回参数结构体
      class CreateClusterResponse < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :InstanceId, :RequestId

        def initialize(instanceid=nil, requestid=nil)
          @InstanceId = instanceid
          @RequestId = requestid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @RequestId = params['RequestId']
        end
      end

      # CreateInstance请求参数结构体
      class CreateInstanceRequest < TencentCloud::Common::AbstractModel
        # @param ProductId: 产品ID,不同产品ID表示不同的EMR产品版本。取值范围:
        # 51:表示STARROCKS-V1.4.0
        # 54:表示STARROCKS-V2.0.0
        # 27:表示KAFKA-V1.0.0
        # 50:表示KAFKA-V2.0.0
        # 16:表示EMR-V2.3.0
        # 20:表示EMR-V2.5.0
        # 30:表示EMR-V2.6.0
        # 38:表示EMR-V2.7.0
        # 25:表示EMR-V3.1.0
        # 33:表示EMR-V3.2.1
        # 34:表示EMR-V3.3.0
        # 37:表示EMR-V3.4.0
        # 44:表示EMR-V3.5.0
        # 53:表示EMR-V3.6.0
        # @type ProductId: Integer
        # @param Software: 部署的组件列表。不同的EMR产品ID(ProductId:具体含义参考入参ProductId字段)对应不同可选组件列表,不同产品版本可选组件列表查询:[组件版本](https://cloud.tencent.com/document/product/589/20279) ;
        # 填写实例值:hive、flink。
        # @type Software: Array
        # @param SupportHA: 是否开启节点高可用。取值范围:
        # <li>0:表示不开启节点高可用。</li>
        # <li>1:表示开启节点高可用。</li>
        # @type SupportHA: Integer
        # @param InstanceName: 实例名称。
        # <li>长度限制为6-36个字符。</li>
        # <li>只允许包含中文、字母、数字、-、_。</li>
        # @type InstanceName: String
        # @param PayMode: 实例计费模式。取值范围:
        # <li>0:表示按量计费。</li>
        # <li>1:表示包年包月。</li>
        # @type PayMode: Integer
        # @param TimeSpan: 购买实例的时长。结合TimeUnit一起使用。
        # <li>TimeUnit为s时,该参数只能填写3600,表示按量计费实例。</li>
        # <li>TimeUnit为m时,该参数填写的数字表示包年包月实例的购买时长,如1表示购买一个月</li>
        # @type TimeSpan: Integer
        # @param TimeUnit: 购买实例的时间单位。取值范围:
        # <li>s:表示秒。PayMode取值为0时,TimeUnit只能取值为s。</li>
        # <li>m:表示月份。PayMode取值为1时,TimeUnit只能取值为m。</li>
        # @type TimeUnit: String
        # @param LoginSettings: 实例登录设置。通过该参数可以设置所购买节点的登录方式密码或者密钥。
        # <li>设置密钥时,密码仅用于组件原生WebUI快捷入口登录。</li>
        # <li>未设置密钥时,密码用于登录所购节点以及组件原生WebUI快捷入口登录。</li>
        # @type LoginSettings: :class:`Tencentcloud::Emr.v20190103.models.LoginSettings`
        # @param VPCSettings: 私有网络相关信息配置。通过该参数可以指定私有网络的ID,子网ID等信息。
        # @type VPCSettings: :class:`Tencentcloud::Emr.v20190103.models.VPCSettings`
        # @param ResourceSpec: 节点资源的规格。
        # @type ResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NewResourceSpec`
        # @param COSSettings: 开启COS访问需要设置的参数。
        # @type COSSettings: :class:`Tencentcloud::Emr.v20190103.models.COSSettings`
        # @param Placement: 实例所在的位置。通过该参数可以指定实例所属可用区,所属项目等属性。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param SgId: 实例所属安全组的ID,形如sg-xxxxxxxx。该参数可以通过调用 [DescribeSecurityGroups](https://cloud.tencent.com/document/api/215/15808) 的返回值中的SecurityGroupId字段来获取。
        # @type SgId: String
        # @param PreExecutedFileSettings: [引导操作](https://cloud.tencent.com/document/product/589/35656)脚本设置。
        # @type PreExecutedFileSettings: Array
        # @param AutoRenew: 包年包月实例是否自动续费。取值范围:
        # <li>0:表示不自动续费。</li>
        # <li>1:表示自动续费。</li>
        # @type AutoRenew: Integer
        # @param ClientToken: 唯一随机标识,时效5分钟,需要调用者指定 防止客户端重新创建资源,例如 a9a90aa6-751a-41b6-aad6-fae36063280
        # @type ClientToken: String
        # @param NeedMasterWan: 是否开启集群Master节点公网。取值范围:
        # <li>NEED_MASTER_WAN:表示开启集群Master节点公网。</li>
        # <li>NOT_NEED_MASTER_WAN:表示不开启。</li>默认开启集群Master节点公网。
        # @type NeedMasterWan: String
        # @param RemoteLoginAtCreate: 是否需要开启外网远程登录,即22号端口。在SgId不为空时,该参数无效。
        # @type RemoteLoginAtCreate: Integer
        # @param CheckSecurity: 是否开启安全集群。0表示不开启,非0表示开启。
        # @type CheckSecurity: Integer
        # @param ExtendFsField: 访问外部文件系统。
        # @type ExtendFsField: String
        # @param Tags: 标签描述列表。通过指定该参数可以同时绑定标签到相应的实例。
        # @type Tags: Array
        # @param DisasterRecoverGroupIds: 分散置放群组ID列表,当前只支持指定一个。
        # 该参数可以通过调用 [DescribeSecurityGroups](https://cloud.tencent.com/document/product/213/15486 ) 的返回值中的SecurityGroupId字段来获取。
        # @type DisasterRecoverGroupIds: Array
        # @param CbsEncrypt: 集群维度CBS加密盘,默认0表示不加密,1表示加密
        # @type CbsEncrypt: Integer
        # @param MetaType: hive共享元数据库类型。取值范围:
        # <li>EMR_DEFAULT_META:表示集群默认创建</li>
        # <li>EMR_EXIST_META:表示集群使用指定EMR-MetaDB。</li>
        # <li>USER_CUSTOM_META:表示集群使用自定义MetaDB。</li>
        # @type MetaType: String
        # @param UnifyMetaInstanceId: EMR-MetaDB实例
        # @type UnifyMetaInstanceId: String
        # @param MetaDBInfo: 自定义MetaDB信息
        # @type MetaDBInfo: :class:`Tencentcloud::Emr.v20190103.models.CustomMetaInfo`
        # @param ApplicationRole: 自定义应用角色。
        # @type ApplicationRole: String
        # @param SceneName: 场景化取值:
        # Hadoop-Kudu
        # Hadoop-Zookeeper
        # Hadoop-Presto
        # Hadoop-Hbase
        # @type SceneName: String
        # @param ExternalService: 共享组件信息
        # @type ExternalService: Array
        # @param VersionID: 如果为0,则MultiZone、MultiDeployStrategy、MultiZoneSettings是disable的状态,如果为1,则废弃ResourceSpec,使用MultiZoneSettings。
        # @type VersionID: Integer
        # @param MultiZone: true表示开启跨AZ部署;仅为新建集群时的用户参数,后续不支持调整。
        # @type MultiZone: Boolean
        # @param MultiZoneSettings: 节点资源的规格,有几个可用区,就填几个,按顺序第一个为主可用区,第二个为备可用区,第三个为仲裁可用区。如果没有开启跨AZ,则长度为1即可。
        # @type MultiZoneSettings: Array
        # @param CosBucket: cos桶路径,创建StarRocks存算分离集群时用到
        # @type CosBucket: String

        attr_accessor :ProductId, :Software, :SupportHA, :InstanceName, :PayMode, :TimeSpan, :TimeUnit, :LoginSettings, :VPCSettings, :ResourceSpec, :COSSettings, :Placement, :SgId, :PreExecutedFileSettings, :AutoRenew, :ClientToken, :NeedMasterWan, :RemoteLoginAtCreate, :CheckSecurity, :ExtendFsField, :Tags, :DisasterRecoverGroupIds, :CbsEncrypt, :MetaType, :UnifyMetaInstanceId, :MetaDBInfo, :ApplicationRole, :SceneName, :ExternalService, :VersionID, :MultiZone, :MultiZoneSettings, :CosBucket

        def initialize(productid=nil, software=nil, supportha=nil, instancename=nil, paymode=nil, timespan=nil, timeunit=nil, loginsettings=nil, vpcsettings=nil, resourcespec=nil, cossettings=nil, placement=nil, sgid=nil, preexecutedfilesettings=nil, autorenew=nil, clienttoken=nil, needmasterwan=nil, remoteloginatcreate=nil, checksecurity=nil, extendfsfield=nil, tags=nil, disasterrecovergroupids=nil, cbsencrypt=nil, metatype=nil, unifymetainstanceid=nil, metadbinfo=nil, applicationrole=nil, scenename=nil, externalservice=nil, versionid=nil, multizone=nil, multizonesettings=nil, cosbucket=nil)
          @ProductId = productid
          @Software = software
          @SupportHA = supportha
          @InstanceName = instancename
          @PayMode = paymode
          @TimeSpan = timespan
          @TimeUnit = timeunit
          @LoginSettings = loginsettings
          @VPCSettings = vpcsettings
          @ResourceSpec = resourcespec
          @COSSettings = cossettings
          @Placement = placement
          @SgId = sgid
          @PreExecutedFileSettings = preexecutedfilesettings
          @AutoRenew = autorenew
          @ClientToken = clienttoken
          @NeedMasterWan = needmasterwan
          @RemoteLoginAtCreate = remoteloginatcreate
          @CheckSecurity = checksecurity
          @ExtendFsField = extendfsfield
          @Tags = tags
          @DisasterRecoverGroupIds = disasterrecovergroupids
          @CbsEncrypt = cbsencrypt
          @MetaType = metatype
          @UnifyMetaInstanceId = unifymetainstanceid
          @MetaDBInfo = metadbinfo
          @ApplicationRole = applicationrole
          @SceneName = scenename
          @ExternalService = externalservice
          @VersionID = versionid
          @MultiZone = multizone
          @MultiZoneSettings = multizonesettings
          @CosBucket = cosbucket
        end

        def deserialize(params)
          @ProductId = params['ProductId']
          @Software = params['Software']
          @SupportHA = params['SupportHA']
          @InstanceName = params['InstanceName']
          @PayMode = params['PayMode']
          @TimeSpan = params['TimeSpan']
          @TimeUnit = params['TimeUnit']
          unless params['LoginSettings'].nil?
            @LoginSettings = LoginSettings.new
            @LoginSettings.deserialize(params['LoginSettings'])
          end
          unless params['VPCSettings'].nil?
            @VPCSettings = VPCSettings.new
            @VPCSettings.deserialize(params['VPCSettings'])
          end
          unless params['ResourceSpec'].nil?
            @ResourceSpec = NewResourceSpec.new
            @ResourceSpec.deserialize(params['ResourceSpec'])
          end
          unless params['COSSettings'].nil?
            @COSSettings = COSSettings.new
            @COSSettings.deserialize(params['COSSettings'])
          end
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          @SgId = params['SgId']
          unless params['PreExecutedFileSettings'].nil?
            @PreExecutedFileSettings = []
            params['PreExecutedFileSettings'].each do |i|
              preexecutefilesettings_tmp = PreExecuteFileSettings.new
              preexecutefilesettings_tmp.deserialize(i)
              @PreExecutedFileSettings << preexecutefilesettings_tmp
            end
          end
          @AutoRenew = params['AutoRenew']
          @ClientToken = params['ClientToken']
          @NeedMasterWan = params['NeedMasterWan']
          @RemoteLoginAtCreate = params['RemoteLoginAtCreate']
          @CheckSecurity = params['CheckSecurity']
          @ExtendFsField = params['ExtendFsField']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @DisasterRecoverGroupIds = params['DisasterRecoverGroupIds']
          @CbsEncrypt = params['CbsEncrypt']
          @MetaType = params['MetaType']
          @UnifyMetaInstanceId = params['UnifyMetaInstanceId']
          unless params['MetaDBInfo'].nil?
            @MetaDBInfo = CustomMetaInfo.new
            @MetaDBInfo.deserialize(params['MetaDBInfo'])
          end
          @ApplicationRole = params['ApplicationRole']
          @SceneName = params['SceneName']
          unless params['ExternalService'].nil?
            @ExternalService = []
            params['ExternalService'].each do |i|
              externalservice_tmp = ExternalService.new
              externalservice_tmp.deserialize(i)
              @ExternalService << externalservice_tmp
            end
          end
          @VersionID = params['VersionID']
          @MultiZone = params['MultiZone']
          unless params['MultiZoneSettings'].nil?
            @MultiZoneSettings = []
            params['MultiZoneSettings'].each do |i|
              multizonesetting_tmp = MultiZoneSetting.new
              multizonesetting_tmp.deserialize(i)
              @MultiZoneSettings << multizonesetting_tmp
            end
          end
          @CosBucket = params['CosBucket']
        end
      end

      # CreateInstance返回参数结构体
      class CreateInstanceResponse < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :InstanceId, :RequestId

        def initialize(instanceid=nil, requestid=nil)
          @InstanceId = instanceid
          @RequestId = requestid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @RequestId = params['RequestId']
        end
      end

      # 用户Hive-MetaDB信息
      class CustomMetaDBInfo < TencentCloud::Common::AbstractModel
        # @param MetaDataJdbcUrl: 自定义MetaDB的JDBC连接,示例: jdbc:mysql://10.10.10.10:3306/dbname
        # @type MetaDataJdbcUrl: String
        # @param MetaDataUser: 自定义MetaDB用户名
        # @type MetaDataUser: String
        # @param MetaDataPass: 自定义MetaDB密码
        # @type MetaDataPass: String
        # @param MetaType: hive共享元数据库类型。取值范围:
        # <li>EMR_DEFAULT_META:表示集群默认创建</li>
        # <li>EMR_EXIST_META:表示集群使用指定EMR-MetaDB。</li>
        # <li>USER_CUSTOM_META:表示集群使用自定义MetaDB。</li>
        # @type MetaType: String
        # @param UnifyMetaInstanceId: EMR-MetaDB实例
        # @type UnifyMetaInstanceId: String

        attr_accessor :MetaDataJdbcUrl, :MetaDataUser, :MetaDataPass, :MetaType, :UnifyMetaInstanceId

        def initialize(metadatajdbcurl=nil, metadatauser=nil, metadatapass=nil, metatype=nil, unifymetainstanceid=nil)
          @MetaDataJdbcUrl = metadatajdbcurl
          @MetaDataUser = metadatauser
          @MetaDataPass = metadatapass
          @MetaType = metatype
          @UnifyMetaInstanceId = unifymetainstanceid
        end

        def deserialize(params)
          @MetaDataJdbcUrl = params['MetaDataJdbcUrl']
          @MetaDataUser = params['MetaDataUser']
          @MetaDataPass = params['MetaDataPass']
          @MetaType = params['MetaType']
          @UnifyMetaInstanceId = params['UnifyMetaInstanceId']
        end
      end

      # 用户自建Hive-MetaDB信息
      class CustomMetaInfo < TencentCloud::Common::AbstractModel
        # @param MetaDataJdbcUrl: 自定义MetaDB的JDBC连接,请以 jdbc:mysql:// 开头
        # @type MetaDataJdbcUrl: String
        # @param MetaDataUser: 自定义MetaDB用户名
        # @type MetaDataUser: String
        # @param MetaDataPass: 自定义MetaDB密码
        # @type MetaDataPass: String

        attr_accessor :MetaDataJdbcUrl, :MetaDataUser, :MetaDataPass

        def initialize(metadatajdbcurl=nil, metadatauser=nil, metadatapass=nil)
          @MetaDataJdbcUrl = metadatajdbcurl
          @MetaDataUser = metadatauser
          @MetaDataPass = metadatapass
        end

        def deserialize(params)
          @MetaDataJdbcUrl = params['MetaDataJdbcUrl']
          @MetaDataUser = params['MetaDataUser']
          @MetaDataPass = params['MetaDataPass']
        end
      end

      # 共用自建组件参数
      class CustomServiceDefine < TencentCloud::Common::AbstractModel
        # @param Name: 自定义参数key
        # @type Name: String
        # @param Value: 自定义参数value
        # @type Value: String

        attr_accessor :Name, :Value

        def initialize(name=nil, value=nil)
          @Name = name
          @Value = value
        end

        def deserialize(params)
          @Name = params['Name']
          @Value = params['Value']
        end
      end

      # 弹性扩缩容按天重复任务描述
      class DayRepeatStrategy < TencentCloud::Common::AbstractModel
        # @param ExecuteAtTimeOfDay: 重复任务执行的具体时刻,例如"01:02:00"
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExecuteAtTimeOfDay: String
        # @param Step: 每隔Step天执行一次
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Step: Integer

        attr_accessor :ExecuteAtTimeOfDay, :Step

        def initialize(executeattimeofday=nil, step=nil)
          @ExecuteAtTimeOfDay = executeattimeofday
          @Step = step
        end

        def deserialize(params)
          @ExecuteAtTimeOfDay = params['ExecuteAtTimeOfDay']
          @Step = params['Step']
        end
      end

      # DeleteAutoScaleStrategy请求参数结构体
      class DeleteAutoScaleStrategyRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param StrategyType: 自动扩缩容规则类型,1表示按照负载指标扩缩容,2表示按照时间规则扩缩容。
        # @type StrategyType: Integer
        # @param StrategyId: 规则ID。
        # @type StrategyId: Integer
        # @param GroupId: 伸缩组Id
        # @type GroupId: Integer

        attr_accessor :InstanceId, :StrategyType, :StrategyId, :GroupId

        def initialize(instanceid=nil, strategytype=nil, strategyid=nil, groupid=nil)
          @InstanceId = instanceid
          @StrategyType = strategytype
          @StrategyId = strategyid
          @GroupId = groupid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StrategyType = params['StrategyType']
          @StrategyId = params['StrategyId']
          @GroupId = params['GroupId']
        end
      end

      # DeleteAutoScaleStrategy返回参数结构体
      class DeleteAutoScaleStrategyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteUserManagerUserList请求参数结构体
      class DeleteUserManagerUserListRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群实例ID
        # @type InstanceId: String
        # @param UserNameList: 集群用户名列表
        # @type UserNameList: Array
        # @param TkeClusterId: tke/eks集群id,容器集群传
        # @type TkeClusterId: String
        # @param DisplayStrategy: 默认空,容器版传"native"
        # @type DisplayStrategy: String
        # @param UserGroupList: 用户组
        # @type UserGroupList: Array

        attr_accessor :InstanceId, :UserNameList, :TkeClusterId, :DisplayStrategy, :UserGroupList

        def initialize(instanceid=nil, usernamelist=nil, tkeclusterid=nil, displaystrategy=nil, usergrouplist=nil)
          @InstanceId = instanceid
          @UserNameList = usernamelist
          @TkeClusterId = tkeclusterid
          @DisplayStrategy = displaystrategy
          @UserGroupList = usergrouplist
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @UserNameList = params['UserNameList']
          @TkeClusterId = params['TkeClusterId']
          @DisplayStrategy = params['DisplayStrategy']
          unless params['UserGroupList'].nil?
            @UserGroupList = []
            params['UserGroupList'].each do |i|
              userandgroup_tmp = UserAndGroup.new
              userandgroup_tmp.deserialize(i)
              @UserGroupList << userandgroup_tmp
            end
          end
        end
      end

      # DeleteUserManagerUserList返回参数结构体
      class DeleteUserManagerUserListResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 共用组件信息
      class DependService < TencentCloud::Common::AbstractModel
        # @param ServiceName: 共用组件名
        # @type ServiceName: String
        # @param InstanceId: 共用组件集群
        # @type InstanceId: String

        attr_accessor :ServiceName, :InstanceId

        def initialize(servicename=nil, instanceid=nil)
          @ServiceName = servicename
          @InstanceId = instanceid
        end

        def deserialize(params)
          @ServiceName = params['ServiceName']
          @InstanceId = params['InstanceId']
        end
      end

      # DescribeAutoScaleGroupGlobalConf请求参数结构体
      class DescribeAutoScaleGroupGlobalConfRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String

        attr_accessor :InstanceId

        def initialize(instanceid=nil)
          @InstanceId = instanceid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
        end
      end

      # DescribeAutoScaleGroupGlobalConf返回参数结构体
      class DescribeAutoScaleGroupGlobalConfResponse < TencentCloud::Common::AbstractModel
        # @param GroupGlobalConfs: 集群所有伸缩组全局信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupGlobalConfs: Array
        # @param TotalCount: 总数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :GroupGlobalConfs, :TotalCount, :RequestId

        def initialize(groupglobalconfs=nil, totalcount=nil, requestid=nil)
          @GroupGlobalConfs = groupglobalconfs
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['GroupGlobalConfs'].nil?
            @GroupGlobalConfs = []
            params['GroupGlobalConfs'].each do |i|
              groupglobalconfs_tmp = GroupGlobalConfs.new
              groupglobalconfs_tmp.deserialize(i)
              @GroupGlobalConfs << groupglobalconfs_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # DescribeAutoScaleRecords请求参数结构体
      class DescribeAutoScaleRecordsRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param Filters: 记录过滤参数,目前仅能为“StartTime”,“EndTime”和“StrategyName”。StartTime和EndTime支持2006-01-02 15:04:05 或者2006/01/02 15:04:05的时间格式
        # @type Filters: Array
        # @param Offset: 分页参数。
        # @type Offset: Integer
        # @param Limit: 分页参数。最大支持100
        # @type Limit: Integer
        # @param RecordSource: 表示是自动(0)还是托管伸缩(1)
        # @type RecordSource: Integer

        attr_accessor :InstanceId, :Filters, :Offset, :Limit, :RecordSource

        def initialize(instanceid=nil, filters=nil, offset=nil, limit=nil, recordsource=nil)
          @InstanceId = instanceid
          @Filters = filters
          @Offset = offset
          @Limit = limit
          @RecordSource = recordsource
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              keyvalue_tmp = KeyValue.new
              keyvalue_tmp.deserialize(i)
              @Filters << keyvalue_tmp
            end
          end
          @Offset = params['Offset']
          @Limit = params['Limit']
          @RecordSource = params['RecordSource']
        end
      end

      # DescribeAutoScaleRecords返回参数结构体
      class DescribeAutoScaleRecordsResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 总扩缩容记录数。
        # @type TotalCount: Integer
        # @param RecordList: 记录列表。
        # @type RecordList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :RecordList, :RequestId

        def initialize(totalcount=nil, recordlist=nil, requestid=nil)
          @TotalCount = totalcount
          @RecordList = recordlist
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['RecordList'].nil?
            @RecordList = []
            params['RecordList'].each do |i|
              autoscalerecord_tmp = AutoScaleRecord.new
              autoscalerecord_tmp.deserialize(i)
              @RecordList << autoscalerecord_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeAutoScaleStrategies请求参数结构体
      class DescribeAutoScaleStrategiesRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param GroupId: 伸缩组id
        # @type GroupId: Integer

        attr_accessor :InstanceId, :GroupId

        def initialize(instanceid=nil, groupid=nil)
          @InstanceId = instanceid
          @GroupId = groupid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @GroupId = params['GroupId']
        end
      end

      # DescribeAutoScaleStrategies返回参数结构体
      class DescribeAutoScaleStrategiesResponse < TencentCloud::Common::AbstractModel
        # @param LoadAutoScaleStrategies: 按负载伸缩规则
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LoadAutoScaleStrategies: Array
        # @param TimeBasedAutoScaleStrategies: 按时间伸缩规则
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeBasedAutoScaleStrategies: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :LoadAutoScaleStrategies, :TimeBasedAutoScaleStrategies, :RequestId

        def initialize(loadautoscalestrategies=nil, timebasedautoscalestrategies=nil, requestid=nil)
          @LoadAutoScaleStrategies = loadautoscalestrategies
          @TimeBasedAutoScaleStrategies = timebasedautoscalestrategies
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['LoadAutoScaleStrategies'].nil?
            @LoadAutoScaleStrategies = []
            params['LoadAutoScaleStrategies'].each do |i|
              loadautoscalestrategy_tmp = LoadAutoScaleStrategy.new
              loadautoscalestrategy_tmp.deserialize(i)
              @LoadAutoScaleStrategies << loadautoscalestrategy_tmp
            end
          end
          unless params['TimeBasedAutoScaleStrategies'].nil?
            @TimeBasedAutoScaleStrategies = []
            params['TimeBasedAutoScaleStrategies'].each do |i|
              timeautoscalestrategy_tmp = TimeAutoScaleStrategy.new
              timeautoscalestrategy_tmp.deserialize(i)
              @TimeBasedAutoScaleStrategies << timeautoscalestrategy_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeClusterFlowStatusDetail请求参数结构体
      class DescribeClusterFlowStatusDetailRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: EMR实例ID
        # @type InstanceId: String
        # @param FlowParam: 流程相关参数
        # @type FlowParam: :class:`Tencentcloud::Emr.v20190103.models.FlowParam`
        # @param NeedExtraDetail: 是否返回任务额外信息
        # 默认: false
        # @type NeedExtraDetail: Boolean

        attr_accessor :InstanceId, :FlowParam, :NeedExtraDetail

        def initialize(instanceid=nil, flowparam=nil, needextradetail=nil)
          @InstanceId = instanceid
          @FlowParam = flowparam
          @NeedExtraDetail = needextradetail
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          unless params['FlowParam'].nil?
            @FlowParam = FlowParam.new
            @FlowParam.deserialize(params['FlowParam'])
          end
          @NeedExtraDetail = params['NeedExtraDetail']
        end
      end

      # DescribeClusterFlowStatusDetail返回参数结构体
      class DescribeClusterFlowStatusDetailResponse < TencentCloud::Common::AbstractModel
        # @param StageDetails: 任务步骤详情
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StageDetails: Array
        # @param FlowDesc: 任务参数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowDesc: Array
        # @param FlowName: 任务名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowName: String
        # @param FlowTotalProgress: 总任务流程进度:
        # 例如:0.8
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowTotalProgress: Float
        # @param FlowTotalStatus: 定义流程总状态:
        # 0:初始化,
        # 1:运行中,
        # 2:完成,
        # 3:完成(存在跳过步骤),
        # -1:失败,
        # -3:阻塞,
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowTotalStatus: Integer
        # @param FlowExtraDetail: 流程额外信息
        # NeedExtraDetail为true时返回
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowExtraDetail: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :StageDetails, :FlowDesc, :FlowName, :FlowTotalProgress, :FlowTotalStatus, :FlowExtraDetail, :RequestId

        def initialize(stagedetails=nil, flowdesc=nil, flowname=nil, flowtotalprogress=nil, flowtotalstatus=nil, flowextradetail=nil, requestid=nil)
          @StageDetails = stagedetails
          @FlowDesc = flowdesc
          @FlowName = flowname
          @FlowTotalProgress = flowtotalprogress
          @FlowTotalStatus = flowtotalstatus
          @FlowExtraDetail = flowextradetail
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['StageDetails'].nil?
            @StageDetails = []
            params['StageDetails'].each do |i|
              stageinfodetail_tmp = StageInfoDetail.new
              stageinfodetail_tmp.deserialize(i)
              @StageDetails << stageinfodetail_tmp
            end
          end
          unless params['FlowDesc'].nil?
            @FlowDesc = []
            params['FlowDesc'].each do |i|
              flowparamsdesc_tmp = FlowParamsDesc.new
              flowparamsdesc_tmp.deserialize(i)
              @FlowDesc << flowparamsdesc_tmp
            end
          end
          @FlowName = params['FlowName']
          @FlowTotalProgress = params['FlowTotalProgress']
          @FlowTotalStatus = params['FlowTotalStatus']
          unless params['FlowExtraDetail'].nil?
            @FlowExtraDetail = []
            params['FlowExtraDetail'].each do |i|
              flowextradetail_tmp = FlowExtraDetail.new
              flowextradetail_tmp.deserialize(i)
              @FlowExtraDetail << flowextradetail_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeClusterNodes请求参数结构体
      class DescribeClusterNodesRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群实例ID,实例ID形如: emr-xxxxxxxx
        # @type InstanceId: String
        # @param NodeFlag: 节点标识,取值为:
        # <li>all:表示获取全部类型节点,cdb信息除外。</li>
        # <li>master:表示获取master节点信息。</li>
        # <li>core:表示获取core节点信息。</li>
        # <li>task:表示获取task节点信息。</li>
        # <li>common:表示获取common节点信息。</li>
        # <li>router:表示获取router节点信息。</li>
        # <li>db:表示获取正常状态的cdb信息。</li>
        # <li>recyle:表示获取回收站隔离中的节点信息,包括cdb信息。</li>
        # <li>renew:表示获取所有待续费的节点信息,包括cdb信息,自动续费节点不会返回。</li>
        # 注意:现在只支持以上取值,输入其他值会导致错误。
        # @type NodeFlag: String
        # @param ExportDb: 导出全部节点信息csv时是否携带cdb信息
        # @type ExportDb: Boolean
        # @param Offset: 页编号,默认值为0,表示第一页。
        # @type Offset: Integer
        # @param Limit: 每页返回数量,默认值为100,最大值为100。
        # 如果offset和limit都不填,或者都填0,则返回全部数据
        # @type Limit: Integer
        # @param HardwareResourceType: 资源类型:支持all/host/pod,默认为all
        # @type HardwareResourceType: String
        # @param SearchFields: 支持搜索的字段
        # @type SearchFields: Array
        # @param OrderField: 无
        # @type OrderField: String
        # @param Asc: 无
        # @type Asc: Integer

        attr_accessor :InstanceId, :NodeFlag, :ExportDb, :Offset, :Limit, :HardwareResourceType, :SearchFields, :OrderField, :Asc

        def initialize(instanceid=nil, nodeflag=nil, exportdb=nil, offset=nil, limit=nil, hardwareresourcetype=nil, searchfields=nil, orderfield=nil, asc=nil)
          @InstanceId = instanceid
          @NodeFlag = nodeflag
          @ExportDb = exportdb
          @Offset = offset
          @Limit = limit
          @HardwareResourceType = hardwareresourcetype
          @SearchFields = searchfields
          @OrderField = orderfield
          @Asc = asc
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @NodeFlag = params['NodeFlag']
          @ExportDb = params['ExportDb']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @HardwareResourceType = params['HardwareResourceType']
          unless params['SearchFields'].nil?
            @SearchFields = []
            params['SearchFields'].each do |i|
              searchitem_tmp = SearchItem.new
              searchitem_tmp.deserialize(i)
              @SearchFields << searchitem_tmp
            end
          end
          @OrderField = params['OrderField']
          @Asc = params['Asc']
        end
      end

      # DescribeClusterNodes返回参数结构体
      class DescribeClusterNodesResponse < TencentCloud::Common::AbstractModel
        # @param TotalCnt: 查询到的节点总数
        # @type TotalCnt: Integer
        # @param NodeList: 节点详细信息列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NodeList: Array
        # @param TagKeys: 用户所有的标签键列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TagKeys: Array
        # @param HardwareResourceTypeList: 资源类型列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HardwareResourceTypeList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCnt, :NodeList, :TagKeys, :HardwareResourceTypeList, :RequestId

        def initialize(totalcnt=nil, nodelist=nil, tagkeys=nil, hardwareresourcetypelist=nil, requestid=nil)
          @TotalCnt = totalcnt
          @NodeList = nodelist
          @TagKeys = tagkeys
          @HardwareResourceTypeList = hardwareresourcetypelist
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCnt = params['TotalCnt']
          unless params['NodeList'].nil?
            @NodeList = []
            params['NodeList'].each do |i|
              nodehardwareinfo_tmp = NodeHardwareInfo.new
              nodehardwareinfo_tmp.deserialize(i)
              @NodeList << nodehardwareinfo_tmp
            end
          end
          @TagKeys = params['TagKeys']
          @HardwareResourceTypeList = params['HardwareResourceTypeList']
          @RequestId = params['RequestId']
        end
      end

      # DescribeCvmQuota请求参数结构体
      class DescribeCvmQuotaRequest < TencentCloud::Common::AbstractModel
        # @param ClusterId: EMR集群ID
        # @type ClusterId: String
        # @param ZoneId: 区ID
        # @type ZoneId: Integer

        attr_accessor :ClusterId, :ZoneId

        def initialize(clusterid=nil, zoneid=nil)
          @ClusterId = clusterid
          @ZoneId = zoneid
        end

        def deserialize(params)
          @ClusterId = params['ClusterId']
          @ZoneId = params['ZoneId']
        end
      end

      # DescribeCvmQuota返回参数结构体
      class DescribeCvmQuotaResponse < TencentCloud::Common::AbstractModel
        # @param PostPaidQuotaSet: 后付费配额列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PostPaidQuotaSet: Array
        # @param SpotPaidQuotaSet: 竞价实例配额列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SpotPaidQuotaSet: Array
        # @param EksQuotaSet: eks配额
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EksQuotaSet: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :PostPaidQuotaSet, :SpotPaidQuotaSet, :EksQuotaSet, :RequestId

        def initialize(postpaidquotaset=nil, spotpaidquotaset=nil, eksquotaset=nil, requestid=nil)
          @PostPaidQuotaSet = postpaidquotaset
          @SpotPaidQuotaSet = spotpaidquotaset
          @EksQuotaSet = eksquotaset
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['PostPaidQuotaSet'].nil?
            @PostPaidQuotaSet = []
            params['PostPaidQuotaSet'].each do |i|
              quotaentity_tmp = QuotaEntity.new
              quotaentity_tmp.deserialize(i)
              @PostPaidQuotaSet << quotaentity_tmp
            end
          end
          unless params['SpotPaidQuotaSet'].nil?
            @SpotPaidQuotaSet = []
            params['SpotPaidQuotaSet'].each do |i|
              quotaentity_tmp = QuotaEntity.new
              quotaentity_tmp.deserialize(i)
              @SpotPaidQuotaSet << quotaentity_tmp
            end
          end
          unless params['EksQuotaSet'].nil?
            @EksQuotaSet = []
            params['EksQuotaSet'].each do |i|
              podsalespec_tmp = PodSaleSpec.new
              podsalespec_tmp.deserialize(i)
              @EksQuotaSet << podsalespec_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeEmrApplicationStatics请求参数结构体
      class DescribeEmrApplicationStaticsRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群id
        # @type InstanceId: String
        # @param StartTime: 起始时间,时间戳(秒)
        # @type StartTime: Integer
        # @param EndTime: 结束时间,时间戳(秒)
        # @type EndTime: Integer
        # @param Queues: 过滤的队列名
        # @type Queues: Array
        # @param Users: 过滤的用户名
        # @type Users: Array
        # @param ApplicationTypes: 过滤的作业类型
        # @type ApplicationTypes: Array
        # @param GroupBy: 分组字段,可选:queue, user, applicationType
        # @type GroupBy: Array
        # @param OrderBy: 排序字段,可选:sumMemorySeconds, sumVCoreSeconds, sumHDFSBytesWritten, sumHDFSBytesRead
        # @type OrderBy: String
        # @param IsAsc: 是否顺序排序,0-逆序,1-正序
        # @type IsAsc: Integer
        # @param Offset: 页号
        # @type Offset: Integer
        # @param Limit: 页容量,范围为[10,100]
        # @type Limit: Integer

        attr_accessor :InstanceId, :StartTime, :EndTime, :Queues, :Users, :ApplicationTypes, :GroupBy, :OrderBy, :IsAsc, :Offset, :Limit

        def initialize(instanceid=nil, starttime=nil, endtime=nil, queues=nil, users=nil, applicationtypes=nil, groupby=nil, orderby=nil, isasc=nil, offset=nil, limit=nil)
          @InstanceId = instanceid
          @StartTime = starttime
          @EndTime = endtime
          @Queues = queues
          @Users = users
          @ApplicationTypes = applicationtypes
          @GroupBy = groupby
          @OrderBy = orderby
          @IsAsc = isasc
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Queues = params['Queues']
          @Users = params['Users']
          @ApplicationTypes = params['ApplicationTypes']
          @GroupBy = params['GroupBy']
          @OrderBy = params['OrderBy']
          @IsAsc = params['IsAsc']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

      # DescribeEmrApplicationStatics返回参数结构体
      class DescribeEmrApplicationStaticsResponse < TencentCloud::Common::AbstractModel
        # @param Statics: 作业统计信息
        # @type Statics: Array
        # @param TotalCount: 总数
        # @type TotalCount: Integer
        # @param Queues: 可选择的队列名
        # @type Queues: Array
        # @param Users: 可选择的用户名
        # @type Users: Array
        # @param ApplicationTypes: 可选择的作业类型
        # @type ApplicationTypes: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Statics, :TotalCount, :Queues, :Users, :ApplicationTypes, :RequestId

        def initialize(statics=nil, totalcount=nil, queues=nil, users=nil, applicationtypes=nil, requestid=nil)
          @Statics = statics
          @TotalCount = totalcount
          @Queues = queues
          @Users = users
          @ApplicationTypes = applicationtypes
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Statics'].nil?
            @Statics = []
            params['Statics'].each do |i|
              applicationstatics_tmp = ApplicationStatics.new
              applicationstatics_tmp.deserialize(i)
              @Statics << applicationstatics_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @Queues = params['Queues']
          @Users = params['Users']
          @ApplicationTypes = params['ApplicationTypes']
          @RequestId = params['RequestId']
        end
      end

      # DescribeEmrOverviewMetrics请求参数结构体
      class DescribeEmrOverviewMetricsRequest < TencentCloud::Common::AbstractModel
        # @param End: 结束时间
        # @type End: Integer
        # @param Metric: 指标名
        # @type Metric: String
        # @param InstanceId: 集群id
        # @type InstanceId: String
        # @param Downsample: 粒度 30s-max 1m-max 1h-max等
        # @type Downsample: String
        # @param Start: 起始时间,画饼状图时不传
        # @type Start: Integer
        # @param Aggregator: 聚合方法,扩展用,这里目前不用传
        # @type Aggregator: String
        # @param Tags: 指标要查询的具体type 如:"{"type":"CapacityTotal|CapacityRemaining"}"
        # @type Tags: String

        attr_accessor :End, :Metric, :InstanceId, :Downsample, :Start, :Aggregator, :Tags

        def initialize(_end=nil, metric=nil, instanceid=nil, downsample=nil, start=nil, aggregator=nil, tags=nil)
          @End = _end
          @Metric = metric
          @InstanceId = instanceid
          @Downsample = downsample
          @Start = start
          @Aggregator = aggregator
          @Tags = tags
        end

        def deserialize(params)
          @End = params['End']
          @Metric = params['Metric']
          @InstanceId = params['InstanceId']
          @Downsample = params['Downsample']
          @Start = params['Start']
          @Aggregator = params['Aggregator']
          @Tags = params['Tags']
        end
      end

      # DescribeEmrOverviewMetrics返回参数结构体
      class DescribeEmrOverviewMetricsResponse < TencentCloud::Common::AbstractModel
        # @param Result: 指标数据明细
        # @type Result: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Result, :RequestId

        def initialize(result=nil, requestid=nil)
          @Result = result
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Result'].nil?
            @Result = []
            params['Result'].each do |i|
              overviewmetricdata_tmp = OverviewMetricData.new
              overviewmetricdata_tmp.deserialize(i)
              @Result << overviewmetricdata_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeHBaseTableOverview请求参数结构体
      class DescribeHBaseTableOverviewRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID
        # @type InstanceId: String
        # @param Offset: 分页查询编号偏移量,从0开始
        # @type Offset: Integer
        # @param Limit: 分页查询时的分页大小,最小1,最大100
        # @type Limit: Integer
        # @param Table: 表名称,模糊匹配
        # @type Table: String
        # @param OrderField: 排序的字段,有默认值
        # @type OrderField: String
        # @param OrderType: 默认为降序,asc代表升序,desc代表降序
        # @type OrderType: String

        attr_accessor :InstanceId, :Offset, :Limit, :Table, :OrderField, :OrderType

        def initialize(instanceid=nil, offset=nil, limit=nil, table=nil, orderfield=nil, ordertype=nil)
          @InstanceId = instanceid
          @Offset = offset
          @Limit = limit
          @Table = table
          @OrderField = orderfield
          @OrderType = ordertype
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @Table = params['Table']
          @OrderField = params['OrderField']
          @OrderType = params['OrderType']
        end
      end

      # DescribeHBaseTableOverview返回参数结构体
      class DescribeHBaseTableOverviewResponse < TencentCloud::Common::AbstractModel
        # @param TableMonitorList: 概览数据数组
        # @type TableMonitorList: Array
        # @param TotalCount: 概览数据数组长度
        # @type TotalCount: Integer
        # @param SchemaList: 表schema信息
        # @type SchemaList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TableMonitorList, :TotalCount, :SchemaList, :RequestId

        def initialize(tablemonitorlist=nil, totalcount=nil, schemalist=nil, requestid=nil)
          @TableMonitorList = tablemonitorlist
          @TotalCount = totalcount
          @SchemaList = schemalist
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['TableMonitorList'].nil?
            @TableMonitorList = []
            params['TableMonitorList'].each do |i|
              overviewrow_tmp = OverviewRow.new
              overviewrow_tmp.deserialize(i)
              @TableMonitorList << overviewrow_tmp
            end
          end
          @TotalCount = params['TotalCount']
          unless params['SchemaList'].nil?
            @SchemaList = []
            params['SchemaList'].each do |i|
              tableschemaitem_tmp = TableSchemaItem.new
              tableschemaitem_tmp.deserialize(i)
              @SchemaList << tableschemaitem_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeHiveQueries请求参数结构体
      class DescribeHiveQueriesRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群ID
        # @type InstanceId: String
        # @param StartTime: 起始时间秒
        # @type StartTime: Integer
        # @param EndTime: 结束时间秒,EndTime-StartTime不得超过1天秒数86400
        # @type EndTime: Integer
        # @param Offset: 分页起始偏移,从0开始
        # @type Offset: Integer
        # @param Limit: 分页大小,合法范围[1,100]
        # @type Limit: Integer
        # @param State: 执行状态,ERROR等
        # @type State: Array
        # @param EndTimeGte: 结束时间大于的时间点
        # @type EndTimeGte: Integer
        # @param EndTimeLte: 结束时间小于时间点
        # @type EndTimeLte: Integer

        attr_accessor :InstanceId, :StartTime, :EndTime, :Offset, :Limit, :State, :EndTimeGte, :EndTimeLte

        def initialize(instanceid=nil, starttime=nil, endtime=nil, offset=nil, limit=nil, state=nil, endtimegte=nil, endtimelte=nil)
          @InstanceId = instanceid
          @StartTime = starttime
          @EndTime = endtime
          @Offset = offset
          @Limit = limit
          @State = state
          @EndTimeGte = endtimegte
          @EndTimeLte = endtimelte
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @State = params['State']
          @EndTimeGte = params['EndTimeGte']
          @EndTimeLte = params['EndTimeLte']
        end
      end

      # DescribeHiveQueries返回参数结构体
      class DescribeHiveQueriesResponse < TencentCloud::Common::AbstractModel
        # @param Total: 总条数
        # @type Total: Integer
        # @param Results: 结果列表
        # @type Results: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Total, :Results, :RequestId

        def initialize(total=nil, results=nil, requestid=nil)
          @Total = total
          @Results = results
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          unless params['Results'].nil?
            @Results = []
            params['Results'].each do |i|
              hivequery_tmp = HiveQuery.new
              hivequery_tmp.deserialize(i)
              @Results << hivequery_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeImpalaQueries请求参数结构体
      class DescribeImpalaQueriesRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群ID
        # @type InstanceId: String
        # @param StartTime: 起始时间秒
        # @type StartTime: Integer
        # @param EndTime: 结束时间秒,EndTime-StartTime不得超过1天秒数86400
        # @type EndTime: Integer
        # @param Offset: 分页起始偏移,从0开始
        # @type Offset: Integer
        # @param Limit: 分页大小,合法范围[1,100]
        # @type Limit: Integer
        # @param State: 执行状态,CREATED、INITIALIZED、COMPILED、RUNNING、FINISHED、EXCEPTION
        # @type State: Array
        # @param EndTimeGte: 结束时间大于的时间点
        # @type EndTimeGte: Integer
        # @param EndTimeLte: 结束时间小于的时间点
        # @type EndTimeLte: Integer

        attr_accessor :InstanceId, :StartTime, :EndTime, :Offset, :Limit, :State, :EndTimeGte, :EndTimeLte

        def initialize(instanceid=nil, starttime=nil, endtime=nil, offset=nil, limit=nil, state=nil, endtimegte=nil, endtimelte=nil)
          @InstanceId = instanceid
          @StartTime = starttime
          @EndTime = endtime
          @Offset = offset
          @Limit = limit
          @State = state
          @EndTimeGte = endtimegte
          @EndTimeLte = endtimelte
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @State = params['State']
          @EndTimeGte = params['EndTimeGte']
          @EndTimeLte = params['EndTimeLte']
        end
      end

      # DescribeImpalaQueries返回参数结构体
      class DescribeImpalaQueriesResponse < TencentCloud::Common::AbstractModel
        # @param Total: 总数
        # @type Total: Integer
        # @param Results: 结果列表
        # @type Results: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Total, :Results, :RequestId

        def initialize(total=nil, results=nil, requestid=nil)
          @Total = total
          @Results = results
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          unless params['Results'].nil?
            @Results = []
            params['Results'].each do |i|
              impalaquery_tmp = ImpalaQuery.new
              impalaquery_tmp.deserialize(i)
              @Results << impalaquery_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeInsightList请求参数结构体
      class DescribeInsightListRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群ID
        # @type InstanceId: String
        # @param StartTime: 获取的洞察结果开始时间,此时间针对对App或者Hive查询的开始时间的过滤
        # @type StartTime: Integer
        # @param EndTime: 获取的洞察结果结束时间,此时间针对对App或者Hive查询的开始时间的过滤
        # @type EndTime: Integer
        # @param PageSize: 分页查询时的分页大小,最小1,最大100
        # @type PageSize: Integer
        # @param Page: 分页查询时的页号,从1开始
        # @type Page: Integer

        attr_accessor :InstanceId, :StartTime, :EndTime, :PageSize, :Page

        def initialize(instanceid=nil, starttime=nil, endtime=nil, pagesize=nil, page=nil)
          @InstanceId = instanceid
          @StartTime = starttime
          @EndTime = endtime
          @PageSize = pagesize
          @Page = page
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @PageSize = params['PageSize']
          @Page = params['Page']
        end
      end

      # DescribeInsightList返回参数结构体
      class DescribeInsightListResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 总数,分页查询时使用
        # @type TotalCount: Integer
        # @param ResultList: 洞察结果数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ResultList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :ResultList, :RequestId

        def initialize(totalcount=nil, resultlist=nil, requestid=nil)
          @TotalCount = totalcount
          @ResultList = resultlist
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['ResultList'].nil?
            @ResultList = []
            params['ResultList'].each do |i|
              insightresult_tmp = InsightResult.new
              insightresult_tmp.deserialize(i)
              @ResultList << insightresult_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeInstanceRenewNodes请求参数结构体
      class DescribeInstanceRenewNodesRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群实例ID,实例ID形如: emr-xxxxxxxx
        # @type InstanceId: String

        attr_accessor :InstanceId

        def initialize(instanceid=nil)
          @InstanceId = instanceid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
        end
      end

      # DescribeInstanceRenewNodes返回参数结构体
      class DescribeInstanceRenewNodesResponse < TencentCloud::Common::AbstractModel
        # @param TotalCnt: 查询到的节点总数
        # @type TotalCnt: Integer
        # @param NodeList: 节点详细信息列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NodeList: Array
        # @param MetaInfo: 用户所有的标签键列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetaInfo: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCnt, :NodeList, :MetaInfo, :RequestId

        def initialize(totalcnt=nil, nodelist=nil, metainfo=nil, requestid=nil)
          @TotalCnt = totalcnt
          @NodeList = nodelist
          @MetaInfo = metainfo
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCnt = params['TotalCnt']
          unless params['NodeList'].nil?
            @NodeList = []
            params['NodeList'].each do |i|
              renewinstancesinfo_tmp = RenewInstancesInfo.new
              renewinstancesinfo_tmp.deserialize(i)
              @NodeList << renewinstancesinfo_tmp
            end
          end
          @MetaInfo = params['MetaInfo']
          @RequestId = params['RequestId']
        end
      end

      # DescribeInstancesList请求参数结构体
      class DescribeInstancesListRequest < TencentCloud::Common::AbstractModel
        # @param DisplayStrategy: 集群筛选策略。取值范围:<li>clusterList:表示查询除了已销毁集群之外的集群列表。</li><li>monitorManage:表示查询除了已销毁、创建中以及创建失败的集群之外的集群列表。</li><li>cloudHardwareManage/componentManage:目前这两个取值为预留取值,暂时和monitorManage表示同样的含义。</li>
        # @type DisplayStrategy: String
        # @param Offset: 页编号,默认值为0,表示第一页。
        # @type Offset: Integer
        # @param Limit: 每页返回数量,默认值为100,最大值为100。
        # 如果limit和offset都为0,则查询全部记录;
        # @type Limit: Integer
        # @param OrderField: 排序字段。取值范围:<li>clusterId:表示按照实例ID排序。</li><li>addTime:表示按照实例创建时间排序。</li><li>status:表示按照实例的状态码排序。</li>
        # @type OrderField: String
        # @param Asc: 按照OrderField升序或者降序进行排序。取值范围:<li>0:表示升序。</li><li>1:表示降序。</li>默认值为0。
        # @type Asc: Integer
        # @param Filters: 自定义查询
        # @type Filters: Array

        attr_accessor :DisplayStrategy, :Offset, :Limit, :OrderField, :Asc, :Filters

        def initialize(displaystrategy=nil, offset=nil, limit=nil, orderfield=nil, asc=nil, filters=nil)
          @DisplayStrategy = displaystrategy
          @Offset = offset
          @Limit = limit
          @OrderField = orderfield
          @Asc = asc
          @Filters = filters
        end

        def deserialize(params)
          @DisplayStrategy = params['DisplayStrategy']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @OrderField = params['OrderField']
          @Asc = params['Asc']
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filters_tmp = Filters.new
              filters_tmp.deserialize(i)
              @Filters << filters_tmp
            end
          end
        end
      end

      # DescribeInstancesList返回参数结构体
      class DescribeInstancesListResponse < TencentCloud::Common::AbstractModel
        # @param TotalCnt: 符合条件的实例总数。
        # @type TotalCnt: Integer
        # @param InstancesList: 集群实例列表
        # @type InstancesList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCnt, :InstancesList, :RequestId

        def initialize(totalcnt=nil, instanceslist=nil, requestid=nil)
          @TotalCnt = totalcnt
          @InstancesList = instanceslist
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCnt = params['TotalCnt']
          unless params['InstancesList'].nil?
            @InstancesList = []
            params['InstancesList'].each do |i|
              emrlistinstance_tmp = EmrListInstance.new
              emrlistinstance_tmp.deserialize(i)
              @InstancesList << emrlistinstance_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeInstances请求参数结构体
      class DescribeInstancesRequest < TencentCloud::Common::AbstractModel
        # @param DisplayStrategy: 集群筛选策略。取值范围:
        # <li>clusterList:表示查询除了已销毁集群之外的集群列表。</li>
        # <li>monitorManage:表示查询除了已销毁、创建中以及创建失败的集群之外的集群列表。</li>
        # <li>cloudHardwareManage/componentManage:目前这两个取值为预留取值,暂时和monitorManage表示同样的含义。</li>
        # @type DisplayStrategy: String
        # @param InstanceIds: 按照一个或者多个实例ID查询。实例ID形如: emr-xxxxxxxx 。(此参数的具体格式可参考API[简介](https://cloud.tencent.com/document/api/213/15688)的 Ids.N 一节)。如果不填写实例ID,返回该APPID下所有实例列表。
        # @type InstanceIds: Array
        # @param Offset: 页编号,默认值为0,表示第一页。
        # @type Offset: Integer
        # @param Limit: 每页返回数量,默认值为100,最大值为100。
        # @type Limit: Integer
        # @param ProjectId: 建议必填-1,表示拉取所有项目下的集群。
        # 不填默认值为0,表示拉取默认项目下的集群。
        # 实例所属项目ID。该参数可以通过调用 [DescribeProjects](https://cloud.tencent.com/document/product/651/78725) 的返回值中的 projectId 字段来获取。
        # @type ProjectId: Integer
        # @param OrderField: 排序字段。取值范围:
        # <li>clusterId:表示按照实例ID排序。</li>
        # <li>addTime:表示按照实例创建时间排序。</li>
        # <li>status:表示按照实例的状态码排序。</li>
        # @type OrderField: String
        # @param Asc: 按照OrderField升序或者降序进行排序。取值范围:
        # <li>0:表示降序。</li>
        # <li>1:表示升序。</li>默认值为0。
        # @type Asc: Integer

        attr_accessor :DisplayStrategy, :InstanceIds, :Offset, :Limit, :ProjectId, :OrderField, :Asc

        def initialize(displaystrategy=nil, instanceids=nil, offset=nil, limit=nil, projectid=nil, orderfield=nil, asc=nil)
          @DisplayStrategy = displaystrategy
          @InstanceIds = instanceids
          @Offset = offset
          @Limit = limit
          @ProjectId = projectid
          @OrderField = orderfield
          @Asc = asc
        end

        def deserialize(params)
          @DisplayStrategy = params['DisplayStrategy']
          @InstanceIds = params['InstanceIds']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @ProjectId = params['ProjectId']
          @OrderField = params['OrderField']
          @Asc = params['Asc']
        end
      end

      # DescribeInstances返回参数结构体
      class DescribeInstancesResponse < TencentCloud::Common::AbstractModel
        # @param TotalCnt: 符合条件的实例总数。
        # @type TotalCnt: Integer
        # @param ClusterList: EMR实例详细信息列表。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterList: Array
        # @param TagKeys: 实例关联的标签键列表。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TagKeys: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCnt, :ClusterList, :TagKeys, :RequestId

        def initialize(totalcnt=nil, clusterlist=nil, tagkeys=nil, requestid=nil)
          @TotalCnt = totalcnt
          @ClusterList = clusterlist
          @TagKeys = tagkeys
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCnt = params['TotalCnt']
          unless params['ClusterList'].nil?
            @ClusterList = []
            params['ClusterList'].each do |i|
              clusterinstancesinfo_tmp = ClusterInstancesInfo.new
              clusterinstancesinfo_tmp.deserialize(i)
              @ClusterList << clusterinstancesinfo_tmp
            end
          end
          @TagKeys = params['TagKeys']
          @RequestId = params['RequestId']
        end
      end

      # DescribeJobFlow请求参数结构体
      class DescribeJobFlowRequest < TencentCloud::Common::AbstractModel
        # @param JobFlowId: 流程任务Id,RunJobFlow接口返回的值。
        # @type JobFlowId: Integer

        attr_accessor :JobFlowId

        def initialize(jobflowid=nil)
          @JobFlowId = jobflowid
        end

        def deserialize(params)
          @JobFlowId = params['JobFlowId']
        end
      end

      # DescribeJobFlow返回参数结构体
      class DescribeJobFlowResponse < TencentCloud::Common::AbstractModel
        # @param State: 流程任务状态,可以为以下值:
        # JobFlowInit,流程任务初始化。
        # JobFlowResourceApplied,资源申请中,通常为JobFlow需要新建集群时的状态。
        # JobFlowResourceReady,执行流程任务的资源就绪。
        # JobFlowStepsRunning,流程任务步骤已提交。
        # JobFlowStepsComplete,流程任务步骤已完成。
        # JobFlowTerminating,流程任务所需资源销毁中。
        # JobFlowFinish,流程任务已完成。
        # @type State: String
        # @param Details: 流程任务步骤结果。
        # @type Details: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :State, :Details, :RequestId

        def initialize(state=nil, details=nil, requestid=nil)
          @State = state
          @Details = details
          @RequestId = requestid
        end

        def deserialize(params)
          @State = params['State']
          unless params['Details'].nil?
            @Details = []
            params['Details'].each do |i|
              jobresult_tmp = JobResult.new
              jobresult_tmp.deserialize(i)
              @Details << jobresult_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeResourceSchedule请求参数结构体
      class DescribeResourceScheduleRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: emr集群的英文id
        # @type InstanceId: String

        attr_accessor :InstanceId

        def initialize(instanceid=nil)
          @InstanceId = instanceid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
        end
      end

      # DescribeResourceSchedule返回参数结构体
      class DescribeResourceScheduleResponse < TencentCloud::Common::AbstractModel
        # @param OpenSwitch: 资源调度功能是否开启
        # @type OpenSwitch: Boolean
        # @param Scheduler: 正在使用的资源调度器
        # @type Scheduler: String
        # @param FSInfo: 公平调度器的信息
        # @type FSInfo: String
        # @param CSInfo: 容量调度器的信息
        # @type CSInfo: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OpenSwitch, :Scheduler, :FSInfo, :CSInfo, :RequestId

        def initialize(openswitch=nil, scheduler=nil, fsinfo=nil, csinfo=nil, requestid=nil)
          @OpenSwitch = openswitch
          @Scheduler = scheduler
          @FSInfo = fsinfo
          @CSInfo = csinfo
          @RequestId = requestid
        end

        def deserialize(params)
          @OpenSwitch = params['OpenSwitch']
          @Scheduler = params['Scheduler']
          @FSInfo = params['FSInfo']
          @CSInfo = params['CSInfo']
          @RequestId = params['RequestId']
        end
      end

      # DescribeServiceNodeInfos请求参数结构体
      class DescribeServiceNodeInfosRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID
        # @type InstanceId: String
        # @param Offset: 页码
        # @type Offset: Integer
        # @param Limit: 页大小
        # @type Limit: Integer
        # @param SearchText: 搜索字段
        # @type SearchText: String
        # @param ConfStatus: '配置状态,-2:配置失败,-1:配置过期,1:已同步', -99 '全部'
        # @type ConfStatus: Integer
        # @param MaintainStateId: 过滤条件:维护状态
        # 0代表所有状态
        # 1代表正常模式
        # 2代表维护模式
        # @type MaintainStateId: Integer
        # @param OperatorStateId: 过滤条件:操作状态
        # 0代表所有状态
        # 1代表已启动
        # 2代表已停止
        # @type OperatorStateId: Integer
        # @param HealthStateId: 过滤条件:健康状态
        # "0"代表不可用
        # "1"代表良好
        # "-2"代表未知
        # "-99"代表所有
        # "-3"代表存在隐患
        # "-4"代表未探测
        # @type HealthStateId: String
        # @param ServiceName: 服务组件名称,都是大写比如YARN
        # @type ServiceName: String
        # @param NodeTypeName: 节点名称
        # master
        # core
        # task
        # common
        # router
        # @type NodeTypeName: String
        # @param DataNodeMaintenanceId: 过滤条件:dn是否处于维护状态
        # 0代表所有状态
        # 1代表处于维护状态
        # @type DataNodeMaintenanceId: Integer
        # @param SearchFields: 支持搜索的字段
        # @type SearchFields: Array

        attr_accessor :InstanceId, :Offset, :Limit, :SearchText, :ConfStatus, :MaintainStateId, :OperatorStateId, :HealthStateId, :ServiceName, :NodeTypeName, :DataNodeMaintenanceId, :SearchFields

        def initialize(instanceid=nil, offset=nil, limit=nil, searchtext=nil, confstatus=nil, maintainstateid=nil, operatorstateid=nil, healthstateid=nil, servicename=nil, nodetypename=nil, datanodemaintenanceid=nil, searchfields=nil)
          @InstanceId = instanceid
          @Offset = offset
          @Limit = limit
          @SearchText = searchtext
          @ConfStatus = confstatus
          @MaintainStateId = maintainstateid
          @OperatorStateId = operatorstateid
          @HealthStateId = healthstateid
          @ServiceName = servicename
          @NodeTypeName = nodetypename
          @DataNodeMaintenanceId = datanodemaintenanceid
          @SearchFields = searchfields
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @Offset = params['Offset']
          @Limit = params['Limit']
          @SearchText = params['SearchText']
          @ConfStatus = params['ConfStatus']
          @MaintainStateId = params['MaintainStateId']
          @OperatorStateId = params['OperatorStateId']
          @HealthStateId = params['HealthStateId']
          @ServiceName = params['ServiceName']
          @NodeTypeName = params['NodeTypeName']
          @DataNodeMaintenanceId = params['DataNodeMaintenanceId']
          unless params['SearchFields'].nil?
            @SearchFields = []
            params['SearchFields'].each do |i|
              searchitem_tmp = SearchItem.new
              searchitem_tmp.deserialize(i)
              @SearchFields << searchitem_tmp
            end
          end
        end
      end

      # DescribeServiceNodeInfos返回参数结构体
      class DescribeServiceNodeInfosResponse < TencentCloud::Common::AbstractModel
        # @param TotalCnt: 总数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalCnt: Integer
        # @param ServiceNodeList: 进程信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ServiceNodeList: Array
        # @param AliasInfo: 集群所有节点的别名序列化
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AliasInfo: String
        # @param SupportNodeFlagFilterList: 支持的FlagNode列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SupportNodeFlagFilterList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCnt, :ServiceNodeList, :AliasInfo, :SupportNodeFlagFilterList, :RequestId

        def initialize(totalcnt=nil, servicenodelist=nil, aliasinfo=nil, supportnodeflagfilterlist=nil, requestid=nil)
          @TotalCnt = totalcnt
          @ServiceNodeList = servicenodelist
          @AliasInfo = aliasinfo
          @SupportNodeFlagFilterList = supportnodeflagfilterlist
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCnt = params['TotalCnt']
          unless params['ServiceNodeList'].nil?
            @ServiceNodeList = []
            params['ServiceNodeList'].each do |i|
              servicenodedetailinfo_tmp = ServiceNodeDetailInfo.new
              servicenodedetailinfo_tmp.deserialize(i)
              @ServiceNodeList << servicenodedetailinfo_tmp
            end
          end
          @AliasInfo = params['AliasInfo']
          @SupportNodeFlagFilterList = params['SupportNodeFlagFilterList']
          @RequestId = params['RequestId']
        end
      end

      # DescribeTrinoQueryInfo请求参数结构体
      class DescribeTrinoQueryInfoRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群ID
        # @type InstanceId: String
        # @param StartTime: 获取查询信息开始时间 (s)
        # @type StartTime: Integer
        # @param EndTime: 获取查询信息结束时间 (s)
        # @type EndTime: Integer
        # @param PageSize: 分页查询时的分页大小,最小1,最大100
        # @type PageSize: Integer
        # @param Page: 分页查询时的页号,从1开始
        # @type Page: Integer

        attr_accessor :InstanceId, :StartTime, :EndTime, :PageSize, :Page

        def initialize(instanceid=nil, starttime=nil, endtime=nil, pagesize=nil, page=nil)
          @InstanceId = instanceid
          @StartTime = starttime
          @EndTime = endtime
          @PageSize = pagesize
          @Page = page
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @PageSize = params['PageSize']
          @Page = params['Page']
        end
      end

      # DescribeTrinoQueryInfo返回参数结构体
      class DescribeTrinoQueryInfoResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 总数,分页查询时使用
        # @type TotalCount: Integer
        # @param QueryInfoList: 查询结果数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type QueryInfoList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :QueryInfoList, :RequestId

        def initialize(totalcount=nil, queryinfolist=nil, requestid=nil)
          @TotalCount = totalcount
          @QueryInfoList = queryinfolist
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['QueryInfoList'].nil?
            @QueryInfoList = []
            params['QueryInfoList'].each do |i|
              trinoqueryinfo_tmp = TrinoQueryInfo.new
              trinoqueryinfo_tmp.deserialize(i)
              @QueryInfoList << trinoqueryinfo_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeUsersForUserManager请求参数结构体
      class DescribeUsersForUserManagerRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群实例ID
        # @type InstanceId: String
        # @param PageNo: 页码
        # @type PageNo: Integer
        # @param PageSize: 分页的大小。
        # 默认查询全部;PageNo和PageSize不合理的设置,都是查询全部
        # @type PageSize: Integer
        # @param UserManagerFilter: 查询用户列表过滤器
        # @type UserManagerFilter: :class:`Tencentcloud::Emr.v20190103.models.UserManagerFilter`
        # @param NeedKeytabInfo: 是否需要keytab文件的信息,仅对开启kerberos的集群有效,默认为false
        # @type NeedKeytabInfo: Boolean

        attr_accessor :InstanceId, :PageNo, :PageSize, :UserManagerFilter, :NeedKeytabInfo

        def initialize(instanceid=nil, pageno=nil, pagesize=nil, usermanagerfilter=nil, needkeytabinfo=nil)
          @InstanceId = instanceid
          @PageNo = pageno
          @PageSize = pagesize
          @UserManagerFilter = usermanagerfilter
          @NeedKeytabInfo = needkeytabinfo
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @PageNo = params['PageNo']
          @PageSize = params['PageSize']
          unless params['UserManagerFilter'].nil?
            @UserManagerFilter = UserManagerFilter.new
            @UserManagerFilter.deserialize(params['UserManagerFilter'])
          end
          @NeedKeytabInfo = params['NeedKeytabInfo']
        end
      end

      # DescribeUsersForUserManager返回参数结构体
      class DescribeUsersForUserManagerResponse < TencentCloud::Common::AbstractModel
        # @param TotalCnt: 总数
        # @type TotalCnt: Integer
        # @param UserManagerUserList: 用户信息列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserManagerUserList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCnt, :UserManagerUserList, :RequestId

        def initialize(totalcnt=nil, usermanageruserlist=nil, requestid=nil)
          @TotalCnt = totalcnt
          @UserManagerUserList = usermanageruserlist
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCnt = params['TotalCnt']
          unless params['UserManagerUserList'].nil?
            @UserManagerUserList = []
            params['UserManagerUserList'].each do |i|
              usermanageruserbriefinfo_tmp = UserManagerUserBriefInfo.new
              usermanageruserbriefinfo_tmp.deserialize(i)
              @UserManagerUserList << usermanageruserbriefinfo_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeYarnApplications请求参数结构体
      class DescribeYarnApplicationsRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群ID
        # @type InstanceId: String
        # @param StartTime: 起始时间秒
        # @type StartTime: Integer
        # @param EndTime: 结束时间秒,EndTime-StartTime不得超过1天秒数86400
        # @type EndTime: Integer
        # @param Offset: 分页偏移量,Offset=0表示第一页;如果limit=100,Offset=1,则表示第二页,数据第101条开始查询,返回100条数据;如果limit=100,Offset=2,则表示第三页,数据第201条开始查询,返回100条数据。依次类推
        # @type Offset: Integer
        # @param Limit: 分页大小,合法范围[1,100]
        # @type Limit: Integer

        attr_accessor :InstanceId, :StartTime, :EndTime, :Offset, :Limit

        def initialize(instanceid=nil, starttime=nil, endtime=nil, offset=nil, limit=nil)
          @InstanceId = instanceid
          @StartTime = starttime
          @EndTime = endtime
          @Offset = offset
          @Limit = limit
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Offset = params['Offset']
          @Limit = params['Limit']
        end
      end

      # DescribeYarnApplications返回参数结构体
      class DescribeYarnApplicationsResponse < TencentCloud::Common::AbstractModel
        # @param Total: 总数
        # @type Total: Integer
        # @param Results: 结果列表
        # @type Results: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Total, :Results, :RequestId

        def initialize(total=nil, results=nil, requestid=nil)
          @Total = total
          @Results = results
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          unless params['Results'].nil?
            @Results = []
            params['Results'].each do |i|
              yarnapplication_tmp = YarnApplication.new
              yarnapplication_tmp.deserialize(i)
              @Results << yarnapplication_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeYarnScheduleHistory请求参数结构体
      class DescribeYarnScheduleHistoryRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群id
        # @type InstanceId: String
        # @param StartTime: 开始时间
        # @type StartTime: Integer
        # @param EndTime: 结束时间
        # @type EndTime: Integer
        # @param Limit: 页码
        # @type Limit: Integer
        # @param Offset: 页大小
        # @type Offset: Integer
        # @param SchedulerType: 调度器类型 可选值为“ALL”,"Capacity Scheduler", "Fair Scheduler"
        # @type SchedulerType: String
        # @param TaskState: 任务类型0:等待执行,1:执行中,2:完成,-1:失败 ,-99:全部
        # @type TaskState: Integer

        attr_accessor :InstanceId, :StartTime, :EndTime, :Limit, :Offset, :SchedulerType, :TaskState

        def initialize(instanceid=nil, starttime=nil, endtime=nil, limit=nil, offset=nil, schedulertype=nil, taskstate=nil)
          @InstanceId = instanceid
          @StartTime = starttime
          @EndTime = endtime
          @Limit = limit
          @Offset = offset
          @SchedulerType = schedulertype
          @TaskState = taskstate
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @SchedulerType = params['SchedulerType']
          @TaskState = params['TaskState']
        end
      end

      # DescribeYarnScheduleHistory返回参数结构体
      class DescribeYarnScheduleHistoryResponse < TencentCloud::Common::AbstractModel
        # @param Tasks: 任务详情
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tasks: Array
        # @param Total: 任务详情总数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Total: Integer
        # @param SchedulerNameList: 调度类型筛选列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SchedulerNameList: Array
        # @param StateList: 状态筛选列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StateList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Tasks, :Total, :SchedulerNameList, :StateList, :RequestId

        def initialize(tasks=nil, total=nil, schedulernamelist=nil, statelist=nil, requestid=nil)
          @Tasks = tasks
          @Total = total
          @SchedulerNameList = schedulernamelist
          @StateList = statelist
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Tasks'].nil?
            @Tasks = []
            params['Tasks'].each do |i|
              schedulertaskinfo_tmp = SchedulerTaskInfo.new
              schedulertaskinfo_tmp.deserialize(i)
              @Tasks << schedulertaskinfo_tmp
            end
          end
          @Total = params['Total']
          @SchedulerNameList = params['SchedulerNameList']
          @StateList = params['StateList']
          @RequestId = params['RequestId']
        end
      end

      # 磁盘组。
      class DiskGroup < TencentCloud::Common::AbstractModel
        # @param Spec: 磁盘规格。
        # @type Spec: :class:`Tencentcloud::Emr.v20190103.models.DiskSpec`
        # @param Count: 同类型磁盘数量。
        # @type Count: Integer

        attr_accessor :Spec, :Count

        def initialize(spec=nil, count=nil)
          @Spec = spec
          @Count = count
        end

        def deserialize(params)
          unless params['Spec'].nil?
            @Spec = DiskSpec.new
            @Spec.deserialize(params['Spec'])
          end
          @Count = params['Count']
        end
      end

      # 磁盘描述。
      class DiskSpec < TencentCloud::Common::AbstractModel
        # @param DiskType: 磁盘类型。
        # LOCAL_BASIC  本地盘。
        # CLOUD_BASIC 云硬盘。
        # LOCAL_SSD 本地SSD。
        # CLOUD_SSD 云SSD。
        # CLOUD_PREMIUM 高效云盘。
        # CLOUD_HSSD 增强型云SSD。
        # @type DiskType: String
        # @param DiskSize: 磁盘大小,单位GB。
        # @type DiskSize: Integer

        attr_accessor :DiskType, :DiskSize

        def initialize(disktype=nil, disksize=nil)
          @DiskType = disktype
          @DiskSize = disksize
        end

        def deserialize(params)
          @DiskType = params['DiskType']
          @DiskSize = params['DiskSize']
        end
      end

      # 节点磁盘信息
      class DiskSpecInfo < TencentCloud::Common::AbstractModel
        # @param Count: 磁盘数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Count: Integer
        # @param DiskType: 系统盘类型 取值范围:
        # <li>CLOUD_SSD:表示云SSD。</li>
        # <li>CLOUD_PREMIUM:表示高效云盘。</li>
        # <li>CLOUD_BASIC:表示云硬盘。</li>
        # <li>LOCAL_BASIC:表示本地盘。</li>
        # <li>LOCAL_SSD:表示本地SSD。</li>

        # 数据盘类型 取值范围:
        # <li>CLOUD_SSD:表示云SSD。</li>
        # <li>CLOUD_PREMIUM:表示高效云盘。</li>
        # <li>CLOUD_BASIC:表示云硬盘。</li>
        # <li>LOCAL_BASIC:表示本地盘。</li>
        # <li>LOCAL_SSD:表示本地SSD。</li>
        # <li>CLOUD_HSSD:表示增强型SSD云硬盘。</li>
        # <li>CLOUD_THROUGHPUT:表示吞吐型云硬盘。</li>
        # <li>CLOUD_TSSD:表示极速型SSD云硬盘。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskType: String
        # @param DiskSize: 数据容量,单位为GB
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskSize: Integer

        attr_accessor :Count, :DiskType, :DiskSize

        def initialize(count=nil, disktype=nil, disksize=nil)
          @Count = count
          @DiskType = disktype
          @DiskSize = disksize
        end

        def deserialize(params)
          @Count = params['Count']
          @DiskType = params['DiskType']
          @DiskSize = params['DiskSize']
        end
      end

      # POD浮动规格
      class DynamicPodSpec < TencentCloud::Common::AbstractModel
        # @param RequestCpu: 需求最小cpu核数
        # @type RequestCpu: Float
        # @param LimitCpu: 需求最大cpu核数
        # @type LimitCpu: Float
        # @param RequestMemory: 需求最小memory,单位MB
        # @type RequestMemory: Float
        # @param LimitMemory: 需求最大memory,单位MB
        # @type LimitMemory: Float

        attr_accessor :RequestCpu, :LimitCpu, :RequestMemory, :LimitMemory

        def initialize(requestcpu=nil, limitcpu=nil, requestmemory=nil, limitmemory=nil)
          @RequestCpu = requestcpu
          @LimitCpu = limitcpu
          @RequestMemory = requestmemory
          @LimitMemory = limitmemory
        end

        def deserialize(params)
          @RequestCpu = params['RequestCpu']
          @LimitCpu = params['LimitCpu']
          @RequestMemory = params['RequestMemory']
          @LimitMemory = params['LimitMemory']
        end
      end

      # 集群列表返回示例
      class EmrListInstance < TencentCloud::Common::AbstractModel
        # @param ClusterId: 集群ID
        # @type ClusterId: String
        # @param StatusDesc: 常见状态描述:集群生产中,集群运行中,集群创建中,集群已关闭,集群已删除
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StatusDesc: String
        # @param ClusterName: 集群名字
        # @type ClusterName: String
        # @param ZoneId: 集群地域
        # @type ZoneId: Integer
        # @param AppId: 用户APPID
        # @type AppId: Integer
        # @param AddTime: 创建时间
        # @type AddTime: String
        # @param RunTime: 运行时间
        # @type RunTime: String
        # @param MasterIp: 集群IP
        # @type MasterIp: String
        # @param EmrVersion: 集群版本
        # @type EmrVersion: String
        # @param ChargeType: 集群计费类型
        # @type ChargeType: Integer
        # @param Id: emr ID
        # @type Id: Integer
        # @param ProductId: 产品ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProductId: Integer
        # @param ProjectId: 项目ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProjectId: Integer
        # @param RegionId: 区域
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RegionId: Integer
        # @param SubnetId: 子网ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetId: Integer
        # @param VpcId: 网络ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VpcId: Integer
        # @param Zone: 地区
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Zone: String
        # @param Status: 状态码, 取值为-2(集群已删除), -1(集群已关闭), 0(集群生产中), 2(集群运行中), 3(集群创建中)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Status: Integer
        # @param Tags: 实例标签
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param AlarmInfo: 告警信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AlarmInfo: String
        # @param IsWoodpeckerCluster: 是否是woodpecker集群
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsWoodpeckerCluster: Integer
        # @param VpcName: Vpc中文
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VpcName: String
        # @param SubnetName: 子网中文
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetName: String
        # @param UniqVpcId: 字符串VpcId
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UniqVpcId: String
        # @param UniqSubnetId: 字符串子网
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UniqSubnetId: String
        # @param ClusterClass: 集群类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterClass: String
        # @param IsMultiZoneCluster: 是否为跨AZ集群
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsMultiZoneCluster: Boolean
        # @param IsHandsCluster: 是否手戳集群
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsHandsCluster: Boolean
        # @param OutSideSoftInfo: 体外客户端组件信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OutSideSoftInfo: Array
        # @param IsSupportOutsideCluster: 当前集群的应用场景是否支持体外客户端
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsSupportOutsideCluster: Boolean
        # @param IsDedicatedCluster: 是否专有集群场景集群
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsDedicatedCluster: Boolean

        attr_accessor :ClusterId, :StatusDesc, :ClusterName, :ZoneId, :AppId, :AddTime, :RunTime, :MasterIp, :EmrVersion, :ChargeType, :Id, :ProductId, :ProjectId, :RegionId, :SubnetId, :VpcId, :Zone, :Status, :Tags, :AlarmInfo, :IsWoodpeckerCluster, :VpcName, :SubnetName, :UniqVpcId, :UniqSubnetId, :ClusterClass, :IsMultiZoneCluster, :IsHandsCluster, :OutSideSoftInfo, :IsSupportOutsideCluster, :IsDedicatedCluster

        def initialize(clusterid=nil, statusdesc=nil, clustername=nil, zoneid=nil, appid=nil, addtime=nil, runtime=nil, masterip=nil, emrversion=nil, chargetype=nil, id=nil, productid=nil, projectid=nil, regionid=nil, subnetid=nil, vpcid=nil, zone=nil, status=nil, tags=nil, alarminfo=nil, iswoodpeckercluster=nil, vpcname=nil, subnetname=nil, uniqvpcid=nil, uniqsubnetid=nil, clusterclass=nil, ismultizonecluster=nil, ishandscluster=nil, outsidesoftinfo=nil, issupportoutsidecluster=nil, isdedicatedcluster=nil)
          @ClusterId = clusterid
          @StatusDesc = statusdesc
          @ClusterName = clustername
          @ZoneId = zoneid
          @AppId = appid
          @AddTime = addtime
          @RunTime = runtime
          @MasterIp = masterip
          @EmrVersion = emrversion
          @ChargeType = chargetype
          @Id = id
          @ProductId = productid
          @ProjectId = projectid
          @RegionId = regionid
          @SubnetId = subnetid
          @VpcId = vpcid
          @Zone = zone
          @Status = status
          @Tags = tags
          @AlarmInfo = alarminfo
          @IsWoodpeckerCluster = iswoodpeckercluster
          @VpcName = vpcname
          @SubnetName = subnetname
          @UniqVpcId = uniqvpcid
          @UniqSubnetId = uniqsubnetid
          @ClusterClass = clusterclass
          @IsMultiZoneCluster = ismultizonecluster
          @IsHandsCluster = ishandscluster
          @OutSideSoftInfo = outsidesoftinfo
          @IsSupportOutsideCluster = issupportoutsidecluster
          @IsDedicatedCluster = isdedicatedcluster
        end

        def deserialize(params)
          @ClusterId = params['ClusterId']
          @StatusDesc = params['StatusDesc']
          @ClusterName = params['ClusterName']
          @ZoneId = params['ZoneId']
          @AppId = params['AppId']
          @AddTime = params['AddTime']
          @RunTime = params['RunTime']
          @MasterIp = params['MasterIp']
          @EmrVersion = params['EmrVersion']
          @ChargeType = params['ChargeType']
          @Id = params['Id']
          @ProductId = params['ProductId']
          @ProjectId = params['ProjectId']
          @RegionId = params['RegionId']
          @SubnetId = params['SubnetId']
          @VpcId = params['VpcId']
          @Zone = params['Zone']
          @Status = params['Status']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @AlarmInfo = params['AlarmInfo']
          @IsWoodpeckerCluster = params['IsWoodpeckerCluster']
          @VpcName = params['VpcName']
          @SubnetName = params['SubnetName']
          @UniqVpcId = params['UniqVpcId']
          @UniqSubnetId = params['UniqSubnetId']
          @ClusterClass = params['ClusterClass']
          @IsMultiZoneCluster = params['IsMultiZoneCluster']
          @IsHandsCluster = params['IsHandsCluster']
          unless params['OutSideSoftInfo'].nil?
            @OutSideSoftInfo = []
            params['OutSideSoftInfo'].each do |i|
              softdependinfo_tmp = SoftDependInfo.new
              softdependinfo_tmp.deserialize(i)
              @OutSideSoftInfo << softdependinfo_tmp
            end
          end
          @IsSupportOutsideCluster = params['IsSupportOutsideCluster']
          @IsDedicatedCluster = params['IsDedicatedCluster']
        end
      end

      # Emr询价描述
      class EmrPrice < TencentCloud::Common::AbstractModel
        # @param OriginalCost: 刊例价格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OriginalCost: String
        # @param DiscountCost: 折扣价格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiscountCost: String
        # @param Unit: 单位
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Unit: String
        # @param PriceSpec: 询价配置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PriceSpec: :class:`Tencentcloud::Emr.v20190103.models.PriceResource`
        # @param SupportSpotPaid: 是否支持竞价实例
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SupportSpotPaid: Boolean

        attr_accessor :OriginalCost, :DiscountCost, :Unit, :PriceSpec, :SupportSpotPaid

        def initialize(originalcost=nil, discountcost=nil, unit=nil, pricespec=nil, supportspotpaid=nil)
          @OriginalCost = originalcost
          @DiscountCost = discountcost
          @Unit = unit
          @PriceSpec = pricespec
          @SupportSpotPaid = supportspotpaid
        end

        def deserialize(params)
          @OriginalCost = params['OriginalCost']
          @DiscountCost = params['DiscountCost']
          @Unit = params['Unit']
          unless params['PriceSpec'].nil?
            @PriceSpec = PriceResource.new
            @PriceSpec.deserialize(params['PriceSpec'])
          end
          @SupportSpotPaid = params['SupportSpotPaid']
        end
      end

      # EMR产品配置
      class EmrProductConfigDetail < TencentCloud::Common::AbstractModel
        # @param SoftInfo: 软件信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SoftInfo: Array
        # @param MasterNodeSize: Master节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MasterNodeSize: Integer
        # @param CoreNodeSize: Core节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CoreNodeSize: Integer
        # @param TaskNodeSize: Task节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskNodeSize: Integer
        # @param ComNodeSize: Common节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComNodeSize: Integer
        # @param MasterResource: Master节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MasterResource: :class:`Tencentcloud::Emr.v20190103.models.ResourceDetail`
        # @param CoreResource: Core节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CoreResource: :class:`Tencentcloud::Emr.v20190103.models.ResourceDetail`
        # @param TaskResource: Task节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskResource: :class:`Tencentcloud::Emr.v20190103.models.ResourceDetail`
        # @param ComResource: Common节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComResource: :class:`Tencentcloud::Emr.v20190103.models.ResourceDetail`
        # @param OnCos: 是否使用COS
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OnCos: Boolean
        # @param ChargeType: 收费类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChargeType: Integer
        # @param RouterNodeSize: Router节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RouterNodeSize: Integer
        # @param SupportHA: 是否支持HA
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SupportHA: Boolean
        # @param SecurityOn: 是否支持安全模式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SecurityOn: Boolean
        # @param SecurityGroup: 安全组名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SecurityGroup: String
        # @param CbsEncrypt: 是否开启Cbs加密
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CbsEncrypt: Integer
        # @param ApplicationRole: 自定义应用角色。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApplicationRole: String
        # @param SecurityGroups: 安全组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SecurityGroups: Array
        # @param PublicKeyId: SSH密钥Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PublicKeyId: String

        attr_accessor :SoftInfo, :MasterNodeSize, :CoreNodeSize, :TaskNodeSize, :ComNodeSize, :MasterResource, :CoreResource, :TaskResource, :ComResource, :OnCos, :ChargeType, :RouterNodeSize, :SupportHA, :SecurityOn, :SecurityGroup, :CbsEncrypt, :ApplicationRole, :SecurityGroups, :PublicKeyId

        def initialize(softinfo=nil, masternodesize=nil, corenodesize=nil, tasknodesize=nil, comnodesize=nil, masterresource=nil, coreresource=nil, taskresource=nil, comresource=nil, oncos=nil, chargetype=nil, routernodesize=nil, supportha=nil, securityon=nil, securitygroup=nil, cbsencrypt=nil, applicationrole=nil, securitygroups=nil, publickeyid=nil)
          @SoftInfo = softinfo
          @MasterNodeSize = masternodesize
          @CoreNodeSize = corenodesize
          @TaskNodeSize = tasknodesize
          @ComNodeSize = comnodesize
          @MasterResource = masterresource
          @CoreResource = coreresource
          @TaskResource = taskresource
          @ComResource = comresource
          @OnCos = oncos
          @ChargeType = chargetype
          @RouterNodeSize = routernodesize
          @SupportHA = supportha
          @SecurityOn = securityon
          @SecurityGroup = securitygroup
          @CbsEncrypt = cbsencrypt
          @ApplicationRole = applicationrole
          @SecurityGroups = securitygroups
          @PublicKeyId = publickeyid
        end

        def deserialize(params)
          @SoftInfo = params['SoftInfo']
          @MasterNodeSize = params['MasterNodeSize']
          @CoreNodeSize = params['CoreNodeSize']
          @TaskNodeSize = params['TaskNodeSize']
          @ComNodeSize = params['ComNodeSize']
          unless params['MasterResource'].nil?
            @MasterResource = ResourceDetail.new
            @MasterResource.deserialize(params['MasterResource'])
          end
          unless params['CoreResource'].nil?
            @CoreResource = ResourceDetail.new
            @CoreResource.deserialize(params['CoreResource'])
          end
          unless params['TaskResource'].nil?
            @TaskResource = ResourceDetail.new
            @TaskResource.deserialize(params['TaskResource'])
          end
          unless params['ComResource'].nil?
            @ComResource = ResourceDetail.new
            @ComResource.deserialize(params['ComResource'])
          end
          @OnCos = params['OnCos']
          @ChargeType = params['ChargeType']
          @RouterNodeSize = params['RouterNodeSize']
          @SupportHA = params['SupportHA']
          @SecurityOn = params['SecurityOn']
          @SecurityGroup = params['SecurityGroup']
          @CbsEncrypt = params['CbsEncrypt']
          @ApplicationRole = params['ApplicationRole']
          @SecurityGroups = params['SecurityGroups']
          @PublicKeyId = params['PublicKeyId']
        end
      end

      # EMR产品配置
      class EmrProductConfigOutter < TencentCloud::Common::AbstractModel
        # @param SoftInfo: 软件信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SoftInfo: Array
        # @param MasterNodeSize: Master节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MasterNodeSize: Integer
        # @param CoreNodeSize: Core节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CoreNodeSize: Integer
        # @param TaskNodeSize: Task节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskNodeSize: Integer
        # @param ComNodeSize: Common节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComNodeSize: Integer
        # @param MasterResource: Master节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MasterResource: :class:`Tencentcloud::Emr.v20190103.models.OutterResource`
        # @param CoreResource: Core节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CoreResource: :class:`Tencentcloud::Emr.v20190103.models.OutterResource`
        # @param TaskResource: Task节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskResource: :class:`Tencentcloud::Emr.v20190103.models.OutterResource`
        # @param ComResource: Common节点资源
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComResource: :class:`Tencentcloud::Emr.v20190103.models.OutterResource`
        # @param OnCos: 是否使用COS
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OnCos: Boolean
        # @param ChargeType: 收费类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChargeType: Integer
        # @param RouterNodeSize: Router节点个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RouterNodeSize: Integer
        # @param SupportHA: 是否支持HA
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SupportHA: Boolean
        # @param SecurityOn: 是否支持安全模式
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SecurityOn: Boolean
        # @param SecurityGroup: 安全组名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SecurityGroup: String
        # @param CbsEncrypt: 是否开启Cbs加密
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CbsEncrypt: Integer
        # @param ApplicationRole: 自定义应用角色。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApplicationRole: String
        # @param SecurityGroups: 安全组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SecurityGroups: Array
        # @param PublicKeyId: SSH密钥Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PublicKeyId: String

        attr_accessor :SoftInfo, :MasterNodeSize, :CoreNodeSize, :TaskNodeSize, :ComNodeSize, :MasterResource, :CoreResource, :TaskResource, :ComResource, :OnCos, :ChargeType, :RouterNodeSize, :SupportHA, :SecurityOn, :SecurityGroup, :CbsEncrypt, :ApplicationRole, :SecurityGroups, :PublicKeyId

        def initialize(softinfo=nil, masternodesize=nil, corenodesize=nil, tasknodesize=nil, comnodesize=nil, masterresource=nil, coreresource=nil, taskresource=nil, comresource=nil, oncos=nil, chargetype=nil, routernodesize=nil, supportha=nil, securityon=nil, securitygroup=nil, cbsencrypt=nil, applicationrole=nil, securitygroups=nil, publickeyid=nil)
          @SoftInfo = softinfo
          @MasterNodeSize = masternodesize
          @CoreNodeSize = corenodesize
          @TaskNodeSize = tasknodesize
          @ComNodeSize = comnodesize
          @MasterResource = masterresource
          @CoreResource = coreresource
          @TaskResource = taskresource
          @ComResource = comresource
          @OnCos = oncos
          @ChargeType = chargetype
          @RouterNodeSize = routernodesize
          @SupportHA = supportha
          @SecurityOn = securityon
          @SecurityGroup = securitygroup
          @CbsEncrypt = cbsencrypt
          @ApplicationRole = applicationrole
          @SecurityGroups = securitygroups
          @PublicKeyId = publickeyid
        end

        def deserialize(params)
          @SoftInfo = params['SoftInfo']
          @MasterNodeSize = params['MasterNodeSize']
          @CoreNodeSize = params['CoreNodeSize']
          @TaskNodeSize = params['TaskNodeSize']
          @ComNodeSize = params['ComNodeSize']
          unless params['MasterResource'].nil?
            @MasterResource = OutterResource.new
            @MasterResource.deserialize(params['MasterResource'])
          end
          unless params['CoreResource'].nil?
            @CoreResource = OutterResource.new
            @CoreResource.deserialize(params['CoreResource'])
          end
          unless params['TaskResource'].nil?
            @TaskResource = OutterResource.new
            @TaskResource.deserialize(params['TaskResource'])
          end
          unless params['ComResource'].nil?
            @ComResource = OutterResource.new
            @ComResource.deserialize(params['ComResource'])
          end
          @OnCos = params['OnCos']
          @ChargeType = params['ChargeType']
          @RouterNodeSize = params['RouterNodeSize']
          @SupportHA = params['SupportHA']
          @SecurityOn = params['SecurityOn']
          @SecurityGroup = params['SecurityGroup']
          @CbsEncrypt = params['CbsEncrypt']
          @ApplicationRole = params['ApplicationRole']
          @SecurityGroups = params['SecurityGroups']
          @PublicKeyId = params['PublicKeyId']
        end
      end

      # 执行动作。
      class Execution < TencentCloud::Common::AbstractModel
        # @param JobType: 任务类型,目前支持以下类型。
        # 1. “MR”,将通过hadoop jar的方式提交。
        # 2. "HIVE",将通过hive -f的方式提交。
        # 3. "SPARK",将通过spark-submit的方式提交。
        # @type JobType: String
        # @param Args: 任务参数,提供除提交指令以外的参数。
        # @type Args: Array

        attr_accessor :JobType, :Args

        def initialize(jobtype=nil, args=nil)
          @JobType = jobtype
          @Args = args
        end

        def deserialize(params)
          @JobType = params['JobType']
          @Args = params['Args']
        end
      end

      # 共用组件信息
      class ExternalService < TencentCloud::Common::AbstractModel
        # @param ShareType: 共用组件类型,EMR/CUSTOM
        # @type ShareType: String
        # @param CustomServiceDefineList: 自定义参数集合
        # @type CustomServiceDefineList: Array
        # @param Service: 共用组件名
        # @type Service: String
        # @param InstanceId: 共用组件集群
        # @type InstanceId: String

        attr_accessor :ShareType, :CustomServiceDefineList, :Service, :InstanceId

        def initialize(sharetype=nil, customservicedefinelist=nil, service=nil, instanceid=nil)
          @ShareType = sharetype
          @CustomServiceDefineList = customservicedefinelist
          @Service = service
          @InstanceId = instanceid
        end

        def deserialize(params)
          @ShareType = params['ShareType']
          unless params['CustomServiceDefineList'].nil?
            @CustomServiceDefineList = []
            params['CustomServiceDefineList'].each do |i|
              customservicedefine_tmp = CustomServiceDefine.new
              customservicedefine_tmp.deserialize(i)
              @CustomServiceDefineList << customservicedefine_tmp
            end
          end
          @Service = params['Service']
          @InstanceId = params['InstanceId']
        end
      end

      # Emr集群列表实例自定义查询过滤
      class Filters < TencentCloud::Common::AbstractModel
        # @param Name: 字段名称
        # @type Name: String
        # @param Values: 过滤字段值
        # @type Values: Array

        attr_accessor :Name, :Values

        def initialize(name=nil, values=nil)
          @Name = name
          @Values = values
        end

        def deserialize(params)
          @Name = params['Name']
          @Values = params['Values']
        end
      end

      # 流程额外信息
      class FlowExtraDetail < TencentCloud::Common::AbstractModel
        # @param Title: 额外信息Title
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Title: String
        # @param Detail: 额外信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Detail: Array

        attr_accessor :Title, :Detail

        def initialize(title=nil, detail=nil)
          @Title = title
          @Detail = detail
        end

        def deserialize(params)
          @Title = params['Title']
          unless params['Detail'].nil?
            @Detail = []
            params['Detail'].each do |i|
              flowparamsdesc_tmp = FlowParamsDesc.new
              flowparamsdesc_tmp.deserialize(i)
              @Detail << flowparamsdesc_tmp
            end
          end
        end
      end

      # FlowParam流程参数
      class FlowParam < TencentCloud::Common::AbstractModel
        # @param FKey: 流程参数key
        # TraceId:通过TraceId查询
        # FlowId: 通过FlowId查询
        # @type FKey: String
        # @param FValue: 参数value
        # @type FValue: String

        attr_accessor :FKey, :FValue

        def initialize(fkey=nil, fvalue=nil)
          @FKey = fkey
          @FValue = fvalue
        end

        def deserialize(params)
          @FKey = params['FKey']
          @FValue = params['FValue']
        end
      end

      # 任务参数描述
      class FlowParamsDesc < TencentCloud::Common::AbstractModel
        # @param PKey: 参数key
        # @type PKey: String
        # @param PValue: 参数value
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PValue: String

        attr_accessor :PKey, :PValue

        def initialize(pkey=nil, pvalue=nil)
          @PKey = pkey
          @PValue = pvalue
        end

        def deserialize(params)
          @PKey = params['PKey']
          @PValue = params['PValue']
        end
      end

      # 集群所有伸缩组全局参数信息
      class GroupGlobalConfs < TencentCloud::Common::AbstractModel
        # @param GroupGlobalConf: 伸缩组信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupGlobalConf: :class:`Tencentcloud::Emr.v20190103.models.AutoScaleResourceConf`
        # @param CurrentNodes: 当前伸缩组扩容出来的节点数量。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CurrentNodes: Integer
        # @param CurrentPostPaidNodes: 当前伸缩组扩容出来的后付费节点数量。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CurrentPostPaidNodes: Integer
        # @param CurrentSpotPaidNodes: 当前伸缩组扩容出来的竞价实例节点数量。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CurrentSpotPaidNodes: Integer

        attr_accessor :GroupGlobalConf, :CurrentNodes, :CurrentPostPaidNodes, :CurrentSpotPaidNodes

        def initialize(groupglobalconf=nil, currentnodes=nil, currentpostpaidnodes=nil, currentspotpaidnodes=nil)
          @GroupGlobalConf = groupglobalconf
          @CurrentNodes = currentnodes
          @CurrentPostPaidNodes = currentpostpaidnodes
          @CurrentSpotPaidNodes = currentspotpaidnodes
        end

        def deserialize(params)
          unless params['GroupGlobalConf'].nil?
            @GroupGlobalConf = AutoScaleResourceConf.new
            @GroupGlobalConf.deserialize(params['GroupGlobalConf'])
          end
          @CurrentNodes = params['CurrentNodes']
          @CurrentPostPaidNodes = params['CurrentPostPaidNodes']
          @CurrentSpotPaidNodes = params['CurrentSpotPaidNodes']
        end
      end

      # 进程健康状态
      class HealthStatus < TencentCloud::Common::AbstractModel
        # @param Code: 运行正常
        # @type Code: Integer
        # @param Text: 运行正常
        # @type Text: String
        # @param Desc: 运行正常
        # @type Desc: String

        attr_accessor :Code, :Text, :Desc

        def initialize(code=nil, text=nil, desc=nil)
          @Code = code
          @Text = text
          @Desc = desc
        end

        def deserialize(params)
          @Code = params['Code']
          @Text = params['Text']
          @Desc = params['Desc']
        end
      end

      # Hive查询详情
      class HiveQuery < TencentCloud::Common::AbstractModel
        # @param Statement: 查询语句
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Statement: String
        # @param Duration: 执行时长
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Duration: String
        # @param StartTime: 开始时间毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StartTime: Integer
        # @param EndTime: 结束时间毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EndTime: Integer
        # @param State: 状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type State: String
        # @param User: 用户
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type User: String
        # @param JobIds: appId列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type JobIds: Array
        # @param ExecutionEngine: 执行引擎
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExecutionEngine: String
        # @param Id: 查询ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Id: String

        attr_accessor :Statement, :Duration, :StartTime, :EndTime, :State, :User, :JobIds, :ExecutionEngine, :Id

        def initialize(statement=nil, duration=nil, starttime=nil, endtime=nil, state=nil, user=nil, jobids=nil, executionengine=nil, id=nil)
          @Statement = statement
          @Duration = duration
          @StartTime = starttime
          @EndTime = endtime
          @State = state
          @User = user
          @JobIds = jobids
          @ExecutionEngine = executionengine
          @Id = id
        end

        def deserialize(params)
          @Statement = params['Statement']
          @Duration = params['Duration']
          @StartTime = params['StartTime']
          @EndTime = params['EndTime']
          @State = params['State']
          @User = params['User']
          @JobIds = params['JobIds']
          @ExecutionEngine = params['ExecutionEngine']
          @Id = params['Id']
        end
      end

      # Pod HostPath挂载方式描述
      class HostVolumeContext < TencentCloud::Common::AbstractModel
        # @param VolumePath: Pod挂载宿主机的目录。资源对宿主机的挂载点,指定的挂载点对应了宿主机的路径,该挂载点在Pod中作为数据存储目录使用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VolumePath: String

        attr_accessor :VolumePath

        def initialize(volumepath=nil)
          @VolumePath = volumepath
        end

        def deserialize(params)
          @VolumePath = params['VolumePath']
        end
      end

      # Impala查询详情
      class ImpalaQuery < TencentCloud::Common::AbstractModel
        # @param Statement: 执行语句
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Statement: String
        # @param Id: 查询ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Id: String
        # @param StartTime: 开始时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StartTime: Integer
        # @param Duration: 运行时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Duration: String
        # @param EndTime: 结束时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EndTime: Integer
        # @param State: 执行状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type State: String
        # @param RowsFetched: 获取行数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RowsFetched: Integer
        # @param User: 用户
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type User: String
        # @param DefaultDB: 默认DB
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DefaultDB: String
        # @param Coordinator: 执行的Coordinator节点
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Coordinator: String
        # @param MaxNodePeakMemoryUsage: 单节点内存峰值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MaxNodePeakMemoryUsage: String
        # @param QueryType: 查询类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type QueryType: String
        # @param ScanHDFSRows: 扫描的HDFS行数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScanHDFSRows: Integer
        # @param ScanKUDURows: 扫描的Kudu行数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScanKUDURows: Integer
        # @param ScanRowsTotal: 扫描的总行数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScanRowsTotal: Integer
        # @param TotalBytesRead: 读取的总字节数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalBytesRead: Integer
        # @param TotalBytesSent: 发送的总字节数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalBytesSent: Integer
        # @param TotalCpuTime: CPU总时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalCpuTime: Integer
        # @param TotalInnerBytesSent: 内部数据发送总量(Bytes)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalInnerBytesSent: Integer
        # @param TotalScanBytesSent: 内部扫描数据发送总量(Bytes)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalScanBytesSent: Integer
        # @param EstimatedPerHostMemBytes: 预估单节点内存
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EstimatedPerHostMemBytes: Integer
        # @param NumRowsFetchedFromCache: 从缓存中获取的数据行数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NumRowsFetchedFromCache: Integer
        # @param SessionId: 会话ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SessionId: String
        # @param PerNodePeakMemoryBytesSum: 单节点内存峰值和(Bytes)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PerNodePeakMemoryBytesSum: Integer
        # @param BackendsCount: 后端个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type BackendsCount: Integer
        # @param FragmentInstancesCount: fragment数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FragmentInstancesCount: Integer
        # @param RemainingFragmentCount: 剩余未完成Fragment数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RemainingFragmentCount: Integer

        attr_accessor :Statement, :Id, :StartTime, :Duration, :EndTime, :State, :RowsFetched, :User, :DefaultDB, :Coordinator, :MaxNodePeakMemoryUsage, :QueryType, :ScanHDFSRows, :ScanKUDURows, :ScanRowsTotal, :TotalBytesRead, :TotalBytesSent, :TotalCpuTime, :TotalInnerBytesSent, :TotalScanBytesSent, :EstimatedPerHostMemBytes, :NumRowsFetchedFromCache, :SessionId, :PerNodePeakMemoryBytesSum, :BackendsCount, :FragmentInstancesCount, :RemainingFragmentCount

        def initialize(statement=nil, id=nil, starttime=nil, duration=nil, endtime=nil, state=nil, rowsfetched=nil, user=nil, defaultdb=nil, coordinator=nil, maxnodepeakmemoryusage=nil, querytype=nil, scanhdfsrows=nil, scankudurows=nil, scanrowstotal=nil, totalbytesread=nil, totalbytessent=nil, totalcputime=nil, totalinnerbytessent=nil, totalscanbytessent=nil, estimatedperhostmembytes=nil, numrowsfetchedfromcache=nil, sessionid=nil, pernodepeakmemorybytessum=nil, backendscount=nil, fragmentinstancescount=nil, remainingfragmentcount=nil)
          @Statement = statement
          @Id = id
          @StartTime = starttime
          @Duration = duration
          @EndTime = endtime
          @State = state
          @RowsFetched = rowsfetched
          @User = user
          @DefaultDB = defaultdb
          @Coordinator = coordinator
          @MaxNodePeakMemoryUsage = maxnodepeakmemoryusage
          @QueryType = querytype
          @ScanHDFSRows = scanhdfsrows
          @ScanKUDURows = scankudurows
          @ScanRowsTotal = scanrowstotal
          @TotalBytesRead = totalbytesread
          @TotalBytesSent = totalbytessent
          @TotalCpuTime = totalcputime
          @TotalInnerBytesSent = totalinnerbytessent
          @TotalScanBytesSent = totalscanbytessent
          @EstimatedPerHostMemBytes = estimatedperhostmembytes
          @NumRowsFetchedFromCache = numrowsfetchedfromcache
          @SessionId = sessionid
          @PerNodePeakMemoryBytesSum = pernodepeakmemorybytessum
          @BackendsCount = backendscount
          @FragmentInstancesCount = fragmentinstancescount
          @RemainingFragmentCount = remainingfragmentcount
        end

        def deserialize(params)
          @Statement = params['Statement']
          @Id = params['Id']
          @StartTime = params['StartTime']
          @Duration = params['Duration']
          @EndTime = params['EndTime']
          @State = params['State']
          @RowsFetched = params['RowsFetched']
          @User = params['User']
          @DefaultDB = params['DefaultDB']
          @Coordinator = params['Coordinator']
          @MaxNodePeakMemoryUsage = params['MaxNodePeakMemoryUsage']
          @QueryType = params['QueryType']
          @ScanHDFSRows = params['ScanHDFSRows']
          @ScanKUDURows = params['ScanKUDURows']
          @ScanRowsTotal = params['ScanRowsTotal']
          @TotalBytesRead = params['TotalBytesRead']
          @TotalBytesSent = params['TotalBytesSent']
          @TotalCpuTime = params['TotalCpuTime']
          @TotalInnerBytesSent = params['TotalInnerBytesSent']
          @TotalScanBytesSent = params['TotalScanBytesSent']
          @EstimatedPerHostMemBytes = params['EstimatedPerHostMemBytes']
          @NumRowsFetchedFromCache = params['NumRowsFetchedFromCache']
          @SessionId = params['SessionId']
          @PerNodePeakMemoryBytesSum = params['PerNodePeakMemoryBytesSum']
          @BackendsCount = params['BackendsCount']
          @FragmentInstancesCount = params['FragmentInstancesCount']
          @RemainingFragmentCount = params['RemainingFragmentCount']
        end
      end

      # InquirePriceRenewEmr请求参数结构体
      class InquirePriceRenewEmrRequest < TencentCloud::Common::AbstractModel
        # @param TimeSpan: 实例续费的时长。需要结合TimeUnit一起使用。1表示续费一个月
        # @type TimeSpan: Integer
        # @param InstanceId: 待续费集群ID列表。
        # @type InstanceId: String
        # @param Placement: 实例所在的位置。通过该参数可以指定实例所属可用区,所属项目等属性。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param PayMode: 实例计费模式。此处只支持取值为1,表示包年包月。
        # @type PayMode: Integer
        # @param TimeUnit: 实例续费的时间单位。取值范围:
        # <li>m:表示月份。</li>
        # @type TimeUnit: String
        # @param Currency: 货币种类。取值范围:
        # <li>CNY:表示人民币。</li>
        # @type Currency: String

        attr_accessor :TimeSpan, :InstanceId, :Placement, :PayMode, :TimeUnit, :Currency

        def initialize(timespan=nil, instanceid=nil, placement=nil, paymode=nil, timeunit=nil, currency=nil)
          @TimeSpan = timespan
          @InstanceId = instanceid
          @Placement = placement
          @PayMode = paymode
          @TimeUnit = timeunit
          @Currency = currency
        end

        def deserialize(params)
          @TimeSpan = params['TimeSpan']
          @InstanceId = params['InstanceId']
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          @PayMode = params['PayMode']
          @TimeUnit = params['TimeUnit']
          @Currency = params['Currency']
        end
      end

      # InquirePriceRenewEmr返回参数结构体
      class InquirePriceRenewEmrResponse < TencentCloud::Common::AbstractModel
        # @param OriginalCost: 原价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OriginalCost: Float
        # @param DiscountCost: 折扣价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiscountCost: Float
        # @param TimeUnit: 实例续费的时间单位。取值范围:
        # <li>m:表示月份。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeUnit: String
        # @param TimeSpan: 实例续费的时长。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeSpan: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OriginalCost, :DiscountCost, :TimeUnit, :TimeSpan, :RequestId

        def initialize(originalcost=nil, discountcost=nil, timeunit=nil, timespan=nil, requestid=nil)
          @OriginalCost = originalcost
          @DiscountCost = discountcost
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @RequestId = requestid
        end

        def deserialize(params)
          @OriginalCost = params['OriginalCost']
          @DiscountCost = params['DiscountCost']
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          @RequestId = params['RequestId']
        end
      end

      # InquiryPriceCreateInstance请求参数结构体
      class InquiryPriceCreateInstanceRequest < TencentCloud::Common::AbstractModel
        # @param TimeUnit: 购买实例的时间单位。取值范围:
        # <li>s:表示秒。PayMode取值为0时,TimeUnit只能取值为s。</li>
        # <li>m:表示月份。PayMode取值为1时,TimeUnit只能取值为m。</li>
        # @type TimeUnit: String
        # @param TimeSpan: 购买实例的时长。结合TimeUnit一起使用。
        # <li>TimeUnit为s时,该参数只能填写3600,表示按量计费实例。</li>
        # <li>TimeUnit为m时,该参数填写的数字表示包年包月实例的购买时长,如1表示购买一个月</li>
        # @type TimeSpan: Integer
        # @param Currency: 货币种类。取值范围:
        # <li>CNY:表示人民币。</li>
        # @type Currency: String
        # @param PayMode: 实例计费模式。取值范围:
        # <li>0:表示按量计费。</li>
        # <li>1:表示包年包月。</li>
        # @type PayMode: Integer
        # @param SupportHA: 是否开启节点高可用。取值范围:
        # <li>0:表示不开启节点高可用。</li>
        # <li>1:表示开启节点高可用。</li>
        # @type SupportHA: Integer
        # @param Software: 部署的组件列表。不同的EMR产品ID(ProductId:具体含义参考入参ProductId字段)需要选择不同的必选组件:<li>ProductId为2(EMR-V2.0.1)的时候,必选组件包括:hdfs-2.7.3,yarn-2.7.3,zookeeper-3.4.9,knox-1.2.0</li><li>ProductId为16(EMR-V2.3.0)的时候,必选组件包括:hdfs-2.8.5,yarn-2.8.5,zookeeper-3.5.5,knox-1.2.0</li><li>ProductId为20(EMR-V2.5.0)的时候,必选组件包括:hdfs-2.8.5,yarn-2.8.5,zookeeper-3.6.1,knox-1.2.0</li><li>ProductId为30(EMR-V2.6.0)的时候,必选组件包括:hdfs-2.8.5,yarn-2.8.5,zookeeper-3.6.1,openldap-2.4.44,knox-1.2.0</li><li>ProductId为38(EMR-V2.7.0)的时候,必选组件包括:hdfs-2.8.5,yarn-2.8.5,zookeeper-3.6.3,openldap-2.4.44,knox-1.6.1</li><li>ProductId为57(EMR-V2.8.0)的时候,必选组件包括:hdfs-2.8.5,yarn-2.8.5,zookeeper-3.6.3,openldap-2.4.44,knox-1.6.1</li><li>ProductId为7(EMR-V3.0.0)的时候,必选组件包括:hdfs-3.1.2,yarn-3.1.2,zookeeper-3.4.9,knox-1.2.0</li><li>ProductId为25(EMR-V3.1.0)的时候,必选组件包括:hdfs-3.1.2,yarn-3.1.2,zookeeper-3.6.1,knox-1.2.0</li><li>ProductId为31(EMR-V3.1.1)的时候,必选组件包括:hdfs-3.1.2,yarn-3.1.2,zookeeper-3.6.1,knox-1.2.0</li><li>ProductId为28(EMR-V3.2.0)的时候,必选组件包括:hdfs-3.2.2,yarn-3.2.2,zookeeper-3.6.1,knox-1.2.0</li><li>ProductId为33(EMR-V3.2.1)的时候,必选组件包括:hdfs-3.2.2,yarn-3.2.2,zookeeper-3.6.1,openldap-2.4.44,knox-1.2.0</li><li>ProductId为34(EMR-V3.3.0)的时候,必选组件包括:hdfs-3.2.2,yarn-3.2.2,zookeeper-3.6.1,openldap-2.4.44,knox-1.2.0</li><li>ProductId为37(EMR-V3.4.0)的时候,必选组件包括:hdfs-3.2.2,yarn-3.2.2,zookeeper-3.6.3,openldap-2.4.44,knox-1.6.1</li><li>ProductId为44(EMR-V3.5.0)的时候,必选组件包括:hdfs-3.2.2,yarn-3.2.2,zookeeper-3.6.3,openldap-2.4.44,knox-1.6.1</li><li>ProductId为53(EMR-V3.6.0)的时候,必选组件包括:hdfs-3.2.2,yarn-3.2.2,zookeeper-3.6.3,openldap-2.4.44,knox-1.6.1</li><li>ProductId为58(EMR-V3.6.1)的时候,必选组件包括:hdfs-3.2.2,yarn-3.2.2,zookeeper-3.6.3,openldap-2.4.46,knox-1.6.1</li><li>ProductId为47(EMR-V4.0.0)的时候,必选组件包括:hdfs-3.2.2,yarn-3.2.2,zookeeper-3.6.3,openldap-2.4.44,knox-1.6.1</li>
        # @type Software: Array
        # @param ResourceSpec: 询价的节点规格。
        # @type ResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NewResourceSpec`
        # @param Placement: 实例所在的位置。通过该参数可以指定实例所属可用区,所属项目等属性。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param VPCSettings: 私有网络相关信息配置。通过该参数可以指定私有网络的ID,子网ID等信息。
        # @type VPCSettings: :class:`Tencentcloud::Emr.v20190103.models.VPCSettings`
        # @param MetaType: hive共享元数据库类型。取值范围:
        # <li>EMR_NEW_META:表示集群默认创建</li>
        # <li>EMR_EXIT_METE:表示集群使用指定EMR-MetaDB。</li>
        # <li>USER_CUSTOM_META:表示集群使用自定义MetaDB。</li>
        # @type MetaType: String
        # @param UnifyMetaInstanceId: EMR-MetaDB实例
        # @type UnifyMetaInstanceId: String
        # @param MetaDBInfo: 自定义MetaDB信息
        # @type MetaDBInfo: :class:`Tencentcloud::Emr.v20190103.models.CustomMetaInfo`
        # @param ProductId: 产品ID,不同产品ID表示不同的EMR产品版本。取值范围:<li>2:表示EMR-V2.0.1</li><li>16:表示EMR-V2.3.0</li><li>20:表示EMR-V2.5.0</li><li>30:表示EMR-V2.6.0</li><li>38:表示EMR-V2.7.0</li><li>57:表示EMR-V2.8.0</li><li>7:表示EMR-V3.0.0</li><li>25:表示EMR-V3.1.0</li><li>31:表示EMR-V3.1.1</li><li>28:表示EMR-V3.2.0</li><li>33:表示EMR-V3.2.1</li><li>34:表示EMR-V3.3.0</li><li>37:表示EMR-V3.4.0</li><li>44:表示EMR-V3.5.0</li><li>53:表示EMR-V3.6.0</li><li>58:表示EMR-V3.6.1</li><li>47:表示EMR-V4.0.0</li>
        # @type ProductId: Integer
        # @param SceneName: 场景化取值:
        # Hadoop-Kudu
        # Hadoop-Zookeeper
        # Hadoop-Presto
        # Hadoop-Hbase
        # @type SceneName: String
        # @param ExternalService: 共用组件信息
        # @type ExternalService: Array
        # @param VersionID: 当前默认值为0,跨AZ特性支持后为1
        # @type VersionID: Integer
        # @param MultiZoneSettings: 可用区的规格信息
        # @type MultiZoneSettings: Array

        attr_accessor :TimeUnit, :TimeSpan, :Currency, :PayMode, :SupportHA, :Software, :ResourceSpec, :Placement, :VPCSettings, :MetaType, :UnifyMetaInstanceId, :MetaDBInfo, :ProductId, :SceneName, :ExternalService, :VersionID, :MultiZoneSettings

        def initialize(timeunit=nil, timespan=nil, currency=nil, paymode=nil, supportha=nil, software=nil, resourcespec=nil, placement=nil, vpcsettings=nil, metatype=nil, unifymetainstanceid=nil, metadbinfo=nil, productid=nil, scenename=nil, externalservice=nil, versionid=nil, multizonesettings=nil)
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @Currency = currency
          @PayMode = paymode
          @SupportHA = supportha
          @Software = software
          @ResourceSpec = resourcespec
          @Placement = placement
          @VPCSettings = vpcsettings
          @MetaType = metatype
          @UnifyMetaInstanceId = unifymetainstanceid
          @MetaDBInfo = metadbinfo
          @ProductId = productid
          @SceneName = scenename
          @ExternalService = externalservice
          @VersionID = versionid
          @MultiZoneSettings = multizonesettings
        end

        def deserialize(params)
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          @Currency = params['Currency']
          @PayMode = params['PayMode']
          @SupportHA = params['SupportHA']
          @Software = params['Software']
          unless params['ResourceSpec'].nil?
            @ResourceSpec = NewResourceSpec.new
            @ResourceSpec.deserialize(params['ResourceSpec'])
          end
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          unless params['VPCSettings'].nil?
            @VPCSettings = VPCSettings.new
            @VPCSettings.deserialize(params['VPCSettings'])
          end
          @MetaType = params['MetaType']
          @UnifyMetaInstanceId = params['UnifyMetaInstanceId']
          unless params['MetaDBInfo'].nil?
            @MetaDBInfo = CustomMetaInfo.new
            @MetaDBInfo.deserialize(params['MetaDBInfo'])
          end
          @ProductId = params['ProductId']
          @SceneName = params['SceneName']
          unless params['ExternalService'].nil?
            @ExternalService = []
            params['ExternalService'].each do |i|
              externalservice_tmp = ExternalService.new
              externalservice_tmp.deserialize(i)
              @ExternalService << externalservice_tmp
            end
          end
          @VersionID = params['VersionID']
          unless params['MultiZoneSettings'].nil?
            @MultiZoneSettings = []
            params['MultiZoneSettings'].each do |i|
              multizonesetting_tmp = MultiZoneSetting.new
              multizonesetting_tmp.deserialize(i)
              @MultiZoneSettings << multizonesetting_tmp
            end
          end
        end
      end

      # InquiryPriceCreateInstance返回参数结构体
      class InquiryPriceCreateInstanceResponse < TencentCloud::Common::AbstractModel
        # @param OriginalCost: 原价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OriginalCost: Float
        # @param DiscountCost: 折扣价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiscountCost: Float
        # @param TimeUnit: 购买实例的时间单位。取值范围:
        # <li>s:表示秒。</li>
        # <li>m:表示月份。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeUnit: String
        # @param TimeSpan: 购买实例的时长。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeSpan: Integer
        # @param PriceList: 价格清单
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PriceList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OriginalCost, :DiscountCost, :TimeUnit, :TimeSpan, :PriceList, :RequestId

        def initialize(originalcost=nil, discountcost=nil, timeunit=nil, timespan=nil, pricelist=nil, requestid=nil)
          @OriginalCost = originalcost
          @DiscountCost = discountcost
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @PriceList = pricelist
          @RequestId = requestid
        end

        def deserialize(params)
          @OriginalCost = params['OriginalCost']
          @DiscountCost = params['DiscountCost']
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          unless params['PriceList'].nil?
            @PriceList = []
            params['PriceList'].each do |i|
              zonedetailpriceresult_tmp = ZoneDetailPriceResult.new
              zonedetailpriceresult_tmp.deserialize(i)
              @PriceList << zonedetailpriceresult_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # InquiryPriceRenewInstance请求参数结构体
      class InquiryPriceRenewInstanceRequest < TencentCloud::Common::AbstractModel
        # @param TimeSpan: 实例续费的时长。需要结合TimeUnit一起使用。1表示续费一个月
        # @type TimeSpan: Integer
        # @param ResourceIds: 待续费节点的资源ID列表。资源ID形如:emr-vm-xxxxxxxx。有效的资源ID可通过登录[控制台](https://console.cloud.tencent.com/emr)查询。
        # @type ResourceIds: Array
        # @param PayMode: 实例计费模式。此处只支持取值为1,表示包年包月。
        # @type PayMode: Integer
        # @param TimeUnit: 实例续费的时间单位。取值范围:
        # <li>m:表示月份。</li>
        # @type TimeUnit: String
        # @param Currency: 货币种类。取值范围:
        # <li>CNY:表示人民币。</li>
        # @type Currency: String
        # @param Placement: 实例所在的位置。通过该参数可以指定实例所属可用区,所属项目等属性。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param ModifyPayMode: 是否按量转包年包月。0:否,1:是。
        # @type ModifyPayMode: Integer

        attr_accessor :TimeSpan, :ResourceIds, :PayMode, :TimeUnit, :Currency, :Placement, :ModifyPayMode

        def initialize(timespan=nil, resourceids=nil, paymode=nil, timeunit=nil, currency=nil, placement=nil, modifypaymode=nil)
          @TimeSpan = timespan
          @ResourceIds = resourceids
          @PayMode = paymode
          @TimeUnit = timeunit
          @Currency = currency
          @Placement = placement
          @ModifyPayMode = modifypaymode
        end

        def deserialize(params)
          @TimeSpan = params['TimeSpan']
          @ResourceIds = params['ResourceIds']
          @PayMode = params['PayMode']
          @TimeUnit = params['TimeUnit']
          @Currency = params['Currency']
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          @ModifyPayMode = params['ModifyPayMode']
        end
      end

      # InquiryPriceRenewInstance返回参数结构体
      class InquiryPriceRenewInstanceResponse < TencentCloud::Common::AbstractModel
        # @param OriginalCost: 原价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OriginalCost: Float
        # @param DiscountCost: 折扣价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiscountCost: Float
        # @param TimeUnit: 实例续费的时间单位。取值范围:
        # <li>m:表示月份。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeUnit: String
        # @param TimeSpan: 实例续费的时长。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeSpan: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OriginalCost, :DiscountCost, :TimeUnit, :TimeSpan, :RequestId

        def initialize(originalcost=nil, discountcost=nil, timeunit=nil, timespan=nil, requestid=nil)
          @OriginalCost = originalcost
          @DiscountCost = discountcost
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @RequestId = requestid
        end

        def deserialize(params)
          @OriginalCost = params['OriginalCost']
          @DiscountCost = params['DiscountCost']
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          @RequestId = params['RequestId']
        end
      end

      # InquiryPriceScaleOutInstance请求参数结构体
      class InquiryPriceScaleOutInstanceRequest < TencentCloud::Common::AbstractModel
        # @param TimeUnit: 扩容的时间单位。取值范围:
        # <li>s:表示秒。PayMode取值为0时,TimeUnit只能取值为s。</li>
        # <li>m:表示月份。PayMode取值为1时,TimeUnit只能取值为m。</li>
        # @type TimeUnit: String
        # @param TimeSpan: 扩容的时长。结合TimeUnit一起使用。
        # <li>TimeUnit为s时,该参数只能填写3600,表示按量计费实例。</li>
        # <li>TimeUnit为m时,该参数填写的数字表示包年包月实例的购买时长,如1表示购买一个月</li>
        # @type TimeSpan: Integer
        # @param ZoneId: 实例所属的可用区ID,例如100003。该参数可以通过调用 [DescribeZones](https://cloud.tencent.com/document/api/213/15707) 的返回值中的ZoneId字段来获取。
        # @type ZoneId: Integer
        # @param PayMode: 实例计费模式。取值范围:
        # <li>0:表示按量计费。</li>
        # <li>1:表示包年包月。</li>
        # @type PayMode: Integer
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param CoreCount: 扩容的Core节点数量。
        # @type CoreCount: Integer
        # @param TaskCount: 扩容的Task节点数量。
        # @type TaskCount: Integer
        # @param Currency: 货币种类。取值范围:
        # <li>CNY:表示人民币。</li>
        # @type Currency: String
        # @param RouterCount: 扩容的Router节点数量。
        # @type RouterCount: Integer
        # @param MasterCount: 扩容的Master节点数量。
        # @type MasterCount: Integer
        # @param ResourceBaseType: 类型为ComputeResource和EMR以及默认,默认为EMR
        # @type ResourceBaseType: String
        # @param ComputeResourceId: 计算资源id
        # @type ComputeResourceId: String
        # @param HardwareResourceType: 扩容资源类型
        # @type HardwareResourceType: String

        attr_accessor :TimeUnit, :TimeSpan, :ZoneId, :PayMode, :InstanceId, :CoreCount, :TaskCount, :Currency, :RouterCount, :MasterCount, :ResourceBaseType, :ComputeResourceId, :HardwareResourceType

        def initialize(timeunit=nil, timespan=nil, zoneid=nil, paymode=nil, instanceid=nil, corecount=nil, taskcount=nil, currency=nil, routercount=nil, mastercount=nil, resourcebasetype=nil, computeresourceid=nil, hardwareresourcetype=nil)
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @ZoneId = zoneid
          @PayMode = paymode
          @InstanceId = instanceid
          @CoreCount = corecount
          @TaskCount = taskcount
          @Currency = currency
          @RouterCount = routercount
          @MasterCount = mastercount
          @ResourceBaseType = resourcebasetype
          @ComputeResourceId = computeresourceid
          @HardwareResourceType = hardwareresourcetype
        end

        def deserialize(params)
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          @ZoneId = params['ZoneId']
          @PayMode = params['PayMode']
          @InstanceId = params['InstanceId']
          @CoreCount = params['CoreCount']
          @TaskCount = params['TaskCount']
          @Currency = params['Currency']
          @RouterCount = params['RouterCount']
          @MasterCount = params['MasterCount']
          @ResourceBaseType = params['ResourceBaseType']
          @ComputeResourceId = params['ComputeResourceId']
          @HardwareResourceType = params['HardwareResourceType']
        end
      end

      # InquiryPriceScaleOutInstance返回参数结构体
      class InquiryPriceScaleOutInstanceResponse < TencentCloud::Common::AbstractModel
        # @param OriginalCost: 原价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OriginalCost: String
        # @param DiscountCost: 折扣价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiscountCost: String
        # @param Unit: 扩容的时间单位。取值范围:
        # <li>s:表示秒。</li>
        # <li>m:表示月份。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Unit: String
        # @param PriceSpec: 询价的节点规格。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PriceSpec: :class:`Tencentcloud::Emr.v20190103.models.PriceResource`
        # @param MultipleEmrPrice: 对应入参MultipleResources中多个规格的询价结果,其它出参返回的是第一个规格的询价结果
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MultipleEmrPrice: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OriginalCost, :DiscountCost, :Unit, :PriceSpec, :MultipleEmrPrice, :RequestId

        def initialize(originalcost=nil, discountcost=nil, unit=nil, pricespec=nil, multipleemrprice=nil, requestid=nil)
          @OriginalCost = originalcost
          @DiscountCost = discountcost
          @Unit = unit
          @PriceSpec = pricespec
          @MultipleEmrPrice = multipleemrprice
          @RequestId = requestid
        end

        def deserialize(params)
          @OriginalCost = params['OriginalCost']
          @DiscountCost = params['DiscountCost']
          @Unit = params['Unit']
          unless params['PriceSpec'].nil?
            @PriceSpec = PriceResource.new
            @PriceSpec.deserialize(params['PriceSpec'])
          end
          unless params['MultipleEmrPrice'].nil?
            @MultipleEmrPrice = []
            params['MultipleEmrPrice'].each do |i|
              emrprice_tmp = EmrPrice.new
              emrprice_tmp.deserialize(i)
              @MultipleEmrPrice << emrprice_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # InquiryPriceUpdateInstance请求参数结构体
      class InquiryPriceUpdateInstanceRequest < TencentCloud::Common::AbstractModel
        # @param TimeUnit: 变配的时间单位。取值范围:
        # <li>s:表示秒。PayMode取值为0时,TimeUnit只能取值为s。</li>
        # <li>m:表示月份。PayMode取值为1时,TimeUnit只能取值为m。</li>
        # @type TimeUnit: String
        # @param TimeSpan: 变配的时长。结合TimeUnit一起使用。
        # <li>TimeUnit为s时,该参数只能填写3600,表示按量计费实例。</li>
        # <li>TimeUnit为m时,该参数填写的数字表示包年包月实例的购买时长,如1表示购买一个月</li>
        # @type TimeSpan: Integer
        # @param PayMode: 实例计费模式。取值范围:
        # <li>0:表示按量计费。</li>
        # <li>1:表示包年包月。</li>
        # @type PayMode: Integer
        # @param UpdateSpec: 节点变配的目标配置。
        # @type UpdateSpec: :class:`Tencentcloud::Emr.v20190103.models.UpdateInstanceSettings`
        # @param Placement: 实例所在的位置。通过该参数可以指定实例所属可用区,所属项目等属性。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param Currency: 货币种类。取值范围:
        # <li>CNY:表示人民币。</li>
        # @type Currency: String
        # @param ResourceIdList: 批量变配资源ID列表
        # @type ResourceIdList: Array

        attr_accessor :TimeUnit, :TimeSpan, :PayMode, :UpdateSpec, :Placement, :Currency, :ResourceIdList

        def initialize(timeunit=nil, timespan=nil, paymode=nil, updatespec=nil, placement=nil, currency=nil, resourceidlist=nil)
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @PayMode = paymode
          @UpdateSpec = updatespec
          @Placement = placement
          @Currency = currency
          @ResourceIdList = resourceidlist
        end

        def deserialize(params)
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          @PayMode = params['PayMode']
          unless params['UpdateSpec'].nil?
            @UpdateSpec = UpdateInstanceSettings.new
            @UpdateSpec.deserialize(params['UpdateSpec'])
          end
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          @Currency = params['Currency']
          @ResourceIdList = params['ResourceIdList']
        end
      end

      # InquiryPriceUpdateInstance返回参数结构体
      class InquiryPriceUpdateInstanceResponse < TencentCloud::Common::AbstractModel
        # @param OriginalCost: 原价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OriginalCost: Float
        # @param DiscountCost: 折扣价,单位为元。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiscountCost: Float
        # @param TimeUnit: 变配的时间单位。取值范围:
        # <li>s:表示秒。</li>
        # <li>m:表示月份。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeUnit: String
        # @param TimeSpan: 变配的时长。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeSpan: Integer
        # @param PriceDetail: 价格详情
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PriceDetail: Array
        # @param NewConfigPrice: 新配置价格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NewConfigPrice: :class:`Tencentcloud::Emr.v20190103.models.PriceResult`
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OriginalCost, :DiscountCost, :TimeUnit, :TimeSpan, :PriceDetail, :NewConfigPrice, :RequestId

        def initialize(originalcost=nil, discountcost=nil, timeunit=nil, timespan=nil, pricedetail=nil, newconfigprice=nil, requestid=nil)
          @OriginalCost = originalcost
          @DiscountCost = discountcost
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @PriceDetail = pricedetail
          @NewConfigPrice = newconfigprice
          @RequestId = requestid
        end

        def deserialize(params)
          @OriginalCost = params['OriginalCost']
          @DiscountCost = params['DiscountCost']
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          unless params['PriceDetail'].nil?
            @PriceDetail = []
            params['PriceDetail'].each do |i|
              pricedetail_tmp = PriceDetail.new
              pricedetail_tmp.deserialize(i)
              @PriceDetail << pricedetail_tmp
            end
          end
          unless params['NewConfigPrice'].nil?
            @NewConfigPrice = PriceResult.new
            @NewConfigPrice.deserialize(params['NewConfigPrice'])
          end
          @RequestId = params['RequestId']
        end
      end

      # 洞察结果项
      class InsightResult < TencentCloud::Common::AbstractModel
        # @param ID: 当Type为HIVE时,是Hive查询ID,当Type为MAPREDUCE,SPARK,TEZ时则是YarnAppID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ID: String
        # @param Type: 洞察应用的类型,HIVE,SPARK,MAPREDUCE,TEZ
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Type: String
        # @param RuleID: 洞察规则ID
        # HIVE-ScanManyMeta:元数据扫描过多
        # HIVE-ScanManyPartition:大表扫描
        # HIVE-SlowCompile:编译耗时过长
        # HIVE-UnSuitableConfig:不合理参数
        # MAPREDUCE-MapperDataSkew:Map数据倾斜
        # MAPREDUCE-MapperMemWaste:MapMemory资源浪费
        # MAPREDUCE-MapperSlowTask:Map慢Task
        # MAPREDUCE-MapperTaskGC:MapperTaskGC
        # MAPREDUCE-MemExceeded:峰值内存超限
        # MAPREDUCE-ReducerDataSkew:Reduce数据倾斜
        # MAPREDUCE-ReducerMemWaste:ReduceMemory资源浪费
        # MAPREDUCE-ReducerSlowTask:Reduce慢Task
        # MAPREDUCE-ReducerTaskGC:ReducerTaskGC
        # MAPREDUCE-SchedulingDelay:调度延迟
        # SPARK-CpuWaste:CPU资源浪费
        # SPARK-DataSkew:数据倾斜
        # SPARK-ExecutorGC:ExecutorGC
        # SPARK-MemExceeded:峰值内存超限
        # SPARK-MemWaste:Memory资源浪费
        # SPARK-ScheduleOverhead:ScheduleOverhead
        # SPARK-ScheduleSkew:调度倾斜
        # SPARK-SlowTask:慢Task
        # TEZ-DataSkew:数据倾斜
        # TEZ-MapperDataSkew:Map数据倾斜
        # TEZ-ReducerDataSkew:Reduce数据倾斜
        # TEZ-TezMemWaste:Memory资源浪费
        # TEZ-TezSlowTask:慢Task
        # TEZ-TezTaskGC:TasksGC
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RuleID: String
        # @param RuleName: 洞察规则名字,可参考RuleID的说明
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RuleName: String
        # @param RuleExplain: 洞察规则解释
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RuleExplain: String
        # @param Detail: 详情
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Detail: String
        # @param Suggestion: 建议信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Suggestion: String
        # @param Value: 洞察异常衡量值,同类型的洞察项越大越严重,不同类型的洞察项无对比意义
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Value: Integer
        # @param ScheduleTaskExecID: 调度任务执行ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScheduleTaskExecID: String
        # @param ScheduleFlowName: 调度流,DAG
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScheduleFlowName: String
        # @param ScheduleTaskName: 调度flow中的某个task节点
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScheduleTaskName: String
        # @param JobConf: Yarn任务的部分核心配置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type JobConf: String

        attr_accessor :ID, :Type, :RuleID, :RuleName, :RuleExplain, :Detail, :Suggestion, :Value, :ScheduleTaskExecID, :ScheduleFlowName, :ScheduleTaskName, :JobConf

        def initialize(id=nil, type=nil, ruleid=nil, rulename=nil, ruleexplain=nil, detail=nil, suggestion=nil, value=nil, scheduletaskexecid=nil, scheduleflowname=nil, scheduletaskname=nil, jobconf=nil)
          @ID = id
          @Type = type
          @RuleID = ruleid
          @RuleName = rulename
          @RuleExplain = ruleexplain
          @Detail = detail
          @Suggestion = suggestion
          @Value = value
          @ScheduleTaskExecID = scheduletaskexecid
          @ScheduleFlowName = scheduleflowname
          @ScheduleTaskName = scheduletaskname
          @JobConf = jobconf
        end

        def deserialize(params)
          @ID = params['ID']
          @Type = params['Type']
          @RuleID = params['RuleID']
          @RuleName = params['RuleName']
          @RuleExplain = params['RuleExplain']
          @Detail = params['Detail']
          @Suggestion = params['Suggestion']
          @Value = params['Value']
          @ScheduleTaskExecID = params['ScheduleTaskExecID']
          @ScheduleFlowName = params['ScheduleFlowName']
          @ScheduleTaskName = params['ScheduleTaskName']
          @JobConf = params['JobConf']
        end
      end

      # 实例预付费参数,只有在付费类型为PREPAID时生效。
      class InstanceChargePrepaid < TencentCloud::Common::AbstractModel
        # @param Period: 包年包月时间,默认为1,单位:月。
        # 取值范围:1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 12, 24, 36, 48, 60。
        # @type Period: Integer
        # @param RenewFlag: 是否自动续费,默认为否。
        # <li>true:是</li>
        # <li>false:否</li>
        # @type RenewFlag: Boolean

        attr_accessor :Period, :RenewFlag

        def initialize(period=nil, renewflag=nil)
          @Period = period
          @RenewFlag = renewflag
        end

        def deserialize(params)
          @Period = params['Period']
          @RenewFlag = params['RenewFlag']
        end
      end

      # 机器资源描述。
      class JobFlowResource < TencentCloud::Common::AbstractModel
        # @param Spec: 机器类型描述。
        # @type Spec: String
        # @param InstanceType: 机器类型描述,可参考CVM的该含义。
        # @type InstanceType: String
        # @param Tags: 标签KV对。
        # @type Tags: Array
        # @param DiskGroups: 磁盘描述列表。
        # @type DiskGroups: Array

        attr_accessor :Spec, :InstanceType, :Tags, :DiskGroups

        def initialize(spec=nil, instancetype=nil, tags=nil, diskgroups=nil)
          @Spec = spec
          @InstanceType = instancetype
          @Tags = tags
          @DiskGroups = diskgroups
        end

        def deserialize(params)
          @Spec = params['Spec']
          @InstanceType = params['InstanceType']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          unless params['DiskGroups'].nil?
            @DiskGroups = []
            params['DiskGroups'].each do |i|
              diskgroup_tmp = DiskGroup.new
              diskgroup_tmp.deserialize(i)
              @DiskGroups << diskgroup_tmp
            end
          end
        end
      end

      # 流程作业资源描述
      class JobFlowResourceSpec < TencentCloud::Common::AbstractModel
        # @param MasterCount: 主节点数量。
        # @type MasterCount: Integer
        # @param MasterResourceSpec: 主节点配置。
        # @type MasterResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.JobFlowResource`
        # @param CoreCount: Core节点数量
        # @type CoreCount: Integer
        # @param CoreResourceSpec: Core节点配置。
        # @type CoreResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.JobFlowResource`
        # @param TaskCount: Task节点数量。
        # @type TaskCount: Integer
        # @param CommonCount: Common节点数量。
        # @type CommonCount: Integer
        # @param TaskResourceSpec: Task节点配置。
        # @type TaskResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.JobFlowResource`
        # @param CommonResourceSpec: Common节点配置。
        # @type CommonResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.JobFlowResource`

        attr_accessor :MasterCount, :MasterResourceSpec, :CoreCount, :CoreResourceSpec, :TaskCount, :CommonCount, :TaskResourceSpec, :CommonResourceSpec

        def initialize(mastercount=nil, masterresourcespec=nil, corecount=nil, coreresourcespec=nil, taskcount=nil, commoncount=nil, taskresourcespec=nil, commonresourcespec=nil)
          @MasterCount = mastercount
          @MasterResourceSpec = masterresourcespec
          @CoreCount = corecount
          @CoreResourceSpec = coreresourcespec
          @TaskCount = taskcount
          @CommonCount = commoncount
          @TaskResourceSpec = taskresourcespec
          @CommonResourceSpec = commonresourcespec
        end

        def deserialize(params)
          @MasterCount = params['MasterCount']
          unless params['MasterResourceSpec'].nil?
            @MasterResourceSpec = JobFlowResource.new
            @MasterResourceSpec.deserialize(params['MasterResourceSpec'])
          end
          @CoreCount = params['CoreCount']
          unless params['CoreResourceSpec'].nil?
            @CoreResourceSpec = JobFlowResource.new
            @CoreResourceSpec.deserialize(params['CoreResourceSpec'])
          end
          @TaskCount = params['TaskCount']
          @CommonCount = params['CommonCount']
          unless params['TaskResourceSpec'].nil?
            @TaskResourceSpec = JobFlowResource.new
            @TaskResourceSpec.deserialize(params['TaskResourceSpec'])
          end
          unless params['CommonResourceSpec'].nil?
            @CommonResourceSpec = JobFlowResource.new
            @CommonResourceSpec.deserialize(params['CommonResourceSpec'])
          end
        end
      end

      # 任务步骤结果描述
      class JobResult < TencentCloud::Common::AbstractModel
        # @param Name: 任务步骤名称。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Name: String
        # @param ActionOnFailure: 任务步骤失败时的处理策略,可以为以下值:
        # "CONTINUE",跳过当前失败步骤,继续后续步骤。
        # “TERMINATE_CLUSTER”,终止当前及后续步骤,并销毁集群。
        # “CANCEL_AND_WAIT”,取消当前步骤并阻塞等待处理。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ActionOnFailure: String
        # @param JobState: 当前步骤的状态,可以为以下值:
        # “JobFlowStepStatusInit”,初始化状态,等待执行。
        # “JobFlowStepStatusRunning”,任务步骤正在执行。
        # “JobFlowStepStatusFailed”,任务步骤执行失败。
        # “JobFlowStepStatusSucceed”,任务步骤执行成功。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type JobState: String
        # @param ApplicationId: YARN任务ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApplicationId: String

        attr_accessor :Name, :ActionOnFailure, :JobState, :ApplicationId

        def initialize(name=nil, actiononfailure=nil, jobstate=nil, applicationid=nil)
          @Name = name
          @ActionOnFailure = actiononfailure
          @JobState = jobstate
          @ApplicationId = applicationid
        end

        def deserialize(params)
          @Name = params['Name']
          @ActionOnFailure = params['ActionOnFailure']
          @JobState = params['JobState']
          @ApplicationId = params['ApplicationId']
        end
      end

      # 键值对,主要用来做Filter
      class KeyValue < TencentCloud::Common::AbstractModel
        # @param Key: 键
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Key: String
        # @param Value: 值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Value: String

        attr_accessor :Key, :Value

        def initialize(key=nil, value=nil)
          @Key = key
          @Value = value
        end

        def deserialize(params)
          @Key = params['Key']
          @Value = params['Value']
        end
      end

      # 自动扩缩容基于负载指标的规则
      class LoadAutoScaleStrategy < TencentCloud::Common::AbstractModel
        # @param StrategyId: 规则ID。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StrategyId: Integer
        # @param StrategyName: 规则名称。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StrategyName: String
        # @param CalmDownTime: 规则生效冷却时间。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CalmDownTime: Integer
        # @param ScaleAction: 扩缩容动作,1表示扩容,2表示缩容。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScaleAction: Integer
        # @param ScaleNum: 每次规则生效时的扩缩容数量。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScaleNum: Integer
        # @param ProcessMethod: 指标处理方法,1表示MAX,2表示MIN,3表示AVG。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProcessMethod: Integer
        # @param Priority: 规则优先级,添加时无效,默认为自增。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Priority: Integer
        # @param StrategyStatus: 规则状态,1表示启动,3表示禁用。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StrategyStatus: Integer
        # @param YarnNodeLabel: 规则扩容指定 yarn node label
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type YarnNodeLabel: String
        # @param PeriodValid: 规则生效的有效时间
        # @type PeriodValid: String
        # @param GraceDownFlag: 优雅缩容开关
        # @type GraceDownFlag: Boolean
        # @param GraceDownTime: 优雅缩容等待时间
        # @type GraceDownTime: Integer
        # @param Tags: 绑定标签列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param ConfigGroupAssigned: 预设配置组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConfigGroupAssigned: String
        # @param MeasureMethod: 扩容资源计算方法,"DEFAULT","INSTANCE", "CPU", "MEMORYGB"。
        # "DEFAULT"表示默认方式,与"INSTANCE"意义相同。
        # "INSTANCE"表示按照节点计算,默认方式。
        # "CPU"表示按照机器的核数计算。
        # "MEMORYGB"表示按照机器内存数计算。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MeasureMethod: String
        # @param LoadMetricsConditions: 多指标触发条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LoadMetricsConditions: :class:`Tencentcloud::Emr.v20190103.models.LoadMetricsConditions`

        attr_accessor :StrategyId, :StrategyName, :CalmDownTime, :ScaleAction, :ScaleNum, :ProcessMethod, :Priority, :StrategyStatus, :YarnNodeLabel, :PeriodValid, :GraceDownFlag, :GraceDownTime, :Tags, :ConfigGroupAssigned, :MeasureMethod, :LoadMetricsConditions

        def initialize(strategyid=nil, strategyname=nil, calmdowntime=nil, scaleaction=nil, scalenum=nil, processmethod=nil, priority=nil, strategystatus=nil, yarnnodelabel=nil, periodvalid=nil, gracedownflag=nil, gracedowntime=nil, tags=nil, configgroupassigned=nil, measuremethod=nil, loadmetricsconditions=nil)
          @StrategyId = strategyid
          @StrategyName = strategyname
          @CalmDownTime = calmdowntime
          @ScaleAction = scaleaction
          @ScaleNum = scalenum
          @ProcessMethod = processmethod
          @Priority = priority
          @StrategyStatus = strategystatus
          @YarnNodeLabel = yarnnodelabel
          @PeriodValid = periodvalid
          @GraceDownFlag = gracedownflag
          @GraceDownTime = gracedowntime
          @Tags = tags
          @ConfigGroupAssigned = configgroupassigned
          @MeasureMethod = measuremethod
          @LoadMetricsConditions = loadmetricsconditions
        end

        def deserialize(params)
          @StrategyId = params['StrategyId']
          @StrategyName = params['StrategyName']
          @CalmDownTime = params['CalmDownTime']
          @ScaleAction = params['ScaleAction']
          @ScaleNum = params['ScaleNum']
          @ProcessMethod = params['ProcessMethod']
          @Priority = params['Priority']
          @StrategyStatus = params['StrategyStatus']
          @YarnNodeLabel = params['YarnNodeLabel']
          @PeriodValid = params['PeriodValid']
          @GraceDownFlag = params['GraceDownFlag']
          @GraceDownTime = params['GraceDownTime']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @ConfigGroupAssigned = params['ConfigGroupAssigned']
          @MeasureMethod = params['MeasureMethod']
          unless params['LoadMetricsConditions'].nil?
            @LoadMetricsConditions = LoadMetricsConditions.new
            @LoadMetricsConditions.deserialize(params['LoadMetricsConditions'])
          end
        end
      end

      # 负载指标条件
      class LoadMetricsCondition < TencentCloud::Common::AbstractModel
        # @param StatisticPeriod: 规则统计周期,提供1min,3min,5min。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StatisticPeriod: Integer
        # @param TriggerThreshold: 触发次数,当连续触发超过TriggerThreshold次后才开始扩缩容。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TriggerThreshold: Integer
        # @param LoadMetrics: 扩缩容负载指标。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LoadMetrics: String
        # @param MetricId: 规则元数据记录ID。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MetricId: Integer
        # @param Conditions: 触发条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Conditions: Array

        attr_accessor :StatisticPeriod, :TriggerThreshold, :LoadMetrics, :MetricId, :Conditions

        def initialize(statisticperiod=nil, triggerthreshold=nil, loadmetrics=nil, metricid=nil, conditions=nil)
          @StatisticPeriod = statisticperiod
          @TriggerThreshold = triggerthreshold
          @LoadMetrics = loadmetrics
          @MetricId = metricid
          @Conditions = conditions
        end

        def deserialize(params)
          @StatisticPeriod = params['StatisticPeriod']
          @TriggerThreshold = params['TriggerThreshold']
          @LoadMetrics = params['LoadMetrics']
          @MetricId = params['MetricId']
          unless params['Conditions'].nil?
            @Conditions = []
            params['Conditions'].each do |i|
              triggercondition_tmp = TriggerCondition.new
              triggercondition_tmp.deserialize(i)
              @Conditions << triggercondition_tmp
            end
          end
        end
      end

      # 负载指标
      class LoadMetricsConditions < TencentCloud::Common::AbstractModel
        # @param LoadMetrics: 触发规则条件
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LoadMetrics: Array

        attr_accessor :LoadMetrics

        def initialize(loadmetrics=nil)
          @LoadMetrics = loadmetrics
        end

        def deserialize(params)
          unless params['LoadMetrics'].nil?
            @LoadMetrics = []
            params['LoadMetrics'].each do |i|
              loadmetricscondition_tmp = LoadMetricsCondition.new
              loadmetricscondition_tmp.deserialize(i)
              @LoadMetrics << loadmetricscondition_tmp
            end
          end
        end
      end

      # 登录设置
      class LoginSettings < TencentCloud::Common::AbstractModel
        # @param Password: 实例登录密码,8-16个字符,包含大写字母、小写字母、数字和特殊字符四种,特殊符号仅支持!@%^*,密码第一位不能为特殊字符
        # @type Password: String
        # @param PublicKeyId: 密钥ID。关联密钥后,就可以通过对应的私钥来访问实例;PublicKeyId可通过接口[DescribeKeyPairs](https://cloud.tencent.com/document/api/213/15699)获取
        # @type PublicKeyId: String

        attr_accessor :Password, :PublicKeyId

        def initialize(password=nil, publickeyid=nil)
          @Password = password
          @PublicKeyId = publickeyid
        end

        def deserialize(params)
          @Password = params['Password']
          @PublicKeyId = params['PublicKeyId']
        end
      end

      # 元数据库信息
      class MetaDbInfo < TencentCloud::Common::AbstractModel
        # @param MetaType: 元数据类型。
        # @type MetaType: String
        # @param UnifyMetaInstanceId: 统一元数据库实例ID。
        # @type UnifyMetaInstanceId: String
        # @param MetaDBInfo: 自建元数据库信息。
        # @type MetaDBInfo: :class:`Tencentcloud::Emr.v20190103.models.CustomMetaInfo`

        attr_accessor :MetaType, :UnifyMetaInstanceId, :MetaDBInfo

        def initialize(metatype=nil, unifymetainstanceid=nil, metadbinfo=nil)
          @MetaType = metatype
          @UnifyMetaInstanceId = unifymetainstanceid
          @MetaDBInfo = metadbinfo
        end

        def deserialize(params)
          @MetaType = params['MetaType']
          @UnifyMetaInstanceId = params['UnifyMetaInstanceId']
          unless params['MetaDBInfo'].nil?
            @MetaDBInfo = CustomMetaInfo.new
            @MetaDBInfo.deserialize(params['MetaDBInfo'])
          end
        end
      end

      # 指标tag
      class MetricTags < TencentCloud::Common::AbstractModel
        # @param Unit: 指标单位
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Unit: String
        # @param Type: 指标Type
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Type: String

        attr_accessor :Unit, :Type

        def initialize(unit=nil, type=nil)
          @Unit = unit
          @Type = type
        end

        def deserialize(params)
          @Unit = params['Unit']
          @Type = params['Type']
        end
      end

      # ModifyAutoScaleStrategy请求参数结构体
      class ModifyAutoScaleStrategyRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param StrategyType: 自动扩缩容规则类型,1表示按负载指标扩缩容,2表示按时间扩缩容。
        # @type StrategyType: Integer
        # @param LoadAutoScaleStrategies: 按负载扩缩容的指标。
        # @type LoadAutoScaleStrategies: Array
        # @param TimeAutoScaleStrategies: 按时间扩缩容的规则。
        # @type TimeAutoScaleStrategies: Array
        # @param GroupId: 伸缩组Id
        # @type GroupId: Integer

        attr_accessor :InstanceId, :StrategyType, :LoadAutoScaleStrategies, :TimeAutoScaleStrategies, :GroupId

        def initialize(instanceid=nil, strategytype=nil, loadautoscalestrategies=nil, timeautoscalestrategies=nil, groupid=nil)
          @InstanceId = instanceid
          @StrategyType = strategytype
          @LoadAutoScaleStrategies = loadautoscalestrategies
          @TimeAutoScaleStrategies = timeautoscalestrategies
          @GroupId = groupid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @StrategyType = params['StrategyType']
          unless params['LoadAutoScaleStrategies'].nil?
            @LoadAutoScaleStrategies = []
            params['LoadAutoScaleStrategies'].each do |i|
              loadautoscalestrategy_tmp = LoadAutoScaleStrategy.new
              loadautoscalestrategy_tmp.deserialize(i)
              @LoadAutoScaleStrategies << loadautoscalestrategy_tmp
            end
          end
          unless params['TimeAutoScaleStrategies'].nil?
            @TimeAutoScaleStrategies = []
            params['TimeAutoScaleStrategies'].each do |i|
              timeautoscalestrategy_tmp = TimeAutoScaleStrategy.new
              timeautoscalestrategy_tmp.deserialize(i)
              @TimeAutoScaleStrategies << timeautoscalestrategy_tmp
            end
          end
          @GroupId = params['GroupId']
        end
      end

      # ModifyAutoScaleStrategy返回参数结构体
      class ModifyAutoScaleStrategyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ModifyResourcePools请求参数结构体
      class ModifyResourcePoolsRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: emr集群id
        # @type InstanceId: String
        # @param Key: 取值范围:
        # <li>fair:代表公平调度标识</li>
        # <li>capacity:代表容量调度标识</li>
        # @type Key: String

        attr_accessor :InstanceId, :Key

        def initialize(instanceid=nil, key=nil)
          @InstanceId = instanceid
          @Key = key
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @Key = params['Key']
        end
      end

      # ModifyResourcePools返回参数结构体
      class ModifyResourcePoolsResponse < TencentCloud::Common::AbstractModel
        # @param IsDraft: false表示不是草稿,提交刷新请求成功
        # @type IsDraft: Boolean
        # @param ErrorMsg: 扩展字段,暂时没用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ErrorMsg: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :IsDraft, :ErrorMsg, :RequestId

        def initialize(isdraft=nil, errormsg=nil, requestid=nil)
          @IsDraft = isdraft
          @ErrorMsg = errormsg
          @RequestId = requestid
        end

        def deserialize(params)
          @IsDraft = params['IsDraft']
          @ErrorMsg = params['ErrorMsg']
          @RequestId = params['RequestId']
        end
      end

      # ModifyResourceScheduleConfig请求参数结构体
      class ModifyResourceScheduleConfigRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: emr集群的英文id
        # @type InstanceId: String
        # @param Key: 业务标识,fair表示编辑公平的配置项,fairPlan表示编辑执行计划,capacity表示编辑容量的配置项
        # @type Key: String
        # @param Value: 修改后的模块消息
        # @type Value: String

        attr_accessor :InstanceId, :Key, :Value

        def initialize(instanceid=nil, key=nil, value=nil)
          @InstanceId = instanceid
          @Key = key
          @Value = value
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @Key = params['Key']
          @Value = params['Value']
        end
      end

      # ModifyResourceScheduleConfig返回参数结构体
      class ModifyResourceScheduleConfigResponse < TencentCloud::Common::AbstractModel
        # @param IsDraft: true为草稿,表示还没有刷新资源池
        # @type IsDraft: Boolean
        # @param ErrorMsg: 校验错误信息,如果不为空,则说明校验失败,配置没有成功
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ErrorMsg: String
        # @param Data: 返回数据
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Data: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :IsDraft, :ErrorMsg, :Data, :RequestId

        def initialize(isdraft=nil, errormsg=nil, data=nil, requestid=nil)
          @IsDraft = isdraft
          @ErrorMsg = errormsg
          @Data = data
          @RequestId = requestid
        end

        def deserialize(params)
          @IsDraft = params['IsDraft']
          @ErrorMsg = params['ErrorMsg']
          @Data = params['Data']
          @RequestId = params['RequestId']
        end
      end

      # ModifyResourceScheduler请求参数结构体
      class ModifyResourceSchedulerRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: emr集群的英文id
        # @type InstanceId: String
        # @param OldValue: 老的调度器:fair
        # @type OldValue: String
        # @param NewValue: 新的调度器:capacity
        # @type NewValue: String

        attr_accessor :InstanceId, :OldValue, :NewValue

        def initialize(instanceid=nil, oldvalue=nil, newvalue=nil)
          @InstanceId = instanceid
          @OldValue = oldvalue
          @NewValue = newvalue
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @OldValue = params['OldValue']
          @NewValue = params['NewValue']
        end
      end

      # ModifyResourceScheduler返回参数结构体
      class ModifyResourceSchedulerResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 强制修改标签
      class ModifyResourceTags < TencentCloud::Common::AbstractModel
        # @param ResourceId: 集群id 或者 cvm id
        # @type ResourceId: String
        # @param Resource: 资源6段式表达式
        # @type Resource: String
        # @param ResourcePrefix: 资源前缀
        # @type ResourcePrefix: String
        # @param ResourceRegion: ap-beijing
        # @type ResourceRegion: String
        # @param ServiceType: emr
        # @type ServiceType: String
        # @param DeleteTags: 删除的标签列表
        # @type DeleteTags: Array
        # @param AddTags: 添加的标签列表
        # @type AddTags: Array
        # @param ModifyTags: 修改的标签列表
        # @type ModifyTags: Array

        attr_accessor :ResourceId, :Resource, :ResourcePrefix, :ResourceRegion, :ServiceType, :DeleteTags, :AddTags, :ModifyTags

        def initialize(resourceid=nil, resource=nil, resourceprefix=nil, resourceregion=nil, servicetype=nil, deletetags=nil, addtags=nil, modifytags=nil)
          @ResourceId = resourceid
          @Resource = resource
          @ResourcePrefix = resourceprefix
          @ResourceRegion = resourceregion
          @ServiceType = servicetype
          @DeleteTags = deletetags
          @AddTags = addtags
          @ModifyTags = modifytags
        end

        def deserialize(params)
          @ResourceId = params['ResourceId']
          @Resource = params['Resource']
          @ResourcePrefix = params['ResourcePrefix']
          @ResourceRegion = params['ResourceRegion']
          @ServiceType = params['ServiceType']
          unless params['DeleteTags'].nil?
            @DeleteTags = []
            params['DeleteTags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @DeleteTags << tag_tmp
            end
          end
          unless params['AddTags'].nil?
            @AddTags = []
            params['AddTags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @AddTags << tag_tmp
            end
          end
          unless params['ModifyTags'].nil?
            @ModifyTags = []
            params['ModifyTags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @ModifyTags << tag_tmp
            end
          end
        end
      end

      # ModifyResourcesTags请求参数结构体
      class ModifyResourcesTagsRequest < TencentCloud::Common::AbstractModel
        # @param ModifyType: 标签类型,取值Cluster或者Node
        # @type ModifyType: String
        # @param ModifyResourceTagsInfoList: 标签信息
        # @type ModifyResourceTagsInfoList: Array

        attr_accessor :ModifyType, :ModifyResourceTagsInfoList

        def initialize(modifytype=nil, modifyresourcetagsinfolist=nil)
          @ModifyType = modifytype
          @ModifyResourceTagsInfoList = modifyresourcetagsinfolist
        end

        def deserialize(params)
          @ModifyType = params['ModifyType']
          unless params['ModifyResourceTagsInfoList'].nil?
            @ModifyResourceTagsInfoList = []
            params['ModifyResourceTagsInfoList'].each do |i|
              modifyresourcetags_tmp = ModifyResourceTags.new
              modifyresourcetags_tmp.deserialize(i)
              @ModifyResourceTagsInfoList << modifyresourcetags_tmp
            end
          end
        end
      end

      # ModifyResourcesTags返回参数结构体
      class ModifyResourcesTagsResponse < TencentCloud::Common::AbstractModel
        # @param SuccessList: 成功的资源id列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SuccessList: Array
        # @param FailList: 失败的资源id列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailList: Array
        # @param PartSuccessList: 部分成功的资源id列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PartSuccessList: Array
        # @param ClusterToFlowIdList: 集群id与流程id的映射列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterToFlowIdList: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SuccessList, :FailList, :PartSuccessList, :ClusterToFlowIdList, :RequestId

        def initialize(successlist=nil, faillist=nil, partsuccesslist=nil, clustertoflowidlist=nil, requestid=nil)
          @SuccessList = successlist
          @FailList = faillist
          @PartSuccessList = partsuccesslist
          @ClusterToFlowIdList = clustertoflowidlist
          @RequestId = requestid
        end

        def deserialize(params)
          @SuccessList = params['SuccessList']
          @FailList = params['FailList']
          @PartSuccessList = params['PartSuccessList']
          unless params['ClusterToFlowIdList'].nil?
            @ClusterToFlowIdList = []
            params['ClusterToFlowIdList'].each do |i|
              clusteridtoflowid_tmp = ClusterIDToFlowID.new
              clusteridtoflowid_tmp.deserialize(i)
              @ClusterToFlowIdList << clusteridtoflowid_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ModifyUserManagerPwd请求参数结构体
      class ModifyUserManagerPwdRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群实例ID
        # @type InstanceId: String
        # @param UserName: 用户名
        # @type UserName: String
        # @param PassWord: 密码
        # @type PassWord: String

        attr_accessor :InstanceId, :UserName, :PassWord

        def initialize(instanceid=nil, username=nil, password=nil)
          @InstanceId = instanceid
          @UserName = username
          @PassWord = password
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @UserName = params['UserName']
          @PassWord = params['PassWord']
        end
      end

      # ModifyUserManagerPwd返回参数结构体
      class ModifyUserManagerPwdResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ModifyYarnDeploy请求参数结构体
      class ModifyYarnDeployRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群id
        # @type InstanceId: String
        # @param NewScheduler: 切换后的调度器,可选值为fair、capacity
        # @type NewScheduler: String
        # @param OldScheduler: 现在使用的调度器,可选值为fair、capacity
        # @type OldScheduler: String

        attr_accessor :InstanceId, :NewScheduler, :OldScheduler

        def initialize(instanceid=nil, newscheduler=nil, oldscheduler=nil)
          @InstanceId = instanceid
          @NewScheduler = newscheduler
          @OldScheduler = oldscheduler
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @NewScheduler = params['NewScheduler']
          @OldScheduler = params['OldScheduler']
        end
      end

      # ModifyYarnDeploy返回参数结构体
      class ModifyYarnDeployResponse < TencentCloud::Common::AbstractModel
        # @param IsDraft: 为false不点亮部署生效、重置
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsDraft: Boolean
        # @param ErrorMsg: 错误信息,预留
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ErrorMsg: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :IsDraft, :ErrorMsg, :RequestId

        def initialize(isdraft=nil, errormsg=nil, requestid=nil)
          @IsDraft = isdraft
          @ErrorMsg = errormsg
          @RequestId = requestid
        end

        def deserialize(params)
          @IsDraft = params['IsDraft']
          @ErrorMsg = params['ErrorMsg']
          @RequestId = params['RequestId']
        end
      end

      # 定时伸缩每月重复任务策略
      class MonthRepeatStrategy < TencentCloud::Common::AbstractModel
        # @param ExecuteAtTimeOfDay: 重复任务执行的具体时刻,例如"01:02:00"
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExecuteAtTimeOfDay: String
        # @param DaysOfMonthRange: 每月中的天数时间段描述,长度只能为2,例如[2,10]表示每月2-10号。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DaysOfMonthRange: Array

        attr_accessor :ExecuteAtTimeOfDay, :DaysOfMonthRange

        def initialize(executeattimeofday=nil, daysofmonthrange=nil)
          @ExecuteAtTimeOfDay = executeattimeofday
          @DaysOfMonthRange = daysofmonthrange
        end

        def deserialize(params)
          @ExecuteAtTimeOfDay = params['ExecuteAtTimeOfDay']
          @DaysOfMonthRange = params['DaysOfMonthRange']
        end
      end

      # 多云盘参数
      class MultiDisk < TencentCloud::Common::AbstractModel
        # @param DiskType: 云盘类型
        # <li>CLOUD_SSD:表示云SSD。</li>
        # <li>CLOUD_PREMIUM:表示高效云盘。</li>
        # <li>CLOUD_HSSD:表示增强型SSD云硬盘。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskType: String
        # @param Volume: 云盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Volume: Integer
        # @param Count: 该类型云盘个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Count: Integer

        attr_accessor :DiskType, :Volume, :Count

        def initialize(disktype=nil, volume=nil, count=nil)
          @DiskType = disktype
          @Volume = volume
          @Count = count
        end

        def deserialize(params)
          @DiskType = params['DiskType']
          @Volume = params['Volume']
          @Count = params['Count']
        end
      end

      # 多云盘参数
      class MultiDiskMC < TencentCloud::Common::AbstractModel
        # @param Count: 该类型云盘个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Count: Integer
        # @param Type: 磁盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Type: Integer
        # @param Volume: 云盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Volume: Integer

        attr_accessor :Count, :Type, :Volume

        def initialize(count=nil, type=nil, volume=nil)
          @Count = count
          @Type = type
          @Volume = volume
        end

        def deserialize(params)
          @Count = params['Count']
          @Type = params['Type']
          @Volume = params['Volume']
        end
      end

      # 各个可用区的参数信息
      class MultiZoneSetting < TencentCloud::Common::AbstractModel
        # @param ZoneTag: "master"、"standby"、"third-party"
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ZoneTag: String
        # @param VPCSettings: 无
        # @type VPCSettings: :class:`Tencentcloud::Emr.v20190103.models.VPCSettings`
        # @param Placement: 无
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param ResourceSpec: 无
        # @type ResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NewResourceSpec`

        attr_accessor :ZoneTag, :VPCSettings, :Placement, :ResourceSpec

        def initialize(zonetag=nil, vpcsettings=nil, placement=nil, resourcespec=nil)
          @ZoneTag = zonetag
          @VPCSettings = vpcsettings
          @Placement = placement
          @ResourceSpec = resourcespec
        end

        def deserialize(params)
          @ZoneTag = params['ZoneTag']
          unless params['VPCSettings'].nil?
            @VPCSettings = VPCSettings.new
            @VPCSettings.deserialize(params['VPCSettings'])
          end
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          unless params['ResourceSpec'].nil?
            @ResourceSpec = NewResourceSpec.new
            @ResourceSpec.deserialize(params['ResourceSpec'])
          end
        end
      end

      # 资源描述
      class NewResourceSpec < TencentCloud::Common::AbstractModel
        # @param MasterResourceSpec: 描述Master节点资源
        # @type MasterResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.Resource`
        # @param CoreResourceSpec: 描述Core节点资源
        # @type CoreResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.Resource`
        # @param TaskResourceSpec: 描述Task节点资源
        # @type TaskResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.Resource`
        # @param MasterCount: Master节点数量
        # @type MasterCount: Integer
        # @param CoreCount: Core节点数量
        # @type CoreCount: Integer
        # @param TaskCount: Task节点数量
        # @type TaskCount: Integer
        # @param CommonResourceSpec: 描述Common节点资源
        # @type CommonResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.Resource`
        # @param CommonCount: Common节点数量
        # @type CommonCount: Integer

        attr_accessor :MasterResourceSpec, :CoreResourceSpec, :TaskResourceSpec, :MasterCount, :CoreCount, :TaskCount, :CommonResourceSpec, :CommonCount

        def initialize(masterresourcespec=nil, coreresourcespec=nil, taskresourcespec=nil, mastercount=nil, corecount=nil, taskcount=nil, commonresourcespec=nil, commoncount=nil)
          @MasterResourceSpec = masterresourcespec
          @CoreResourceSpec = coreresourcespec
          @TaskResourceSpec = taskresourcespec
          @MasterCount = mastercount
          @CoreCount = corecount
          @TaskCount = taskcount
          @CommonResourceSpec = commonresourcespec
          @CommonCount = commoncount
        end

        def deserialize(params)
          unless params['MasterResourceSpec'].nil?
            @MasterResourceSpec = Resource.new
            @MasterResourceSpec.deserialize(params['MasterResourceSpec'])
          end
          unless params['CoreResourceSpec'].nil?
            @CoreResourceSpec = Resource.new
            @CoreResourceSpec.deserialize(params['CoreResourceSpec'])
          end
          unless params['TaskResourceSpec'].nil?
            @TaskResourceSpec = Resource.new
            @TaskResourceSpec.deserialize(params['TaskResourceSpec'])
          end
          @MasterCount = params['MasterCount']
          @CoreCount = params['CoreCount']
          @TaskCount = params['TaskCount']
          unless params['CommonResourceSpec'].nil?
            @CommonResourceSpec = Resource.new
            @CommonResourceSpec.deserialize(params['CommonResourceSpec'])
          end
          @CommonCount = params['CommonCount']
        end
      end

      # 用于创建集群价格清单 节点价格详情
      class NodeDetailPriceResult < TencentCloud::Common::AbstractModel
        # @param NodeType: 节点类型 master core task common router mysql
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NodeType: String
        # @param PartDetailPrice: 节点组成部分价格详情
        # @type PartDetailPrice: Array

        attr_accessor :NodeType, :PartDetailPrice

        def initialize(nodetype=nil, partdetailprice=nil)
          @NodeType = nodetype
          @PartDetailPrice = partdetailprice
        end

        def deserialize(params)
          @NodeType = params['NodeType']
          unless params['PartDetailPrice'].nil?
            @PartDetailPrice = []
            params['PartDetailPrice'].each do |i|
              partdetailpriceitem_tmp = PartDetailPriceItem.new
              partdetailpriceitem_tmp.deserialize(i)
              @PartDetailPrice << partdetailpriceitem_tmp
            end
          end
        end
      end

      # 节点硬件信息
      class NodeHardwareInfo < TencentCloud::Common::AbstractModel
        # @param AppId: 用户APPID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AppId: Integer
        # @param SerialNo: 序列号
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SerialNo: String
        # @param OrderNo: 机器实例ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OrderNo: String
        # @param WanIp: master节点绑定外网IP
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type WanIp: String
        # @param Flag: 节点类型。0:common节点;1:master节点
        # ;2:core节点;3:task节点
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Flag: Integer
        # @param Spec: 节点规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Spec: String
        # @param CpuNum: 节点核数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CpuNum: Integer
        # @param MemSize: 节点内存
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MemSize: Integer
        # @param MemDesc: 节点内存描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MemDesc: String
        # @param RegionId: 节点所在region
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RegionId: Integer
        # @param ZoneId: 节点所在Zone
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ZoneId: Integer
        # @param ApplyTime: 申请时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApplyTime: String
        # @param FreeTime: 释放时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FreeTime: String
        # @param DiskSize: 硬盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskSize: String
        # @param NameTag: 节点描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NameTag: String
        # @param Services: 节点部署服务
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Services: String
        # @param StorageType: 磁盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StorageType: Integer
        # @param RootSize: 系统盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RootSize: Integer
        # @param ChargeType: 付费类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChargeType: Integer
        # @param CdbIp: 数据库IP
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CdbIp: String
        # @param CdbPort: 数据库端口
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CdbPort: Integer
        # @param HwDiskSize: 硬盘容量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HwDiskSize: Integer
        # @param HwDiskSizeDesc: 硬盘容量描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HwDiskSizeDesc: String
        # @param HwMemSize: 内存容量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HwMemSize: Integer
        # @param HwMemSizeDesc: 内存容量描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HwMemSizeDesc: String
        # @param ExpireTime: 过期时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExpireTime: String
        # @param EmrResourceId: 节点资源ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EmrResourceId: String
        # @param IsAutoRenew: 续费标志
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsAutoRenew: Integer
        # @param DeviceClass: 设备标识
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceClass: String
        # @param Mutable: 支持变配
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Mutable: Integer
        # @param MCMultiDisk: 多云盘
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MCMultiDisk: Array
        # @param CdbNodeInfo: 数据库信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CdbNodeInfo: :class:`Tencentcloud::Emr.v20190103.models.CdbInfo`
        # @param Ip: 内网IP
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Ip: String
        # @param Destroyable: 此节点是否可销毁,1可销毁,0不可销毁
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Destroyable: Integer
        # @param Tags: 节点绑定的标签
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param AutoFlag: 是否是自动扩缩容节点,0为普通节点,1为自动扩缩容节点。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AutoFlag: Integer
        # @param HardwareResourceType: 资源类型, host/pod
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HardwareResourceType: String
        # @param IsDynamicSpec: 是否浮动规格,1是,0否
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsDynamicSpec: Integer
        # @param DynamicPodSpec: 浮动规格值json字符串
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DynamicPodSpec: String
        # @param SupportModifyPayMode: 是否支持变更计费类型 1是,0否
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SupportModifyPayMode: Integer
        # @param RootStorageType: 系统盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RootStorageType: Integer
        # @param Zone: 可用区信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Zone: String
        # @param SubnetInfo: 子网
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetInfo: :class:`Tencentcloud::Emr.v20190103.models.SubnetInfo`
        # @param Clients: 客户端
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Clients: String
        # @param CurrentTime: 系统当前时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CurrentTime: String
        # @param IsFederation: 是否用于联邦 ,1是,0否
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsFederation: Integer
        # @param DeviceName: 设备名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DeviceName: String
        # @param ServiceClient: 服务
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ServiceClient: String
        # @param DisableApiTermination: 该实例是否开启实例保护,true为开启 false为关闭
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DisableApiTermination: Boolean
        # @param TradeVersion: 0表示老计费,1表示新计费
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TradeVersion: Integer
        # @param ServicesStatus: 各组件状态,Zookeeper:STARTED,ResourceManager:STARTED,STARTED已启动,STOPED已停止
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ServicesStatus: String
        # @param Remark: 备注
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Remark: String

        attr_accessor :AppId, :SerialNo, :OrderNo, :WanIp, :Flag, :Spec, :CpuNum, :MemSize, :MemDesc, :RegionId, :ZoneId, :ApplyTime, :FreeTime, :DiskSize, :NameTag, :Services, :StorageType, :RootSize, :ChargeType, :CdbIp, :CdbPort, :HwDiskSize, :HwDiskSizeDesc, :HwMemSize, :HwMemSizeDesc, :ExpireTime, :EmrResourceId, :IsAutoRenew, :DeviceClass, :Mutable, :MCMultiDisk, :CdbNodeInfo, :Ip, :Destroyable, :Tags, :AutoFlag, :HardwareResourceType, :IsDynamicSpec, :DynamicPodSpec, :SupportModifyPayMode, :RootStorageType, :Zone, :SubnetInfo, :Clients, :CurrentTime, :IsFederation, :DeviceName, :ServiceClient, :DisableApiTermination, :TradeVersion, :ServicesStatus, :Remark

        def initialize(appid=nil, serialno=nil, orderno=nil, wanip=nil, flag=nil, spec=nil, cpunum=nil, memsize=nil, memdesc=nil, regionid=nil, zoneid=nil, applytime=nil, freetime=nil, disksize=nil, nametag=nil, services=nil, storagetype=nil, rootsize=nil, chargetype=nil, cdbip=nil, cdbport=nil, hwdisksize=nil, hwdisksizedesc=nil, hwmemsize=nil, hwmemsizedesc=nil, expiretime=nil, emrresourceid=nil, isautorenew=nil, deviceclass=nil, mutable=nil, mcmultidisk=nil, cdbnodeinfo=nil, ip=nil, destroyable=nil, tags=nil, autoflag=nil, hardwareresourcetype=nil, isdynamicspec=nil, dynamicpodspec=nil, supportmodifypaymode=nil, rootstoragetype=nil, zone=nil, subnetinfo=nil, clients=nil, currenttime=nil, isfederation=nil, devicename=nil, serviceclient=nil, disableapitermination=nil, tradeversion=nil, servicesstatus=nil, remark=nil)
          @AppId = appid
          @SerialNo = serialno
          @OrderNo = orderno
          @WanIp = wanip
          @Flag = flag
          @Spec = spec
          @CpuNum = cpunum
          @MemSize = memsize
          @MemDesc = memdesc
          @RegionId = regionid
          @ZoneId = zoneid
          @ApplyTime = applytime
          @FreeTime = freetime
          @DiskSize = disksize
          @NameTag = nametag
          @Services = services
          @StorageType = storagetype
          @RootSize = rootsize
          @ChargeType = chargetype
          @CdbIp = cdbip
          @CdbPort = cdbport
          @HwDiskSize = hwdisksize
          @HwDiskSizeDesc = hwdisksizedesc
          @HwMemSize = hwmemsize
          @HwMemSizeDesc = hwmemsizedesc
          @ExpireTime = expiretime
          @EmrResourceId = emrresourceid
          @IsAutoRenew = isautorenew
          @DeviceClass = deviceclass
          @Mutable = mutable
          @MCMultiDisk = mcmultidisk
          @CdbNodeInfo = cdbnodeinfo
          @Ip = ip
          @Destroyable = destroyable
          @Tags = tags
          @AutoFlag = autoflag
          @HardwareResourceType = hardwareresourcetype
          @IsDynamicSpec = isdynamicspec
          @DynamicPodSpec = dynamicpodspec
          @SupportModifyPayMode = supportmodifypaymode
          @RootStorageType = rootstoragetype
          @Zone = zone
          @SubnetInfo = subnetinfo
          @Clients = clients
          @CurrentTime = currenttime
          @IsFederation = isfederation
          @DeviceName = devicename
          @ServiceClient = serviceclient
          @DisableApiTermination = disableapitermination
          @TradeVersion = tradeversion
          @ServicesStatus = servicesstatus
          @Remark = remark
        end

        def deserialize(params)
          @AppId = params['AppId']
          @SerialNo = params['SerialNo']
          @OrderNo = params['OrderNo']
          @WanIp = params['WanIp']
          @Flag = params['Flag']
          @Spec = params['Spec']
          @CpuNum = params['CpuNum']
          @MemSize = params['MemSize']
          @MemDesc = params['MemDesc']
          @RegionId = params['RegionId']
          @ZoneId = params['ZoneId']
          @ApplyTime = params['ApplyTime']
          @FreeTime = params['FreeTime']
          @DiskSize = params['DiskSize']
          @NameTag = params['NameTag']
          @Services = params['Services']
          @StorageType = params['StorageType']
          @RootSize = params['RootSize']
          @ChargeType = params['ChargeType']
          @CdbIp = params['CdbIp']
          @CdbPort = params['CdbPort']
          @HwDiskSize = params['HwDiskSize']
          @HwDiskSizeDesc = params['HwDiskSizeDesc']
          @HwMemSize = params['HwMemSize']
          @HwMemSizeDesc = params['HwMemSizeDesc']
          @ExpireTime = params['ExpireTime']
          @EmrResourceId = params['EmrResourceId']
          @IsAutoRenew = params['IsAutoRenew']
          @DeviceClass = params['DeviceClass']
          @Mutable = params['Mutable']
          unless params['MCMultiDisk'].nil?
            @MCMultiDisk = []
            params['MCMultiDisk'].each do |i|
              multidiskmc_tmp = MultiDiskMC.new
              multidiskmc_tmp.deserialize(i)
              @MCMultiDisk << multidiskmc_tmp
            end
          end
          unless params['CdbNodeInfo'].nil?
            @CdbNodeInfo = CdbInfo.new
            @CdbNodeInfo.deserialize(params['CdbNodeInfo'])
          end
          @Ip = params['Ip']
          @Destroyable = params['Destroyable']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @AutoFlag = params['AutoFlag']
          @HardwareResourceType = params['HardwareResourceType']
          @IsDynamicSpec = params['IsDynamicSpec']
          @DynamicPodSpec = params['DynamicPodSpec']
          @SupportModifyPayMode = params['SupportModifyPayMode']
          @RootStorageType = params['RootStorageType']
          @Zone = params['Zone']
          unless params['SubnetInfo'].nil?
            @SubnetInfo = SubnetInfo.new
            @SubnetInfo.deserialize(params['SubnetInfo'])
          end
          @Clients = params['Clients']
          @CurrentTime = params['CurrentTime']
          @IsFederation = params['IsFederation']
          @DeviceName = params['DeviceName']
          @ServiceClient = params['ServiceClient']
          @DisableApiTermination = params['DisableApiTermination']
          @TradeVersion = params['TradeVersion']
          @ServicesStatus = params['ServicesStatus']
          @Remark = params['Remark']
        end
      end

      # 资源详情
      class NodeResourceSpec < TencentCloud::Common::AbstractModel
        # @param InstanceType: 规格类型,如S2.MEDIUM8
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceType: String
        # @param SystemDisk: 系统盘,系统盘个数不超过1块
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SystemDisk: Array
        # @param Tags: 需要绑定的标签列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param DataDisk: 云数据盘,云数据盘总个数不超过15块
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DataDisk: Array
        # @param LocalDataDisk: 本地数据盘
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LocalDataDisk: Array

        attr_accessor :InstanceType, :SystemDisk, :Tags, :DataDisk, :LocalDataDisk

        def initialize(instancetype=nil, systemdisk=nil, tags=nil, datadisk=nil, localdatadisk=nil)
          @InstanceType = instancetype
          @SystemDisk = systemdisk
          @Tags = tags
          @DataDisk = datadisk
          @LocalDataDisk = localdatadisk
        end

        def deserialize(params)
          @InstanceType = params['InstanceType']
          unless params['SystemDisk'].nil?
            @SystemDisk = []
            params['SystemDisk'].each do |i|
              diskspecinfo_tmp = DiskSpecInfo.new
              diskspecinfo_tmp.deserialize(i)
              @SystemDisk << diskspecinfo_tmp
            end
          end
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          unless params['DataDisk'].nil?
            @DataDisk = []
            params['DataDisk'].each do |i|
              diskspecinfo_tmp = DiskSpecInfo.new
              diskspecinfo_tmp.deserialize(i)
              @DataDisk << diskspecinfo_tmp
            end
          end
          unless params['LocalDataDisk'].nil?
            @LocalDataDisk = []
            params['LocalDataDisk'].each do |i|
              diskspecinfo_tmp = DiskSpecInfo.new
              diskspecinfo_tmp.deserialize(i)
              @LocalDataDisk << diskspecinfo_tmp
            end
          end
        end
      end

      # 弹性扩缩容执行一次规则上下文
      class NotRepeatStrategy < TencentCloud::Common::AbstractModel
        # @param ExecuteAt: 该次任务执行的具体完整时间,格式为"2020-07-13 00:00:00"
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExecuteAt: String

        attr_accessor :ExecuteAt

        def initialize(executeat=nil)
          @ExecuteAt = executeat
        end

        def deserialize(params)
          @ExecuteAt = params['ExecuteAt']
        end
      end

      # 操作范围
      class OpScope < TencentCloud::Common::AbstractModel
        # @param ServiceInfoList: 操作范围,要操作的服务信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ServiceInfoList: Array

        attr_accessor :ServiceInfoList

        def initialize(serviceinfolist=nil)
          @ServiceInfoList = serviceinfolist
        end

        def deserialize(params)
          unless params['ServiceInfoList'].nil?
            @ServiceInfoList = []
            params['ServiceInfoList'].each do |i|
              servicebasicrestartinfo_tmp = ServiceBasicRestartInfo.new
              servicebasicrestartinfo_tmp.deserialize(i)
              @ServiceInfoList << servicebasicrestartinfo_tmp
            end
          end
        end
      end

      # 资源详情
      class OutterResource < TencentCloud::Common::AbstractModel
        # @param Spec: 规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Spec: String
        # @param SpecName: 规格名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SpecName: String
        # @param StorageType: 硬盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StorageType: Integer
        # @param DiskType: 硬盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskType: String
        # @param RootSize: 系统盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RootSize: Integer
        # @param MemSize: 内存大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MemSize: Integer
        # @param Cpu: CPU个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Cpu: Integer
        # @param DiskSize: 硬盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskSize: Integer
        # @param InstanceType: 规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceType: String

        attr_accessor :Spec, :SpecName, :StorageType, :DiskType, :RootSize, :MemSize, :Cpu, :DiskSize, :InstanceType

        def initialize(spec=nil, specname=nil, storagetype=nil, disktype=nil, rootsize=nil, memsize=nil, cpu=nil, disksize=nil, instancetype=nil)
          @Spec = spec
          @SpecName = specname
          @StorageType = storagetype
          @DiskType = disktype
          @RootSize = rootsize
          @MemSize = memsize
          @Cpu = cpu
          @DiskSize = disksize
          @InstanceType = instancetype
        end

        def deserialize(params)
          @Spec = params['Spec']
          @SpecName = params['SpecName']
          @StorageType = params['StorageType']
          @DiskType = params['DiskType']
          @RootSize = params['RootSize']
          @MemSize = params['MemSize']
          @Cpu = params['Cpu']
          @DiskSize = params['DiskSize']
          @InstanceType = params['InstanceType']
        end
      end

      # 概览数据
      class OverviewMetricData < TencentCloud::Common::AbstractModel
        # @param Metric: 指标名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Metric: String
        # @param First: 第一个数据时间戳
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type First: Integer
        # @param Last: 最后一个数据时间戳
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Last: Integer
        # @param Interval: 采样点时间间隔
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Interval: Integer
        # @param DataPoints: 采样点数据
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DataPoints: Array
        # @param Tags: 指标tags
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: :class:`Tencentcloud::Emr.v20190103.models.MetricTags`

        attr_accessor :Metric, :First, :Last, :Interval, :DataPoints, :Tags

        def initialize(metric=nil, first=nil, last=nil, interval=nil, datapoints=nil, tags=nil)
          @Metric = metric
          @First = first
          @Last = last
          @Interval = interval
          @DataPoints = datapoints
          @Tags = tags
        end

        def deserialize(params)
          @Metric = params['Metric']
          @First = params['First']
          @Last = params['Last']
          @Interval = params['Interval']
          @DataPoints = params['DataPoints']
          unless params['Tags'].nil?
            @Tags = MetricTags.new
            @Tags.deserialize(params['Tags'])
          end
        end
      end

      # Hbase的TableMetric Overview返回
      class OverviewRow < TencentCloud::Common::AbstractModel
        # @param Table: 表名字
        # @type Table: String
        # @param ReadRequestCount: 读请求次数
        # @type ReadRequestCount: Float
        # @param WriteRequestCount: 写请求次数
        # @type WriteRequestCount: Float
        # @param MemstoreSize: 当前memstore的size
        # @type MemstoreSize: Float
        # @param StoreFileSize: 当前region中StroreFile的size
        # @type StoreFileSize: Float
        # @param Operation: regions,点击可跳转
        # @type Operation: String

        attr_accessor :Table, :ReadRequestCount, :WriteRequestCount, :MemstoreSize, :StoreFileSize, :Operation

        def initialize(table=nil, readrequestcount=nil, writerequestcount=nil, memstoresize=nil, storefilesize=nil, operation=nil)
          @Table = table
          @ReadRequestCount = readrequestcount
          @WriteRequestCount = writerequestcount
          @MemstoreSize = memstoresize
          @StoreFileSize = storefilesize
          @Operation = operation
        end

        def deserialize(params)
          @Table = params['Table']
          @ReadRequestCount = params['ReadRequestCount']
          @WriteRequestCount = params['WriteRequestCount']
          @MemstoreSize = params['MemstoreSize']
          @StoreFileSize = params['StoreFileSize']
          @Operation = params['Operation']
        end
      end

      # 用于创建集群价格清单-节点组成部分价格
      class PartDetailPriceItem < TencentCloud::Common::AbstractModel
        # @param InstanceType: 类型包括:节点->node、系统盘->rootDisk、云数据盘->dataDisk、metaDB
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceType: String
        # @param Price: 单价(原价)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Price: Float
        # @param RealCost: 单价(折扣价)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RealCost: Float
        # @param RealTotalCost: 总价(折扣价)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RealTotalCost: Float
        # @param Policy: 折扣
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Policy: Float
        # @param GoodsNum: 数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GoodsNum: Integer

        attr_accessor :InstanceType, :Price, :RealCost, :RealTotalCost, :Policy, :GoodsNum

        def initialize(instancetype=nil, price=nil, realcost=nil, realtotalcost=nil, policy=nil, goodsnum=nil)
          @InstanceType = instancetype
          @Price = price
          @RealCost = realcost
          @RealTotalCost = realtotalcost
          @Policy = policy
          @GoodsNum = goodsnum
        end

        def deserialize(params)
          @InstanceType = params['InstanceType']
          @Price = params['Price']
          @RealCost = params['RealCost']
          @RealTotalCost = params['RealTotalCost']
          @Policy = params['Policy']
          @GoodsNum = params['GoodsNum']
        end
      end

      # Pod PVC存储方式描述
      class PersistentVolumeContext < TencentCloud::Common::AbstractModel
        # @param DiskSize: 磁盘大小,单位为GB。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskSize: Integer
        # @param DiskType: 磁盘类型。CLOUD_PREMIUM;CLOUD_SSD
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskType: String
        # @param DiskNum: 磁盘数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskNum: Integer

        attr_accessor :DiskSize, :DiskType, :DiskNum

        def initialize(disksize=nil, disktype=nil, disknum=nil)
          @DiskSize = disksize
          @DiskType = disktype
          @DiskNum = disknum
        end

        def deserialize(params)
          @DiskSize = params['DiskSize']
          @DiskType = params['DiskType']
          @DiskNum = params['DiskNum']
        end
      end

      # 描述集群实例位置信息
      class Placement < TencentCloud::Common::AbstractModel
        # @param Zone: 实例所属的可用区,例如ap-guangzhou-1。该参数也可以通过调用[DescribeZones](https://cloud.tencent.com/document/product/213/15707) 的返回值中的Zone字段来获取。
        # @type Zone: String
        # @param ProjectId: 实例所属项目ID。该参数可以通过调用[DescribeProject](https://cloud.tencent.com/document/api/651/78725) 的返回值中的 projectId 字段来获取。不填为默认项目。
        # @type ProjectId: Integer

        attr_accessor :Zone, :ProjectId

        def initialize(zone=nil, projectid=nil)
          @Zone = zone
          @ProjectId = projectid
        end

        def deserialize(params)
          @Zone = params['Zone']
          @ProjectId = params['ProjectId']
        end
      end

      # POD自定义权限和自定义参数
      class PodNewParameter < TencentCloud::Common::AbstractModel
        # @param InstanceId: TKE或EKS集群ID
        # @type InstanceId: String
        # @param Config: 自定义权限
        # 如:
        # {
        #   "apiVersion": "v1",
        #   "clusters": [
        #     {
        #       "cluster": {
        #         "certificate-authority-data": "xxxxxx==",
        #         "server": "https://xxxxx.com"
        #       },
        #       "name": "cls-xxxxx"
        #     }
        #   ],
        #   "contexts": [
        #     {
        #       "context": {
        #         "cluster": "cls-xxxxx",
        #         "user": "100014xxxxx"
        #       },
        #       "name": "cls-a44yhcxxxxxxxxxx"
        #     }
        #   ],
        #   "current-context": "cls-a4xxxx-context-default",
        #   "kind": "Config",
        #   "preferences": {},
        #   "users": [
        #     {
        #       "name": "100014xxxxx",
        #       "user": {
        #         "client-certificate-data": "xxxxxx",
        #         "client-key-data": "xxxxxx"
        #       }
        #     }
        #   ]
        # }
        # @type Config: String
        # @param Parameter: 自定义参数
        # 如:
        # {
        #     "apiVersion": "apps/v1",
        #     "kind": "Deployment",
        #     "metadata": {
        #       "name": "test-deployment",
        #       "labels": {
        #         "app": "test"
        #       }
        #     },
        #     "spec": {
        #       "replicas": 3,
        #       "selector": {
        #         "matchLabels": {
        #           "app": "test-app"
        #         }
        #       },
        #       "template": {
        #         "metadata": {
        #           "annotations": {
        #             "your-organization.com/department-v1": "test-example-v1",
        #             "your-organization.com/department-v2": "test-example-v2"
        #           },
        #           "labels": {
        #             "app": "test-app",
        #             "environment": "production"
        #           }
        #         },
        #         "spec": {
        #           "nodeSelector": {
        #             "your-organization/node-test": "test-node"
        #           },
        #           "containers": [
        #             {
        #               "name": "nginx",
        #               "image": "nginx:1.14.2",
        #               "ports": [
        #                 {
        #                   "containerPort": 80
        #                 }
        #               ]
        #             }
        #           ],
        #           "affinity": {
        #             "nodeAffinity": {
        #               "requiredDuringSchedulingIgnoredDuringExecution": {
        #                 "nodeSelectorTerms": [
        #                   {
        #                     "matchExpressions": [
        #                       {
        #                         "key": "disk-type",
        #                         "operator": "In",
        #                         "values": [
        #                           "ssd",
        #                           "sas"
        #                         ]
        #                       },
        #                       {
        #                         "key": "cpu-num",
        #                         "operator": "Gt",
        #                         "values": [
        #                           "6"
        #                         ]
        #                       }
        #                     ]
        #                   }
        #                 ]
        #               }
        #             }
        #           }
        #         }
        #       }
        #     }
        #   }
        # @type Parameter: String

        attr_accessor :InstanceId, :Config, :Parameter

        def initialize(instanceid=nil, config=nil, parameter=nil)
          @InstanceId = instanceid
          @Config = config
          @Parameter = parameter
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @Config = params['Config']
          @Parameter = params['Parameter']
        end
      end

      # 扩容容器资源时的资源描述
      class PodNewSpec < TencentCloud::Common::AbstractModel
        # @param ResourceProviderIdentifier: 外部资源提供者的标识符,例如"cls-a1cd23fa"。
        # @type ResourceProviderIdentifier: String
        # @param ResourceProviderType: 外部资源提供者类型,例如"tke",当前仅支持"tke"。
        # @type ResourceProviderType: String
        # @param NodeFlag: 资源的用途,即节点类型,当前仅支持"TASK"。
        # @type NodeFlag: String
        # @param Cpu: CPU核数。
        # @type Cpu: Integer
        # @param Memory: 内存大小,单位为GB。
        # @type Memory: Integer
        # @param CpuType: Eks集群-CPU类型,当前支持"intel"和"amd"
        # @type CpuType: String
        # @param PodVolumes: Pod节点数据目录挂载信息。
        # @type PodVolumes: Array
        # @param EnableDynamicSpecFlag: 是否浮动规格,默认否
        # <li>true:代表是</li>
        # <li>false:代表否</li>
        # @type EnableDynamicSpecFlag: Boolean
        # @param DynamicPodSpec: 浮动规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DynamicPodSpec: :class:`Tencentcloud::Emr.v20190103.models.DynamicPodSpec`
        # @param VpcId: 代表vpc网络唯一id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VpcId: String
        # @param SubnetId: 代表vpc子网唯一id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetId: String
        # @param PodName: pod name
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PodName: String

        attr_accessor :ResourceProviderIdentifier, :ResourceProviderType, :NodeFlag, :Cpu, :Memory, :CpuType, :PodVolumes, :EnableDynamicSpecFlag, :DynamicPodSpec, :VpcId, :SubnetId, :PodName

        def initialize(resourceprovideridentifier=nil, resourceprovidertype=nil, nodeflag=nil, cpu=nil, memory=nil, cputype=nil, podvolumes=nil, enabledynamicspecflag=nil, dynamicpodspec=nil, vpcid=nil, subnetid=nil, podname=nil)
          @ResourceProviderIdentifier = resourceprovideridentifier
          @ResourceProviderType = resourceprovidertype
          @NodeFlag = nodeflag
          @Cpu = cpu
          @Memory = memory
          @CpuType = cputype
          @PodVolumes = podvolumes
          @EnableDynamicSpecFlag = enabledynamicspecflag
          @DynamicPodSpec = dynamicpodspec
          @VpcId = vpcid
          @SubnetId = subnetid
          @PodName = podname
        end

        def deserialize(params)
          @ResourceProviderIdentifier = params['ResourceProviderIdentifier']
          @ResourceProviderType = params['ResourceProviderType']
          @NodeFlag = params['NodeFlag']
          @Cpu = params['Cpu']
          @Memory = params['Memory']
          @CpuType = params['CpuType']
          unless params['PodVolumes'].nil?
            @PodVolumes = []
            params['PodVolumes'].each do |i|
              podvolume_tmp = PodVolume.new
              podvolume_tmp.deserialize(i)
              @PodVolumes << podvolume_tmp
            end
          end
          @EnableDynamicSpecFlag = params['EnableDynamicSpecFlag']
          unless params['DynamicPodSpec'].nil?
            @DynamicPodSpec = DynamicPodSpec.new
            @DynamicPodSpec.deserialize(params['DynamicPodSpec'])
          end
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
          @PodName = params['PodName']
        end
      end

      # POD自定义权限和自定义参数
      class PodParameter < TencentCloud::Common::AbstractModel
        # @param ClusterId: TKE或EKS集群ID
        # @type ClusterId: String
        # @param Config: 自定义权限
        # 如:
        # {
        #   "apiVersion": "v1",
        #   "clusters": [
        #     {
        #       "cluster": {
        #         "certificate-authority-data": "xxxxxx==",
        #         "server": "https://xxxxx.com"
        #       },
        #       "name": "cls-xxxxx"
        #     }
        #   ],
        #   "contexts": [
        #     {
        #       "context": {
        #         "cluster": "cls-xxxxx",
        #         "user": "100014xxxxx"
        #       },
        #       "name": "cls-a44yhcxxxxxxxxxx"
        #     }
        #   ],
        #   "current-context": "cls-a4xxxx-context-default",
        #   "kind": "Config",
        #   "preferences": {},
        #   "users": [
        #     {
        #       "name": "100014xxxxx",
        #       "user": {
        #         "client-certificate-data": "xxxxxx",
        #         "client-key-data": "xxxxxx"
        #       }
        #     }
        #   ]
        # }
        # @type Config: String
        # @param Parameter: 自定义参数
        # 如:
        # {
        #     "apiVersion": "apps/v1",
        #     "kind": "Deployment",
        #     "metadata": {
        #       "name": "test-deployment",
        #       "labels": {
        #         "app": "test"
        #       }
        #     },
        #     "spec": {
        #       "replicas": 3,
        #       "selector": {
        #         "matchLabels": {
        #           "app": "test-app"
        #         }
        #       },
        #       "template": {
        #         "metadata": {
        #           "annotations": {
        #             "your-organization.com/department-v1": "test-example-v1",
        #             "your-organization.com/department-v2": "test-example-v2"
        #           },
        #           "labels": {
        #             "app": "test-app",
        #             "environment": "production"
        #           }
        #         },
        #         "spec": {
        #           "nodeSelector": {
        #             "your-organization/node-test": "test-node"
        #           },
        #           "containers": [
        #             {
        #               "name": "nginx",
        #               "image": "nginx:1.14.2",
        #               "ports": [
        #                 {
        #                   "containerPort": 80
        #                 }
        #               ]
        #             }
        #           ],
        #           "affinity": {
        #             "nodeAffinity": {
        #               "requiredDuringSchedulingIgnoredDuringExecution": {
        #                 "nodeSelectorTerms": [
        #                   {
        #                     "matchExpressions": [
        #                       {
        #                         "key": "disk-type",
        #                         "operator": "In",
        #                         "values": [
        #                           "ssd",
        #                           "sas"
        #                         ]
        #                       },
        #                       {
        #                         "key": "cpu-num",
        #                         "operator": "Gt",
        #                         "values": [
        #                           "6"
        #                         ]
        #                       }
        #                     ]
        #                   }
        #                 ]
        #               }
        #             }
        #           }
        #         }
        #       }
        #     }
        #   }
        # @type Parameter: String

        attr_accessor :ClusterId, :Config, :Parameter

        def initialize(clusterid=nil, config=nil, parameter=nil)
          @ClusterId = clusterid
          @Config = config
          @Parameter = parameter
        end

        def deserialize(params)
          @ClusterId = params['ClusterId']
          @Config = params['Config']
          @Parameter = params['Parameter']
        end
      end

      # Pod资源售卖规格
      class PodSaleSpec < TencentCloud::Common::AbstractModel
        # @param NodeType: 可售卖的资源规格,仅为以下值:"TASK","CORE","MASTER","ROUTER"。
        # @type NodeType: String
        # @param Cpu: Cpu核数。
        # @type Cpu: Integer
        # @param Memory: 内存数量,单位为GB。
        # @type Memory: Integer
        # @param Number: 该规格资源可申请的最大数量。
        # @type Number: Integer

        attr_accessor :NodeType, :Cpu, :Memory, :Number

        def initialize(nodetype=nil, cpu=nil, memory=nil, number=nil)
          @NodeType = nodetype
          @Cpu = cpu
          @Memory = memory
          @Number = number
        end

        def deserialize(params)
          @NodeType = params['NodeType']
          @Cpu = params['Cpu']
          @Memory = params['Memory']
          @Number = params['Number']
        end
      end

      # 扩容容器资源时的资源描述
      class PodSpec < TencentCloud::Common::AbstractModel
        # @param ResourceProviderIdentifier: 外部资源提供者的标识符,例如"cls-a1cd23fa"。
        # @type ResourceProviderIdentifier: String
        # @param ResourceProviderType: 外部资源提供者类型,例如"tke",当前仅支持"tke"。
        # @type ResourceProviderType: String
        # @param NodeType: 资源的用途,即节点类型,当前仅支持"TASK"。
        # @type NodeType: String
        # @param Cpu: CPU核数。
        # @type Cpu: Integer
        # @param Memory: 内存大小,单位为GB。
        # @type Memory: Integer
        # @param DataVolumes: 资源对宿主机的挂载点,指定的挂载点对应了宿主机的路径,该挂载点在Pod中作为数据存储目录使用。弃用
        # @type DataVolumes: Array
        # @param CpuType: Eks集群-CPU类型,当前支持"intel"和"amd"
        # @type CpuType: String
        # @param PodVolumes: Pod节点数据目录挂载信息。
        # @type PodVolumes: Array
        # @param IsDynamicSpec: 是否浮动规格,1是,0否
        # @type IsDynamicSpec: Integer
        # @param DynamicPodSpec: 浮动规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DynamicPodSpec: :class:`Tencentcloud::Emr.v20190103.models.DynamicPodSpec`
        # @param VpcId: 代表vpc网络唯一id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VpcId: String
        # @param SubnetId: 代表vpc子网唯一id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetId: String
        # @param PodName: pod name
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PodName: String

        attr_accessor :ResourceProviderIdentifier, :ResourceProviderType, :NodeType, :Cpu, :Memory, :DataVolumes, :CpuType, :PodVolumes, :IsDynamicSpec, :DynamicPodSpec, :VpcId, :SubnetId, :PodName

        def initialize(resourceprovideridentifier=nil, resourceprovidertype=nil, nodetype=nil, cpu=nil, memory=nil, datavolumes=nil, cputype=nil, podvolumes=nil, isdynamicspec=nil, dynamicpodspec=nil, vpcid=nil, subnetid=nil, podname=nil)
          @ResourceProviderIdentifier = resourceprovideridentifier
          @ResourceProviderType = resourceprovidertype
          @NodeType = nodetype
          @Cpu = cpu
          @Memory = memory
          @DataVolumes = datavolumes
          @CpuType = cputype
          @PodVolumes = podvolumes
          @IsDynamicSpec = isdynamicspec
          @DynamicPodSpec = dynamicpodspec
          @VpcId = vpcid
          @SubnetId = subnetid
          @PodName = podname
        end

        def deserialize(params)
          @ResourceProviderIdentifier = params['ResourceProviderIdentifier']
          @ResourceProviderType = params['ResourceProviderType']
          @NodeType = params['NodeType']
          @Cpu = params['Cpu']
          @Memory = params['Memory']
          @DataVolumes = params['DataVolumes']
          @CpuType = params['CpuType']
          unless params['PodVolumes'].nil?
            @PodVolumes = []
            params['PodVolumes'].each do |i|
              podvolume_tmp = PodVolume.new
              podvolume_tmp.deserialize(i)
              @PodVolumes << podvolume_tmp
            end
          end
          @IsDynamicSpec = params['IsDynamicSpec']
          unless params['DynamicPodSpec'].nil?
            @DynamicPodSpec = DynamicPodSpec.new
            @DynamicPodSpec.deserialize(params['DynamicPodSpec'])
          end
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
          @PodName = params['PodName']
        end
      end

      # Pod相关信息
      class PodSpecInfo < TencentCloud::Common::AbstractModel
        # @param PodSpec: 使用Pod资源扩容时,指定的Pod规格以及来源等信息
        # @type PodSpec: :class:`Tencentcloud::Emr.v20190103.models.PodNewSpec`
        # @param PodParameter: POD自定义权限和自定义参数
        # @type PodParameter: :class:`Tencentcloud::Emr.v20190103.models.PodNewParameter`

        attr_accessor :PodSpec, :PodParameter

        def initialize(podspec=nil, podparameter=nil)
          @PodSpec = podspec
          @PodParameter = podparameter
        end

        def deserialize(params)
          unless params['PodSpec'].nil?
            @PodSpec = PodNewSpec.new
            @PodSpec.deserialize(params['PodSpec'])
          end
          unless params['PodParameter'].nil?
            @PodParameter = PodNewParameter.new
            @PodParameter.deserialize(params['PodParameter'])
          end
        end
      end

      # 单个pod状态
      class PodState < TencentCloud::Common::AbstractModel
        # @param Name: pod的名称
        # @type Name: String
        # @param Uuid: pod uuid
        # @type Uuid: String
        # @param State: pod的状态
        # @type State: String
        # @param Reason: pod处于该状态原因
        # @type Reason: String
        # @param OwnerCluster: pod所属集群
        # @type OwnerCluster: String
        # @param Memory: pod内存大小
        # @type Memory: Integer

        attr_accessor :Name, :Uuid, :State, :Reason, :OwnerCluster, :Memory

        def initialize(name=nil, uuid=nil, state=nil, reason=nil, ownercluster=nil, memory=nil)
          @Name = name
          @Uuid = uuid
          @State = state
          @Reason = reason
          @OwnerCluster = ownercluster
          @Memory = memory
        end

        def deserialize(params)
          @Name = params['Name']
          @Uuid = params['Uuid']
          @State = params['State']
          @Reason = params['Reason']
          @OwnerCluster = params['OwnerCluster']
          @Memory = params['Memory']
        end
      end

      # Pod的存储设备描述信息。
      class PodVolume < TencentCloud::Common::AbstractModel
        # @param VolumeType: 存储类型,可为"pvc","hostpath"。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VolumeType: String
        # @param PVCVolume: 当VolumeType为"pvc"时,该字段生效。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PVCVolume: :class:`Tencentcloud::Emr.v20190103.models.PersistentVolumeContext`
        # @param HostVolume: 当VolumeType为"hostpath"时,该字段生效。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HostVolume: :class:`Tencentcloud::Emr.v20190103.models.HostVolumeContext`

        attr_accessor :VolumeType, :PVCVolume, :HostVolume

        def initialize(volumetype=nil, pvcvolume=nil, hostvolume=nil)
          @VolumeType = volumetype
          @PVCVolume = pvcvolume
          @HostVolume = hostvolume
        end

        def deserialize(params)
          @VolumeType = params['VolumeType']
          unless params['PVCVolume'].nil?
            @PVCVolume = PersistentVolumeContext.new
            @PVCVolume.deserialize(params['PVCVolume'])
          end
          unless params['HostVolume'].nil?
            @HostVolume = HostVolumeContext.new
            @HostVolume.deserialize(params['HostVolume'])
          end
        end
      end

      # 预执行脚本配置
      class PreExecuteFileSettings < TencentCloud::Common::AbstractModel
        # @param Path: 脚本在COS上路径,已废弃
        # @type Path: String
        # @param Args: 执行脚本参数
        # @type Args: Array
        # @param Bucket: COS的Bucket名称,已废弃
        # @type Bucket: String
        # @param Region: COS的Region名称,已废弃
        # @type Region: String
        # @param Domain: COS的Domain数据,已废弃
        # @type Domain: String
        # @param RunOrder: 执行顺序
        # @type RunOrder: Integer
        # @param WhenRun: resourceAfter 或 clusterAfter
        # @type WhenRun: String
        # @param CosFileName: 脚本文件名,已废弃
        # @type CosFileName: String
        # @param CosFileURI: 脚本的cos地址
        # @type CosFileURI: String
        # @param CosSecretId: cos的SecretId
        # @type CosSecretId: String
        # @param CosSecretKey: Cos的SecretKey
        # @type CosSecretKey: String
        # @param AppId: cos的appid,已废弃
        # @type AppId: String
        # @param Remark: 备注
        # @type Remark: String

        attr_accessor :Path, :Args, :Bucket, :Region, :Domain, :RunOrder, :WhenRun, :CosFileName, :CosFileURI, :CosSecretId, :CosSecretKey, :AppId, :Remark

        def initialize(path=nil, args=nil, bucket=nil, region=nil, domain=nil, runorder=nil, whenrun=nil, cosfilename=nil, cosfileuri=nil, cossecretid=nil, cossecretkey=nil, appid=nil, remark=nil)
          @Path = path
          @Args = args
          @Bucket = bucket
          @Region = region
          @Domain = domain
          @RunOrder = runorder
          @WhenRun = whenrun
          @CosFileName = cosfilename
          @CosFileURI = cosfileuri
          @CosSecretId = cossecretid
          @CosSecretKey = cossecretkey
          @AppId = appid
          @Remark = remark
        end

        def deserialize(params)
          @Path = params['Path']
          @Args = params['Args']
          @Bucket = params['Bucket']
          @Region = params['Region']
          @Domain = params['Domain']
          @RunOrder = params['RunOrder']
          @WhenRun = params['WhenRun']
          @CosFileName = params['CosFileName']
          @CosFileURI = params['CosFileURI']
          @CosSecretId = params['CosSecretId']
          @CosSecretKey = params['CosSecretKey']
          @AppId = params['AppId']
          @Remark = params['Remark']
        end
      end

      # 价格详情
      class PriceDetail < TencentCloud::Common::AbstractModel
        # @param ResourceId: 节点ID
        # @type ResourceId: String
        # @param Formula: 价格计算公式
        # @type Formula: String
        # @param OriginalCost: 原价
        # @type OriginalCost: Float
        # @param DiscountCost: 折扣价
        # @type DiscountCost: Float

        attr_accessor :ResourceId, :Formula, :OriginalCost, :DiscountCost

        def initialize(resourceid=nil, formula=nil, originalcost=nil, discountcost=nil)
          @ResourceId = resourceid
          @Formula = formula
          @OriginalCost = originalcost
          @DiscountCost = discountcost
        end

        def deserialize(params)
          @ResourceId = params['ResourceId']
          @Formula = params['Formula']
          @OriginalCost = params['OriginalCost']
          @DiscountCost = params['DiscountCost']
        end
      end

      # 询价资源
      class PriceResource < TencentCloud::Common::AbstractModel
        # @param Spec: 需要的规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Spec: String
        # @param StorageType: 硬盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StorageType: Integer
        # @param DiskType: 硬盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskType: String
        # @param RootSize: 系统盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RootSize: Integer
        # @param MemSize: 内存大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MemSize: Integer
        # @param Cpu: 核心数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Cpu: Integer
        # @param DiskSize: 硬盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskSize: Integer
        # @param MultiDisks: 云盘列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MultiDisks: Array
        # @param DiskCnt: 磁盘数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskCnt: Integer
        # @param InstanceType: 规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceType: String
        # @param Tags: 标签
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param DiskNum: 磁盘数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskNum: Integer
        # @param LocalDiskNum: 本地盘的数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LocalDiskNum: Integer

        attr_accessor :Spec, :StorageType, :DiskType, :RootSize, :MemSize, :Cpu, :DiskSize, :MultiDisks, :DiskCnt, :InstanceType, :Tags, :DiskNum, :LocalDiskNum

        def initialize(spec=nil, storagetype=nil, disktype=nil, rootsize=nil, memsize=nil, cpu=nil, disksize=nil, multidisks=nil, diskcnt=nil, instancetype=nil, tags=nil, disknum=nil, localdisknum=nil)
          @Spec = spec
          @StorageType = storagetype
          @DiskType = disktype
          @RootSize = rootsize
          @MemSize = memsize
          @Cpu = cpu
          @DiskSize = disksize
          @MultiDisks = multidisks
          @DiskCnt = diskcnt
          @InstanceType = instancetype
          @Tags = tags
          @DiskNum = disknum
          @LocalDiskNum = localdisknum
        end

        def deserialize(params)
          @Spec = params['Spec']
          @StorageType = params['StorageType']
          @DiskType = params['DiskType']
          @RootSize = params['RootSize']
          @MemSize = params['MemSize']
          @Cpu = params['Cpu']
          @DiskSize = params['DiskSize']
          unless params['MultiDisks'].nil?
            @MultiDisks = []
            params['MultiDisks'].each do |i|
              multidisk_tmp = MultiDisk.new
              multidisk_tmp.deserialize(i)
              @MultiDisks << multidisk_tmp
            end
          end
          @DiskCnt = params['DiskCnt']
          @InstanceType = params['InstanceType']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @DiskNum = params['DiskNum']
          @LocalDiskNum = params['LocalDiskNum']
        end
      end

      # 询价结果
      class PriceResult < TencentCloud::Common::AbstractModel
        # @param OriginalCost: 原价
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OriginalCost: Float
        # @param DiscountCost: 折扣价
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiscountCost: Float

        attr_accessor :OriginalCost, :DiscountCost

        def initialize(originalcost=nil, discountcost=nil)
          @OriginalCost = originalcost
          @DiscountCost = discountcost
        end

        def deserialize(params)
          @OriginalCost = params['OriginalCost']
          @DiscountCost = params['DiscountCost']
        end
      end

      # 获取CVM配额
      class QuotaEntity < TencentCloud::Common::AbstractModel
        # @param UsedQuota: 已使用配额
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UsedQuota: Integer
        # @param RemainingQuota: 剩余配额
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RemainingQuota: Integer
        # @param TotalQuota: 总配额
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalQuota: Integer
        # @param Zone: 可用区
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Zone: String

        attr_accessor :UsedQuota, :RemainingQuota, :TotalQuota, :Zone

        def initialize(usedquota=nil, remainingquota=nil, totalquota=nil, zone=nil)
          @UsedQuota = usedquota
          @RemainingQuota = remainingquota
          @TotalQuota = totalquota
          @Zone = zone
        end

        def deserialize(params)
          @UsedQuota = params['UsedQuota']
          @RemainingQuota = params['RemainingQuota']
          @TotalQuota = params['TotalQuota']
          @Zone = params['Zone']
        end
      end

      # 集群续费实例信息
      class RenewInstancesInfo < TencentCloud::Common::AbstractModel
        # @param EmrResourceId: 节点资源ID
        # @type EmrResourceId: String
        # @param Flag: 节点类型。0:common节点;1:master节点
        # ;2:core节点;3:task节点
        # @type Flag: Integer
        # @param Ip: 内网IP
        # @type Ip: String
        # @param MemDesc: 节点内存描述
        # @type MemDesc: String
        # @param CpuNum: 节点核数
        # @type CpuNum: Integer
        # @param DiskSize: 硬盘大小
        # @type DiskSize: String
        # @param ExpireTime: 过期时间
        # @type ExpireTime: String
        # @param Spec: 节点规格
        # @type Spec: String
        # @param StorageType: 磁盘类型
        # @type StorageType: Integer

        attr_accessor :EmrResourceId, :Flag, :Ip, :MemDesc, :CpuNum, :DiskSize, :ExpireTime, :Spec, :StorageType

        def initialize(emrresourceid=nil, flag=nil, ip=nil, memdesc=nil, cpunum=nil, disksize=nil, expiretime=nil, spec=nil, storagetype=nil)
          @EmrResourceId = emrresourceid
          @Flag = flag
          @Ip = ip
          @MemDesc = memdesc
          @CpuNum = cpunum
          @DiskSize = disksize
          @ExpireTime = expiretime
          @Spec = spec
          @StorageType = storagetype
        end

        def deserialize(params)
          @EmrResourceId = params['EmrResourceId']
          @Flag = params['Flag']
          @Ip = params['Ip']
          @MemDesc = params['MemDesc']
          @CpuNum = params['CpuNum']
          @DiskSize = params['DiskSize']
          @ExpireTime = params['ExpireTime']
          @Spec = params['Spec']
          @StorageType = params['StorageType']
        end
      end

      # 定时伸缩任务策略
      class RepeatStrategy < TencentCloud::Common::AbstractModel
        # @param RepeatType: 取值范围"DAY","DOW","DOM","NONE",分别表示按天重复、按周重复、按月重复和一次执行。必须填写
        # @type RepeatType: String
        # @param DayRepeat: 按天重复规则,当RepeatType为"DAY"时有效
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DayRepeat: :class:`Tencentcloud::Emr.v20190103.models.DayRepeatStrategy`
        # @param WeekRepeat: 按周重复规则,当RepeatType为"DOW"时有效
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type WeekRepeat: :class:`Tencentcloud::Emr.v20190103.models.WeekRepeatStrategy`
        # @param MonthRepeat: 按月重复规则,当RepeatType为"DOM"时有效
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MonthRepeat: :class:`Tencentcloud::Emr.v20190103.models.MonthRepeatStrategy`
        # @param NotRepeat: 一次执行规则,当RepeatType为"NONE"时有效
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NotRepeat: :class:`Tencentcloud::Emr.v20190103.models.NotRepeatStrategy`
        # @param Expire: 规则过期时间,超过该时间后,规则将自动置为暂停状态,形式为"2020-07-23 00:00:00"。必须填写
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Expire: String

        attr_accessor :RepeatType, :DayRepeat, :WeekRepeat, :MonthRepeat, :NotRepeat, :Expire

        def initialize(repeattype=nil, dayrepeat=nil, weekrepeat=nil, monthrepeat=nil, notrepeat=nil, expire=nil)
          @RepeatType = repeattype
          @DayRepeat = dayrepeat
          @WeekRepeat = weekrepeat
          @MonthRepeat = monthrepeat
          @NotRepeat = notrepeat
          @Expire = expire
        end

        def deserialize(params)
          @RepeatType = params['RepeatType']
          unless params['DayRepeat'].nil?
            @DayRepeat = DayRepeatStrategy.new
            @DayRepeat.deserialize(params['DayRepeat'])
          end
          unless params['WeekRepeat'].nil?
            @WeekRepeat = WeekRepeatStrategy.new
            @WeekRepeat.deserialize(params['WeekRepeat'])
          end
          unless params['MonthRepeat'].nil?
            @MonthRepeat = MonthRepeatStrategy.new
            @MonthRepeat.deserialize(params['MonthRepeat'])
          end
          unless params['NotRepeat'].nil?
            @NotRepeat = NotRepeatStrategy.new
            @NotRepeat.deserialize(params['NotRepeat'])
          end
          @Expire = params['Expire']
        end
      end

      # 资源详情
      class Resource < TencentCloud::Common::AbstractModel
        # @param Spec: 节点规格描述,如CVM.SA2。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Spec: String
        # @param StorageType: 存储类型
        # 取值范围:
        # <li>4:表示云SSD。</li>
        # <li>5:表示高效云盘。</li>
        # <li>6:表示增强型SSD云硬盘。</li>
        # <li>11:表示吞吐型云硬盘。</li>
        # <li>12:表示极速型SSD云硬盘。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StorageType: Integer
        # @param DiskType: 磁盘类型
        # 取值范围:
        # <li>CLOUD_SSD:表示云SSD。</li>
        # <li>CLOUD_PREMIUM:表示高效云盘。</li>
        # <li>CLOUD_BASIC:表示云硬盘。</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskType: String
        # @param MemSize: 内存容量,单位为M
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MemSize: Integer
        # @param Cpu: CPU核数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Cpu: Integer
        # @param DiskSize: 数据盘容量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskSize: Integer
        # @param RootSize: 系统盘容量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RootSize: Integer
        # @param MultiDisks: 云盘列表,当数据盘为一块云盘时,直接使用DiskType和DiskSize参数,超出部分使用MultiDisks
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MultiDisks: Array
        # @param Tags: 需要绑定的标签列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param InstanceType: 规格类型,如S2.MEDIUM8
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceType: String
        # @param LocalDiskNum: 本地盘数量,该字段已废弃
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LocalDiskNum: Integer
        # @param DiskNum: 本地盘数量,如2
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskNum: Integer

        attr_accessor :Spec, :StorageType, :DiskType, :MemSize, :Cpu, :DiskSize, :RootSize, :MultiDisks, :Tags, :InstanceType, :LocalDiskNum, :DiskNum

        def initialize(spec=nil, storagetype=nil, disktype=nil, memsize=nil, cpu=nil, disksize=nil, rootsize=nil, multidisks=nil, tags=nil, instancetype=nil, localdisknum=nil, disknum=nil)
          @Spec = spec
          @StorageType = storagetype
          @DiskType = disktype
          @MemSize = memsize
          @Cpu = cpu
          @DiskSize = disksize
          @RootSize = rootsize
          @MultiDisks = multidisks
          @Tags = tags
          @InstanceType = instancetype
          @LocalDiskNum = localdisknum
          @DiskNum = disknum
        end

        def deserialize(params)
          @Spec = params['Spec']
          @StorageType = params['StorageType']
          @DiskType = params['DiskType']
          @MemSize = params['MemSize']
          @Cpu = params['Cpu']
          @DiskSize = params['DiskSize']
          @RootSize = params['RootSize']
          unless params['MultiDisks'].nil?
            @MultiDisks = []
            params['MultiDisks'].each do |i|
              multidisk_tmp = MultiDisk.new
              multidisk_tmp.deserialize(i)
              @MultiDisks << multidisk_tmp
            end
          end
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @InstanceType = params['InstanceType']
          @LocalDiskNum = params['LocalDiskNum']
          @DiskNum = params['DiskNum']
        end
      end

      # 资源详情
      class ResourceDetail < TencentCloud::Common::AbstractModel
        # @param Spec: 规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Spec: String
        # @param SpecName: 规格名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SpecName: String
        # @param StorageType: 硬盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StorageType: Integer
        # @param DiskType: 硬盘类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskType: String
        # @param RootSize: 系统盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RootSize: Integer
        # @param MemSize: 内存大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MemSize: Integer
        # @param Cpu: CPU个数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Cpu: Integer
        # @param DiskSize: 硬盘大小
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DiskSize: Integer
        # @param InstanceType: 规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceType: String

        attr_accessor :Spec, :SpecName, :StorageType, :DiskType, :RootSize, :MemSize, :Cpu, :DiskSize, :InstanceType

        def initialize(spec=nil, specname=nil, storagetype=nil, disktype=nil, rootsize=nil, memsize=nil, cpu=nil, disksize=nil, instancetype=nil)
          @Spec = spec
          @SpecName = specname
          @StorageType = storagetype
          @DiskType = disktype
          @RootSize = rootsize
          @MemSize = memsize
          @Cpu = cpu
          @DiskSize = disksize
          @InstanceType = instancetype
        end

        def deserialize(params)
          @Spec = params['Spec']
          @SpecName = params['SpecName']
          @StorageType = params['StorageType']
          @DiskType = params['DiskType']
          @RootSize = params['RootSize']
          @MemSize = params['MemSize']
          @Cpu = params['Cpu']
          @DiskSize = params['DiskSize']
          @InstanceType = params['InstanceType']
        end
      end

      # 组件重启策略
      class RestartPolicy < TencentCloud::Common::AbstractModel
        # @param Name: 重启策略名。
        # @type Name: String
        # @param DisplayName: 策略展示名称。
        # @type DisplayName: String
        # @param Describe: 策略描述。
        # @type Describe: String
        # @param BatchSizeRange: 批量重启节点数可选范围。
        # @type BatchSizeRange: Array
        # @param IsDefault: 是否是默认策略。
        # @type IsDefault: String

        attr_accessor :Name, :DisplayName, :Describe, :BatchSizeRange, :IsDefault

        def initialize(name=nil, displayname=nil, describe=nil, batchsizerange=nil, isdefault=nil)
          @Name = name
          @DisplayName = displayname
          @Describe = describe
          @BatchSizeRange = batchsizerange
          @IsDefault = isdefault
        end

        def deserialize(params)
          @Name = params['Name']
          @DisplayName = params['DisplayName']
          @Describe = params['Describe']
          @BatchSizeRange = params['BatchSizeRange']
          @IsDefault = params['IsDefault']
        end
      end

      # RunJobFlow请求参数结构体
      class RunJobFlowRequest < TencentCloud::Common::AbstractModel
        # @param Name: 作业名称。
        # @type Name: String
        # @param CreateCluster: 是否新创建集群。
        # true,新创建集群,则使用Instance中的参数进行集群创建。
        # false,使用已有集群,则通过InstanceId传入。
        # @type CreateCluster: Boolean
        # @param Steps: 作业流程执行步骤。
        # @type Steps: Array
        # @param InstancePolicy: 作业流程正常完成时,集群的处理方式,可选择:
        # Terminate 销毁集群。
        # Reserve 保留集群。
        # @type InstancePolicy: String
        # @param ProductVersion: 只有CreateCluster为true时生效,目前只支持EMR版本,例如EMR-2.2.0,不支持ClickHouse和Druid版本。
        # @type ProductVersion: String
        # @param SecurityClusterFlag: 只在CreateCluster为true时生效。
        # true 表示安装kerberos,false表示不安装kerberos。
        # @type SecurityClusterFlag: Boolean
        # @param Software: 只在CreateCluster为true时生效。
        # 新建集群时,要安装的软件列表。
        # @type Software: Array
        # @param BootstrapActions: 引导脚本。
        # @type BootstrapActions: Array
        # @param Configurations: 指定配置创建集群。
        # @type Configurations: Array
        # @param LogUri: 作业日志保存地址。
        # @type LogUri: String
        # @param InstanceId: 只在CreateCluster为false时生效。
        # @type InstanceId: String
        # @param ApplicationRole: 自定义应用角色,大数据应用访问外部服务时使用的角色,默认为"EME_QCSRole"。
        # @type ApplicationRole: String
        # @param ClientToken: 重入标签,用来可重入检查,防止在一段时间内,创建相同的流程作业。
        # @type ClientToken: String
        # @param Instance: 只在CreateCluster为true时生效,使用该配置创建集群。
        # @type Instance: :class:`Tencentcloud::Emr.v20190103.models.ClusterSetting`

        attr_accessor :Name, :CreateCluster, :Steps, :InstancePolicy, :ProductVersion, :SecurityClusterFlag, :Software, :BootstrapActions, :Configurations, :LogUri, :InstanceId, :ApplicationRole, :ClientToken, :Instance

        def initialize(name=nil, createcluster=nil, steps=nil, instancepolicy=nil, productversion=nil, securityclusterflag=nil, software=nil, bootstrapactions=nil, configurations=nil, loguri=nil, instanceid=nil, applicationrole=nil, clienttoken=nil, instance=nil)
          @Name = name
          @CreateCluster = createcluster
          @Steps = steps
          @InstancePolicy = instancepolicy
          @ProductVersion = productversion
          @SecurityClusterFlag = securityclusterflag
          @Software = software
          @BootstrapActions = bootstrapactions
          @Configurations = configurations
          @LogUri = loguri
          @InstanceId = instanceid
          @ApplicationRole = applicationrole
          @ClientToken = clienttoken
          @Instance = instance
        end

        def deserialize(params)
          @Name = params['Name']
          @CreateCluster = params['CreateCluster']
          unless params['Steps'].nil?
            @Steps = []
            params['Steps'].each do |i|
              step_tmp = Step.new
              step_tmp.deserialize(i)
              @Steps << step_tmp
            end
          end
          @InstancePolicy = params['InstancePolicy']
          @ProductVersion = params['ProductVersion']
          @SecurityClusterFlag = params['SecurityClusterFlag']
          @Software = params['Software']
          unless params['BootstrapActions'].nil?
            @BootstrapActions = []
            params['BootstrapActions'].each do |i|
              bootstrapaction_tmp = BootstrapAction.new
              bootstrapaction_tmp.deserialize(i)
              @BootstrapActions << bootstrapaction_tmp
            end
          end
          unless params['Configurations'].nil?
            @Configurations = []
            params['Configurations'].each do |i|
              configuration_tmp = Configuration.new
              configuration_tmp.deserialize(i)
              @Configurations << configuration_tmp
            end
          end
          @LogUri = params['LogUri']
          @InstanceId = params['InstanceId']
          @ApplicationRole = params['ApplicationRole']
          @ClientToken = params['ClientToken']
          unless params['Instance'].nil?
            @Instance = ClusterSetting.new
            @Instance.deserialize(params['Instance'])
          end
        end
      end

      # RunJobFlow返回参数结构体
      class RunJobFlowResponse < TencentCloud::Common::AbstractModel
        # @param JobFlowId: 作业流程ID。
        # @type JobFlowId: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :JobFlowId, :RequestId

        def initialize(jobflowid=nil, requestid=nil)
          @JobFlowId = jobflowid
          @RequestId = requestid
        end

        def deserialize(params)
          @JobFlowId = params['JobFlowId']
          @RequestId = params['RequestId']
        end
      end

      # ScaleOutCluster请求参数结构体
      class ScaleOutClusterRequest < TencentCloud::Common::AbstractModel
        # @param InstanceChargeType: 节点计费模式。取值范围:
        # <li>PREPAID:预付费,即包年包月。</li>
        # <li>POSTPAID_BY_HOUR:按小时后付费。</li>
        # <li>SPOTPAID:竞价付费(仅支持TASK节点)。</li>
        # @type InstanceChargeType: String
        # @param InstanceId: 集群实例ID。
        # @type InstanceId: String
        # @param ScaleOutNodeConfig: 扩容节点类型以及数量
        # @type ScaleOutNodeConfig: :class:`Tencentcloud::Emr.v20190103.models.ScaleOutNodeConfig`
        # @param ClientToken: 唯一随机标识,时效5分钟,需要调用者指定 防止客户端重新创建资源,例如 a9a90aa6-751a-41b6-aad6-fae36063280
        # @type ClientToken: String
        # @param InstanceChargePrepaid: 即包年包月相关参数设置。通过该参数可以指定包年包月实例的购买时长、是否设置自动续费等属性。若指定实例的付费模式为预付费则该参数必传。
        # @type InstanceChargePrepaid: :class:`Tencentcloud::Emr.v20190103.models.InstanceChargePrepaid`
        # @param ScriptBootstrapActionConfig: [引导操作](https://cloud.tencent.com/document/product/589/35656)脚本设置。
        # @type ScriptBootstrapActionConfig: Array
        # @param SoftDeployInfo: 扩容部署服务,新增节点将默认继承当前节点类型中所部署服务,部署服务含默认可选服务,该参数仅支持可选服务填写,如:存量task节点已部署HDFS、YARN、impala;使用api扩容task节不部署impala时,部署服务仅填写HDFS、YARN。[组件名对应的映射关系表](https://cloud.tencent.com/document/product/589/98760)。
        # @type SoftDeployInfo: Array
        # @param ServiceNodeInfo: 部署进程,默认部署扩容服务的全部进程,支持修改部署进程,如:当前task节点部署服务为:HDFS、YARN、impala,默认部署服务为:DataNode,NodeManager,ImpalaServer,若用户需修改部署进程信息,部署进程:	DataNode,NodeManager,ImpalaServerCoordinator或DataNode,NodeManager,ImpalaServerExecutor。[进程名对应的映射关系表](https://cloud.tencent.com/document/product/589/98760)。
        # @type ServiceNodeInfo: Array
        # @param DisasterRecoverGroupIds: 分散置放群组ID列表,当前只支持指定一个。
        # 该参数可以通过调用 [DescribeDisasterRecoverGroups](https://cloud.tencent.com/document/product/213/17810)的返回值中的DisasterRecoverGroupId字段来获取。
        # @type DisasterRecoverGroupIds: Array
        # @param Tags: 扩容节点绑定标签列表。
        # @type Tags: Array
        # @param HardwareSourceType: 扩容所选资源类型,可选范围为"host","pod",host为普通的CVM资源,Pod为TKE集群或EKS集群提供的资源
        # @type HardwareSourceType: String
        # @param PodSpecInfo: Pod相关资源信息
        # @type PodSpecInfo: :class:`Tencentcloud::Emr.v20190103.models.PodSpecInfo`
        # @param ClickHouseClusterName: 使用clickhouse集群扩容时,选择的机器分组名称
        # @type ClickHouseClusterName: String
        # @param ClickHouseClusterType: 使用clickhouse集群扩容时,选择的机器分组类型。new为新增,old为选择旧分组
        # @type ClickHouseClusterType: String
        # @param YarnNodeLabel: 扩容指定 Yarn Node Label
        # @type YarnNodeLabel: String
        # @param EnableStartServiceFlag: 扩容后是否启动服务,默认取值否
        # <li>true:是</li>
        # <li>false:否</li>
        # @type EnableStartServiceFlag: Boolean
        # @param ResourceSpec: 规格设置
        # @type ResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NodeResourceSpec`
        # @param Zone: 实例所属的可用区,例如ap-guangzhou-1。该参数也可以通过调用[DescribeZones](https://cloud.tencent.com/document/product/213/15707) 的返回值中的Zone字段来获取。
        # @type Zone: String
        # @param SubnetId: 子网,默认是集群创建时的子网
        # @type SubnetId: String
        # @param ScaleOutServiceConfGroupsInfo: 扩容指定配置组
        # @type ScaleOutServiceConfGroupsInfo: Array

        attr_accessor :InstanceChargeType, :InstanceId, :ScaleOutNodeConfig, :ClientToken, :InstanceChargePrepaid, :ScriptBootstrapActionConfig, :SoftDeployInfo, :ServiceNodeInfo, :DisasterRecoverGroupIds, :Tags, :HardwareSourceType, :PodSpecInfo, :ClickHouseClusterName, :ClickHouseClusterType, :YarnNodeLabel, :EnableStartServiceFlag, :ResourceSpec, :Zone, :SubnetId, :ScaleOutServiceConfGroupsInfo

        def initialize(instancechargetype=nil, instanceid=nil, scaleoutnodeconfig=nil, clienttoken=nil, instancechargeprepaid=nil, scriptbootstrapactionconfig=nil, softdeployinfo=nil, servicenodeinfo=nil, disasterrecovergroupids=nil, tags=nil, hardwaresourcetype=nil, podspecinfo=nil, clickhouseclustername=nil, clickhouseclustertype=nil, yarnnodelabel=nil, enablestartserviceflag=nil, resourcespec=nil, zone=nil, subnetid=nil, scaleoutserviceconfgroupsinfo=nil)
          @InstanceChargeType = instancechargetype
          @InstanceId = instanceid
          @ScaleOutNodeConfig = scaleoutnodeconfig
          @ClientToken = clienttoken
          @InstanceChargePrepaid = instancechargeprepaid
          @ScriptBootstrapActionConfig = scriptbootstrapactionconfig
          @SoftDeployInfo = softdeployinfo
          @ServiceNodeInfo = servicenodeinfo
          @DisasterRecoverGroupIds = disasterrecovergroupids
          @Tags = tags
          @HardwareSourceType = hardwaresourcetype
          @PodSpecInfo = podspecinfo
          @ClickHouseClusterName = clickhouseclustername
          @ClickHouseClusterType = clickhouseclustertype
          @YarnNodeLabel = yarnnodelabel
          @EnableStartServiceFlag = enablestartserviceflag
          @ResourceSpec = resourcespec
          @Zone = zone
          @SubnetId = subnetid
          @ScaleOutServiceConfGroupsInfo = scaleoutserviceconfgroupsinfo
        end

        def deserialize(params)
          @InstanceChargeType = params['InstanceChargeType']
          @InstanceId = params['InstanceId']
          unless params['ScaleOutNodeConfig'].nil?
            @ScaleOutNodeConfig = ScaleOutNodeConfig.new
            @ScaleOutNodeConfig.deserialize(params['ScaleOutNodeConfig'])
          end
          @ClientToken = params['ClientToken']
          unless params['InstanceChargePrepaid'].nil?
            @InstanceChargePrepaid = InstanceChargePrepaid.new
            @InstanceChargePrepaid.deserialize(params['InstanceChargePrepaid'])
          end
          unless params['ScriptBootstrapActionConfig'].nil?
            @ScriptBootstrapActionConfig = []
            params['ScriptBootstrapActionConfig'].each do |i|
              scriptbootstrapactionconfig_tmp = ScriptBootstrapActionConfig.new
              scriptbootstrapactionconfig_tmp.deserialize(i)
              @ScriptBootstrapActionConfig << scriptbootstrapactionconfig_tmp
            end
          end
          @SoftDeployInfo = params['SoftDeployInfo']
          @ServiceNodeInfo = params['ServiceNodeInfo']
          @DisasterRecoverGroupIds = params['DisasterRecoverGroupIds']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @HardwareSourceType = params['HardwareSourceType']
          unless params['PodSpecInfo'].nil?
            @PodSpecInfo = PodSpecInfo.new
            @PodSpecInfo.deserialize(params['PodSpecInfo'])
          end
          @ClickHouseClusterName = params['ClickHouseClusterName']
          @ClickHouseClusterType = params['ClickHouseClusterType']
          @YarnNodeLabel = params['YarnNodeLabel']
          @EnableStartServiceFlag = params['EnableStartServiceFlag']
          unless params['ResourceSpec'].nil?
            @ResourceSpec = NodeResourceSpec.new
            @ResourceSpec.deserialize(params['ResourceSpec'])
          end
          @Zone = params['Zone']
          @SubnetId = params['SubnetId']
          unless params['ScaleOutServiceConfGroupsInfo'].nil?
            @ScaleOutServiceConfGroupsInfo = []
            params['ScaleOutServiceConfGroupsInfo'].each do |i|
              scaleoutserviceconfgroupsinfo_tmp = ScaleOutServiceConfGroupsInfo.new
              scaleoutserviceconfgroupsinfo_tmp.deserialize(i)
              @ScaleOutServiceConfGroupsInfo << scaleoutserviceconfgroupsinfo_tmp
            end
          end
        end
      end

      # ScaleOutCluster返回参数结构体
      class ScaleOutClusterResponse < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param ClientToken: 客户端Token。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClientToken: String
        # @param FlowId: 扩容流程ID。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowId: Integer
        # @param TraceId: 查询流程状态,流程额外信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TraceId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :InstanceId, :ClientToken, :FlowId, :TraceId, :RequestId

        def initialize(instanceid=nil, clienttoken=nil, flowid=nil, traceid=nil, requestid=nil)
          @InstanceId = instanceid
          @ClientToken = clienttoken
          @FlowId = flowid
          @TraceId = traceid
          @RequestId = requestid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @ClientToken = params['ClientToken']
          @FlowId = params['FlowId']
          @TraceId = params['TraceId']
          @RequestId = params['RequestId']
        end
      end

      # ScaleOutInstance请求参数结构体
      class ScaleOutInstanceRequest < TencentCloud::Common::AbstractModel
        # @param TimeUnit: 扩容的时间单位。取值范围:
        # <li>s:表示秒。PayMode取值为0时,TimeUnit只能取值为s。</li>
        # <li>m:表示月份。PayMode取值为1时,TimeUnit只能取值为m。</li>
        # @type TimeUnit: String
        # @param TimeSpan: 扩容的时长。结合TimeUnit一起使用。
        # <li>TimeUnit为s时,该参数只能填写3600,表示按量计费实例。</li>
        # <li>TimeUnit为m时,该参数填写的数字表示包年包月实例的购买时长,如1表示购买一个月</li>
        # @type TimeSpan: Integer
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param PayMode: 实例计费模式。取值范围:
        # <li>0:表示按量计费。</li>
        # <li>1:表示包年包月。</li>
        # @type PayMode: Integer
        # @param ClientToken: 唯一随机标识,时效5分钟,需要调用者指定 防止客户端重新创建资源,例如 a9a90aa6-751a-41b6-aad6-fae36063280
        # @type ClientToken: String
        # @param PreExecutedFileSettings: 引导操作脚本设置。
        # @type PreExecutedFileSettings: Array
        # @param TaskCount: 扩容的Task节点数量。
        # @type TaskCount: Integer
        # @param CoreCount: 扩容的Core节点数量。
        # @type CoreCount: Integer
        # @param UnNecessaryNodeList: 扩容时不需要安装的进程。
        # @type UnNecessaryNodeList: Array
        # @param RouterCount: 扩容的Router节点数量。
        # @type RouterCount: Integer
        # @param SoftDeployInfo: 部署的服务。
        # <li>SoftDeployInfo和ServiceNodeInfo是同组参数,和UnNecessaryNodeList参数互斥。</li>
        # <li>建议使用SoftDeployInfo和ServiceNodeInfo组合。</li>
        # @type SoftDeployInfo: Array
        # @param ServiceNodeInfo: 启动的进程。
        # @type ServiceNodeInfo: Array
        # @param DisasterRecoverGroupIds: 分散置放群组ID列表,当前仅支持指定一个。
        # @type DisasterRecoverGroupIds: Array
        # @param Tags: 扩容节点绑定标签列表。
        # @type Tags: Array
        # @param HardwareResourceType: 扩容所选资源类型,可选范围为"host","pod",host为普通的CVM资源,Pod为TKE集群或EKS集群提供的资源
        # @type HardwareResourceType: String
        # @param PodSpec: 使用Pod资源扩容时,指定的Pod规格以及来源等信息
        # @type PodSpec: :class:`Tencentcloud::Emr.v20190103.models.PodSpec`
        # @param ClickHouseClusterName: 使用clickhouse集群扩容时,选择的机器分组名称
        # @type ClickHouseClusterName: String
        # @param ClickHouseClusterType: 使用clickhouse集群扩容时,选择的机器分组类型。new为新增,old为选择旧分组
        # @type ClickHouseClusterType: String
        # @param YarnNodeLabel: 规则扩容指定 yarn node label
        # @type YarnNodeLabel: String
        # @param PodParameter: POD自定义权限和自定义参数
        # @type PodParameter: :class:`Tencentcloud::Emr.v20190103.models.PodParameter`
        # @param MasterCount: 扩容的Master节点的数量。
        # 使用clickhouse集群扩容时,该参数不生效。
        # 使用kafka集群扩容时,该参数不生效。
        # 当HardwareResourceType=POD时,该参数不生效。
        # @type MasterCount: Integer
        # @param StartServiceAfterScaleOut: 扩容后是否启动服务,true:启动,false:不启动
        # @type StartServiceAfterScaleOut: String
        # @param ZoneId: 可用区,默认是集群的主可用区
        # @type ZoneId: Integer
        # @param SubnetId: 子网,默认是集群创建时的子网
        # @type SubnetId: String
        # @param ScaleOutServiceConfAssign: 预设配置组
        # @type ScaleOutServiceConfAssign: String
        # @param AutoRenew: 0表示关闭自动续费,1表示开启自动续费
        # @type AutoRenew: Integer
        # @param ResourceBaseType: 类型为ComputeResource和EMR以及默认,默认为EMR,类型为EMR时,InstanceId生效,类型为ComputeResource时,使用ComputeResourceId标识
        # @type ResourceBaseType: String
        # @param ComputeResourceId: 计算资源id
        # @type ComputeResourceId: String

        attr_accessor :TimeUnit, :TimeSpan, :InstanceId, :PayMode, :ClientToken, :PreExecutedFileSettings, :TaskCount, :CoreCount, :UnNecessaryNodeList, :RouterCount, :SoftDeployInfo, :ServiceNodeInfo, :DisasterRecoverGroupIds, :Tags, :HardwareResourceType, :PodSpec, :ClickHouseClusterName, :ClickHouseClusterType, :YarnNodeLabel, :PodParameter, :MasterCount, :StartServiceAfterScaleOut, :ZoneId, :SubnetId, :ScaleOutServiceConfAssign, :AutoRenew, :ResourceBaseType, :ComputeResourceId

        def initialize(timeunit=nil, timespan=nil, instanceid=nil, paymode=nil, clienttoken=nil, preexecutedfilesettings=nil, taskcount=nil, corecount=nil, unnecessarynodelist=nil, routercount=nil, softdeployinfo=nil, servicenodeinfo=nil, disasterrecovergroupids=nil, tags=nil, hardwareresourcetype=nil, podspec=nil, clickhouseclustername=nil, clickhouseclustertype=nil, yarnnodelabel=nil, podparameter=nil, mastercount=nil, startserviceafterscaleout=nil, zoneid=nil, subnetid=nil, scaleoutserviceconfassign=nil, autorenew=nil, resourcebasetype=nil, computeresourceid=nil)
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @InstanceId = instanceid
          @PayMode = paymode
          @ClientToken = clienttoken
          @PreExecutedFileSettings = preexecutedfilesettings
          @TaskCount = taskcount
          @CoreCount = corecount
          @UnNecessaryNodeList = unnecessarynodelist
          @RouterCount = routercount
          @SoftDeployInfo = softdeployinfo
          @ServiceNodeInfo = servicenodeinfo
          @DisasterRecoverGroupIds = disasterrecovergroupids
          @Tags = tags
          @HardwareResourceType = hardwareresourcetype
          @PodSpec = podspec
          @ClickHouseClusterName = clickhouseclustername
          @ClickHouseClusterType = clickhouseclustertype
          @YarnNodeLabel = yarnnodelabel
          @PodParameter = podparameter
          @MasterCount = mastercount
          @StartServiceAfterScaleOut = startserviceafterscaleout
          @ZoneId = zoneid
          @SubnetId = subnetid
          @ScaleOutServiceConfAssign = scaleoutserviceconfassign
          @AutoRenew = autorenew
          @ResourceBaseType = resourcebasetype
          @ComputeResourceId = computeresourceid
        end

        def deserialize(params)
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          @InstanceId = params['InstanceId']
          @PayMode = params['PayMode']
          @ClientToken = params['ClientToken']
          unless params['PreExecutedFileSettings'].nil?
            @PreExecutedFileSettings = []
            params['PreExecutedFileSettings'].each do |i|
              preexecutefilesettings_tmp = PreExecuteFileSettings.new
              preexecutefilesettings_tmp.deserialize(i)
              @PreExecutedFileSettings << preexecutefilesettings_tmp
            end
          end
          @TaskCount = params['TaskCount']
          @CoreCount = params['CoreCount']
          @UnNecessaryNodeList = params['UnNecessaryNodeList']
          @RouterCount = params['RouterCount']
          @SoftDeployInfo = params['SoftDeployInfo']
          @ServiceNodeInfo = params['ServiceNodeInfo']
          @DisasterRecoverGroupIds = params['DisasterRecoverGroupIds']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @HardwareResourceType = params['HardwareResourceType']
          unless params['PodSpec'].nil?
            @PodSpec = PodSpec.new
            @PodSpec.deserialize(params['PodSpec'])
          end
          @ClickHouseClusterName = params['ClickHouseClusterName']
          @ClickHouseClusterType = params['ClickHouseClusterType']
          @YarnNodeLabel = params['YarnNodeLabel']
          unless params['PodParameter'].nil?
            @PodParameter = PodParameter.new
            @PodParameter.deserialize(params['PodParameter'])
          end
          @MasterCount = params['MasterCount']
          @StartServiceAfterScaleOut = params['StartServiceAfterScaleOut']
          @ZoneId = params['ZoneId']
          @SubnetId = params['SubnetId']
          @ScaleOutServiceConfAssign = params['ScaleOutServiceConfAssign']
          @AutoRenew = params['AutoRenew']
          @ResourceBaseType = params['ResourceBaseType']
          @ComputeResourceId = params['ComputeResourceId']
        end
      end

      # ScaleOutInstance返回参数结构体
      class ScaleOutInstanceResponse < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param DealNames: 订单号。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DealNames: Array
        # @param ClientToken: 客户端Token。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClientToken: String
        # @param FlowId: 扩容流程ID。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowId: Integer
        # @param BillId: 大订单号。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type BillId: String
        # @param TraceId: 扩容TraceId
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TraceId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :InstanceId, :DealNames, :ClientToken, :FlowId, :BillId, :TraceId, :RequestId

        def initialize(instanceid=nil, dealnames=nil, clienttoken=nil, flowid=nil, billid=nil, traceid=nil, requestid=nil)
          @InstanceId = instanceid
          @DealNames = dealnames
          @ClientToken = clienttoken
          @FlowId = flowid
          @BillId = billid
          @TraceId = traceid
          @RequestId = requestid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @DealNames = params['DealNames']
          @ClientToken = params['ClientToken']
          @FlowId = params['FlowId']
          @BillId = params['BillId']
          @TraceId = params['TraceId']
          @RequestId = params['RequestId']
        end
      end

      # 扩容节点类型以及数量
      class ScaleOutNodeConfig < TencentCloud::Common::AbstractModel
        # @param NodeFlag: 扩容节点类型取值范围:
        #   <li>MASTER</li>
        #   <li>TASK</li>
        #   <li>CORE</li>
        #   <li>ROUTER</li>
        # @type NodeFlag: String
        # @param NodeCount: 扩容节点数量
        # @type NodeCount: Integer

        attr_accessor :NodeFlag, :NodeCount

        def initialize(nodeflag=nil, nodecount=nil)
          @NodeFlag = nodeflag
          @NodeCount = nodecount
        end

        def deserialize(params)
          @NodeFlag = params['NodeFlag']
          @NodeCount = params['NodeCount']
        end
      end

      # 扩容指定配置组
      class ScaleOutServiceConfGroupsInfo < TencentCloud::Common::AbstractModel
        # @param ServiceComponentName: 组件版本名称 如 HDFS-2.8.5
        # @type ServiceComponentName: String
        # @param ConfGroupName: 配置组名 如hdfs-core-defaultGroup    ConfGroupName参数传入 代表配置组维度
        #                                                              ConfGroupName参数不传 默认 代表集群维度
        # @type ConfGroupName: String

        attr_accessor :ServiceComponentName, :ConfGroupName

        def initialize(servicecomponentname=nil, confgroupname=nil)
          @ServiceComponentName = servicecomponentname
          @ConfGroupName = confgroupname
        end

        def deserialize(params)
          @ServiceComponentName = params['ServiceComponentName']
          @ConfGroupName = params['ConfGroupName']
        end
      end

      # 集群应用场景以及支持部署组件信息
      class SceneSoftwareConfig < TencentCloud::Common::AbstractModel
        # @param Software: 部署的组件列表。不同的EMR产品版本ProductVersion 对应不同可选组件列表,不同产品版本可选组件列表查询:[组件版本](https://cloud.tencent.com/document/product/589/20279) ;
        # 填写实例值:hive、flink。
        # @type Software: Array
        # @param SceneName: 默认Hadoop-Default,[场景查询](https://cloud.tencent.com/document/product/589/14624)场景化取值范围:
        # Hadoop-Kudu
        # Hadoop-Zookeeper
        # Hadoop-Presto
        # Hadoop-Hbase
        # Hadoop-Default
        # @type SceneName: String

        attr_accessor :Software, :SceneName

        def initialize(software=nil, scenename=nil)
          @Software = software
          @SceneName = scenename
        end

        def deserialize(params)
          @Software = params['Software']
          @SceneName = params['SceneName']
        end
      end

      # 调度任务详情
      class SchedulerTaskDetail < TencentCloud::Common::AbstractModel
        # @param Step: 步骤
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Step: String
        # @param Progress: 进度
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Progress: String
        # @param FailReason: 失败信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailReason: String
        # @param JobId: 用来获取详情的id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type JobId: Integer

        attr_accessor :Step, :Progress, :FailReason, :JobId

        def initialize(step=nil, progress=nil, failreason=nil, jobid=nil)
          @Step = step
          @Progress = progress
          @FailReason = failreason
          @JobId = jobid
        end

        def deserialize(params)
          @Step = params['Step']
          @Progress = params['Progress']
          @FailReason = params['FailReason']
          @JobId = params['JobId']
        end
      end

      # yarn资源调度历史
      class SchedulerTaskInfo < TencentCloud::Common::AbstractModel
        # @param SchedulerName: 调度器类型
        # @type SchedulerName: String
        # @param OperatorName: 操作类型
        # @type OperatorName: String
        # @param CreateTime: 开始时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CreateTime: String
        # @param EndTime: 结束时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EndTime: String
        # @param State: 状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type State: Integer
        # @param Details: 详情
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Details: Array

        attr_accessor :SchedulerName, :OperatorName, :CreateTime, :EndTime, :State, :Details

        def initialize(schedulername=nil, operatorname=nil, createtime=nil, endtime=nil, state=nil, details=nil)
          @SchedulerName = schedulername
          @OperatorName = operatorname
          @CreateTime = createtime
          @EndTime = endtime
          @State = state
          @Details = details
        end

        def deserialize(params)
          @SchedulerName = params['SchedulerName']
          @OperatorName = params['OperatorName']
          @CreateTime = params['CreateTime']
          @EndTime = params['EndTime']
          @State = params['State']
          unless params['Details'].nil?
            @Details = []
            params['Details'].each do |i|
              schedulertaskdetail_tmp = SchedulerTaskDetail.new
              schedulertaskdetail_tmp.deserialize(i)
              @Details << schedulertaskdetail_tmp
            end
          end
        end
      end

      # 添加引导操作
      class ScriptBootstrapActionConfig < TencentCloud::Common::AbstractModel
        # @param CosFileURI: 脚本的cos地址,参照格式:https://beijing-111111.cos.ap-beijing.myqcloud.com/data/test.sh查询cos存储桶列表:[存储桶列表](https://console.cloud.tencent.com/cos/bucket)
        # @type CosFileURI: String
        # @param ExecutionMoment: 引导脚步执行时机范围
        # <li>resourceAfter:节点初始化后</li>
        # <li>clusterAfter:集群启动后</li>
        # <li>clusterBefore:集群启动前</li>
        # @type ExecutionMoment: String
        # @param Args: 执行脚本参数,参数格式请遵循标准Shell规范
        # @type Args: Array
        # @param CosFileName: 脚本文件名
        # @type CosFileName: String
        # @param Remark: 备注
        # @type Remark: String

        attr_accessor :CosFileURI, :ExecutionMoment, :Args, :CosFileName, :Remark

        def initialize(cosfileuri=nil, executionmoment=nil, args=nil, cosfilename=nil, remark=nil)
          @CosFileURI = cosfileuri
          @ExecutionMoment = executionmoment
          @Args = args
          @CosFileName = cosfilename
          @Remark = remark
        end

        def deserialize(params)
          @CosFileURI = params['CosFileURI']
          @ExecutionMoment = params['ExecutionMoment']
          @Args = params['Args']
          @CosFileName = params['CosFileName']
          @Remark = params['Remark']
        end
      end

      # 搜索字段
      class SearchItem < TencentCloud::Common::AbstractModel
        # @param SearchType: 支持搜索的类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SearchType: String
        # @param SearchValue: 支持搜索的值
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SearchValue: String

        attr_accessor :SearchType, :SearchValue

        def initialize(searchtype=nil, searchvalue=nil)
          @SearchType = searchtype
          @SearchValue = searchvalue
        end

        def deserialize(params)
          @SearchType = params['SearchType']
          @SearchValue = params['SearchValue']
        end
      end

      # 操作的服务范围
      class ServiceBasicRestartInfo < TencentCloud::Common::AbstractModel
        # @param ServiceName: 服务名,必填,如HDFS
        # @type ServiceName: String
        # @param ComponentInfoList: 如果没传,则表示所有进程
        # @type ComponentInfoList: Array

        attr_accessor :ServiceName, :ComponentInfoList

        def initialize(servicename=nil, componentinfolist=nil)
          @ServiceName = servicename
          @ComponentInfoList = componentinfolist
        end

        def deserialize(params)
          @ServiceName = params['ServiceName']
          unless params['ComponentInfoList'].nil?
            @ComponentInfoList = []
            params['ComponentInfoList'].each do |i|
              componentbasicrestartinfo_tmp = ComponentBasicRestartInfo.new
              componentbasicrestartinfo_tmp.deserialize(i)
              @ComponentInfoList << componentbasicrestartinfo_tmp
            end
          end
        end
      end

      # 服务进程信息
      class ServiceNodeDetailInfo < TencentCloud::Common::AbstractModel
        # @param Ip: 进程所在节点IP
        # @type Ip: String
        # @param NodeType: 进程类型
        # @type NodeType: Integer
        # @param NodeName: 进程名称
        # @type NodeName: String
        # @param ServiceStatus: 服务组件状态
        # @type ServiceStatus: Integer
        # @param MonitorStatus: 进程监控状态
        # @type MonitorStatus: Integer
        # @param Status: 服务组件状态
        # @type Status: Integer
        # @param PortsInfo: 进程端口信息
        # @type PortsInfo: String
        # @param LastRestartTime: 最近重启时间
        # @type LastRestartTime: String
        # @param Flag: 节点类型
        # @type Flag: Integer
        # @param ConfGroupId: 配置组ID
        # @type ConfGroupId: Integer
        # @param ConfGroupName: 配置组名称
        # @type ConfGroupName: String
        # @param ConfStatus: 节点是否需要重启
        # @type ConfStatus: Integer
        # @param ServiceDetectionInfo: 进程探测信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ServiceDetectionInfo: Array
        # @param NodeFlagFilter: 节点类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NodeFlagFilter: String
        # @param HealthStatus: 进程健康状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HealthStatus: :class:`Tencentcloud::Emr.v20190103.models.HealthStatus`
        # @param IsSupportRoleMonitor: 角色是否支持监控
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsSupportRoleMonitor: Boolean
        # @param StopPolicies: 暂停策略
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StopPolicies: Array
        # @param HAState: 测试环境api强校验,现网没有,emrcc接口返回有。不加会报错
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HAState: String
        # @param NameService: NameService名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NameService: String
        # @param IsFederation: 是否支持联邦
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsFederation: Boolean
        # @param DataNodeMaintenanceState: datanode是否是维护状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DataNodeMaintenanceState: Integer

        attr_accessor :Ip, :NodeType, :NodeName, :ServiceStatus, :MonitorStatus, :Status, :PortsInfo, :LastRestartTime, :Flag, :ConfGroupId, :ConfGroupName, :ConfStatus, :ServiceDetectionInfo, :NodeFlagFilter, :HealthStatus, :IsSupportRoleMonitor, :StopPolicies, :HAState, :NameService, :IsFederation, :DataNodeMaintenanceState

        def initialize(ip=nil, nodetype=nil, nodename=nil, servicestatus=nil, monitorstatus=nil, status=nil, portsinfo=nil, lastrestarttime=nil, flag=nil, confgroupid=nil, confgroupname=nil, confstatus=nil, servicedetectioninfo=nil, nodeflagfilter=nil, healthstatus=nil, issupportrolemonitor=nil, stoppolicies=nil, hastate=nil, nameservice=nil, isfederation=nil, datanodemaintenancestate=nil)
          @Ip = ip
          @NodeType = nodetype
          @NodeName = nodename
          @ServiceStatus = servicestatus
          @MonitorStatus = monitorstatus
          @Status = status
          @PortsInfo = portsinfo
          @LastRestartTime = lastrestarttime
          @Flag = flag
          @ConfGroupId = confgroupid
          @ConfGroupName = confgroupname
          @ConfStatus = confstatus
          @ServiceDetectionInfo = servicedetectioninfo
          @NodeFlagFilter = nodeflagfilter
          @HealthStatus = healthstatus
          @IsSupportRoleMonitor = issupportrolemonitor
          @StopPolicies = stoppolicies
          @HAState = hastate
          @NameService = nameservice
          @IsFederation = isfederation
          @DataNodeMaintenanceState = datanodemaintenancestate
        end

        def deserialize(params)
          @Ip = params['Ip']
          @NodeType = params['NodeType']
          @NodeName = params['NodeName']
          @ServiceStatus = params['ServiceStatus']
          @MonitorStatus = params['MonitorStatus']
          @Status = params['Status']
          @PortsInfo = params['PortsInfo']
          @LastRestartTime = params['LastRestartTime']
          @Flag = params['Flag']
          @ConfGroupId = params['ConfGroupId']
          @ConfGroupName = params['ConfGroupName']
          @ConfStatus = params['ConfStatus']
          unless params['ServiceDetectionInfo'].nil?
            @ServiceDetectionInfo = []
            params['ServiceDetectionInfo'].each do |i|
              serviceprocessfunctioninfo_tmp = ServiceProcessFunctionInfo.new
              serviceprocessfunctioninfo_tmp.deserialize(i)
              @ServiceDetectionInfo << serviceprocessfunctioninfo_tmp
            end
          end
          @NodeFlagFilter = params['NodeFlagFilter']
          unless params['HealthStatus'].nil?
            @HealthStatus = HealthStatus.new
            @HealthStatus.deserialize(params['HealthStatus'])
          end
          @IsSupportRoleMonitor = params['IsSupportRoleMonitor']
          unless params['StopPolicies'].nil?
            @StopPolicies = []
            params['StopPolicies'].each do |i|
              restartpolicy_tmp = RestartPolicy.new
              restartpolicy_tmp.deserialize(i)
              @StopPolicies << restartpolicy_tmp
            end
          end
          @HAState = params['HAState']
          @NameService = params['NameService']
          @IsFederation = params['IsFederation']
          @DataNodeMaintenanceState = params['DataNodeMaintenanceState']
        end
      end

      # 进程检测信息
      class ServiceProcessFunctionInfo < TencentCloud::Common::AbstractModel
        # @param DetectAlert: 探测告警级别
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DetectAlert: String
        # @param DetetcFunctionKey: 探测功能描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DetetcFunctionKey: String
        # @param DetetcFunctionValue: 探测功能结果
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DetetcFunctionValue: String
        # @param DetetcTime: 探测结果
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DetetcTime: String
        # @param DetectFunctionKey: 探测功能描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DetectFunctionKey: String
        # @param DetectFunctionValue: 探测功能结果
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DetectFunctionValue: String
        # @param DetectTime: 探测结果
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DetectTime: String

        attr_accessor :DetectAlert, :DetetcFunctionKey, :DetetcFunctionValue, :DetetcTime, :DetectFunctionKey, :DetectFunctionValue, :DetectTime
        extend Gem::Deprecate
        deprecate :DetetcFunctionKey, :none, 2024, 8
        deprecate :DetetcFunctionKey=, :none, 2024, 8
        deprecate :DetetcFunctionValue, :none, 2024, 8
        deprecate :DetetcFunctionValue=, :none, 2024, 8
        deprecate :DetetcTime, :none, 2024, 8
        deprecate :DetetcTime=, :none, 2024, 8

        def initialize(detectalert=nil, detetcfunctionkey=nil, detetcfunctionvalue=nil, detetctime=nil, detectfunctionkey=nil, detectfunctionvalue=nil, detecttime=nil)
          @DetectAlert = detectalert
          @DetetcFunctionKey = detetcfunctionkey
          @DetetcFunctionValue = detetcfunctionvalue
          @DetetcTime = detetctime
          @DetectFunctionKey = detectfunctionkey
          @DetectFunctionValue = detectfunctionvalue
          @DetectTime = detecttime
        end

        def deserialize(params)
          @DetectAlert = params['DetectAlert']
          @DetetcFunctionKey = params['DetetcFunctionKey']
          @DetetcFunctionValue = params['DetetcFunctionValue']
          @DetetcTime = params['DetetcTime']
          @DetectFunctionKey = params['DetectFunctionKey']
          @DetectFunctionValue = params['DetectFunctionValue']
          @DetectTime = params['DetectTime']
        end
      end

      # 节点信息
      class ShortNodeInfo < TencentCloud::Common::AbstractModel
        # @param NodeType: 节点类型,Master/Core/Task/Router/Common
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NodeType: String
        # @param NodeSize: 节点数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NodeSize: Integer

        attr_accessor :NodeType, :NodeSize

        def initialize(nodetype=nil, nodesize=nil)
          @NodeType = nodetype
          @NodeSize = nodesize
        end

        def deserialize(params)
          @NodeType = params['NodeType']
          @NodeSize = params['NodeSize']
        end
      end

      # 体外客户端组件依赖信息
      class SoftDependInfo < TencentCloud::Common::AbstractModel
        # @param SoftName: 组件名称
        # @type SoftName: String
        # @param Required: 是否必选
        # @type Required: Boolean

        attr_accessor :SoftName, :Required

        def initialize(softname=nil, required=nil)
          @SoftName = softname
          @Required = required
        end

        def deserialize(params)
          @SoftName = params['SoftName']
          @Required = params['Required']
        end
      end

      # 任务步骤详情
      class StageInfoDetail < TencentCloud::Common::AbstractModel
        # @param Stage: 步骤id
        # @type Stage: String
        # @param Name: 步骤名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Name: String
        # @param IsShow: 是否展示
        # @type IsShow: Boolean
        # @param IsSubFlow: 是否子流程
        # @type IsSubFlow: Boolean
        # @param SubFlowFlag: 子流程标签
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubFlowFlag: String
        # @param Status: 步骤运行状态:0:未开始 1:进行中 2:已完成 3:部分完成  -1:失败
        # @type Status: Integer
        # @param Desc: 步骤运行状态描述
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Desc: String
        # @param Progress: 运行进度
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Progress: Float
        # @param Starttime: 开始时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Starttime: String
        # @param Endtime: 结束时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Endtime: String
        # @param HadWoodDetail: 是否有详情信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HadWoodDetail: Boolean
        # @param WoodJobId: Wood子流程Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type WoodJobId: Integer
        # @param LanguageKey: 多语言版本Key
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LanguageKey: String
        # @param FailedReason: 如果stage失败,失败原因
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailedReason: String
        # @param TimeConsuming: 步骤耗时
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeConsuming: String

        attr_accessor :Stage, :Name, :IsShow, :IsSubFlow, :SubFlowFlag, :Status, :Desc, :Progress, :Starttime, :Endtime, :HadWoodDetail, :WoodJobId, :LanguageKey, :FailedReason, :TimeConsuming

        def initialize(stage=nil, name=nil, isshow=nil, issubflow=nil, subflowflag=nil, status=nil, desc=nil, progress=nil, starttime=nil, endtime=nil, hadwooddetail=nil, woodjobid=nil, languagekey=nil, failedreason=nil, timeconsuming=nil)
          @Stage = stage
          @Name = name
          @IsShow = isshow
          @IsSubFlow = issubflow
          @SubFlowFlag = subflowflag
          @Status = status
          @Desc = desc
          @Progress = progress
          @Starttime = starttime
          @Endtime = endtime
          @HadWoodDetail = hadwooddetail
          @WoodJobId = woodjobid
          @LanguageKey = languagekey
          @FailedReason = failedreason
          @TimeConsuming = timeconsuming
        end

        def deserialize(params)
          @Stage = params['Stage']
          @Name = params['Name']
          @IsShow = params['IsShow']
          @IsSubFlow = params['IsSubFlow']
          @SubFlowFlag = params['SubFlowFlag']
          @Status = params['Status']
          @Desc = params['Desc']
          @Progress = params['Progress']
          @Starttime = params['Starttime']
          @Endtime = params['Endtime']
          @HadWoodDetail = params['HadWoodDetail']
          @WoodJobId = params['WoodJobId']
          @LanguageKey = params['LanguageKey']
          @FailedReason = params['FailedReason']
          @TimeConsuming = params['TimeConsuming']
        end
      end

      # StartStopServiceOrMonitor请求参数结构体
      class StartStopServiceOrMonitorRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 集群ID
        # @type InstanceId: String
        # @param OpType: 操作类型,当前支持
        # <li>StartService:启动服务</li>
        # <li>StopService:停止服务</li>
        # <li>StartMonitor:退出维护</li>
        # <li>StopMonitor:进入维护</li>
        # <li>RestartService:重启服务 如果操作类型选择重启服务 StrategyConfig操作策略则是必填项</li>
        # @type OpType: String
        # @param OpScope: 操作范围
        # @type OpScope: :class:`Tencentcloud::Emr.v20190103.models.OpScope`
        # @param StrategyConfig: 操作策略
        # @type StrategyConfig: :class:`Tencentcloud::Emr.v20190103.models.StrategyConfig`
        # @param StopParams: 暂停服务时用的参数
        # @type StopParams: :class:`Tencentcloud::Emr.v20190103.models.StopParams`
        # @param KeepMonitorButNotRecoverProcess: 当OpType为<li>StopMonitor</li>才有用,true表示进入维护模式但是仍然监控进程但是不拉起进程
        # @type KeepMonitorButNotRecoverProcess: Boolean

        attr_accessor :InstanceId, :OpType, :OpScope, :StrategyConfig, :StopParams, :KeepMonitorButNotRecoverProcess

        def initialize(instanceid=nil, optype=nil, opscope=nil, strategyconfig=nil, stopparams=nil, keepmonitorbutnotrecoverprocess=nil)
          @InstanceId = instanceid
          @OpType = optype
          @OpScope = opscope
          @StrategyConfig = strategyconfig
          @StopParams = stopparams
          @KeepMonitorButNotRecoverProcess = keepmonitorbutnotrecoverprocess
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @OpType = params['OpType']
          unless params['OpScope'].nil?
            @OpScope = OpScope.new
            @OpScope.deserialize(params['OpScope'])
          end
          unless params['StrategyConfig'].nil?
            @StrategyConfig = StrategyConfig.new
            @StrategyConfig.deserialize(params['StrategyConfig'])
          end
          unless params['StopParams'].nil?
            @StopParams = StopParams.new
            @StopParams.deserialize(params['StopParams'])
          end
          @KeepMonitorButNotRecoverProcess = params['KeepMonitorButNotRecoverProcess']
        end
      end

      # StartStopServiceOrMonitor返回参数结构体
      class StartStopServiceOrMonitorResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 执行步骤
      class Step < TencentCloud::Common::AbstractModel
        # @param Name: 执行步骤名称。
        # @type Name: String
        # @param ExecutionStep: 执行动作。
        # @type ExecutionStep: :class:`Tencentcloud::Emr.v20190103.models.Execution`
        # @param ActionOnFailure: 执行失败策略。
        # 1. TERMINATE_CLUSTER 执行失败时退出并销毁集群。
        # 2. CONTINUE 执行失败时跳过并执行后续步骤。
        # @type ActionOnFailure: String
        # @param User: 指定执行Step时的用户名,非必须,默认为hadoop。
        # @type User: String

        attr_accessor :Name, :ExecutionStep, :ActionOnFailure, :User

        def initialize(name=nil, executionstep=nil, actiononfailure=nil, user=nil)
          @Name = name
          @ExecutionStep = executionstep
          @ActionOnFailure = actiononfailure
          @User = user
        end

        def deserialize(params)
          @Name = params['Name']
          unless params['ExecutionStep'].nil?
            @ExecutionStep = Execution.new
            @ExecutionStep.deserialize(params['ExecutionStep'])
          end
          @ActionOnFailure = params['ActionOnFailure']
          @User = params['User']
        end
      end

      # 停止服务时的参数
      class StopParams < TencentCloud::Common::AbstractModel
        # @param StopPolicy: 安全模式:safe
        # 默认模式:default
        # @type StopPolicy: String
        # @param ThreadCount: 线程数
        # @type ThreadCount: Integer

        attr_accessor :StopPolicy, :ThreadCount

        def initialize(stoppolicy=nil, threadcount=nil)
          @StopPolicy = stoppolicy
          @ThreadCount = threadcount
        end

        def deserialize(params)
          @StopPolicy = params['StopPolicy']
          @ThreadCount = params['ThreadCount']
        end
      end

      # 重启/停止/启动服务/监控的配置
      class StrategyConfig < TencentCloud::Common::AbstractModel
        # @param RollingRestartSwitch: 0:关闭滚动重启
        # 1:开启滚动启动
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RollingRestartSwitch: Integer
        # @param BatchSize: 滚动重启每批次的重启数量,最大重启台数为 99999 台
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type BatchSize: Integer
        # @param TimeWait: 滚动重启每批停止等待时间 ,最大间隔为 5 分钟 单位是秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TimeWait: Integer
        # @param DealOnFail: 操作失败处理策略,0:失败阻塞, 1:失败自动跳过
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DealOnFail: Integer
        # @param Args: 指令需要指定的参数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Args: Array

        attr_accessor :RollingRestartSwitch, :BatchSize, :TimeWait, :DealOnFail, :Args

        def initialize(rollingrestartswitch=nil, batchsize=nil, timewait=nil, dealonfail=nil, args=nil)
          @RollingRestartSwitch = rollingrestartswitch
          @BatchSize = batchsize
          @TimeWait = timewait
          @DealOnFail = dealonfail
          @Args = args
        end

        def deserialize(params)
          @RollingRestartSwitch = params['RollingRestartSwitch']
          @BatchSize = params['BatchSize']
          @TimeWait = params['TimeWait']
          @DealOnFail = params['DealOnFail']
          unless params['Args'].nil?
            @Args = []
            params['Args'].each do |i|
              arg_tmp = Arg.new
              arg_tmp.deserialize(i)
              @Args << arg_tmp
            end
          end
        end
      end

      # 子网信息
      class SubnetInfo < TencentCloud::Common::AbstractModel
        # @param SubnetName: 子网信息(名字)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetName: String
        # @param SubnetId: 子网信息(ID)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetId: String

        attr_accessor :SubnetName, :SubnetId

        def initialize(subnetname=nil, subnetid=nil)
          @SubnetName = subnetname
          @SubnetId = subnetid
        end

        def deserialize(params)
          @SubnetName = params['SubnetName']
          @SubnetId = params['SubnetId']
        end
      end

      # SyncPodState请求参数结构体
      class SyncPodStateRequest < TencentCloud::Common::AbstractModel
        # @param Message: EmrService中pod状态信息
        # @type Message: :class:`Tencentcloud::Emr.v20190103.models.PodState`

        attr_accessor :Message

        def initialize(message=nil)
          @Message = message
        end

        def deserialize(params)
          unless params['Message'].nil?
            @Message = PodState.new
            @Message.deserialize(params['Message'])
          end
        end
      end

      # SyncPodState返回参数结构体
      class SyncPodStateResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 表格schema信息
      class TableSchemaItem < TencentCloud::Common::AbstractModel
        # @param Name: 列标识
        # @type Name: String
        # @param Sortable: 是否可按该列排序
        # @type Sortable: Boolean
        # @param WithFilter: 是否可筛选
        # @type WithFilter: Boolean
        # @param Candidates: 筛选的候选集
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Candidates: Array
        # @param Clickable: 是否可点击
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Clickable: Boolean
        # @param Title: 展示的名字
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Title: String

        attr_accessor :Name, :Sortable, :WithFilter, :Candidates, :Clickable, :Title

        def initialize(name=nil, sortable=nil, withfilter=nil, candidates=nil, clickable=nil, title=nil)
          @Name = name
          @Sortable = sortable
          @WithFilter = withfilter
          @Candidates = candidates
          @Clickable = clickable
          @Title = title
        end

        def deserialize(params)
          @Name = params['Name']
          @Sortable = params['Sortable']
          @WithFilter = params['WithFilter']
          @Candidates = params['Candidates']
          @Clickable = params['Clickable']
          @Title = params['Title']
        end
      end

      # 标签
      class Tag < TencentCloud::Common::AbstractModel
        # @param TagKey: 标签键
        # @type TagKey: String
        # @param TagValue: 标签值
        # @type TagValue: String

        attr_accessor :TagKey, :TagValue

        def initialize(tagkey=nil, tagvalue=nil)
          @TagKey = tagkey
          @TagValue = tagvalue
        end

        def deserialize(params)
          @TagKey = params['TagKey']
          @TagValue = params['TagValue']
        end
      end

      # TerminateClusterNodes请求参数结构体
      class TerminateClusterNodesRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID
        # @type InstanceId: String
        # @param CvmInstanceIds: 销毁资源列表
        # @type CvmInstanceIds: Array
        # @param NodeFlag: 销毁节点类型取值范围:
        #   <li>MASTER</li>
        #   <li>TASK</li>
        #   <li>CORE</li>
        #   <li>ROUTER</li>
        # @type NodeFlag: String
        # @param GraceDownFlag: 优雅缩容开关
        #   <li>true:开启</li>
        #   <li>false:不开启</li>
        # @type GraceDownFlag: Boolean
        # @param GraceDownTime: 优雅缩容等待时间,时间范围60到1800  单位秒
        # @type GraceDownTime: Integer

        attr_accessor :InstanceId, :CvmInstanceIds, :NodeFlag, :GraceDownFlag, :GraceDownTime

        def initialize(instanceid=nil, cvminstanceids=nil, nodeflag=nil, gracedownflag=nil, gracedowntime=nil)
          @InstanceId = instanceid
          @CvmInstanceIds = cvminstanceids
          @NodeFlag = nodeflag
          @GraceDownFlag = gracedownflag
          @GraceDownTime = gracedowntime
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @CvmInstanceIds = params['CvmInstanceIds']
          @NodeFlag = params['NodeFlag']
          @GraceDownFlag = params['GraceDownFlag']
          @GraceDownTime = params['GraceDownTime']
        end
      end

      # TerminateClusterNodes返回参数结构体
      class TerminateClusterNodesResponse < TencentCloud::Common::AbstractModel
        # @param FlowId: 缩容流程ID。
        # @type FlowId: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FlowId, :RequestId

        def initialize(flowid=nil, requestid=nil)
          @FlowId = flowid
          @RequestId = requestid
        end

        def deserialize(params)
          @FlowId = params['FlowId']
          @RequestId = params['RequestId']
        end
      end

      # TerminateInstance请求参数结构体
      class TerminateInstanceRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param ResourceIds: 销毁节点ID。该参数为预留参数,用户无需配置。
        # @type ResourceIds: Array
        # @param ResourceBaseType: 类型为ComputeResource和EMR以及默认,默认为EMR,类型为EMR时,InstanceId生效,类型为ComputeResource时,使用ComputeResourceId标识
        # @type ResourceBaseType: String
        # @param ComputeResourceId: 计算资源ID
        # @type ComputeResourceId: String

        attr_accessor :InstanceId, :ResourceIds, :ResourceBaseType, :ComputeResourceId

        def initialize(instanceid=nil, resourceids=nil, resourcebasetype=nil, computeresourceid=nil)
          @InstanceId = instanceid
          @ResourceIds = resourceids
          @ResourceBaseType = resourcebasetype
          @ComputeResourceId = computeresourceid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @ResourceIds = params['ResourceIds']
          @ResourceBaseType = params['ResourceBaseType']
          @ComputeResourceId = params['ComputeResourceId']
        end
      end

      # TerminateInstance返回参数结构体
      class TerminateInstanceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # TerminateTasks请求参数结构体
      class TerminateTasksRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param ResourceIds: 待销毁节点的资源ID列表。资源ID形如:emr-vm-xxxxxxxx。有效的资源ID可通过登录[控制台](https://console.cloud.tencent.com/emr)查询。
        # @type ResourceIds: Array

        attr_accessor :InstanceId, :ResourceIds

        def initialize(instanceid=nil, resourceids=nil)
          @InstanceId = instanceid
          @ResourceIds = resourceids
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @ResourceIds = params['ResourceIds']
        end
      end

      # TerminateTasks返回参数结构体
      class TerminateTasksResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 时间扩缩容规则
      class TimeAutoScaleStrategy < TencentCloud::Common::AbstractModel
        # @param StrategyName: 策略名字,集群内唯一。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StrategyName: String
        # @param IntervalTime: 策略触发后的冷却时间,该段时间内,将不能触发弹性扩缩容。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IntervalTime: Integer
        # @param ScaleAction: 扩缩容动作,1表示扩容,2表示缩容。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScaleAction: Integer
        # @param ScaleNum: 扩缩容数量。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ScaleNum: Integer
        # @param StrategyStatus: 规则状态,1表示有效,2表示无效,3表示暂停。必须填写
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StrategyStatus: Integer
        # @param Priority: 规则优先级,越小越高。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Priority: Integer
        # @param RetryValidTime: 当多条规则同时触发,其中某些未真正执行时,在该时间范围内,将会重试。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RetryValidTime: Integer
        # @param RepeatStrategy: 时间扩缩容重复策略
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RepeatStrategy: :class:`Tencentcloud::Emr.v20190103.models.RepeatStrategy`
        # @param StrategyId: 策略唯一ID。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StrategyId: Integer
        # @param GraceDownFlag: 优雅缩容开关
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GraceDownFlag: Boolean
        # @param GraceDownTime: 优雅缩容等待时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GraceDownTime: Integer
        # @param Tags: 绑定标签列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Tags: Array
        # @param ConfigGroupAssigned: 预设配置组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ConfigGroupAssigned: String
        # @param MeasureMethod: 扩容资源计算方法,"DEFAULT","INSTANCE", "CPU", "MEMORYGB"。
        # "DEFAULT"表示默认方式,与"INSTANCE"意义相同。
        # "INSTANCE"表示按照节点计算,默认方式。
        # "CPU"表示按照机器的核数计算。
        # "MEMORYGB"表示按照机器内存数计算。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MeasureMethod: String
        # @param TerminatePolicy: 销毁策略, "DEFAULT",默认销毁策略,由缩容规则触发缩容,"TIMING"表示定时销毁
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TerminatePolicy: String
        # @param MaxUse: 最长使用时间, 秒数,最短1小时,最长24小时
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MaxUse: Integer
        # @param SoftDeployInfo: 节点部署服务列表。部署服务仅填写HDFS、YARN。[组件名对应的映射关系表](https://cloud.tencent.com/document/product/589/98760)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SoftDeployInfo: Array
        # @param ServiceNodeInfo: 启动进程列表。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ServiceNodeInfo: Array
        # @param CompensateFlag: 补偿扩容,0表示不开启,1表示开启
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CompensateFlag: Integer
        # @param GroupId: 伸缩组id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GroupId: Integer

        attr_accessor :StrategyName, :IntervalTime, :ScaleAction, :ScaleNum, :StrategyStatus, :Priority, :RetryValidTime, :RepeatStrategy, :StrategyId, :GraceDownFlag, :GraceDownTime, :Tags, :ConfigGroupAssigned, :MeasureMethod, :TerminatePolicy, :MaxUse, :SoftDeployInfo, :ServiceNodeInfo, :CompensateFlag, :GroupId

        def initialize(strategyname=nil, intervaltime=nil, scaleaction=nil, scalenum=nil, strategystatus=nil, priority=nil, retryvalidtime=nil, repeatstrategy=nil, strategyid=nil, gracedownflag=nil, gracedowntime=nil, tags=nil, configgroupassigned=nil, measuremethod=nil, terminatepolicy=nil, maxuse=nil, softdeployinfo=nil, servicenodeinfo=nil, compensateflag=nil, groupid=nil)
          @StrategyName = strategyname
          @IntervalTime = intervaltime
          @ScaleAction = scaleaction
          @ScaleNum = scalenum
          @StrategyStatus = strategystatus
          @Priority = priority
          @RetryValidTime = retryvalidtime
          @RepeatStrategy = repeatstrategy
          @StrategyId = strategyid
          @GraceDownFlag = gracedownflag
          @GraceDownTime = gracedowntime
          @Tags = tags
          @ConfigGroupAssigned = configgroupassigned
          @MeasureMethod = measuremethod
          @TerminatePolicy = terminatepolicy
          @MaxUse = maxuse
          @SoftDeployInfo = softdeployinfo
          @ServiceNodeInfo = servicenodeinfo
          @CompensateFlag = compensateflag
          @GroupId = groupid
        end

        def deserialize(params)
          @StrategyName = params['StrategyName']
          @IntervalTime = params['IntervalTime']
          @ScaleAction = params['ScaleAction']
          @ScaleNum = params['ScaleNum']
          @StrategyStatus = params['StrategyStatus']
          @Priority = params['Priority']
          @RetryValidTime = params['RetryValidTime']
          unless params['RepeatStrategy'].nil?
            @RepeatStrategy = RepeatStrategy.new
            @RepeatStrategy.deserialize(params['RepeatStrategy'])
          end
          @StrategyId = params['StrategyId']
          @GraceDownFlag = params['GraceDownFlag']
          @GraceDownTime = params['GraceDownTime']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @ConfigGroupAssigned = params['ConfigGroupAssigned']
          @MeasureMethod = params['MeasureMethod']
          @TerminatePolicy = params['TerminatePolicy']
          @MaxUse = params['MaxUse']
          @SoftDeployInfo = params['SoftDeployInfo']
          @ServiceNodeInfo = params['ServiceNodeInfo']
          @CompensateFlag = params['CompensateFlag']
          @GroupId = params['GroupId']
        end
      end

      # 集群节点拓扑信息
      class TopologyInfo < TencentCloud::Common::AbstractModel
        # @param ZoneId: 可用区ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ZoneId: Integer
        # @param Zone: 可用区信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Zone: String
        # @param SubnetInfoList: 子网信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SubnetInfoList: Array
        # @param NodeInfoList: 节点信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NodeInfoList: Array

        attr_accessor :ZoneId, :Zone, :SubnetInfoList, :NodeInfoList

        def initialize(zoneid=nil, zone=nil, subnetinfolist=nil, nodeinfolist=nil)
          @ZoneId = zoneid
          @Zone = zone
          @SubnetInfoList = subnetinfolist
          @NodeInfoList = nodeinfolist
        end

        def deserialize(params)
          @ZoneId = params['ZoneId']
          @Zone = params['Zone']
          unless params['SubnetInfoList'].nil?
            @SubnetInfoList = []
            params['SubnetInfoList'].each do |i|
              subnetinfo_tmp = SubnetInfo.new
              subnetinfo_tmp.deserialize(i)
              @SubnetInfoList << subnetinfo_tmp
            end
          end
          unless params['NodeInfoList'].nil?
            @NodeInfoList = []
            params['NodeInfoList'].each do |i|
              shortnodeinfo_tmp = ShortNodeInfo.new
              shortnodeinfo_tmp.deserialize(i)
              @NodeInfoList << shortnodeinfo_tmp
            end
          end
        end
      end

      # 规则触发条件
      class TriggerCondition < TencentCloud::Common::AbstractModel
        # @param CompareMethod: 条件比较方法,1表示大于,2表示小于,3表示大于等于,4表示小于等于。
        # @type CompareMethod: Integer
        # @param Threshold: 条件阈值。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Threshold: Float

        attr_accessor :CompareMethod, :Threshold

        def initialize(comparemethod=nil, threshold=nil)
          @CompareMethod = comparemethod
          @Threshold = threshold
        end

        def deserialize(params)
          @CompareMethod = params['CompareMethod']
          @Threshold = params['Threshold']
        end
      end

      # trino 查询信息
      class TrinoQueryInfo < TencentCloud::Common::AbstractModel
        # @param Catalog: catalog
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Catalog: String
        # @param ClientIpAddr: 提交IP
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClientIpAddr: String
        # @param CompletedSplits: 切片数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CompletedSplits: String
        # @param CpuTime: CPU时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CpuTime: Integer
        # @param CumulativeMemory: 累计内存
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CumulativeMemory: Integer
        # @param DurationMillis: 执行时长
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DurationMillis: Integer
        # @param EndTime: 结束时间 (s)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type EndTime: Integer
        # @param Id: 查询ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Id: String
        # @param InternalNetworkBytes: 内部传输量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InternalNetworkBytes: Integer
        # @param OutputBytes: 输出字节数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OutputBytes: Integer
        # @param PeakUserMemoryBytes: 峰值内存量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PeakUserMemoryBytes: Integer
        # @param PhysicalInputBytes: 物理输入量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PhysicalInputBytes: Integer
        # @param ProcessedInputBytes: 处理输入量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProcessedInputBytes: Integer
        # @param SqlCompileTime: 编译时长
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SqlCompileTime: Integer
        # @param StartTime: 开始时间 (s)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StartTime: Integer
        # @param State: 执行状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type State: String
        # @param Statement: 执行语句
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Statement: String
        # @param User: 提交用户
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type User: String
        # @param WrittenBytes: 写入字节数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type WrittenBytes: Integer

        attr_accessor :Catalog, :ClientIpAddr, :CompletedSplits, :CpuTime, :CumulativeMemory, :DurationMillis, :EndTime, :Id, :InternalNetworkBytes, :OutputBytes, :PeakUserMemoryBytes, :PhysicalInputBytes, :ProcessedInputBytes, :SqlCompileTime, :StartTime, :State, :Statement, :User, :WrittenBytes

        def initialize(catalog=nil, clientipaddr=nil, completedsplits=nil, cputime=nil, cumulativememory=nil, durationmillis=nil, endtime=nil, id=nil, internalnetworkbytes=nil, outputbytes=nil, peakusermemorybytes=nil, physicalinputbytes=nil, processedinputbytes=nil, sqlcompiletime=nil, starttime=nil, state=nil, statement=nil, user=nil, writtenbytes=nil)
          @Catalog = catalog
          @ClientIpAddr = clientipaddr
          @CompletedSplits = completedsplits
          @CpuTime = cputime
          @CumulativeMemory = cumulativememory
          @DurationMillis = durationmillis
          @EndTime = endtime
          @Id = id
          @InternalNetworkBytes = internalnetworkbytes
          @OutputBytes = outputbytes
          @PeakUserMemoryBytes = peakusermemorybytes
          @PhysicalInputBytes = physicalinputbytes
          @ProcessedInputBytes = processedinputbytes
          @SqlCompileTime = sqlcompiletime
          @StartTime = starttime
          @State = state
          @Statement = statement
          @User = user
          @WrittenBytes = writtenbytes
        end

        def deserialize(params)
          @Catalog = params['Catalog']
          @ClientIpAddr = params['ClientIpAddr']
          @CompletedSplits = params['CompletedSplits']
          @CpuTime = params['CpuTime']
          @CumulativeMemory = params['CumulativeMemory']
          @DurationMillis = params['DurationMillis']
          @EndTime = params['EndTime']
          @Id = params['Id']
          @InternalNetworkBytes = params['InternalNetworkBytes']
          @OutputBytes = params['OutputBytes']
          @PeakUserMemoryBytes = params['PeakUserMemoryBytes']
          @PhysicalInputBytes = params['PhysicalInputBytes']
          @ProcessedInputBytes = params['ProcessedInputBytes']
          @SqlCompileTime = params['SqlCompileTime']
          @StartTime = params['StartTime']
          @State = params['State']
          @Statement = params['Statement']
          @User = params['User']
          @WrittenBytes = params['WrittenBytes']
        end
      end

      # 变配资源规格
      class UpdateInstanceSettings < TencentCloud::Common::AbstractModel
        # @param Memory: 内存容量,单位为G
        # @type Memory: Integer
        # @param CPUCores: CPU核数
        # @type CPUCores: Integer
        # @param ResourceId: 机器资源ID(EMR测资源标识)
        # @type ResourceId: String
        # @param InstanceType: 变配机器规格
        # @type InstanceType: String

        attr_accessor :Memory, :CPUCores, :ResourceId, :InstanceType

        def initialize(memory=nil, cpucores=nil, resourceid=nil, instancetype=nil)
          @Memory = memory
          @CPUCores = cpucores
          @ResourceId = resourceid
          @InstanceType = instancetype
        end

        def deserialize(params)
          @Memory = params['Memory']
          @CPUCores = params['CPUCores']
          @ResourceId = params['ResourceId']
          @InstanceType = params['InstanceType']
        end
      end

      # 容器集群用户组信息
      class UserAndGroup < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserName: String
        # @param UserGroup: 用户组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserGroup: String

        attr_accessor :UserName, :UserGroup

        def initialize(username=nil, usergroup=nil)
          @UserName = username
          @UserGroup = usergroup
        end

        def deserialize(params)
          @UserName = params['UserName']
          @UserGroup = params['UserGroup']
        end
      end

      # 添加的用户信息列表
      class UserInfoForUserManager < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名
        # @type UserName: String
        # @param UserGroup: 用户所属的组
        # @type UserGroup: String
        # @param PassWord: 密码
        # @type PassWord: String
        # @param ReMark: 备注
        # @type ReMark: String

        attr_accessor :UserName, :UserGroup, :PassWord, :ReMark

        def initialize(username=nil, usergroup=nil, password=nil, remark=nil)
          @UserName = username
          @UserGroup = usergroup
          @PassWord = password
          @ReMark = remark
        end

        def deserialize(params)
          @UserName = params['UserName']
          @UserGroup = params['UserGroup']
          @PassWord = params['PassWord']
          @ReMark = params['ReMark']
        end
      end

      # 用户管理列表过滤器
      class UserManagerFilter < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserName: String

        attr_accessor :UserName

        def initialize(username=nil)
          @UserName = username
        end

        def deserialize(params)
          @UserName = params['UserName']
        end
      end

      # 用户管理中用户的简要信息
      class UserManagerUserBriefInfo < TencentCloud::Common::AbstractModel
        # @param UserName: 用户名
        # @type UserName: String
        # @param UserGroup: 用户所属的组
        # @type UserGroup: String
        # @param UserType: Manager表示管理员、NormalUser表示普通用户
        # @type UserType: String
        # @param CreateTime: 用户创建时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CreateTime: String
        # @param SupportDownLoadKeyTab: 是否可以下载用户对应的keytab文件,对开启kerberos的集群才有意义
        # @type SupportDownLoadKeyTab: Boolean
        # @param DownLoadKeyTabUrl: keytab文件的下载地址
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DownLoadKeyTabUrl: String

        attr_accessor :UserName, :UserGroup, :UserType, :CreateTime, :SupportDownLoadKeyTab, :DownLoadKeyTabUrl

        def initialize(username=nil, usergroup=nil, usertype=nil, createtime=nil, supportdownloadkeytab=nil, downloadkeytaburl=nil)
          @UserName = username
          @UserGroup = usergroup
          @UserType = usertype
          @CreateTime = createtime
          @SupportDownLoadKeyTab = supportdownloadkeytab
          @DownLoadKeyTabUrl = downloadkeytaburl
        end

        def deserialize(params)
          @UserName = params['UserName']
          @UserGroup = params['UserGroup']
          @UserType = params['UserType']
          @CreateTime = params['CreateTime']
          @SupportDownLoadKeyTab = params['SupportDownLoadKeyTab']
          @DownLoadKeyTabUrl = params['DownLoadKeyTabUrl']
        end
      end

      # VPC 参数
      class VPCSettings < TencentCloud::Common::AbstractModel
        # @param VpcId: VPC ID
        # @type VpcId: String
        # @param SubnetId: Subnet ID
        # @type SubnetId: String

        attr_accessor :VpcId, :SubnetId

        def initialize(vpcid=nil, subnetid=nil)
          @VpcId = vpcid
          @SubnetId = subnetid
        end

        def deserialize(params)
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
        end
      end

      # VPC 参数
      class VirtualPrivateCloud < TencentCloud::Common::AbstractModel
        # @param VpcId: VPC ID
        # @type VpcId: String
        # @param SubnetId: Subnet ID
        # @type SubnetId: String

        attr_accessor :VpcId, :SubnetId

        def initialize(vpcid=nil, subnetid=nil)
          @VpcId = vpcid
          @SubnetId = subnetid
        end

        def deserialize(params)
          @VpcId = params['VpcId']
          @SubnetId = params['SubnetId']
        end
      end

      # 定时扩容每周重复任务策略
      class WeekRepeatStrategy < TencentCloud::Common::AbstractModel
        # @param ExecuteAtTimeOfDay: 重复任务执行的具体时刻,例如"01:02:00"
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ExecuteAtTimeOfDay: String
        # @param DaysOfWeek: 每周几的数字描述,例如,[1,3,4]表示每周周一、周三、周四。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DaysOfWeek: Array

        attr_accessor :ExecuteAtTimeOfDay, :DaysOfWeek

        def initialize(executeattimeofday=nil, daysofweek=nil)
          @ExecuteAtTimeOfDay = executeattimeofday
          @DaysOfWeek = daysofweek
        end

        def deserialize(params)
          @ExecuteAtTimeOfDay = params['ExecuteAtTimeOfDay']
          @DaysOfWeek = params['DaysOfWeek']
        end
      end

      # Yarn 运行的Application信息
      class YarnApplication < TencentCloud::Common::AbstractModel
        # @param Id: 应用ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Id: String
        # @param User: 用户
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type User: String
        # @param Name: 应用名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Name: String
        # @param Queue: 队列
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Queue: String
        # @param ApplicationType: 应用类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApplicationType: String
        # @param ElapsedTime: 运行时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ElapsedTime: String
        # @param State: 状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type State: String
        # @param FinalStatus: 最终状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FinalStatus: String
        # @param Progress: 进度
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Progress: Integer
        # @param StartedTime: 开始时间毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type StartedTime: Integer
        # @param FinishedTime: 结束时间毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FinishedTime: Integer
        # @param AllocatedMB: 申请内存MB
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AllocatedMB: Integer
        # @param AllocatedVCores: 申请VCores
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AllocatedVCores: Integer
        # @param RunningContainers: 运行的Containers数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RunningContainers: Integer
        # @param MemorySeconds: 内存MB*时间秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MemorySeconds: Integer
        # @param VCoreSeconds: VCores*时间秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VCoreSeconds: Integer
        # @param QueueUsagePercentage: 队列资源占比
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type QueueUsagePercentage: Float
        # @param ClusterUsagePercentage: 集群资源占比
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ClusterUsagePercentage: Float
        # @param PreemptedResourceMB: 预占用的内存
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PreemptedResourceMB: Integer
        # @param PreemptedResourceVCores: 预占用的VCore
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PreemptedResourceVCores: Integer
        # @param NumNonAMContainerPreempted: 预占的非应用程序主节点容器数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NumNonAMContainerPreempted: Integer
        # @param NumAMContainerPreempted: AM预占用的容器数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type NumAMContainerPreempted: Integer
        # @param MapsTotal: Map总数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MapsTotal: Integer
        # @param MapsCompleted: 完成的Map数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MapsCompleted: Integer
        # @param ReducesTotal: Reduce总数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReducesTotal: Integer
        # @param ReducesCompleted: 完成的Reduce数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReducesCompleted: Integer
        # @param AvgMapTime: 平均Map时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AvgMapTime: Integer
        # @param AvgReduceTime: 平均Reduce时间
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AvgReduceTime: Integer
        # @param AvgShuffleTime: 平均Shuffle时间毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AvgShuffleTime: Integer
        # @param AvgMergeTime: 平均Merge时间毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AvgMergeTime: Integer
        # @param FailedReduceAttempts: 失败的Reduce执行次数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailedReduceAttempts: Integer
        # @param KilledReduceAttempts: Kill的Reduce执行次数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type KilledReduceAttempts: Integer
        # @param SuccessfulReduceAttempts: 成功的Reduce执行次数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SuccessfulReduceAttempts: Integer
        # @param FailedMapAttempts: 失败的Map执行次数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailedMapAttempts: Integer
        # @param KilledMapAttempts: Kill的Map执行次数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type KilledMapAttempts: Integer
        # @param SuccessfulMapAttempts: 成功的Map执行次数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SuccessfulMapAttempts: Integer
        # @param GcTimeMillis: GC毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type GcTimeMillis: Integer
        # @param VCoreMillisMaps: Map使用的VCore毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VCoreMillisMaps: Integer
        # @param MbMillisMaps: Map使用的内存毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MbMillisMaps: Integer
        # @param VCoreMillisReduces: Reduce使用的VCore毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VCoreMillisReduces: Integer
        # @param MbMillisReduces: Reduce使用的内存毫秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MbMillisReduces: Integer
        # @param TotalLaunchedMaps: 启动Map的总数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalLaunchedMaps: Integer
        # @param TotalLaunchedReduces: 启动Reduce的总数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TotalLaunchedReduces: Integer
        # @param MapInputRecords: Map输入记录数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MapInputRecords: Integer
        # @param MapOutputRecords: Map输出记录数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type MapOutputRecords: Integer
        # @param ReduceInputRecords: Reduce输入记录数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReduceInputRecords: Integer
        # @param ReduceOutputRecords: Reduce输出记录数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReduceOutputRecords: Integer
        # @param HDFSBytesWritten: HDFS写入字节数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HDFSBytesWritten: Integer
        # @param HDFSBytesRead: HDFS读取字节数
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type HDFSBytesRead: Integer

        attr_accessor :Id, :User, :Name, :Queue, :ApplicationType, :ElapsedTime, :State, :FinalStatus, :Progress, :StartedTime, :FinishedTime, :AllocatedMB, :AllocatedVCores, :RunningContainers, :MemorySeconds, :VCoreSeconds, :QueueUsagePercentage, :ClusterUsagePercentage, :PreemptedResourceMB, :PreemptedResourceVCores, :NumNonAMContainerPreempted, :NumAMContainerPreempted, :MapsTotal, :MapsCompleted, :ReducesTotal, :ReducesCompleted, :AvgMapTime, :AvgReduceTime, :AvgShuffleTime, :AvgMergeTime, :FailedReduceAttempts, :KilledReduceAttempts, :SuccessfulReduceAttempts, :FailedMapAttempts, :KilledMapAttempts, :SuccessfulMapAttempts, :GcTimeMillis, :VCoreMillisMaps, :MbMillisMaps, :VCoreMillisReduces, :MbMillisReduces, :TotalLaunchedMaps, :TotalLaunchedReduces, :MapInputRecords, :MapOutputRecords, :ReduceInputRecords, :ReduceOutputRecords, :HDFSBytesWritten, :HDFSBytesRead

        def initialize(id=nil, user=nil, name=nil, queue=nil, applicationtype=nil, elapsedtime=nil, state=nil, finalstatus=nil, progress=nil, startedtime=nil, finishedtime=nil, allocatedmb=nil, allocatedvcores=nil, runningcontainers=nil, memoryseconds=nil, vcoreseconds=nil, queueusagepercentage=nil, clusterusagepercentage=nil, preemptedresourcemb=nil, preemptedresourcevcores=nil, numnonamcontainerpreempted=nil, numamcontainerpreempted=nil, mapstotal=nil, mapscompleted=nil, reducestotal=nil, reducescompleted=nil, avgmaptime=nil, avgreducetime=nil, avgshuffletime=nil, avgmergetime=nil, failedreduceattempts=nil, killedreduceattempts=nil, successfulreduceattempts=nil, failedmapattempts=nil, killedmapattempts=nil, successfulmapattempts=nil, gctimemillis=nil, vcoremillismaps=nil, mbmillismaps=nil, vcoremillisreduces=nil, mbmillisreduces=nil, totallaunchedmaps=nil, totallaunchedreduces=nil, mapinputrecords=nil, mapoutputrecords=nil, reduceinputrecords=nil, reduceoutputrecords=nil, hdfsbyteswritten=nil, hdfsbytesread=nil)
          @Id = id
          @User = user
          @Name = name
          @Queue = queue
          @ApplicationType = applicationtype
          @ElapsedTime = elapsedtime
          @State = state
          @FinalStatus = finalstatus
          @Progress = progress
          @StartedTime = startedtime
          @FinishedTime = finishedtime
          @AllocatedMB = allocatedmb
          @AllocatedVCores = allocatedvcores
          @RunningContainers = runningcontainers
          @MemorySeconds = memoryseconds
          @VCoreSeconds = vcoreseconds
          @QueueUsagePercentage = queueusagepercentage
          @ClusterUsagePercentage = clusterusagepercentage
          @PreemptedResourceMB = preemptedresourcemb
          @PreemptedResourceVCores = preemptedresourcevcores
          @NumNonAMContainerPreempted = numnonamcontainerpreempted
          @NumAMContainerPreempted = numamcontainerpreempted
          @MapsTotal = mapstotal
          @MapsCompleted = mapscompleted
          @ReducesTotal = reducestotal
          @ReducesCompleted = reducescompleted
          @AvgMapTime = avgmaptime
          @AvgReduceTime = avgreducetime
          @AvgShuffleTime = avgshuffletime
          @AvgMergeTime = avgmergetime
          @FailedReduceAttempts = failedreduceattempts
          @KilledReduceAttempts = killedreduceattempts
          @SuccessfulReduceAttempts = successfulreduceattempts
          @FailedMapAttempts = failedmapattempts
          @KilledMapAttempts = killedmapattempts
          @SuccessfulMapAttempts = successfulmapattempts
          @GcTimeMillis = gctimemillis
          @VCoreMillisMaps = vcoremillismaps
          @MbMillisMaps = mbmillismaps
          @VCoreMillisReduces = vcoremillisreduces
          @MbMillisReduces = mbmillisreduces
          @TotalLaunchedMaps = totallaunchedmaps
          @TotalLaunchedReduces = totallaunchedreduces
          @MapInputRecords = mapinputrecords
          @MapOutputRecords = mapoutputrecords
          @ReduceInputRecords = reduceinputrecords
          @ReduceOutputRecords = reduceoutputrecords
          @HDFSBytesWritten = hdfsbyteswritten
          @HDFSBytesRead = hdfsbytesread
        end

        def deserialize(params)
          @Id = params['Id']
          @User = params['User']
          @Name = params['Name']
          @Queue = params['Queue']
          @ApplicationType = params['ApplicationType']
          @ElapsedTime = params['ElapsedTime']
          @State = params['State']
          @FinalStatus = params['FinalStatus']
          @Progress = params['Progress']
          @StartedTime = params['StartedTime']
          @FinishedTime = params['FinishedTime']
          @AllocatedMB = params['AllocatedMB']
          @AllocatedVCores = params['AllocatedVCores']
          @RunningContainers = params['RunningContainers']
          @MemorySeconds = params['MemorySeconds']
          @VCoreSeconds = params['VCoreSeconds']
          @QueueUsagePercentage = params['QueueUsagePercentage']
          @ClusterUsagePercentage = params['ClusterUsagePercentage']
          @PreemptedResourceMB = params['PreemptedResourceMB']
          @PreemptedResourceVCores = params['PreemptedResourceVCores']
          @NumNonAMContainerPreempted = params['NumNonAMContainerPreempted']
          @NumAMContainerPreempted = params['NumAMContainerPreempted']
          @MapsTotal = params['MapsTotal']
          @MapsCompleted = params['MapsCompleted']
          @ReducesTotal = params['ReducesTotal']
          @ReducesCompleted = params['ReducesCompleted']
          @AvgMapTime = params['AvgMapTime']
          @AvgReduceTime = params['AvgReduceTime']
          @AvgShuffleTime = params['AvgShuffleTime']
          @AvgMergeTime = params['AvgMergeTime']
          @FailedReduceAttempts = params['FailedReduceAttempts']
          @KilledReduceAttempts = params['KilledReduceAttempts']
          @SuccessfulReduceAttempts = params['SuccessfulReduceAttempts']
          @FailedMapAttempts = params['FailedMapAttempts']
          @KilledMapAttempts = params['KilledMapAttempts']
          @SuccessfulMapAttempts = params['SuccessfulMapAttempts']
          @GcTimeMillis = params['GcTimeMillis']
          @VCoreMillisMaps = params['VCoreMillisMaps']
          @MbMillisMaps = params['MbMillisMaps']
          @VCoreMillisReduces = params['VCoreMillisReduces']
          @MbMillisReduces = params['MbMillisReduces']
          @TotalLaunchedMaps = params['TotalLaunchedMaps']
          @TotalLaunchedReduces = params['TotalLaunchedReduces']
          @MapInputRecords = params['MapInputRecords']
          @MapOutputRecords = params['MapOutputRecords']
          @ReduceInputRecords = params['ReduceInputRecords']
          @ReduceOutputRecords = params['ReduceOutputRecords']
          @HDFSBytesWritten = params['HDFSBytesWritten']
          @HDFSBytesRead = params['HDFSBytesRead']
        end
      end

      # 用于创建集群价格清单 不同可用区下价格详情
      class ZoneDetailPriceResult < TencentCloud::Common::AbstractModel
        # @param ZoneId: 可用区Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ZoneId: String
        # @param NodeDetailPrice: 不同节点的价格详情
        # @type NodeDetailPrice: Array

        attr_accessor :ZoneId, :NodeDetailPrice

        def initialize(zoneid=nil, nodedetailprice=nil)
          @ZoneId = zoneid
          @NodeDetailPrice = nodedetailprice
        end

        def deserialize(params)
          @ZoneId = params['ZoneId']
          unless params['NodeDetailPrice'].nil?
            @NodeDetailPrice = []
            params['NodeDetailPrice'].each do |i|
              nodedetailpriceresult_tmp = NodeDetailPriceResult.new
              nodedetailpriceresult_tmp.deserialize(i)
              @NodeDetailPrice << nodedetailpriceresult_tmp
            end
          end
        end
      end

      # 可用区配置信息
      class ZoneResourceConfiguration < TencentCloud::Common::AbstractModel
        # @param VirtualPrivateCloud: 私有网络相关信息配置。通过该参数可以指定私有网络的ID,子网ID等信息。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type VirtualPrivateCloud: :class:`Tencentcloud::Emr.v20190103.models.VirtualPrivateCloud`
        # @param Placement: 实例所在的位置。通过该参数可以指定实例所属可用区,所属项目等属性。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param AllNodeResourceSpec: 所有节点资源的规格
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AllNodeResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.AllNodeResourceSpec`
        # @param ZoneTag: 如果是单可用区,ZoneTag可以不用填, 如果是双AZ部署,第一个可用区ZoneTag选择master,第二个可用区ZoneTag选择standby,如果是三AZ部署,第一个可用区ZoneTag选择master,第二个可用区ZoneTag选择standby,第三个可用区ZoneTag选择third-party,取值范围:
        #   <li>master</li>
        #   <li>standby</li>
        #   <li>third-party</li>
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ZoneTag: String

        attr_accessor :VirtualPrivateCloud, :Placement, :AllNodeResourceSpec, :ZoneTag

        def initialize(virtualprivatecloud=nil, placement=nil, allnoderesourcespec=nil, zonetag=nil)
          @VirtualPrivateCloud = virtualprivatecloud
          @Placement = placement
          @AllNodeResourceSpec = allnoderesourcespec
          @ZoneTag = zonetag
        end

        def deserialize(params)
          unless params['VirtualPrivateCloud'].nil?
            @VirtualPrivateCloud = VirtualPrivateCloud.new
            @VirtualPrivateCloud.deserialize(params['VirtualPrivateCloud'])
          end
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          unless params['AllNodeResourceSpec'].nil?
            @AllNodeResourceSpec = AllNodeResourceSpec.new
            @AllNodeResourceSpec.deserialize(params['AllNodeResourceSpec'])
          end
          @ZoneTag = params['ZoneTag']
        end
      end

    end
  end
end