# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'AwsAssumeCrossAccountRoleArgs',
    'AwsAssumeCrossAccountRoleArgsDict',
    'AwsUsageScopeArgs',
    'AwsUsageScopeArgsDict',
    'DatacenterUsageScopeArgs',
    'DatacenterUsageScopeArgsDict',
    'GcpUsageScopeArgs',
    'GcpUsageScopeArgsDict',
    'KubernetesAuthenticationArgs',
    'KubernetesAuthenticationArgsDict',
    'KubernetesAuthenticationOidcArgs',
    'KubernetesAuthenticationOidcArgsDict',
    'KubernetesAuthenticationServiceAccountArgs',
    'KubernetesAuthenticationServiceAccountArgsDict',
    'KubernetesAuthenticationUsernamePasswordArgs',
    'KubernetesAuthenticationUsernamePasswordArgsDict',
    'KubernetesUsageScopeArgs',
    'KubernetesUsageScopeArgsDict',
]

MYPY = False

if not MYPY:
    class AwsAssumeCrossAccountRoleArgsDict(TypedDict):
        role_arn: pulumi.Input[_builtins.str]
        """
        This is an IAM role in the target deployment AWS account.
        """
        external_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
elif False:
    AwsAssumeCrossAccountRoleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AwsAssumeCrossAccountRoleArgs:
    def __init__(__self__, *,
                 role_arn: pulumi.Input[_builtins.str],
                 external_id: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] role_arn: This is an IAM role in the target deployment AWS account.
        :param pulumi.Input[_builtins.str] external_id: If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        pulumi.set(__self__, "role_arn", role_arn)
        if external_id is not None:
            pulumi.set(__self__, "external_id", external_id)

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> pulumi.Input[_builtins.str]:
        """
        This is an IAM role in the target deployment AWS account.
        """
        return pulumi.get(self, "role_arn")

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

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        return pulumi.get(self, "external_id")

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


if not MYPY:
    class AwsUsageScopeArgsDict(TypedDict):
        application_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Id of the application to scope to. If empty then this scope applies to all applications.
        """
        environment_filter_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        """
        environment_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
elif False:
    AwsUsageScopeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AwsUsageScopeArgs:
    def __init__(__self__, *,
                 application_id: Optional[pulumi.Input[_builtins.str]] = None,
                 environment_filter_type: Optional[pulumi.Input[_builtins.str]] = None,
                 environment_id: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] application_id: Id of the application to scope to. If empty then this scope applies to all applications.
        :param pulumi.Input[_builtins.str] environment_filter_type: Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        :param pulumi.Input[_builtins.str] environment_id: Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
        if application_id is not None:
            pulumi.set(__self__, "application_id", application_id)
        if environment_filter_type is not None:
            pulumi.set(__self__, "environment_filter_type", environment_filter_type)
        if environment_id is not None:
            pulumi.set(__self__, "environment_id", environment_id)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Id of the application to scope to. If empty then this scope applies to all applications.
        """
        return pulumi.get(self, "application_id")

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

    @_builtins.property
    @pulumi.getter(name="environmentFilterType")
    def environment_filter_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        """
        return pulumi.get(self, "environment_filter_type")

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

    @_builtins.property
    @pulumi.getter(name="environmentId")
    def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
        return pulumi.get(self, "environment_id")

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


if not MYPY:
    class DatacenterUsageScopeArgsDict(TypedDict):
        application_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Id of the application to scope to. If empty then this scope applies to all applications.
        """
        environment_filter_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        """
        environment_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
elif False:
    DatacenterUsageScopeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DatacenterUsageScopeArgs:
    def __init__(__self__, *,
                 application_id: Optional[pulumi.Input[_builtins.str]] = None,
                 environment_filter_type: Optional[pulumi.Input[_builtins.str]] = None,
                 environment_id: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] application_id: Id of the application to scope to. If empty then this scope applies to all applications.
        :param pulumi.Input[_builtins.str] environment_filter_type: Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        :param pulumi.Input[_builtins.str] environment_id: Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
        if application_id is not None:
            pulumi.set(__self__, "application_id", application_id)
        if environment_filter_type is not None:
            pulumi.set(__self__, "environment_filter_type", environment_filter_type)
        if environment_id is not None:
            pulumi.set(__self__, "environment_id", environment_id)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Id of the application to scope to. If empty then this scope applies to all applications.
        """
        return pulumi.get(self, "application_id")

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

    @_builtins.property
    @pulumi.getter(name="environmentFilterType")
    def environment_filter_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        """
        return pulumi.get(self, "environment_filter_type")

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

    @_builtins.property
    @pulumi.getter(name="environmentId")
    def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
        return pulumi.get(self, "environment_id")

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


if not MYPY:
    class GcpUsageScopeArgsDict(TypedDict):
        application_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Id of the application to scope to. If empty then this scope applies to all applications.
        """
        environment_filter_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        """
        environment_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
elif False:
    GcpUsageScopeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GcpUsageScopeArgs:
    def __init__(__self__, *,
                 application_id: Optional[pulumi.Input[_builtins.str]] = None,
                 environment_filter_type: Optional[pulumi.Input[_builtins.str]] = None,
                 environment_id: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] application_id: Id of the application to scope to. If empty then this scope applies to all applications.
        :param pulumi.Input[_builtins.str] environment_filter_type: Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        :param pulumi.Input[_builtins.str] environment_id: Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
        if application_id is not None:
            pulumi.set(__self__, "application_id", application_id)
        if environment_filter_type is not None:
            pulumi.set(__self__, "environment_filter_type", environment_filter_type)
        if environment_id is not None:
            pulumi.set(__self__, "environment_id", environment_id)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Id of the application to scope to. If empty then this scope applies to all applications.
        """
        return pulumi.get(self, "application_id")

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

    @_builtins.property
    @pulumi.getter(name="environmentFilterType")
    def environment_filter_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        """
        return pulumi.get(self, "environment_filter_type")

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

    @_builtins.property
    @pulumi.getter(name="environmentId")
    def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
        return pulumi.get(self, "environment_id")

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


if not MYPY:
    class KubernetesAuthenticationArgsDict(TypedDict):
        delegate_selectors: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Delegate selectors to inherit the GCP credentials from.
        """
        oidc: NotRequired[pulumi.Input['KubernetesAuthenticationOidcArgsDict']]
        """
        Service account configuration for connecting to the Kubernetes cluster
        """
        service_account: NotRequired[pulumi.Input['KubernetesAuthenticationServiceAccountArgsDict']]
        """
        Username and password for authentication to the cluster
        """
        username_password: NotRequired[pulumi.Input['KubernetesAuthenticationUsernamePasswordArgsDict']]
        """
        Username and password for authentication to the cluster
        """
elif False:
    KubernetesAuthenticationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class KubernetesAuthenticationArgs:
    def __init__(__self__, *,
                 delegate_selectors: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 oidc: Optional[pulumi.Input['KubernetesAuthenticationOidcArgs']] = None,
                 service_account: Optional[pulumi.Input['KubernetesAuthenticationServiceAccountArgs']] = None,
                 username_password: Optional[pulumi.Input['KubernetesAuthenticationUsernamePasswordArgs']] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] delegate_selectors: Delegate selectors to inherit the GCP credentials from.
        :param pulumi.Input['KubernetesAuthenticationOidcArgs'] oidc: Service account configuration for connecting to the Kubernetes cluster
        :param pulumi.Input['KubernetesAuthenticationServiceAccountArgs'] service_account: Username and password for authentication to the cluster
        :param pulumi.Input['KubernetesAuthenticationUsernamePasswordArgs'] username_password: Username and password for authentication to the cluster
        """
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if oidc is not None:
            pulumi.set(__self__, "oidc", oidc)
        if service_account is not None:
            pulumi.set(__self__, "service_account", service_account)
        if username_password is not None:
            pulumi.set(__self__, "username_password", username_password)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Delegate selectors to inherit the GCP credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

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

    @_builtins.property
    @pulumi.getter
    def oidc(self) -> Optional[pulumi.Input['KubernetesAuthenticationOidcArgs']]:
        """
        Service account configuration for connecting to the Kubernetes cluster
        """
        return pulumi.get(self, "oidc")

    @oidc.setter
    def oidc(self, value: Optional[pulumi.Input['KubernetesAuthenticationOidcArgs']]):
        pulumi.set(self, "oidc", value)

    @_builtins.property
    @pulumi.getter(name="serviceAccount")
    def service_account(self) -> Optional[pulumi.Input['KubernetesAuthenticationServiceAccountArgs']]:
        """
        Username and password for authentication to the cluster
        """
        return pulumi.get(self, "service_account")

    @service_account.setter
    def service_account(self, value: Optional[pulumi.Input['KubernetesAuthenticationServiceAccountArgs']]):
        pulumi.set(self, "service_account", value)

    @_builtins.property
    @pulumi.getter(name="usernamePassword")
    def username_password(self) -> Optional[pulumi.Input['KubernetesAuthenticationUsernamePasswordArgs']]:
        """
        Username and password for authentication to the cluster
        """
        return pulumi.get(self, "username_password")

    @username_password.setter
    def username_password(self, value: Optional[pulumi.Input['KubernetesAuthenticationUsernamePasswordArgs']]):
        pulumi.set(self, "username_password", value)


if not MYPY:
    class KubernetesAuthenticationOidcArgsDict(TypedDict):
        client_id_secret_name: pulumi.Input[_builtins.str]
        """
        Name of the Harness secret containing the client ID for the cluster.
        """
        identity_provider_url: pulumi.Input[_builtins.str]
        """
        URL of the identity provider to use.
        """
        master_url: pulumi.Input[_builtins.str]
        """
        URL of the Kubernetes master to connect to.
        """
        password_secret_name: pulumi.Input[_builtins.str]
        """
        Name of the Harness secret containing the password for the cluster.
        """
        username: pulumi.Input[_builtins.str]
        """
        Username for authentication to the cluster. This can be the username itself or the ID of a harness secret.
        """
        client_secret_secret_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Name of the Harness secret containing the client secret for the cluster.
        """
        scopes: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Scopes to request from the identity provider.
        """
elif False:
    KubernetesAuthenticationOidcArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class KubernetesAuthenticationOidcArgs:
    def __init__(__self__, *,
                 client_id_secret_name: pulumi.Input[_builtins.str],
                 identity_provider_url: pulumi.Input[_builtins.str],
                 master_url: pulumi.Input[_builtins.str],
                 password_secret_name: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 client_secret_secret_name: Optional[pulumi.Input[_builtins.str]] = None,
                 scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None):
        """
        :param pulumi.Input[_builtins.str] client_id_secret_name: Name of the Harness secret containing the client ID for the cluster.
        :param pulumi.Input[_builtins.str] identity_provider_url: URL of the identity provider to use.
        :param pulumi.Input[_builtins.str] master_url: URL of the Kubernetes master to connect to.
        :param pulumi.Input[_builtins.str] password_secret_name: Name of the Harness secret containing the password for the cluster.
        :param pulumi.Input[_builtins.str] username: Username for authentication to the cluster. This can be the username itself or the ID of a harness secret.
        :param pulumi.Input[_builtins.str] client_secret_secret_name: Name of the Harness secret containing the client secret for the cluster.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] scopes: Scopes to request from the identity provider.
        """
        pulumi.set(__self__, "client_id_secret_name", client_id_secret_name)
        pulumi.set(__self__, "identity_provider_url", identity_provider_url)
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "password_secret_name", password_secret_name)
        pulumi.set(__self__, "username", username)
        if client_secret_secret_name is not None:
            pulumi.set(__self__, "client_secret_secret_name", client_secret_secret_name)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)

    @_builtins.property
    @pulumi.getter(name="clientIdSecretName")
    def client_id_secret_name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the Harness secret containing the client ID for the cluster.
        """
        return pulumi.get(self, "client_id_secret_name")

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

    @_builtins.property
    @pulumi.getter(name="identityProviderUrl")
    def identity_provider_url(self) -> pulumi.Input[_builtins.str]:
        """
        URL of the identity provider to use.
        """
        return pulumi.get(self, "identity_provider_url")

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

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> pulumi.Input[_builtins.str]:
        """
        URL of the Kubernetes master to connect to.
        """
        return pulumi.get(self, "master_url")

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

    @_builtins.property
    @pulumi.getter(name="passwordSecretName")
    def password_secret_name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the Harness secret containing the password for the cluster.
        """
        return pulumi.get(self, "password_secret_name")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        Username for authentication to the cluster. This can be the username itself or the ID of a harness secret.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="clientSecretSecretName")
    def client_secret_secret_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Name of the Harness secret containing the client secret for the cluster.
        """
        return pulumi.get(self, "client_secret_secret_name")

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

    @_builtins.property
    @pulumi.getter
    def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Scopes to request from the identity provider.
        """
        return pulumi.get(self, "scopes")

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


if not MYPY:
    class KubernetesAuthenticationServiceAccountArgsDict(TypedDict):
        master_url: pulumi.Input[_builtins.str]
        """
        URL of the Kubernetes master to connect to.
        """
        service_account_token_secret_name: pulumi.Input[_builtins.str]
        """
        Name of the Harness secret containing the service account token for the cluster.
        """
        ca_certificate_secret_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Name of the Harness secret containing the CA certificate for the cluster.
        """
elif False:
    KubernetesAuthenticationServiceAccountArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class KubernetesAuthenticationServiceAccountArgs:
    def __init__(__self__, *,
                 master_url: pulumi.Input[_builtins.str],
                 service_account_token_secret_name: pulumi.Input[_builtins.str],
                 ca_certificate_secret_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] master_url: URL of the Kubernetes master to connect to.
        :param pulumi.Input[_builtins.str] service_account_token_secret_name: Name of the Harness secret containing the service account token for the cluster.
        :param pulumi.Input[_builtins.str] ca_certificate_secret_name: Name of the Harness secret containing the CA certificate for the cluster.
        """
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "service_account_token_secret_name", service_account_token_secret_name)
        if ca_certificate_secret_name is not None:
            pulumi.set(__self__, "ca_certificate_secret_name", ca_certificate_secret_name)

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> pulumi.Input[_builtins.str]:
        """
        URL of the Kubernetes master to connect to.
        """
        return pulumi.get(self, "master_url")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountTokenSecretName")
    def service_account_token_secret_name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the Harness secret containing the service account token for the cluster.
        """
        return pulumi.get(self, "service_account_token_secret_name")

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

    @_builtins.property
    @pulumi.getter(name="caCertificateSecretName")
    def ca_certificate_secret_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Name of the Harness secret containing the CA certificate for the cluster.
        """
        return pulumi.get(self, "ca_certificate_secret_name")

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


if not MYPY:
    class KubernetesAuthenticationUsernamePasswordArgsDict(TypedDict):
        master_url: pulumi.Input[_builtins.str]
        """
        URL of the Kubernetes master to connect to.
        """
        password_secret_name: pulumi.Input[_builtins.str]
        """
        Name of the Harness secret containing the password for the cluster.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username for authentication to the cluster
        """
        username_secret_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Name of the Harness secret containing the username for authentication to the cluster
        """
elif False:
    KubernetesAuthenticationUsernamePasswordArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class KubernetesAuthenticationUsernamePasswordArgs:
    def __init__(__self__, *,
                 master_url: pulumi.Input[_builtins.str],
                 password_secret_name: pulumi.Input[_builtins.str],
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_secret_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] master_url: URL of the Kubernetes master to connect to.
        :param pulumi.Input[_builtins.str] password_secret_name: Name of the Harness secret containing the password for the cluster.
        :param pulumi.Input[_builtins.str] username: Username for authentication to the cluster
        :param pulumi.Input[_builtins.str] username_secret_name: Name of the Harness secret containing the username for authentication to the cluster
        """
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "password_secret_name", password_secret_name)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_secret_name is not None:
            pulumi.set(__self__, "username_secret_name", username_secret_name)

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> pulumi.Input[_builtins.str]:
        """
        URL of the Kubernetes master to connect to.
        """
        return pulumi.get(self, "master_url")

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

    @_builtins.property
    @pulumi.getter(name="passwordSecretName")
    def password_secret_name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the Harness secret containing the password for the cluster.
        """
        return pulumi.get(self, "password_secret_name")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username for authentication to the cluster
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameSecretName")
    def username_secret_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Name of the Harness secret containing the username for authentication to the cluster
        """
        return pulumi.get(self, "username_secret_name")

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


if not MYPY:
    class KubernetesUsageScopeArgsDict(TypedDict):
        application_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Id of the application to scope to. If empty then this scope applies to all applications.
        """
        environment_filter_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        """
        environment_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
elif False:
    KubernetesUsageScopeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class KubernetesUsageScopeArgs:
    def __init__(__self__, *,
                 application_id: Optional[pulumi.Input[_builtins.str]] = None,
                 environment_filter_type: Optional[pulumi.Input[_builtins.str]] = None,
                 environment_id: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] application_id: Id of the application to scope to. If empty then this scope applies to all applications.
        :param pulumi.Input[_builtins.str] environment_filter_type: Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        :param pulumi.Input[_builtins.str] environment_id: Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
        if application_id is not None:
            pulumi.set(__self__, "application_id", application_id)
        if environment_filter_type is not None:
            pulumi.set(__self__, "environment_filter_type", environment_filter_type)
        if environment_id is not None:
            pulumi.set(__self__, "environment_id", environment_id)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Id of the application to scope to. If empty then this scope applies to all applications.
        """
        return pulumi.get(self, "application_id")

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

    @_builtins.property
    @pulumi.getter(name="environmentFilterType")
    def environment_filter_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Type of environment filter applied. Cannot be used with `environment_id`. Valid options are NON*PRODUCTION*ENVIRONMENTS, PRODUCTION_ENVIRONMENTS.
        """
        return pulumi.get(self, "environment_filter_type")

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

    @_builtins.property
    @pulumi.getter(name="environmentId")
    def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Id of the id of the specific environment to scope to. Cannot be used with `environment_filter_type`.
        """
        return pulumi.get(self, "environment_id")

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


