/**
 * Admin API
 * The Admin API is used to manage the ApeCloud platform.
 *
 * The version of the OpenAPI document: 1.0.0
 * Contact: support@apecloud.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { ClusterBackup } from './cluster-backup';
import type { ClusterLicense } from './cluster-license';
import type { ClusterMaintainceWindow } from './cluster-maintaince-window';
import type { ClusterObjectStorageConfig } from './cluster-object-storage-config';
import type { ClusterTerminationPolicy } from './cluster-termination-policy';
import type { ClusterType } from './cluster-type';
import type { ComponentItem } from './component-item';
import type { InitOptionItem } from './init-option-item';
import type { NetworkMode } from './network-mode';
import type { ParamTplsItem } from './param-tpls-item';
import type { SchedulingPolicyType } from './scheduling-policy-type';
import type { ServiceRef } from './service-ref';
/**
 * KubeBlocks cluster details
 * @export
 * @interface Cluster
 */
export interface Cluster {
    /**
     * Cluster ID
     * @type {string}
     * @memberof Cluster
     */
    'id'?: string;
    /**
     * When two clusters have a relationship, parentId records the parent cluster id.Can be empty when there is no relationship
     * @type {string}
     * @memberof Cluster
     */
    'parentId'?: string | null;
    /**
     * the name of parent cluster
     * @type {string}
     * @memberof Cluster
     */
    'parentName'?: string | null;
    /**
     * the display name of parent cluster
     * @type {string}
     * @memberof Cluster
     */
    'parentDisplayName'?: string | null;
    /**
     *
     * @type {ClusterType}
     * @memberof Cluster
     */
    'clusterType'?: ClusterType | null;
    /**
     *
     * @type {number}
     * @memberof Cluster
     */
    'delay'?: number | null;
    /**
     * Org Name
     * @type {string}
     * @memberof Cluster
     */
    'orgName'?: string;
    /**
     * Cloud Provider
     * @type {string}
     * @memberof Cluster
     */
    'cloudProvider'?: string;
    /**
     * ID of the environment
     * @type {string}
     * @memberof Cluster
     */
    'environmentId'?: string;
    /**
     * Environment Name
     * @type {string}
     * @memberof Cluster
     */
    'environmentName': string;
    /**
     * Cloud Region
     * @type {string}
     * @memberof Cluster
     */
    'cloudRegion'?: string;
    /**
     * Name of project, it is the alias of environment namespace
     * @type {string}
     * @memberof Cluster
     */
    'project'?: string;
    /**
     * Name of cluster. Name must be unique within an Org
     * @type {string}
     * @memberof Cluster
     */
    'name': string;
    /**
     * Hash of cluster. Name must be unique within an Org
     * @type {string}
     * @memberof Cluster
     */
    'hash'?: string;
    /**
     * Cluster Application Engine
     * @type {string}
     * @memberof Cluster
     */
    'engine': string;
    /**
     *
     * @type {ClusterLicense}
     * @memberof Cluster
     */
    'license'?: ClusterLicense;
    /**
     * Items is the list of parameter template in the list
     * @type {Array<ParamTplsItem>}
     * @memberof Cluster
     */
    'paramTpls'?: Array<ParamTplsItem>;
    /**
     * Cluster Application Version
     * @type {string}
     * @memberof Cluster
     */
    'version'?: string;
    /**
     *
     * @type {ClusterTerminationPolicy}
     * @memberof Cluster
     */
    'terminationPolicy'?: ClusterTerminationPolicy;
    /**
     * Enable the cluster to provide TLS connection or not.
     * @type {boolean}
     * @memberof Cluster
     */
    'tlsEnabled'?: boolean;
    /**
     * Enable the cluster to provide NodePort service or not.
     * @type {boolean}
     * @memberof Cluster
     */
    'nodePortEnabled'?: boolean;
    /**
     * Cluster Status
     * @type {string}
     * @memberof Cluster
     */
    'status'?: string;
    /**
     * CreatedAt is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists
     * @type {string}
     * @memberof Cluster
     */
    'createdAt'?: string;
    /**
     * UpdatedAt is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists
     * @type {string}
     * @memberof Cluster
     */
    'updatedAt'?: string;
    /**
     * Cluster topology mode
     * @type {string}
     * @memberof Cluster
     */
    'mode'?: string;
    /**
     * Proxy Enabled
     * @type {boolean}
     * @memberof Cluster
     */
    'proxyEnabled'?: boolean;
    /**
     * Components is the list of components
     * @type {Array<ComponentItem>}
     * @memberof Cluster
     */
    'components'?: Array<ComponentItem>;
    /**
     * Extra configuration for cluster
     * @type {{ [key: string]: object; }}
     * @memberof Cluster
     */
    'extra'?: {
        [key: string]: object;
    };
    /**
     * InitOptions is the list of init option
     * @type {Array<InitOptionItem>}
     * @memberof Cluster
     */
    'initOptions'?: Array<InitOptionItem>;
    /**
     * Use single availability zones
     * @type {boolean}
     * @memberof Cluster
     */
    'singleZone'?: boolean;
    /**
     * Availability Zones
     * @type {Array<string>}
     * @memberof Cluster
     */
    'availabilityZones'?: Array<string>;
    /**
     * Enable pod antiaffinity for cluster
     * @type {boolean}
     * @memberof Cluster
     */
    'podAntiAffinityEnabled'?: boolean;
    /**
     *
     * @type {ClusterBackup}
     * @memberof Cluster
     */
    'backup'?: ClusterBackup;
    /**
     * Specify a NodeGroup for the cluster
     * @type {string}
     * @memberof Cluster
     */
    'nodeGroup'?: string | null;
    /**
     * Cluster main component codeShort
     * @type {string}
     * @memberof Cluster
     */
    'codeShort'?: string;
    /**
     * Display name of cluster.
     * @type {string}
     * @memberof Cluster
     */
    'displayName'?: string;
    /**
     * if cluster is static cluster
     * @type {boolean}
     * @memberof Cluster
     */
    'static'?: boolean;
    /**
     *
     * @type {NetworkMode}
     * @memberof Cluster
     */
    'networkMode'?: NetworkMode;
    /**
     * serviceRefs used by this cluster
     * @type {Array<ServiceRef>}
     * @memberof Cluster
     */
    'serviceRefs'?: Array<ServiceRef>;
    /**
     * this list of objects (currently, object is a cluster) that uses this cluster as a serviceRef
     * @type {Array<ServiceRef>}
     * @memberof Cluster
     */
    'referencedBy'?: Array<ServiceRef>;
    /**
     *
     * @type {ClusterObjectStorageConfig}
     * @memberof Cluster
     */
    'objectStorageConfig'?: ClusterObjectStorageConfig;
    /**
     *
     * @type {ClusterMaintainceWindow}
     * @memberof Cluster
     */
    'maintainceWindow'?: ClusterMaintainceWindow;
    /**
     *
     * @type {SchedulingPolicyType}
     * @memberof Cluster
     */
    'schedulingPolicy'?: SchedulingPolicyType;
}
//# sourceMappingURL=cluster.d.ts.map