# 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
      # 引导脚本
      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 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

        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
        
        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)
          @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
        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']
        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: 实例标签。
        # @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 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

      # CreateInstance请求参数结构体
      class CreateInstanceRequest < TencentCloud::Common::AbstractModel
        # @param ProductId: 产品ID,不同产品ID表示不同的EMR产品版本。取值范围:
        # <li>1:表示EMR-V1.3.1。</li>
        # <li>2:表示EMR-V2.0.1。</li>
        # <li>4:表示EMR-V2.1.0。</li>
        # <li>7:表示EMR-V3.0.0。</li>
        # <li>9:表示EMR-V2.2.0。</li>
        # <li>11:表示CLICKHOUSE-V1.0.0。</li>
        # <li>13:表示DRUID-V1.0.0。</li>
        # <li>15:表示EMR-V2.2.1。</li>
        # <li>16:表示EMR-V2.3.0。</li>
        # <li>17:表示CLICKHOUSE-V1.1.0。</li>
        # <li>19:表示EMR-V2.4.0。</li>
        # <li>20:表示EMR-V2.5.0。</li>
        # <li>22:表示CLICKHOUSE-V1.2.0。</li>
        # <li>24:表示EMR-TianQiong-V1.0.0。</li>
        # <li>25:表示EMR-V3.1.0。</li>
        # <li>26:表示DORIS-V1.0.0。</li>
        # <li>27:表示KAFKA-V1.0.0。</li>
        # <li>28:表示EMR-V3.2.0。</li>
        # <li>29:表示EMR-V2.5.1。</li>
        # <li>30:表示EMR-V2.6.0。</li>
        # @type ProductId: Integer
        # @param VPCSettings: 私有网络相关信息配置。通过该参数可以指定私有网络的ID,子网ID等信息。
        # @type VPCSettings: :class:`Tencentcloud::Emr.v20190103.models.VPCSettings`
        # @param Software: 部署的组件列表。不同的EMR产品ID(ProductId:具体含义参考入参ProductId字段)对应不同可选组件列表,不同产品版本可选组件列表查询:[组件版本](https://cloud.tencent.com/document/product/589/20279) ;
        # 填写实例值:hive、flink。
        # @type Software: Array
        # @param ResourceSpec: 节点资源的规格。
        # @type ResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NewResourceSpec`
        # @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 Placement: 实例所在的位置。通过该参数可以指定实例所属可用区,所属项目等属性。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @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 COSSettings: 开启COS访问需要设置的参数。
        # @type COSSettings: :class:`Tencentcloud::Emr.v20190103.models.COSSettings`
        # @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: 客户端Token。
        # @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_NEW_META:表示集群默认创建</li>
        # <li>EMR_EXIT_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

        attr_accessor :ProductId, :VPCSettings, :Software, :ResourceSpec, :SupportHA, :InstanceName, :PayMode, :Placement, :TimeSpan, :TimeUnit, :LoginSettings, :COSSettings, :SgId, :PreExecutedFileSettings, :AutoRenew, :ClientToken, :NeedMasterWan, :RemoteLoginAtCreate, :CheckSecurity, :ExtendFsField, :Tags, :DisasterRecoverGroupIds, :CbsEncrypt, :MetaType, :UnifyMetaInstanceId, :MetaDBInfo, :ApplicationRole, :SceneName
        
        def initialize(productid=nil, vpcsettings=nil, software=nil, resourcespec=nil, supportha=nil, instancename=nil, paymode=nil, placement=nil, timespan=nil, timeunit=nil, loginsettings=nil, cossettings=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)
          @ProductId = productid
          @VPCSettings = vpcsettings
          @Software = software
          @ResourceSpec = resourcespec
          @SupportHA = supportha
          @InstanceName = instancename
          @PayMode = paymode
          @Placement = placement
          @TimeSpan = timespan
          @TimeUnit = timeunit
          @LoginSettings = loginsettings
          @COSSettings = cossettings
          @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
        end

        def deserialize(params)
          @ProductId = params['ProductId']
          unless params['VPCSettings'].nil?
            @VPCSettings = VPCSettings.new
            @VPCSettings.deserialize(params['VPCSettings'])
          end
          @Software = params['Software']
          unless params['ResourceSpec'].nil?
            @ResourceSpec = NewResourceSpec.new
            @ResourceSpec.deserialize(params['ResourceSpec'])
          end
          @SupportHA = params['SupportHA']
          @InstanceName = params['InstanceName']
          @PayMode = params['PayMode']
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          @TimeSpan = params['TimeSpan']
          @TimeUnit = params['TimeUnit']
          unless params['LoginSettings'].nil?
            @LoginSettings = LoginSettings.new
            @LoginSettings.deserialize(params['LoginSettings'])
          end
          unless params['COSSettings'].nil?
            @COSSettings = COSSettings.new
            @COSSettings.deserialize(params['COSSettings'])
          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']
        end
      end

      # CreateInstance返回参数结构体
      class CreateInstanceResponse < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type InstanceId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 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 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

      # 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 Offset: 页编号,默认值为0,表示第一页。
        # @type Offset: Integer
        # @param Limit: 每页返回数量,默认值为100,最大值为100。
        # @type Limit: Integer
        # @param HardwareResourceType: 资源类型:支持all/host/pod,默认为all
        # @type HardwareResourceType: String
        # @param SearchFields: 支持搜索的字段
        # @type SearchFields: Array

        attr_accessor :InstanceId, :NodeFlag, :Offset, :Limit, :HardwareResourceType, :SearchFields
        
        def initialize(instanceid=nil, nodeflag=nil, offset=nil, limit=nil, hardwareresourcetype=nil, searchfields=nil)
          @InstanceId = instanceid
          @NodeFlag = nodeflag
          @Offset = offset
          @Limit = limit
          @HardwareResourceType = hardwareresourcetype
          @SearchFields = searchfields
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @NodeFlag = params['NodeFlag']
          @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
        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。
        # @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。
        # @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

      # 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。
        # @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

      # 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: 每页返回数量,默认值为10,最大值为100。
        # @type Limit: Integer
        # @param ProjectId: 建议必填-1,表示拉取所有项目下的集群。
        # 不填默认值为0,表示拉取默认项目下的集群。
        # 实例所属项目ID。该参数可以通过调用 [DescribeProject](https://cloud.tencent.com/document/api/378/4400) 的返回值中的 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。
        # @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。
        # @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

      # 磁盘组。
      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

      # 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

      # 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

        attr_accessor :SoftInfo, :MasterNodeSize, :CoreNodeSize, :TaskNodeSize, :ComNodeSize, :MasterResource, :CoreResource, :TaskResource, :ComResource, :OnCos, :ChargeType, :RouterNodeSize, :SupportHA, :SecurityOn, :SecurityGroup, :CbsEncrypt, :ApplicationRole, :SecurityGroups
        
        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)
          @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
        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']
        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

      # 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

      # InquirePriceRenewEmr请求参数结构体
      class InquirePriceRenewEmrRequest < TencentCloud::Common::AbstractModel
        # @param TimeSpan: 实例续费的时长。需要结合TimeUnit一起使用。1表示续费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。
        # @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 ResourceSpec: 询价的节点规格。
        # @type ResourceSpec: :class:`Tencentcloud::Emr.v20190103.models.NewResourceSpec`
        # @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为1的时候,必选组件包括:hadoop-2.7.3、knox-1.2.0、zookeeper-3.4.9</li>
        # <li>ProductId为2的时候,必选组件包括:hadoop-2.7.3、knox-1.2.0、zookeeper-3.4.9</li>
        # <li>ProductId为4的时候,必选组件包括:hadoop-2.8.4、knox-1.2.0、zookeeper-3.4.9</li>
        # <li>ProductId为7的时候,必选组件包括:hadoop-3.1.2、knox-1.2.0、zookeeper-3.4.9</li>
        # @type Software: Array
        # @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>1:表示EMR-V1.3.1。</li>
        # <li>2:表示EMR-V2.0.1。</li>
        # <li>4:表示EMR-V2.1.0。</li>
        # <li>7:表示EMR-V3.0.0。</li>
        # @type ProductId: Integer
        # @param SceneName: 场景化取值:
        # Hadoop-Kudu
        # Hadoop-Zookeeper
        # Hadoop-Presto
        # Hadoop-Hbase
        # @type SceneName: String
        # @param ExternalService: 共用组件信息
        # @type ExternalService: Array

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

        def deserialize(params)
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          unless params['ResourceSpec'].nil?
            @ResourceSpec = NewResourceSpec.new
            @ResourceSpec.deserialize(params['ResourceSpec'])
          end
          @Currency = params['Currency']
          @PayMode = params['PayMode']
          @SupportHA = params['SupportHA']
          @Software = params['Software']
          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
        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 RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 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

      # InquiryPriceRenewInstance请求参数结构体
      class InquiryPriceRenewInstanceRequest < TencentCloud::Common::AbstractModel
        # @param TimeSpan: 实例续费的时长。需要结合TimeUnit一起使用。1表示续费1一个月
        # @type TimeSpan: Integer
        # @param ResourceIds: 待续费节点的资源ID列表。资源ID形如:emr-vm-xxxxxxxx。有效的资源ID可通过登录[控制台](https://console.cloud.tencent.com/emr/static/hardware)查询。
        # @type ResourceIds: Array
        # @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
        # @param ModifyPayMode: 是否按量转包年包月。0:否,1:是。
        # @type ModifyPayMode: Integer

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

        def deserialize(params)
          @TimeSpan = params['TimeSpan']
          @ResourceIds = params['ResourceIds']
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          @PayMode = params['PayMode']
          @TimeUnit = params['TimeUnit']
          @Currency = params['Currency']
          @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。
        # @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

        attr_accessor :TimeUnit, :TimeSpan, :ZoneId, :PayMode, :InstanceId, :CoreCount, :TaskCount, :Currency, :RouterCount, :MasterCount
        
        def initialize(timeunit=nil, timespan=nil, zoneid=nil, paymode=nil, instanceid=nil, corecount=nil, taskcount=nil, currency=nil, routercount=nil, mastercount=nil)
          @TimeUnit = timeunit
          @TimeSpan = timespan
          @ZoneId = zoneid
          @PayMode = paymode
          @InstanceId = instanceid
          @CoreCount = corecount
          @TaskCount = taskcount
          @Currency = currency
          @RouterCount = routercount
          @MasterCount = mastercount
        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']
        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 RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OriginalCost, :DiscountCost, :Unit, :PriceSpec, :RequestId
        
        def initialize(originalcost=nil, discountcost=nil, unit=nil, pricespec=nil, requestid=nil)
          @OriginalCost = originalcost
          @DiscountCost = discountcost
          @Unit = unit
          @PriceSpec = pricespec
          @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
          @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 UpdateSpec: 节点变配的目标配置。
        # @type UpdateSpec: :class:`Tencentcloud::Emr.v20190103.models.UpdateInstanceSettings`
        # @param PayMode: 实例计费模式。取值范围:
        # <li>0:表示按量计费。</li>
        # <li>1:表示包年包月。</li>
        # @type PayMode: Integer
        # @param Placement: 实例所在的位置。通过该参数可以指定实例所属可用区,所属项目等属性。
        # @type Placement: :class:`Tencentcloud::Emr.v20190103.models.Placement`
        # @param Currency: 货币种类。取值范围:
        # <li>CNY:表示人民币。</li>
        # @type Currency: String

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

        def deserialize(params)
          @TimeUnit = params['TimeUnit']
          @TimeSpan = params['TimeSpan']
          unless params['UpdateSpec'].nil?
            @UpdateSpec = UpdateInstanceSettings.new
            @UpdateSpec.deserialize(params['UpdateSpec'])
          end
          @PayMode = params['PayMode']
          unless params['Placement'].nil?
            @Placement = Placement.new
            @Placement.deserialize(params['Placement'])
          end
          @Currency = params['Currency']
        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 RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 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

      # 实例预付费参数,只有在付费类型为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: 是否自动续费,默认为否。
        # @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

        attr_accessor :Name, :ActionOnFailure, :JobState
        
        def initialize(name=nil, actiononfailure=nil, jobstate=nil)
          @Name = name
          @ActionOnFailure = actiononfailure
          @JobState = jobstate
        end

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

      # 登录设置
      class LoginSettings < TencentCloud::Common::AbstractModel
        # @param Password: Password
        # @type Password: String
        # @param PublicKeyId: Public Key
        # @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

      # 多云盘参数
      class MultiDisk < TencentCloud::Common::AbstractModel
        # @param DiskType: 云盘类型
        # <li>CLOUD_SSD:表示云SSD。</li>
        # <li>CLOUD_PREMIUM:表示高效云盘。</li>
        # <li>CLOUD_HSSD:表示增强型SSD云硬盘。</li>
        # @type DiskType: String
        # @param Volume: 云盘大小
        # @type Volume: Integer
        # @param Count: 该类型云盘个数
        # @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 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 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

        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
        
        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)
          @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
        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']
        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

      # 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 ProjectId: 实例所属项目ID。该参数可以通过调用 DescribeProject 的返回值中的 projectId 字段来获取。填0为默认项目。
        # @type ProjectId: Integer
        # @param Zone: 实例所属的可用区,例如ap-guangzhou-1。该参数也可以通过调用 DescribeZones 的返回值中的Zone字段来获取。
        # @type Zone: String

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

        def deserialize(params)
          @ProjectId = params['ProjectId']
          @Zone = params['Zone']
        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

        attr_accessor :ResourceProviderIdentifier, :ResourceProviderType, :NodeType, :Cpu, :Memory, :DataVolumes, :CpuType, :PodVolumes, :IsDynamicSpec, :DynamicPodSpec, :VpcId, :SubnetId
        
        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)
          @ResourceProviderIdentifier = resourceprovideridentifier
          @ResourceProviderType = resourceprovidertype
          @NodeType = nodetype
          @Cpu = cpu
          @Memory = memory
          @DataVolumes = datavolumes
          @CpuType = cputype
          @PodVolumes = podvolumes
          @IsDynamicSpec = isdynamicspec
          @DynamicPodSpec = dynamicpodspec
          @VpcId = vpcid
          @SubnetId = subnetid
        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']
        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

        attr_accessor :Path, :Args, :Bucket, :Region, :Domain, :RunOrder, :WhenRun, :CosFileName, :CosFileURI, :CosSecretId, :CosSecretKey, :AppId
        
        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)
          @Path = path
          @Args = args
          @Bucket = bucket
          @Region = region
          @Domain = domain
          @RunOrder = runorder
          @WhenRun = whenrun
          @CosFileName = cosfilename
          @CosFileURI = cosfileuri
          @CosSecretId = cossecretid
          @CosSecretKey = cossecretkey
          @AppId = appid
        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']
        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

      # 获取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 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

      # 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。
        # @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

      # 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: 客户端Token。
        # @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

        attr_accessor :TimeUnit, :TimeSpan, :InstanceId, :PayMode, :ClientToken, :PreExecutedFileSettings, :TaskCount, :CoreCount, :UnNecessaryNodeList, :RouterCount, :SoftDeployInfo, :ServiceNodeInfo, :DisasterRecoverGroupIds, :Tags, :HardwareResourceType, :PodSpec, :ClickHouseClusterName, :ClickHouseClusterType, :YarnNodeLabel, :PodParameter, :MasterCount, :StartServiceAfterScaleOut
        
        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)
          @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
        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']
        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 RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

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

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

      # 搜索字段
      class SearchItem < TencentCloud::Common::AbstractModel
        # @param SearchType: 支持搜索的类型
        # @type SearchType: String
        # @param SearchValue: 支持搜索的值
        # @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 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. CANCEL_AND_WAIT 执行失败时阻塞等待。
        # 3. 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

      # 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。
        # @type RequestId: String

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

        def deserialize(params)
          @RequestId = params['RequestId']
        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

      # TerminateInstance请求参数结构体
      class TerminateInstanceRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 实例ID。
        # @type InstanceId: String
        # @param ResourceIds: 销毁节点ID。该参数为预留参数,用户无需配置。
        # @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

      # TerminateInstance返回参数结构体
      class TerminateInstanceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 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/static/hardware)查询。
        # @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。
        # @type RequestId: String

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

        def deserialize(params)
          @RequestId = params['RequestId']
        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

      # 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

    end
  end
end