import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Virtual Node Pool resource in Oracle Cloud Infrastructure Container Engine service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/containerengine/latest/VirtualNodePool
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/container_engine
 *
 * Create a new virtual node pool.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testVirtualNodePool = new oci.containerengine.VirtualNodePool("test_virtual_node_pool", {
 *     clusterId: testCluster.id,
 *     compartmentId: compartmentId,
 *     displayName: virtualNodePoolDisplayName,
 *     placementConfigurations: [{
 *         availabilityDomain: virtualNodePoolPlacementConfigurationsAvailabilityDomain,
 *         faultDomains: virtualNodePoolPlacementConfigurationsFaultDomain,
 *         subnetId: testSubnet.id,
 *     }],
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     initialVirtualNodeLabels: [{
 *         key: virtualNodePoolInitialVirtualNodeLabelsKey,
 *         value: virtualNodePoolInitialVirtualNodeLabelsValue,
 *     }],
 *     nsgIds: virtualNodePoolNsgIds,
 *     podConfiguration: {
 *         shape: virtualNodePoolPodConfigurationShape,
 *         subnetId: testSubnet.id,
 *         nsgIds: virtualNodePoolPodConfigurationNsgIds,
 *     },
 *     size: Number(virtualNodePoolSize),
 *     taints: [{
 *         effect: virtualNodePoolTaintsEffect,
 *         key: virtualNodePoolTaintsKey,
 *         value: virtualNodePoolTaintsValue,
 *     }],
 *     virtualNodeTags: {
 *         definedTags: {
 *             "Operations.CostCenter": "42",
 *         },
 *         freeformTags: {
 *             Department: "Finance",
 *         },
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * VirtualNodePools can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:ContainerEngine/virtualNodePool:VirtualNodePool test_virtual_node_pool "id"
 * ```
 */
export declare class VirtualNodePool extends pulumi.CustomResource {
    /**
     * Get an existing VirtualNodePool resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: VirtualNodePoolState, opts?: pulumi.CustomResourceOptions): VirtualNodePool;
    /**
     * Returns true if the given object is an instance of VirtualNodePool.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is VirtualNodePool;
    /**
     * The cluster the virtual node pool is associated with. A virtual node pool can only be associated with one cluster.
     */
    readonly clusterId: pulumi.Output<string>;
    /**
     * Compartment of the virtual node pool.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) Display name of the virtual node pool. This is a non-unique value.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) Initial labels that will be added to the Kubernetes Virtual Node object when it registers.
     */
    readonly initialVirtualNodeLabels: pulumi.Output<outputs.ContainerEngine.VirtualNodePoolInitialVirtualNodeLabel[]>;
    /**
     * The version of Kubernetes running on the nodes in the node pool.
     */
    readonly kubernetesVersion: pulumi.Output<string>;
    /**
     * Details about the state of the Virtual Node Pool.
     */
    readonly lifecycleDetails: pulumi.Output<string>;
    /**
     * (Updatable) List of network security group id's applied to the Virtual Node VNIC.
     */
    readonly nsgIds: pulumi.Output<string[]>;
    /**
     * (Updatable) The list of placement configurations which determines where Virtual Nodes will be provisioned across as it relates to the subnet and availability domains. The size attribute determines how many we evenly spread across these placement configurations
     */
    readonly placementConfigurations: pulumi.Output<outputs.ContainerEngine.VirtualNodePoolPlacementConfiguration[]>;
    /**
     * (Updatable) The pod configuration for pods run on virtual nodes of this virtual node pool.
     */
    readonly podConfiguration: pulumi.Output<outputs.ContainerEngine.VirtualNodePoolPodConfiguration>;
    /**
     * (Updatable) The number of Virtual Nodes that should be in the Virtual Node Pool. The placement configurations determine where these virtual nodes are placed.
     */
    readonly size: pulumi.Output<number>;
    /**
     * The state of the Virtual Node Pool.
     */
    readonly state: pulumi.Output<string>;
    /**
     * Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) A taint is a collection of <key, value, effect>. These taints will be applied to the Virtual Nodes of this Virtual Node Pool for Kubernetes scheduling.
     */
    readonly taints: pulumi.Output<outputs.ContainerEngine.VirtualNodePoolTaint[]>;
    /**
     * The time the virtual node pool was created.
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The time the virtual node pool was updated.
     */
    readonly timeUpdated: pulumi.Output<string>;
    /**
     * (Updatable) The tags associated to the virtual nodes in this virtual node pool.
     */
    readonly virtualNodeTags: pulumi.Output<outputs.ContainerEngine.VirtualNodePoolVirtualNodeTags>;
    /**
     * Create a VirtualNodePool resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: VirtualNodePoolArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering VirtualNodePool resources.
 */
export interface VirtualNodePoolState {
    /**
     * The cluster the virtual node pool is associated with. A virtual node pool can only be associated with one cluster.
     */
    clusterId?: pulumi.Input<string | undefined>;
    /**
     * Compartment of the virtual node pool.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Display name of the virtual node pool. This is a non-unique value.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Initial labels that will be added to the Kubernetes Virtual Node object when it registers.
     */
    initialVirtualNodeLabels?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.VirtualNodePoolInitialVirtualNodeLabel>[] | undefined>;
    /**
     * The version of Kubernetes running on the nodes in the node pool.
     */
    kubernetesVersion?: pulumi.Input<string | undefined>;
    /**
     * Details about the state of the Virtual Node Pool.
     */
    lifecycleDetails?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) List of network security group id's applied to the Virtual Node VNIC.
     */
    nsgIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) The list of placement configurations which determines where Virtual Nodes will be provisioned across as it relates to the subnet and availability domains. The size attribute determines how many we evenly spread across these placement configurations
     */
    placementConfigurations?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.VirtualNodePoolPlacementConfiguration>[] | undefined>;
    /**
     * (Updatable) The pod configuration for pods run on virtual nodes of this virtual node pool.
     */
    podConfiguration?: pulumi.Input<inputs.ContainerEngine.VirtualNodePoolPodConfiguration | undefined>;
    /**
     * (Updatable) The number of Virtual Nodes that should be in the Virtual Node Pool. The placement configurations determine where these virtual nodes are placed.
     */
    size?: pulumi.Input<number | undefined>;
    /**
     * The state of the Virtual Node Pool.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A taint is a collection of <key, value, effect>. These taints will be applied to the Virtual Nodes of this Virtual Node Pool for Kubernetes scheduling.
     */
    taints?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.VirtualNodePoolTaint>[] | undefined>;
    /**
     * The time the virtual node pool was created.
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The time the virtual node pool was updated.
     */
    timeUpdated?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The tags associated to the virtual nodes in this virtual node pool.
     */
    virtualNodeTags?: pulumi.Input<inputs.ContainerEngine.VirtualNodePoolVirtualNodeTags | undefined>;
}
/**
 * The set of arguments for constructing a VirtualNodePool resource.
 */
export interface VirtualNodePoolArgs {
    /**
     * The cluster the virtual node pool is associated with. A virtual node pool can only be associated with one cluster.
     */
    clusterId: pulumi.Input<string>;
    /**
     * Compartment of the virtual node pool.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Display name of the virtual node pool. This is a non-unique value.
     */
    displayName: pulumi.Input<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Initial labels that will be added to the Kubernetes Virtual Node object when it registers.
     */
    initialVirtualNodeLabels?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.VirtualNodePoolInitialVirtualNodeLabel>[] | undefined>;
    /**
     * (Updatable) List of network security group id's applied to the Virtual Node VNIC.
     */
    nsgIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) The list of placement configurations which determines where Virtual Nodes will be provisioned across as it relates to the subnet and availability domains. The size attribute determines how many we evenly spread across these placement configurations
     */
    placementConfigurations: pulumi.Input<pulumi.Input<inputs.ContainerEngine.VirtualNodePoolPlacementConfiguration>[]>;
    /**
     * (Updatable) The pod configuration for pods run on virtual nodes of this virtual node pool.
     */
    podConfiguration: pulumi.Input<inputs.ContainerEngine.VirtualNodePoolPodConfiguration>;
    /**
     * (Updatable) The number of Virtual Nodes that should be in the Virtual Node Pool. The placement configurations determine where these virtual nodes are placed.
     */
    size: pulumi.Input<number>;
    /**
     * (Updatable) A taint is a collection of <key, value, effect>. These taints will be applied to the Virtual Nodes of this Virtual Node Pool for Kubernetes scheduling.
     */
    taints?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.VirtualNodePoolTaint>[] | undefined>;
    /**
     * (Updatable) The tags associated to the virtual nodes in this virtual node pool.
     */
    virtualNodeTags?: pulumi.Input<inputs.ContainerEngine.VirtualNodePoolVirtualNodeTags | undefined>;
}
//# sourceMappingURL=virtualNodePool.d.ts.map