# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'MachineBootConfigArgs',
    'MachineConstraintArgs',
    'MachineDiskArgs',
    'MachineDisksListArgs',
    'MachineImageDiskConstraintArgs',
    'MachineLinkArgs',
    'MachineNicArgs',
    'MachineTagArgs',
    'GetMachineTagArgs',
]

@pulumi.input_type
class MachineBootConfigArgs:
    def __init__(__self__, *,
                 content: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] content: Calid cloud config data in json-escaped yaml syntax.
        """
        if content is not None:
            pulumi.set(__self__, "content", content)

    @property
    @pulumi.getter
    def content(self) -> Optional[pulumi.Input[str]]:
        """
        Calid cloud config data in json-escaped yaml syntax.
        """
        return pulumi.get(self, "content")

    @content.setter
    def content(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "content", value)


@pulumi.input_type
class MachineConstraintArgs:
    def __init__(__self__, *,
                 expression: pulumi.Input[str],
                 mandatory: pulumi.Input[bool]):
        """
        :param pulumi.Input[str] expression: Constraint that is conveyed to the policy engine. An expression of the form "[!]tag-key[:[tag-value]]", used to indicate a constraint match on keys and values of tags.
        :param pulumi.Input[bool] mandatory: Indicates whether this constraint should be strictly enforced or not.
        """
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "mandatory", mandatory)

    @property
    @pulumi.getter
    def expression(self) -> pulumi.Input[str]:
        """
        Constraint that is conveyed to the policy engine. An expression of the form "[!]tag-key[:[tag-value]]", used to indicate a constraint match on keys and values of tags.
        """
        return pulumi.get(self, "expression")

    @expression.setter
    def expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "expression", value)

    @property
    @pulumi.getter
    def mandatory(self) -> pulumi.Input[bool]:
        """
        Indicates whether this constraint should be strictly enforced or not.
        """
        return pulumi.get(self, "mandatory")

    @mandatory.setter
    def mandatory(self, value: pulumi.Input[bool]):
        pulumi.set(self, "mandatory", value)


@pulumi.input_type
class MachineDiskArgs:
    def __init__(__self__, *,
                 block_device_id: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] block_device_id: ID of the existing block device.
        :param pulumi.Input[str] description: Human-friendly description.
        :param pulumi.Input[str] name: Human-friendly name used as an identifier in APIs that support this option.
        """
        pulumi.set(__self__, "block_device_id", block_device_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="blockDeviceId")
    def block_device_id(self) -> pulumi.Input[str]:
        """
        ID of the existing block device.
        """
        return pulumi.get(self, "block_device_id")

    @block_device_id.setter
    def block_device_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "block_device_id", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        Human-friendly description.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)


@pulumi.input_type
class MachineDisksListArgs:
    def __init__(__self__, *,
                 block_device_id: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] block_device_id: ID of the existing block device.
        :param pulumi.Input[str] description: Human-friendly description.
        :param pulumi.Input[str] name: Human-friendly name used as an identifier in APIs that support this option.
        """
        pulumi.set(__self__, "block_device_id", block_device_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="blockDeviceId")
    def block_device_id(self) -> pulumi.Input[str]:
        """
        ID of the existing block device.
        """
        return pulumi.get(self, "block_device_id")

    @block_device_id.setter
    def block_device_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "block_device_id", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        Human-friendly description.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)


@pulumi.input_type
class MachineImageDiskConstraintArgs:
    def __init__(__self__, *,
                 expression: pulumi.Input[str],
                 mandatory: pulumi.Input[bool]):
        """
        :param pulumi.Input[str] expression: Constraint that is conveyed to the policy engine. An expression of the form "[!]tag-key[:[tag-value]]", used to indicate a constraint match on keys and values of tags.
        :param pulumi.Input[bool] mandatory: Indicates whether this constraint should be strictly enforced or not.
        """
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "mandatory", mandatory)

    @property
    @pulumi.getter
    def expression(self) -> pulumi.Input[str]:
        """
        Constraint that is conveyed to the policy engine. An expression of the form "[!]tag-key[:[tag-value]]", used to indicate a constraint match on keys and values of tags.
        """
        return pulumi.get(self, "expression")

    @expression.setter
    def expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "expression", value)

    @property
    @pulumi.getter
    def mandatory(self) -> pulumi.Input[bool]:
        """
        Indicates whether this constraint should be strictly enforced or not.
        """
        return pulumi.get(self, "mandatory")

    @mandatory.setter
    def mandatory(self, value: pulumi.Input[bool]):
        pulumi.set(self, "mandatory", value)


@pulumi.input_type
class MachineLinkArgs:
    def __init__(__self__, *,
                 rel: pulumi.Input[str],
                 href: Optional[pulumi.Input[str]] = None,
                 hrefs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        pulumi.set(__self__, "rel", rel)
        if href is not None:
            pulumi.set(__self__, "href", href)
        if hrefs is not None:
            pulumi.set(__self__, "hrefs", hrefs)

    @property
    @pulumi.getter
    def rel(self) -> pulumi.Input[str]:
        return pulumi.get(self, "rel")

    @rel.setter
    def rel(self, value: pulumi.Input[str]):
        pulumi.set(self, "rel", value)

    @property
    @pulumi.getter
    def href(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "href")

    @href.setter
    def href(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "href", value)

    @property
    @pulumi.getter
    def hrefs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "hrefs")

    @hrefs.setter
    def hrefs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "hrefs", value)


@pulumi.input_type
class MachineNicArgs:
    def __init__(__self__, *,
                 network_id: pulumi.Input[str],
                 addresses: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 device_index: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] network_id: ID of the network instance that this network interface plugs into.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] addresses: List of IP addresses allocated or in use by this network interface.
               example:[ "10.1.2.190" ]
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the base type.
        :param pulumi.Input[str] description: Human-friendly description.
        :param pulumi.Input[int] device_index: The device index of this network interface.
        :param pulumi.Input[str] name: Human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] security_group_ids: List of security group ids which this network interface will be assigned to.
        """
        pulumi.set(__self__, "network_id", network_id)
        if addresses is not None:
            pulumi.set(__self__, "addresses", addresses)
        if custom_properties is not None:
            pulumi.set(__self__, "custom_properties", custom_properties)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if device_index is not None:
            pulumi.set(__self__, "device_index", device_index)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if security_group_ids is not None:
            pulumi.set(__self__, "security_group_ids", security_group_ids)

    @property
    @pulumi.getter(name="networkId")
    def network_id(self) -> pulumi.Input[str]:
        """
        ID of the network instance that this network interface plugs into.
        """
        return pulumi.get(self, "network_id")

    @network_id.setter
    def network_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "network_id", value)

    @property
    @pulumi.getter
    def addresses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        List of IP addresses allocated or in use by this network interface.
        example:[ "10.1.2.190" ]
        """
        return pulumi.get(self, "addresses")

    @addresses.setter
    def addresses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "addresses", value)

    @property
    @pulumi.getter(name="customProperties")
    def custom_properties(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Additional properties that may be used to extend the base type.
        """
        return pulumi.get(self, "custom_properties")

    @custom_properties.setter
    def custom_properties(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "custom_properties", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        Human-friendly description.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter(name="deviceIndex")
    def device_index(self) -> Optional[pulumi.Input[int]]:
        """
        The device index of this network interface.
        """
        return pulumi.get(self, "device_index")

    @device_index.setter
    def device_index(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "device_index", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="securityGroupIds")
    def security_group_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        List of security group ids which this network interface will be assigned to.
        """
        return pulumi.get(self, "security_group_ids")

    @security_group_ids.setter
    def security_group_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "security_group_ids", value)


@pulumi.input_type
class MachineTagArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[str],
                 value: pulumi.Input[str]):
        """
        :param pulumi.Input[str] key: Tag’s key.
        :param pulumi.Input[str] value: Tag’s value.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> pulumi.Input[str]:
        """
        Tag’s key.
        """
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: pulumi.Input[str]):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        """
        Tag’s value.
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class GetMachineTagArgs:
    def __init__(__self__, *,
                 key: str,
                 value: str):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> str:
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: str):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def value(self) -> str:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: str):
        pulumi.set(self, "value", value)


