// Copyright (c) 2017-2025 Tencent. 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.

package v20220501

import (
    tcerr "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/errors"
    tchttp "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/http"
    "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/json"
)

type Annotation struct {
	// Name in the map list
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Value in the map list
	Value *string `json:"Value,omitnil,omitempty" name:"Value"`
}

type AutoUpgradeOptions struct {
	// Automatic upgrade start time
	// Note: This field may return "null", indicating that no valid value can be obtained.
	AutoUpgradeStartTime *string `json:"AutoUpgradeStartTime,omitnil,omitempty" name:"AutoUpgradeStartTime"`

	// Automatic upgrade duration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Duration *string `json:"Duration,omitnil,omitempty" name:"Duration"`

	// Ops date
	// Note: This field may return "null", indicating that no valid value can be obtained.
	WeeklyPeriod []*string `json:"WeeklyPeriod,omitnil,omitempty" name:"WeeklyPeriod"`
}

type AutoscalingAdded struct {
	// Number of nodes being added
	Joining *int64 `json:"Joining,omitnil,omitempty" name:"Joining"`

	// Number of nodes being initialized
	Initializing *int64 `json:"Initializing,omitnil,omitempty" name:"Initializing"`

	// Number of normal nodes
	Normal *int64 `json:"Normal,omitnil,omitempty" name:"Normal"`

	// Total number of nodes
	Total *int64 `json:"Total,omitnil,omitempty" name:"Total"`
}

// Predefined struct for user
type CreateHealthCheckPolicyRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Health check policy
	HealthCheckPolicy *HealthCheckPolicy `json:"HealthCheckPolicy,omitnil,omitempty" name:"HealthCheckPolicy"`
}

type CreateHealthCheckPolicyRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Health check policy
	HealthCheckPolicy *HealthCheckPolicy `json:"HealthCheckPolicy,omitnil,omitempty" name:"HealthCheckPolicy"`
}

func (r *CreateHealthCheckPolicyRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateHealthCheckPolicyRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "HealthCheckPolicy")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateHealthCheckPolicyRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateHealthCheckPolicyResponseParams struct {
	// Health check policy name
	HealthCheckPolicyName *string `json:"HealthCheckPolicyName,omitnil,omitempty" name:"HealthCheckPolicyName"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateHealthCheckPolicyResponse struct {
	*tchttp.BaseResponse
	Response *CreateHealthCheckPolicyResponseParams `json:"Response"`
}

func (r *CreateHealthCheckPolicyResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateHealthCheckPolicyResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type CreateNativeNodePoolParam struct {
	// Node pool scaling configuration
	Scaling *MachineSetScaling `json:"Scaling,omitnil,omitempty" name:"Scaling"`

	// Subnet list
	SubnetIds []*string `json:"SubnetIds,omitnil,omitempty" name:"SubnetIds"`

	// Node billing type. PREPAID: Monthly subscription; POSTPAID_BY_HOUR: Pay-as-you-go (default);
	InstanceChargeType *string `json:"InstanceChargeType,omitnil,omitempty" name:"InstanceChargeType"`

	// System disk configuration
	SystemDisk *Disk `json:"SystemDisk,omitnil,omitempty" name:"SystemDisk"`

	// List of models
	InstanceTypes []*string `json:"InstanceTypes,omitnil,omitempty" name:"InstanceTypes"`

	// Security group list
	SecurityGroupIds []*string `json:"SecurityGroupIds,omitnil,omitempty" name:"SecurityGroupIds"`

	// Automatic upgrade configuration
	UpgradeSettings *MachineUpgradeSettings `json:"UpgradeSettings,omitnil,omitempty" name:"UpgradeSettings"`

	// Whether to enable self-healing capability
	AutoRepair *bool `json:"AutoRepair,omitnil,omitempty" name:"AutoRepair"`

	// Billing configuration of monthly subscription models
	InstanceChargePrepaid *InstanceChargePrepaid `json:"InstanceChargePrepaid,omitnil,omitempty" name:"InstanceChargePrepaid"`

	// Management parameter configuration of node pools
	Management *ManagementConfig `json:"Management,omitnil,omitempty" name:"Management"`

	// Fault self-healing rule name
	HealthCheckPolicyName *string `json:"HealthCheckPolicyName,omitnil,omitempty" name:"HealthCheckPolicyName"`

	// hostname pattern string of native node pools
	HostNamePattern *string `json:"HostNamePattern,omitnil,omitempty" name:"HostNamePattern"`

	// kubelet custom parameters
	KubeletArgs []*string `json:"KubeletArgs,omitnil,omitempty" name:"KubeletArgs"`

	// Predefined script
	Lifecycle *LifecycleConfig `json:"Lifecycle,omitnil,omitempty" name:"Lifecycle"`

	// Runtime root directory
	RuntimeRootDir *string `json:"RuntimeRootDir,omitnil,omitempty" name:"RuntimeRootDir"`

	// Whether to enable Auto Scaling (AS)
	EnableAutoscaling *bool `json:"EnableAutoscaling,omitnil,omitempty" name:"EnableAutoscaling"`

	// Desired node count
	Replicas *int64 `json:"Replicas,omitnil,omitempty" name:"Replicas"`

	// Public network bandwidth configuration
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// Data disk list of native node pools
	DataDisks []*DataDisk `json:"DataDisks,omitnil,omitempty" name:"DataDisks"`

	// Node pool ssh public key ID array
	KeyIds []*string `json:"KeyIds,omitnil,omitempty" name:"KeyIds"`

	// Node pool type
	MachineType *string `json:"MachineType,omitnil,omitempty" name:"MachineType"`
}

// Predefined struct for user
type CreateNodePoolRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Node pool name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Node pool type
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Node Labels
	Labels []*Label `json:"Labels,omitnil,omitempty" name:"Labels"`

	// Node taint
	Taints []*Taint `json:"Taints,omitnil,omitempty" name:"Taints"`

	// Node tags
	Tags []*TagSpecification `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Whether to enable deletion protection
	DeletionProtection *bool `json:"DeletionProtection,omitnil,omitempty" name:"DeletionProtection"`

	// Whether the node is unschedulable by default
	Unschedulable *bool `json:"Unschedulable,omitnil,omitempty" name:"Unschedulable"`

	// Native node pool creation parameters
	Native *CreateNativeNodePoolParam `json:"Native,omitnil,omitempty" name:"Native"`

	// Node Annotation List
	Annotations []*Annotation `json:"Annotations,omitnil,omitempty" name:"Annotations"`
}

type CreateNodePoolRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Node pool name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Node pool type
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Node Labels
	Labels []*Label `json:"Labels,omitnil,omitempty" name:"Labels"`

	// Node taint
	Taints []*Taint `json:"Taints,omitnil,omitempty" name:"Taints"`

	// Node tags
	Tags []*TagSpecification `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Whether to enable deletion protection
	DeletionProtection *bool `json:"DeletionProtection,omitnil,omitempty" name:"DeletionProtection"`

	// Whether the node is unschedulable by default
	Unschedulable *bool `json:"Unschedulable,omitnil,omitempty" name:"Unschedulable"`

	// Native node pool creation parameters
	Native *CreateNativeNodePoolParam `json:"Native,omitnil,omitempty" name:"Native"`

	// Node Annotation List
	Annotations []*Annotation `json:"Annotations,omitnil,omitempty" name:"Annotations"`
}

func (r *CreateNodePoolRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateNodePoolRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "Name")
	delete(f, "Type")
	delete(f, "Labels")
	delete(f, "Taints")
	delete(f, "Tags")
	delete(f, "DeletionProtection")
	delete(f, "Unschedulable")
	delete(f, "Native")
	delete(f, "Annotations")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateNodePoolRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateNodePoolResponseParams struct {
	// Node pool ID
	NodePoolId *string `json:"NodePoolId,omitnil,omitempty" name:"NodePoolId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateNodePoolResponse struct {
	*tchttp.BaseResponse
	Response *CreateNodePoolResponseParams `json:"Response"`
}

func (r *CreateNodePoolResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateNodePoolResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type DataDisk struct {
	// Cloud disk type
	// Note: This field may return "null", indicating that no valid value can be obtained.
	DiskType *string `json:"DiskType,omitnil,omitempty" name:"DiskType"`

	// File system (ext3/ext4/xfs).
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	FileSystem *string `json:"FileSystem,omitnil,omitempty" name:"FileSystem"`

	// Cloud disk size (GB)
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	DiskSize *int64 `json:"DiskSize,omitnil,omitempty" name:"DiskSize"`

	// Whether to automatically format and mount disks.
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	AutoFormatAndMount *bool `json:"AutoFormatAndMount,omitnil,omitempty" name:"AutoFormatAndMount"`

	// Mount device name or partition name
	// Note: This field may return "null", indicating that no valid value can be obtained.
	DiskPartition *string `json:"DiskPartition,omitnil,omitempty" name:"DiskPartition"`

	// Mounting directory
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	MountTarget *string `json:"MountTarget,omitnil,omitempty" name:"MountTarget"`

	// This parameter is used to create an encrypted cloud disk, with the value fixed as ENCRYPT.
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Encrypt *string `json:"Encrypt,omitnil,omitempty" name:"Encrypt"`

	// Custom key for purchasing encrypted disks. When this parameter is input, the Encrypt input parameter cannot be left empty.
	// Note: This field may return "null", indicating that no valid value can be obtained.
	KmsKeyId *string `json:"KmsKeyId,omitnil,omitempty" name:"KmsKeyId"`

	// Snapshot ID. If it is input, a cloud disk will be created based on this snapshot. The snapshot must be a data disk snapshot.
	// Note: This field may return "null", indicating that no valid value can be obtained.
	SnapshotId *string `json:"SnapshotId,omitnil,omitempty" name:"SnapshotId"`

	// Cloud disk performance (unit: MB/s), which can be used to purchase additional performance for cloud disks.
	// Note: This field may return "null", indicating that no valid value can be obtained.
	ThroughputPerformance *uint64 `json:"ThroughputPerformance,omitnil,omitempty" name:"ThroughputPerformance"`
}

// Predefined struct for user
type DeleteHealthCheckPolicyRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Health check policy name
	HealthCheckPolicyName *string `json:"HealthCheckPolicyName,omitnil,omitempty" name:"HealthCheckPolicyName"`
}

type DeleteHealthCheckPolicyRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Health check policy name
	HealthCheckPolicyName *string `json:"HealthCheckPolicyName,omitnil,omitempty" name:"HealthCheckPolicyName"`
}

func (r *DeleteHealthCheckPolicyRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteHealthCheckPolicyRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "HealthCheckPolicyName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteHealthCheckPolicyRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteHealthCheckPolicyResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteHealthCheckPolicyResponse struct {
	*tchttp.BaseResponse
	Response *DeleteHealthCheckPolicyResponseParams `json:"Response"`
}

func (r *DeleteHealthCheckPolicyResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteHealthCheckPolicyResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteNodePoolRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Node pool ID
	NodePoolId *string `json:"NodePoolId,omitnil,omitempty" name:"NodePoolId"`
}

type DeleteNodePoolRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Node pool ID
	NodePoolId *string `json:"NodePoolId,omitnil,omitempty" name:"NodePoolId"`
}

func (r *DeleteNodePoolRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteNodePoolRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "NodePoolId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteNodePoolRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteNodePoolResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteNodePoolResponse struct {
	*tchttp.BaseResponse
	Response *DeleteNodePoolResponseParams `json:"Response"`
}

func (r *DeleteNodePoolResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteNodePoolResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClusterInstancesRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Offset. Default value: 0. For more information on Offset, see the relevant sections in API [Overview](https://intl.cloud.tencent.com/document/api/213/15688?from_cn_redirect=1).
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of returned results. Default value: 20, maximum value: 100. For more information on Limit, see the relevant sections in API [Overview](https://intl.cloud.tencent.com/document/api/213/15688?from_cn_redirect=1).
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter criteria list:
	// InstanceIds (Instance ID), InstanceType (Instance type: Regular, Native, Virtual, External), VagueIpAddress (Fuzzy matching IP), Labels (k8s node label), NodePoolNames (Node pool name), VagueInstanceName (Fuzzy matching node name), InstanceStates (Node status), Unschedulable (Cordoning status), NodePoolIds (Node pool ID)
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Sorting information
	SortBy *SortBy `json:"SortBy,omitnil,omitempty" name:"SortBy"`
}

type DescribeClusterInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Offset. Default value: 0. For more information on Offset, see the relevant sections in API [Overview](https://intl.cloud.tencent.com/document/api/213/15688?from_cn_redirect=1).
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of returned results. Default value: 20, maximum value: 100. For more information on Limit, see the relevant sections in API [Overview](https://intl.cloud.tencent.com/document/api/213/15688?from_cn_redirect=1).
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Filter criteria list:
	// InstanceIds (Instance ID), InstanceType (Instance type: Regular, Native, Virtual, External), VagueIpAddress (Fuzzy matching IP), Labels (k8s node label), NodePoolNames (Node pool name), VagueInstanceName (Fuzzy matching node name), InstanceStates (Node status), Unschedulable (Cordoning status), NodePoolIds (Node pool ID)
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Sorting information
	SortBy *SortBy `json:"SortBy,omitnil,omitempty" name:"SortBy"`
}

func (r *DescribeClusterInstancesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeClusterInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "Filters")
	delete(f, "SortBy")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeClusterInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClusterInstancesResponseParams struct {
	// Total number of instances in the cluster
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// List of instances in the cluster
	InstanceSet []*Instance `json:"InstanceSet,omitnil,omitempty" name:"InstanceSet"`

	// Error information collection
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Errors []*string `json:"Errors,omitnil,omitempty" name:"Errors"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeClusterInstancesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeClusterInstancesResponseParams `json:"Response"`
}

func (r *DescribeClusterInstancesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeClusterInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeHealthCheckPoliciesRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// ·  HealthCheckPolicyName
	//     Filter by [Health Check Policy Name].
	//     Type: String
	//         Required: No
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Maximum number of output entries. Default value: 20; maximum value: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Offset. Default value: 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

type DescribeHealthCheckPoliciesRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// ·  HealthCheckPolicyName
	//     Filter by [Health Check Policy Name].
	//     Type: String
	//         Required: No
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Maximum number of output entries. Default value: 20; maximum value: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Offset. Default value: 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

func (r *DescribeHealthCheckPoliciesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeHealthCheckPoliciesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "Filters")
	delete(f, "Limit")
	delete(f, "Offset")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeHealthCheckPoliciesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeHealthCheckPoliciesResponseParams struct {
	// Health check policy array
	// Note: This field may return "null", indicating that no valid value can be obtained.
	HealthCheckPolicies []*HealthCheckPolicy `json:"HealthCheckPolicies,omitnil,omitempty" name:"HealthCheckPolicies"`

	// Total number of arrays
	// Note: This field may return "null", indicating that no valid value can be obtained.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeHealthCheckPoliciesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeHealthCheckPoliciesResponseParams `json:"Response"`
}

func (r *DescribeHealthCheckPoliciesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeHealthCheckPoliciesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeHealthCheckPolicyBindingsRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// ·  HealthCheckPolicyName
	//     Filter by [Health Check Rule Name].
	//     Type: String
	//         Required: No
	Filter []*Filter `json:"Filter,omitnil,omitempty" name:"Filter"`

	// Maximum number of output entries. Default value: 20; maximum value: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Offset. Default value: 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

type DescribeHealthCheckPolicyBindingsRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// ·  HealthCheckPolicyName
	//     Filter by [Health Check Rule Name].
	//     Type: String
	//         Required: No
	Filter []*Filter `json:"Filter,omitnil,omitempty" name:"Filter"`

	// Maximum number of output entries. Default value: 20; maximum value: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Offset. Default value: 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

func (r *DescribeHealthCheckPolicyBindingsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeHealthCheckPolicyBindingsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "Filter")
	delete(f, "Limit")
	delete(f, "Offset")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeHealthCheckPolicyBindingsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeHealthCheckPolicyBindingsResponseParams struct {
	// Health check rule array
	// Note: This field may return "null", indicating that no valid value can be obtained.
	HealthCheckPolicyBindings []*HealthCheckPolicyBinding `json:"HealthCheckPolicyBindings,omitnil,omitempty" name:"HealthCheckPolicyBindings"`

	// Number of health check rules
	// Note: This field may return "null", indicating that no valid value can be obtained.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeHealthCheckPolicyBindingsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeHealthCheckPolicyBindingsResponseParams `json:"Response"`
}

func (r *DescribeHealthCheckPolicyBindingsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeHealthCheckPolicyBindingsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeHealthCheckTemplateRequestParams struct {

}

type DescribeHealthCheckTemplateRequest struct {
	*tchttp.BaseRequest
	
}

func (r *DescribeHealthCheckTemplateRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeHealthCheckTemplateRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeHealthCheckTemplateRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeHealthCheckTemplateResponseParams struct {
	// Health check policy template
	HealthCheckTemplate *HealthCheckTemplate `json:"HealthCheckTemplate,omitnil,omitempty" name:"HealthCheckTemplate"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeHealthCheckTemplateResponse struct {
	*tchttp.BaseResponse
	Response *DescribeHealthCheckTemplateResponseParams `json:"Response"`
}

func (r *DescribeHealthCheckTemplateResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeHealthCheckTemplateResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeNodePoolsRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Query filter criteria:
	// ·  NodePoolsName
	//     Filter by [Node Pool Name].
	//     Type: String
	//         Required: No
	// 
	// 
	// 
	// ·  NodePoolsId
	//     Filter by [Node Pool id].
	//     Type: String
	//         Required: No
	// 
	// 
	// 
	// ·  tags
	//     Filter by [Tag Key-value Pairs].
	//     Type: String
	//         Required: No
	// 
	// 
	// 
	// ·  tag:tag-key
	//     Filter by [Tag Key-value Pairs].
	//     Type: String
	//         Required: No
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Offset. Default value: 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Maximum number of output entries. Default value: 20; maximum value: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribeNodePoolsRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Query filter criteria:
	// ·  NodePoolsName
	//     Filter by [Node Pool Name].
	//     Type: String
	//         Required: No
	// 
	// 
	// 
	// ·  NodePoolsId
	//     Filter by [Node Pool id].
	//     Type: String
	//         Required: No
	// 
	// 
	// 
	// ·  tags
	//     Filter by [Tag Key-value Pairs].
	//     Type: String
	//         Required: No
	// 
	// 
	// 
	// ·  tag:tag-key
	//     Filter by [Tag Key-value Pairs].
	//     Type: String
	//         Required: No
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Offset. Default value: 0
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Maximum number of output entries. Default value: 20; maximum value: 100.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

func (r *DescribeNodePoolsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeNodePoolsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "Filters")
	delete(f, "Offset")
	delete(f, "Limit")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeNodePoolsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeNodePoolsResponseParams struct {
	// Node pool list
	// Note: This field may return "null", indicating that no valid value can be obtained.
	NodePools []*NodePool `json:"NodePools,omitnil,omitempty" name:"NodePools"`

	// Total resources
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeNodePoolsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeNodePoolsResponseParams `json:"Response"`
}

func (r *DescribeNodePoolsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeNodePoolsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type Disk struct {
	// Cloud disk type
	DiskType *string `json:"DiskType,omitnil,omitempty" name:"DiskType"`

	// Cloud disk size (GB)
	DiskSize *int64 `json:"DiskSize,omitnil,omitempty" name:"DiskSize"`

	// Whether to automatically format and mount disks.
	AutoFormatAndMount *bool `json:"AutoFormatAndMount,omitnil,omitempty" name:"AutoFormatAndMount"`

	// File system
	FileSystem *string `json:"FileSystem,omitnil,omitempty" name:"FileSystem"`

	// Mounting directory
	MountTarget *string `json:"MountTarget,omitnil,omitempty" name:"MountTarget"`
}

type ExternalNodeInfo struct {
	// Third-party node name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Number of CPU cores (unit: cores)
	// Note: This field may return "null", indicating that no valid value can be obtained.
	CPU *uint64 `json:"CPU,omitnil,omitempty" name:"CPU"`

	// Node memory capacity (unit: `GB`)
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// kubelet version information of third-party nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	K8SVersion *string `json:"K8SVersion,omitnil,omitempty" name:"K8SVersion"`
}

type ExternalNodePoolInfo struct {
	// Third-party node runtime configuration
	RuntimeConfig *RuntimeConfig `json:"RuntimeConfig,omitnil,omitempty" name:"RuntimeConfig"`

	// Number of nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	NodesNum *uint64 `json:"NodesNum,omitnil,omitempty" name:"NodesNum"`
}

type Filter struct {
	// Attribute name. If more than one Filter exists, the logical relation between these Filters is `AND`.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Attribute value. If multiple values exist in one filter, the logical relationship between these values is `OR`.
	Values []*string `json:"Values,omitnil,omitempty" name:"Values"`
}

type HealthCheckPolicy struct {
	// Health check policy name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// List of health check policy rules
	Rules []*HealthCheckPolicyRule `json:"Rules,omitnil,omitempty" name:"Rules"`
}

type HealthCheckPolicyBinding struct {
	// Health check policy name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Rule creation time
	CreatedAt *string `json:"CreatedAt,omitnil,omitempty" name:"CreatedAt"`

	// Associated node pool array
	NodePools []*string `json:"NodePools,omitnil,omitempty" name:"NodePools"`
}

type HealthCheckPolicyRule struct {
	// Health check rules
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Whether to check this item
	Enabled *bool `json:"Enabled,omitnil,omitempty" name:"Enabled"`

	// Whether to enable repair
	AutoRepairEnabled *bool `json:"AutoRepairEnabled,omitnil,omitempty" name:"AutoRepairEnabled"`
}

type HealthCheckTemplate struct {
	// Health check item
	Rules []*HealthCheckTemplateRule `json:"Rules,omitnil,omitempty" name:"Rules"`
}

type HealthCheckTemplateRule struct {
	// Health check item name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Description of health check rules
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Fix action
	RepairAction *string `json:"RepairAction,omitnil,omitempty" name:"RepairAction"`

	// Fix impact
	RepairEffect *string `json:"RepairEffect,omitnil,omitempty" name:"RepairEffect"`

	// Whether it is recommended to enable check
	ShouldEnable *bool `json:"ShouldEnable,omitnil,omitempty" name:"ShouldEnable"`

	// Whether repair is suggested.
	ShouldRepair *bool `json:"ShouldRepair,omitnil,omitempty" name:"ShouldRepair"`

	// Severity
	Severity *string `json:"Severity,omitnil,omitempty" name:"Severity"`
}

type Instance struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Node role: MASTER, WORKER, ETCD, MASTER_ETCD, and ALL. Default value: WORKER
	InstanceRole *string `json:"InstanceRole,omitnil,omitempty" name:"InstanceRole"`

	// Cause of instance exception (or initialization)
	// Note: This field may return "null", indicating that no valid value can be obtained.
	FailedReason *string `json:"FailedReason,omitnil,omitempty" name:"FailedReason"`

	// Instance status
	// 
	// - initializing
	// - running
	// - failed
	InstanceState *string `json:"InstanceState,omitnil,omitempty" name:"InstanceState"`

	// Whether it is unschedulable
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Unschedulable *bool `json:"Unschedulable,omitnil,omitempty" name:"Unschedulable"`

	// Adding time
	CreatedTime *string `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"`

	// Node private network IP
	// Note: This field may return "null", indicating that no valid value can be obtained.
	LanIP *string `json:"LanIP,omitnil,omitempty" name:"LanIP"`

	// Resource pool ID
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	NodePoolId *string `json:"NodePoolId,omitnil,omitempty" name:"NodePoolId"`

	// Native node parameters
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Native *NativeNodeInfo `json:"Native,omitnil,omitempty" name:"Native"`

	// General node parameters
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Regular *RegularNodeInfo `json:"Regular,omitnil,omitempty" name:"Regular"`

	// Super node parameters
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Super *SuperNodeInfo `json:"Super,omitnil,omitempty" name:"Super"`

	// Third-party node parameters
	// Note: This field may return "null", indicating that no valid value can be obtained.
	External *ExternalNodeInfo `json:"External,omitnil,omitempty" name:"External"`

	// Node type
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	NodeType *string `json:"NodeType,omitnil,omitempty" name:"NodeType"`
}

type InstanceAdvancedSettings struct {
	// When the node is in the podCIDR size customization mode, you can specify the upper limit of the number of pods running on the node.
	// Note: This field may return "null", indicating that no valid value can be obtained.
	DesiredPodNumber *int64 `json:"DesiredPodNumber,omitnil,omitempty" name:"DesiredPodNumber"`

	// base64 encoded user script, executed before initializing the node and currently effective only for adding existing nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	PreStartUserScript *string `json:"PreStartUserScript,omitnil,omitempty" name:"PreStartUserScript"`

	// Runtime description
	// Note: This field may return "null", indicating that no valid value can be obtained.
	RuntimeConfig *RuntimeConfig `json:"RuntimeConfig,omitnil,omitempty" name:"RuntimeConfig"`

	// Base64-encoded user script. This script is executed after the k8s components start running. Users must ensure the reenterable and retry logic of the script. The script and the log files generated by it can be viewed at the /data/ccs_userscript/ path of the node. If a node must be initialized before joining the scheduling, it can be used in conjunction with the unschedulable parameter. After initializing with userScript, add the command `kubectl uncordon nodename --kubeconfig=/root/.kube/config` to add the node to scheduling.
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	UserScript *string `json:"UserScript,omitnil,omitempty" name:"UserScript"`

	// Node-related custom parameter information.
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	ExtraArgs *InstanceExtraArgs `json:"ExtraArgs,omitnil,omitempty" name:"ExtraArgs"`
}

type InstanceChargePrepaid struct {
	// Billing cycle of the pay-as-you-go mode (unit: month):
	// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36, 48, 60
	Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Renewal method of the prepayment mode:
	// - NOTIFY_AND_AUTO_RENEW: Notify the user of expiration and auto-renew (default)
	// - NOTIFY_AND_MANUAL_RENEW: Notify the user of expiration but do not auto-renew
	// - DISABLE_NOTIFY_AND_MANUAL_RENEW: Do not notify the user of expiration and do not auto-renew
	RenewFlag *string `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

type InstanceExtraArgs struct {
	// kubelet custom parameters, whose format is ["k1=v1", "k1=v2"], for example ["root-dir=/var/lib/kubelet","feature-gates=PodShareProcessNamespace=true,DynamicKubeletConfig=true"]
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Kubelet []*string `json:"Kubelet,omitnil,omitempty" name:"Kubelet"`
}

type IntOrString struct {
	// Numerical type, 0: int, 1: string
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Type *int64 `json:"Type,omitnil,omitempty" name:"Type"`

	// Integer
	// Note: This field may return "null", indicating that no valid value can be obtained.
	IntVal *int64 `json:"IntVal,omitnil,omitempty" name:"IntVal"`

	// String
	// Note: This field may return "null", indicating that no valid value can be obtained.
	StrVal *string `json:"StrVal,omitnil,omitempty" name:"StrVal"`
}

type InternetAccessible struct {
	// Bandwidth
	MaxBandwidthOut *int64 `json:"MaxBandwidthOut,omitnil,omitempty" name:"MaxBandwidthOut"`

	// Network billing method
	ChargeType *string `json:"ChargeType,omitnil,omitempty" name:"ChargeType"`

	// Bandwidth package ID
	BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"`
}

type Label struct {
	// Name in the map list
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Value in the map list
	Value *string `json:"Value,omitnil,omitempty" name:"Value"`
}

type LifecycleConfig struct {
	// Custom script before node initialization
	// Note: This field may return "null", indicating that no valid value can be obtained.
	PreInit *string `json:"PreInit,omitnil,omitempty" name:"PreInit"`

	// Custom script after node initialization
	// Note: This field may return "null", indicating that no valid value can be obtained.
	PostInit *string `json:"PostInit,omitnil,omitempty" name:"PostInit"`
}

type MachineSetScaling struct {
	// Node pool minimum replica count
	// Note: This field may return "null", indicating that no valid value can be obtained.
	MinReplicas *int64 `json:"MinReplicas,omitnil,omitempty" name:"MinReplicas"`

	// Node pool maximum replica count
	// Note: This field may return "null", indicating that no valid value can be obtained.
	MaxReplicas *int64 `json:"MaxReplicas,omitnil,omitempty" name:"MaxReplicas"`

	// Node pool scaling policy. ZoneEquality: Scatter across multiple availability zones; ZonePriority: Prioritize preferred availability zones;
	// Note: This field may return "null", indicating that no valid value can be obtained.
	CreatePolicy *string `json:"CreatePolicy,omitnil,omitempty" name:"CreatePolicy"`
}

type MachineUpgradeSettings struct {
	// Whether to enable automatic upgrade
	// Note: This field may return "null", indicating that no valid value can be obtained.
	AutoUpgrade *bool `json:"AutoUpgrade,omitnil,omitempty" name:"AutoUpgrade"`

	// Ops window
	// Note: This field may return "null", indicating that no valid value can be obtained.
	UpgradeOptions *AutoUpgradeOptions `json:"UpgradeOptions,omitnil,omitempty" name:"UpgradeOptions"`

	// Upgrade item
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Components []*string `json:"Components,omitnil,omitempty" name:"Components"`

	// Maximum number of nodes that cannot be upgraded during upgrade
	// Note: This field may return "null", indicating that no valid value can be obtained.
	MaxUnavailable *IntOrString `json:"MaxUnavailable,omitnil,omitempty" name:"MaxUnavailable"`
}

type ManagementConfig struct {
	// dns configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Nameservers []*string `json:"Nameservers,omitnil,omitempty" name:"Nameservers"`

	// hosts configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Hosts []*string `json:"Hosts,omitnil,omitempty" name:"Hosts"`

	// Kernel parameter configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	KernelArgs []*string `json:"KernelArgs,omitnil,omitempty" name:"KernelArgs"`
}

type ManuallyAdded struct {
	// Number of nodes being added
	Joining *int64 `json:"Joining,omitnil,omitempty" name:"Joining"`

	// Number of nodes being initialized
	Initializing *int64 `json:"Initializing,omitnil,omitempty" name:"Initializing"`

	// Number of normal nodes
	Normal *int64 `json:"Normal,omitnil,omitempty" name:"Normal"`

	// Total number of nodes
	Total *int64 `json:"Total,omitnil,omitempty" name:"Total"`
}

// Predefined struct for user
type ModifyHealthCheckPolicyRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Health check policy
	HealthCheckPolicy *HealthCheckPolicy `json:"HealthCheckPolicy,omitnil,omitempty" name:"HealthCheckPolicy"`
}

type ModifyHealthCheckPolicyRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Health check policy
	HealthCheckPolicy *HealthCheckPolicy `json:"HealthCheckPolicy,omitnil,omitempty" name:"HealthCheckPolicy"`
}

func (r *ModifyHealthCheckPolicyRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyHealthCheckPolicyRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "HealthCheckPolicy")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyHealthCheckPolicyRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyHealthCheckPolicyResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyHealthCheckPolicyResponse struct {
	*tchttp.BaseResponse
	Response *ModifyHealthCheckPolicyResponseParams `json:"Response"`
}

func (r *ModifyHealthCheckPolicyResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyHealthCheckPolicyResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyNodePoolRequestParams struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Node pool ID
	NodePoolId *string `json:"NodePoolId,omitnil,omitempty" name:"NodePoolId"`

	// Node pool name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Node Labels
	Labels []*Label `json:"Labels,omitnil,omitempty" name:"Labels"`

	// Node taint
	Taints []*Taint `json:"Taints,omitnil,omitempty" name:"Taints"`

	// Node tags
	Tags []*TagSpecification `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Whether to enable deletion protection
	DeletionProtection *bool `json:"DeletionProtection,omitnil,omitempty" name:"DeletionProtection"`

	// Whether the node is unschedulable
	Unschedulable *bool `json:"Unschedulable,omitnil,omitempty" name:"Unschedulable"`

	// Native node pool update parameters
	Native *UpdateNativeNodePoolParam `json:"Native,omitnil,omitempty" name:"Native"`

	// Node annotation list
	Annotations []*Annotation `json:"Annotations,omitnil,omitempty" name:"Annotations"`
}

type ModifyNodePoolRequest struct {
	*tchttp.BaseRequest
	
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Node pool ID
	NodePoolId *string `json:"NodePoolId,omitnil,omitempty" name:"NodePoolId"`

	// Node pool name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Node Labels
	Labels []*Label `json:"Labels,omitnil,omitempty" name:"Labels"`

	// Node taint
	Taints []*Taint `json:"Taints,omitnil,omitempty" name:"Taints"`

	// Node tags
	Tags []*TagSpecification `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Whether to enable deletion protection
	DeletionProtection *bool `json:"DeletionProtection,omitnil,omitempty" name:"DeletionProtection"`

	// Whether the node is unschedulable
	Unschedulable *bool `json:"Unschedulable,omitnil,omitempty" name:"Unschedulable"`

	// Native node pool update parameters
	Native *UpdateNativeNodePoolParam `json:"Native,omitnil,omitempty" name:"Native"`

	// Node annotation list
	Annotations []*Annotation `json:"Annotations,omitnil,omitempty" name:"Annotations"`
}

func (r *ModifyNodePoolRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyNodePoolRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "ClusterId")
	delete(f, "NodePoolId")
	delete(f, "Name")
	delete(f, "Labels")
	delete(f, "Taints")
	delete(f, "Tags")
	delete(f, "DeletionProtection")
	delete(f, "Unschedulable")
	delete(f, "Native")
	delete(f, "Annotations")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyNodePoolRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyNodePoolResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyNodePoolResponse struct {
	*tchttp.BaseResponse
	Response *ModifyNodePoolResponseParams `json:"Response"`
}

func (r *ModifyNodePoolResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyNodePoolResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type NativeNodeInfo struct {
	// Node name
	MachineName *string `json:"MachineName,omitnil,omitempty" name:"MachineName"`

	// Machine status
	MachineState *string `json:"MachineState,omitnil,omitempty" name:"MachineState"`

	// Machine availability zone
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Node billing type. PREPAID: Monthly subscription; POSTPAID_BY_HOUR: Pay-as-you-go (default);
	InstanceChargeType *string `json:"InstanceChargeType,omitnil,omitempty" name:"InstanceChargeType"`

	// Creation time
	CreatedAt *string `json:"CreatedAt,omitnil,omitempty" name:"CreatedAt"`

	// Machine login status
	// Note: This field may return "null", indicating that no valid value can be obtained.
	LoginStatus *string `json:"LoginStatus,omitnil,omitempty" name:"LoginStatus"`

	// Whether to enable scale-in protection
	// Note: This field may return "null", indicating that no valid value can be obtained.
	IsProtectedFromScaleIn *bool `json:"IsProtectedFromScaleIn,omitnil,omitempty" name:"IsProtectedFromScaleIn"`

	// Machine name
	// Note: This field may return "null", indicating that no valid value can be obtained.
	DisplayName *string `json:"DisplayName,omitnil,omitempty" name:"DisplayName"`

	// Number of CPU cores (unit: cores)
	CPU *uint64 `json:"CPU,omitnil,omitempty" name:"CPU"`

	// Number of GPU cores (unit: cores)
	// Note: This field may return "null", indicating that no valid value can be obtained.
	GPU *uint64 `json:"GPU,omitnil,omitempty" name:"GPU"`

	// Auto-renewal label
	RenewFlag *string `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`

	// Node billing mode (deprecated)
	PayMode *string `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Node memory capacity (unit: `GB`)
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Public network bandwidth configuration
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// Model family
	InstanceFamily *string `json:"InstanceFamily,omitnil,omitempty" name:"InstanceFamily"`

	// Node private network IP
	LanIp *string `json:"LanIp,omitnil,omitempty" name:"LanIp"`

	// Model
	InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Billing expiration time of monthly subscription nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	ExpiredTime *string `json:"ExpiredTime,omitnil,omitempty" name:"ExpiredTime"`

	// Security group list
	// Note: This field may return "null", indicating that no valid value can be obtained.
	SecurityGroupIDs []*string `json:"SecurityGroupIDs,omitnil,omitempty" name:"SecurityGroupIDs"`

	// VPC unique ID
	// Note: This field may return "null", indicating that no valid value can be obtained.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet unique ID
	// Note: This field may return "null", indicating that no valid value can be obtained.
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// OS name
	// Note: This field may return "null", indicating that no valid value can be obtained.
	OsImage *string `json:"OsImage,omitnil,omitempty" name:"OsImage"`

	// **Instance ID corresponding to the native node**
	// 
	// - ins-q47ofw6 indicates that this instance is a CVM instance
	// - eks-f8mvyaep indicates that this instance is a CXM instance
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type NativeNodePoolInfo struct {
	// Scaling configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Scaling *MachineSetScaling `json:"Scaling,omitnil,omitempty" name:"Scaling"`

	// Subnet list
	SubnetIds []*string `json:"SubnetIds,omitnil,omitempty" name:"SubnetIds"`

	// Security group list
	// Note: This field may return "null", indicating that no valid value can be obtained.
	SecurityGroupIds []*string `json:"SecurityGroupIds,omitnil,omitempty" name:"SecurityGroupIds"`

	// Automatic upgrade configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	UpgradeSettings *MachineUpgradeSettings `json:"UpgradeSettings,omitnil,omitempty" name:"UpgradeSettings"`

	// Whether to enable self-healing capability
	// Note: This field may return "null", indicating that no valid value can be obtained.
	AutoRepair *bool `json:"AutoRepair,omitnil,omitempty" name:"AutoRepair"`

	// Node billing type
	InstanceChargeType *string `json:"InstanceChargeType,omitnil,omitempty" name:"InstanceChargeType"`

	// Billing configuration of monthly subscription models
	// Note: This field may return "null", indicating that no valid value can be obtained.
	InstanceChargePrepaid *InstanceChargePrepaid `json:"InstanceChargePrepaid,omitnil,omitempty" name:"InstanceChargePrepaid"`

	// System disk configuration
	SystemDisk *Disk `json:"SystemDisk,omitnil,omitempty" name:"SystemDisk"`

	// Key ID list
	// Note: This field may return "null", indicating that no valid value can be obtained.
	KeyIds []*string `json:"KeyIds,omitnil,omitempty" name:"KeyIds"`

	// Machine system configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Management *ManagementConfig `json:"Management,omitnil,omitempty" name:"Management"`

	// Fault self-healing rule name
	// Note: This field may return "null", indicating that no valid value can be obtained.
	HealthCheckPolicyName *string `json:"HealthCheckPolicyName,omitnil,omitempty" name:"HealthCheckPolicyName"`

	// hostname pattern string of native node pools
	// Note: This field may return "null", indicating that no valid value can be obtained.
	HostNamePattern *string `json:"HostNamePattern,omitnil,omitempty" name:"HostNamePattern"`

	// kubelet custom parameters
	// Note: This field may return "null", indicating that no valid value can be obtained.
	KubeletArgs []*string `json:"KubeletArgs,omitnil,omitempty" name:"KubeletArgs"`

	// Predefined script
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Lifecycle *LifecycleConfig `json:"Lifecycle,omitnil,omitempty" name:"Lifecycle"`

	// Runtime root directory
	// Note: This field may return "null", indicating that no valid value can be obtained.
	RuntimeRootDir *string `json:"RuntimeRootDir,omitnil,omitempty" name:"RuntimeRootDir"`

	// Whether to enable Auto Scaling (AS)
	// Note: This field may return "null", indicating that no valid value can be obtained.
	EnableAutoscaling *bool `json:"EnableAutoscaling,omitnil,omitempty" name:"EnableAutoscaling"`

	// List of models
	InstanceTypes []*string `json:"InstanceTypes,omitnil,omitempty" name:"InstanceTypes"`

	// Desired node count
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Replicas *int64 `json:"Replicas,omitnil,omitempty" name:"Replicas"`

	// Number of ready machines
	ReadyReplicas *int64 `json:"ReadyReplicas,omitnil,omitempty" name:"ReadyReplicas"`

	// Public network bandwidth configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"`

	// Data disk of native node pools
	// Note: This field may return "null", indicating that no valid value can be obtained.
	DataDisks []*DataDisk `json:"DataDisks,omitnil,omitempty" name:"DataDisks"`

	// Native node models: Native, NativeCVM
	// Note: This field may return "null", indicating that no valid value can be obtained.
	MachineType *string `json:"MachineType,omitnil,omitempty" name:"MachineType"`
}

type NodeCountSummary struct {
	// Manually managed nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	ManuallyAdded *ManuallyAdded `json:"ManuallyAdded,omitnil,omitempty" name:"ManuallyAdded"`

	// Automatically managed nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	AutoscalingAdded *AutoscalingAdded `json:"AutoscalingAdded,omitnil,omitempty" name:"AutoscalingAdded"`
}

type NodePool struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Node pool ID
	NodePoolId *string `json:"NodePoolId,omitnil,omitempty" name:"NodePoolId"`

	// Node tags
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Tags []*TagSpecification `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Node taint
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Taints []*Taint `json:"Taints,omitnil,omitempty" name:"Taints"`

	// Whether to enable deletion protection
	// Note: This field may return "null", indicating that no valid value can be obtained.
	DeletionProtection *bool `json:"DeletionProtection,omitnil,omitempty" name:"DeletionProtection"`

	// Whether the node is unschedulable
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Unschedulable *bool `json:"Unschedulable,omitnil,omitempty" name:"Unschedulable"`

	// Node pool type
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Node Labels
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Labels []*Label `json:"Labels,omitnil,omitempty" name:"Labels"`

	// Node pool status
	LifeState *string `json:"LifeState,omitnil,omitempty" name:"LifeState"`

	// Creation time
	CreatedAt *string `json:"CreatedAt,omitnil,omitempty" name:"CreatedAt"`

	// Node pool name
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Native node pool parameters
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Native *NativeNodePoolInfo `json:"Native,omitnil,omitempty" name:"Native"`

	// Node annotation list
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Annotations []*Annotation `json:"Annotations,omitnil,omitempty" name:"Annotations"`

	// Super node pool parameter, which has a value only when Type equals Super
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Super *SuperNodePoolInfo `json:"Super,omitnil,omitempty" name:"Super"`

	// General node pool parameter, which has a value only when Type equals Regular
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Regular *RegularNodePoolInfo `json:"Regular,omitnil,omitempty" name:"Regular"`

	// Third-party node pool parameter, which has a value only when Type equals External
	// Note: This field may return "null", indicating that no valid value can be obtained.
	External *ExternalNodePoolInfo `json:"External,omitnil,omitempty" name:"External"`
}

type RegularNodeInfo struct {
	// Node configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	InstanceAdvancedSettings *InstanceAdvancedSettings `json:"InstanceAdvancedSettings,omitnil,omitempty" name:"InstanceAdvancedSettings"`

	// Auto scaling group ID
	// Note: This field may return "null", indicating that no valid value can be obtained.
	AutoscalingGroupId *string `json:"AutoscalingGroupId,omitnil,omitempty" name:"AutoscalingGroupId"`
}

type RegularNodePoolInfo struct {
	// LaunchConfigurationId configuration
	LaunchConfigurationId *string `json:"LaunchConfigurationId,omitnil,omitempty" name:"LaunchConfigurationId"`

	// Auto-scaling group ID
	AutoscalingGroupId *string `json:"AutoscalingGroupId,omitnil,omitempty" name:"AutoscalingGroupId"`

	// NodeCountSummary node list
	NodeCountSummary *NodeCountSummary `json:"NodeCountSummary,omitnil,omitempty" name:"NodeCountSummary"`

	// Status information
	// Note: This field may return "null", indicating that no valid value can be obtained.
	AutoscalingGroupStatus *string `json:"AutoscalingGroupStatus,omitnil,omitempty" name:"AutoscalingGroupStatus"`

	// Maximum number of nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	MaxNodesNum *int64 `json:"MaxNodesNum,omitnil,omitempty" name:"MaxNodesNum"`

	// Minimum number of nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	MinNodesNum *int64 `json:"MinNodesNum,omitnil,omitempty" name:"MinNodesNum"`

	// Desired number of nodes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	DesiredNodesNum *int64 `json:"DesiredNodesNum,omitnil,omitempty" name:"DesiredNodesNum"`

	// Node pool osName
	// Note: This field may return "null", indicating that no valid value can be obtained.
	NodePoolOs *string `json:"NodePoolOs,omitnil,omitempty" name:"NodePoolOs"`

	// Node configuration
	// Note: This field may return "null", indicating that no valid value can be obtained.
	InstanceAdvancedSettings *InstanceAdvancedSettings `json:"InstanceAdvancedSettings,omitnil,omitempty" name:"InstanceAdvancedSettings"`
}

type RuntimeConfig struct {
	// Runtime type
	// Note: This field may return "null", indicating that no valid value can be obtained.
	RuntimeType *string `json:"RuntimeType,omitnil,omitempty" name:"RuntimeType"`

	// Runtime version
	// Note: This field may return "null", indicating that no valid value can be obtained.
	RuntimeVersion *string `json:"RuntimeVersion,omitnil,omitempty" name:"RuntimeVersion"`

	// Runtime root directory
	// Note: This field may return "null", indicating that no valid value can be obtained.
	RuntimeRootDir *string `json:"RuntimeRootDir,omitnil,omitempty" name:"RuntimeRootDir"`
}

type SortBy struct {
	// Sorting metrics
	FieldName *string `json:"FieldName,omitnil,omitempty" name:"FieldName"`

	// Sorting method
	OrderType *string `json:"OrderType,omitnil,omitempty" name:"OrderType"`
}

type SuperNodeInfo struct {
	// Instance name
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Auto-renewal label
	// Note: This field may return "null", indicating that no valid value can be obtained.
	AutoRenewFlag *int64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Resource type
	// Note: This field may return "null", indicating that no valid value can be obtained.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

	// CPU specification of nodes (unit: cores).
	// Note: This field may return "null", indicating that no valid value can be obtained.
	CPU *float64 `json:"CPU,omitnil,omitempty" name:"CPU"`

	// Total number of CPUs of Pods on nodes (unit: cores).
	// Note: This field may return "null", indicating that no valid value can be obtained.
	UsedCPU *float64 `json:"UsedCPU,omitnil,omitempty" name:"UsedCPU"`

	// Memory specification of nodes (unit: Gi).
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Memory *float64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Total memory of Pods on nodes (unit: Gi).
	// Note: This field may return "null", indicating that no valid value can be obtained.
	UsedMemory *float64 `json:"UsedMemory,omitnil,omitempty" name:"UsedMemory"`

	// Availability zone
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Unique VPC ID
	// Note: This field may return "null", indicating that no valid value can be obtained.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet unique ID
	// Note: This field may return "null", indicating that no valid value can be obtained.
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Effective time
	// Note: This field may return "null", indicating that no valid value can be obtained.
	ActiveAt *string `json:"ActiveAt,omitnil,omitempty" name:"ActiveAt"`

	// Expiration time
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	ExpireAt *string `json:"ExpireAt,omitnil,omitempty" name:"ExpireAt"`

	// Maximum schedulable CPU specification for a single Pod
	// Note: This field may return "null", indicating that no valid value can be obtained.
	MaxCPUScheduledPod *int64 `json:"MaxCPUScheduledPod,omitnil,omitempty" name:"MaxCPUScheduledPod"`

	// Instance attributes
	// Note: This field may return "null", indicating that no valid value can be obtained.
	InstanceAttribute *string `json:"InstanceAttribute,omitnil,omitempty" name:"InstanceAttribute"`
}

type SuperNodePoolInfo struct {
	// Subnet list
	// Note: This field may return "null", indicating that no valid value can be obtained.
	SubnetIds []*string `json:"SubnetIds,omitnil,omitempty" name:"SubnetIds"`

	// Security group list
	// Note: This field may return "null", indicating that no valid value can be obtained.
	SecurityGroupIds []*string `json:"SecurityGroupIds,omitnil,omitempty" name:"SecurityGroupIds"`
}

type Tag struct {
	// Tag key
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

	// Tag value
	Value *string `json:"Value,omitnil,omitempty" name:"Value"`
}

type TagSpecification struct {
	// The type of resources the label is bound to. Type currently supported: "cluster".
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	ResourceType *string `json:"ResourceType,omitnil,omitempty" name:"ResourceType"`

	// Tag pair list
	// 
	// Note: This field may return "null", indicating that no valid value can be obtained.
	Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"`
}

type Taint struct {
	// Key of Taint
	Key *string `json:"Key,omitnil,omitempty" name:"Key"`

	// Value of Taint
	Value *string `json:"Value,omitnil,omitempty" name:"Value"`

	// Effect of Taint
	Effect *string `json:"Effect,omitnil,omitempty" name:"Effect"`
}

type UpdateNativeNodePoolParam struct {
	// Scaling configuration
	Scaling *MachineSetScaling `json:"Scaling,omitnil,omitempty" name:"Scaling"`

	// Subnet list
	SubnetIds []*string `json:"SubnetIds,omitnil,omitempty" name:"SubnetIds"`

	// Security group list
	SecurityGroupIds []*string `json:"SecurityGroupIds,omitnil,omitempty" name:"SecurityGroupIds"`

	// Automatic upgrade configuration
	UpgradeSettings *MachineUpgradeSettings `json:"UpgradeSettings,omitnil,omitempty" name:"UpgradeSettings"`

	// Whether to enable self-healing capability
	AutoRepair *bool `json:"AutoRepair,omitnil,omitempty" name:"AutoRepair"`

	// Change the node billing type
	// Currently, only pay-as-you-go to monthly subscription is supported:
	// - PREPAID
	InstanceChargeType *string `json:"InstanceChargeType,omitnil,omitempty" name:"InstanceChargeType"`

	// Billing configuration of monthly subscription models
	InstanceChargePrepaid *InstanceChargePrepaid `json:"InstanceChargePrepaid,omitnil,omitempty" name:"InstanceChargePrepaid"`

	// System disk configuration
	SystemDisk *Disk `json:"SystemDisk,omitnil,omitempty" name:"SystemDisk"`

	// Machine system configuration
	Management *ManagementConfig `json:"Management,omitnil,omitempty" name:"Management"`

	// Fault self-healing rule name
	HealthCheckPolicyName *string `json:"HealthCheckPolicyName,omitnil,omitempty" name:"HealthCheckPolicyName"`

	// hostname pattern string of native node pools
	HostNamePattern *string `json:"HostNamePattern,omitnil,omitempty" name:"HostNamePattern"`

	// kubelet custom parameters
	KubeletArgs []*string `json:"KubeletArgs,omitnil,omitempty" name:"KubeletArgs"`

	// Predefined script
	Lifecycle *LifecycleConfig `json:"Lifecycle,omitnil,omitempty" name:"Lifecycle"`

	// Runtime root directory
	RuntimeRootDir *string `json:"RuntimeRootDir,omitnil,omitempty" name:"RuntimeRootDir"`

	// Whether to enable Auto Scaling (AS)
	EnableAutoscaling *bool `json:"EnableAutoscaling,omitnil,omitempty" name:"EnableAutoscaling"`

	// List of models
	InstanceTypes []*string `json:"InstanceTypes,omitnil,omitempty" name:"InstanceTypes"`

	// Desired node count
	Replicas *int64 `json:"Replicas,omitnil,omitempty" name:"Replicas"`

	// Data disk list
	DataDisks []*DataDisk `json:"DataDisks,omitnil,omitempty" name:"DataDisks"`

	// ssh public key ID array
	KeyIds []*string `json:"KeyIds,omitnil,omitempty" name:"KeyIds"`
}