"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import typing
import yandex.cloud.compute.v1.instance_service_pb2

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class CreateComputeInstance(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class LabelsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

    @typing.final
    class MetadataEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

    LABELS_FIELD_NUMBER: builtins.int
    ZONE_ID_FIELD_NUMBER: builtins.int
    RESOURCES_SPEC_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    BOOT_DISK_SPEC_FIELD_NUMBER: builtins.int
    NETWORK_INTERFACE_SPECS_FIELD_NUMBER: builtins.int
    SERVICE_ACCOUNT_ID_FIELD_NUMBER: builtins.int
    PLATFORM_ID_FIELD_NUMBER: builtins.int
    zone_id: builtins.str
    """ID of the availability zone where the instance resides.
    To get a list of available zones, use the [yandex.cloud.compute.v1.ZoneService.List] request
    """
    service_account_id: builtins.str
    """ID of the service account to use for [authentication inside the instance](/docs/compute/operations/vm-connect/auth-inside-vm).
    To get the service account ID, use a [yandex.cloud.iam.v1.ServiceAccountService.List] request.
    """
    platform_id: builtins.str
    """ID of the [Compute VM platform](/docs/compute/concepts/vm-platforms) on which the agent will be created.
    Default value: "standard-v2"
    """
    @property
    def labels(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Resource labels as `key:value` pairs."""

    @property
    def resources_spec(self) -> yandex.cloud.compute.v1.instance_service_pb2.ResourcesSpec:
        """Computing resources of the instance, such as the amount of memory and number of cores.
        To get a list of available values, see [Levels of core performance](/docs/compute/concepts/performance-levels).
        """

    @property
    def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """The metadata `key:value` pairs that will be assigned to this instance. This includes custom metadata and predefined keys.
        The total size of all keys and values must be less than 512 KB.

        Values are free-form strings, and only have meaning as interpreted by the programs which configure the instance.
        The values must be 256 KB or less.

        For example, you may use the metadata in order to provide your public SSH key to the instance.
        For more information, see [Metadata](/docs/compute/concepts/vm-metadata).
        """

    @property
    def boot_disk_spec(self) -> yandex.cloud.compute.v1.instance_service_pb2.AttachedDiskSpec:
        """Boot disk to attach to the instance."""

    @property
    def network_interface_specs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.compute.v1.instance_service_pb2.NetworkInterfaceSpec]:
        """Network configuration for the instance. Specifies how the network interface is configured
        to interact with other services on the internal network and on the internet.
        Currently only one network interface is supported per instance.
        """

    def __init__(
        self,
        *,
        labels: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        zone_id: builtins.str = ...,
        resources_spec: yandex.cloud.compute.v1.instance_service_pb2.ResourcesSpec | None = ...,
        metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        boot_disk_spec: yandex.cloud.compute.v1.instance_service_pb2.AttachedDiskSpec | None = ...,
        network_interface_specs: collections.abc.Iterable[yandex.cloud.compute.v1.instance_service_pb2.NetworkInterfaceSpec] | None = ...,
        service_account_id: builtins.str = ...,
        platform_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["boot_disk_spec", b"boot_disk_spec", "resources_spec", b"resources_spec"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["boot_disk_spec", b"boot_disk_spec", "labels", b"labels", "metadata", b"metadata", "network_interface_specs", b"network_interface_specs", "platform_id", b"platform_id", "resources_spec", b"resources_spec", "service_account_id", b"service_account_id", "zone_id", b"zone_id"]) -> None: ...

global___CreateComputeInstance = CreateComputeInstance
