/* tslint:disable */
/* eslint-disable */
/**
 * AssistedInstall
 * Assisted installation
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

// May contain unused imports in some cases
// @ts-ignore
import { ApiVip } from './api-vip';
// May contain unused imports in some cases
// @ts-ignore
import { ClusterNetwork } from './cluster-network';
// May contain unused imports in some cases
// @ts-ignore
import { DiskEncryption } from './disk-encryption';
// May contain unused imports in some cases
// @ts-ignore
import { IgnitionEndpoint } from './ignition-endpoint';
// May contain unused imports in some cases
// @ts-ignore
import { IngressVip } from './ingress-vip';
// May contain unused imports in some cases
// @ts-ignore
import { MachineNetwork } from './machine-network';
// May contain unused imports in some cases
// @ts-ignore
import { OperatorCreateParams } from './operator-create-params';
// May contain unused imports in some cases
// @ts-ignore
import { Platform } from './platform';
// May contain unused imports in some cases
// @ts-ignore
import { ServiceNetwork } from './service-network';

/**
 *
 * @export
 * @interface V2ClusterUpdateParams
 */
export interface V2ClusterUpdateParams {
  /**
   * A comma-separated list of NTP sources (name or IP) going to be added to all the hosts.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  additional_ntp_source?: string | null;
  /**
   * (DEPRECATED) The virtual IP used to reach the OpenShift cluster\'s API.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  api_vip?: string | null;
  /**
   * The domain name used to reach the OpenShift cluster API.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  api_vip_dns_name?: string | null;
  /**
   * The virtual IPs used to reach the OpenShift cluster\'s API. Enter one IP address for single-stack clusters, or up to two for dual-stack clusters (at most one IP address per IP stack used). The order of stacks should be the same as order of subnets in Cluster Networks, Service Networks, and Machine Networks.
   * @type {Array<ApiVip>}
   * @memberof V2ClusterUpdateParams
   */
  api_vips?: Array<ApiVip> | null;
  /**
   * Base domain of the cluster. All DNS records must be sub-domains of this base and include the cluster name.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  base_dns_domain?: string | null;
  /**
   * IP address block from which Pod IPs are allocated. This block must not overlap with existing physical networks. These IP addresses are used for the Pod network, and if you need to access the Pods from an external network, configure load balancers and routers to manage the traffic.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  cluster_network_cidr?: string | null;
  /**
   * The subnet prefix length to assign to each individual node. For example, if clusterNetworkHostPrefix is set to 23, then each node is assigned a /23 subnet out of the given cidr (clusterNetworkCIDR), which allows for 510 (2^(32 - 23) - 2) pod IPs addresses. If you are required to provide access to nodes from an external network, configure load balancers and routers to manage the traffic.
   * @type {number}
   * @memberof V2ClusterUpdateParams
   */
  cluster_network_host_prefix?: number | null;
  /**
   * Cluster networks that are associated with this cluster.
   * @type {Array<ClusterNetwork>}
   * @memberof V2ClusterUpdateParams
   */
  cluster_networks?: Array<ClusterNetwork> | null;
  /**
   *
   * @type {DiskEncryption}
   * @memberof V2ClusterUpdateParams
   */
  disk_encryption?: DiskEncryption;
  /**
   * A proxy URL to use for creating HTTP connections outside the cluster. http://\\<username\\>:\\<pswd\\>@\\<ip\\>:\\<port\\>
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  http_proxy?: string | null;
  /**
   * A proxy URL to use for creating HTTPS connections outside the cluster. http://\\<username\\>:\\<pswd\\>@\\<ip\\>:\\<port\\>
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  https_proxy?: string | null;
  /**
   * Enable/disable hyperthreading on master nodes, worker nodes, or all nodes.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  hyperthreading?: V2ClusterUpdateParamsHyperthreadingEnum;
  /**
   *
   * @type {IgnitionEndpoint}
   * @memberof V2ClusterUpdateParams
   */
  ignition_endpoint?: IgnitionEndpoint;
  /**
   * (DEPRECATED) The virtual IP used for cluster ingress traffic.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  ingress_vip?: string | null;
  /**
   * The virtual IPs used for cluster ingress traffic. Enter one IP address for single-stack clusters, or up to two for dual-stack clusters (at most one IP address per IP stack used). The order of stacks should be the same as order of subnets in Cluster Networks, Service Networks, and Machine Networks.
   * @type {Array<IngressVip>}
   * @memberof V2ClusterUpdateParams
   */
  ingress_vips?: Array<IngressVip> | null;
  /**
   * A CIDR that all hosts belonging to the cluster should have an interfaces with IP address that belongs to this CIDR. The api_vip belongs to this CIDR.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  machine_network_cidr?: string | null;
  /**
   * Machine networks that are associated with this cluster.
   * @type {Array<MachineNetwork>}
   * @memberof V2ClusterUpdateParams
   */
  machine_networks?: Array<MachineNetwork> | null;
  /**
   * OpenShift cluster name.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  name?: string | null;
  /**
   * The desired network type used.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  network_type?: V2ClusterUpdateParamsNetworkTypeEnum;
  /**
   * An \"*\" or a comma-separated list of destination domain names, domains, IP addresses, or other network CIDRs to exclude from proxying.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  no_proxy?: string | null;
  /**
   * List of OLM operators to be installed.
   * @type {Array<OperatorCreateParams>}
   * @memberof V2ClusterUpdateParams
   */
  olm_operators?: Array<OperatorCreateParams>;
  /**
   *
   * @type {Platform}
   * @memberof V2ClusterUpdateParams
   */
  platform?: Platform;
  /**
   * The pull secret obtained from Red Hat OpenShift Cluster Manager at console.redhat.com/openshift/install/pull-secret.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  pull_secret?: string | null;
  /**
   * Schedule workloads on masters
   * @type {boolean}
   * @memberof V2ClusterUpdateParams
   */
  schedulable_masters?: boolean;
  /**
   * The IP address pool to use for service IP addresses. You can enter only one IP address pool. If you need to access the services from an external network, configure load balancers and routers to manage the traffic.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  service_network_cidr?: string | null;
  /**
   * Service networks that are associated with this cluster.
   * @type {Array<ServiceNetwork>}
   * @memberof V2ClusterUpdateParams
   */
  service_networks?: Array<ServiceNetwork> | null;
  /**
   * SSH public key for debugging OpenShift nodes.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  ssh_public_key?: string | null;
  /**
   * A comma-separated list of tags that are associated to the cluster.
   * @type {string}
   * @memberof V2ClusterUpdateParams
   */
  tags?: string | null;
  /**
   * (DEPRECATED) Indicate if the networking is managed by the user.
   * @type {boolean}
   * @memberof V2ClusterUpdateParams
   */
  user_managed_networking?: boolean | null;
  /**
   * Indicate if virtual IP DHCP allocation mode is enabled.
   * @type {boolean}
   * @memberof V2ClusterUpdateParams
   */
  vip_dhcp_allocation?: boolean | null;
}

/**
 * @export
 * @enum {string}
 */
export enum V2ClusterUpdateParamsHyperthreadingEnum {
  Masters = 'masters',
  Workers = 'workers',
  All = 'all',
  None = 'none',
}
/**
 * @export
 * @enum {string}
 */
export enum V2ClusterUpdateParamsNetworkTypeEnum {
  OpenShiftSdn = 'OpenShiftSDN',
  OvnKubernetes = 'OVNKubernetes',
}
