<reponame>pulumi/pulumi-aws-native
# coding=utf-8
# *** WARNING: this file was generated by the Pulumi SDK Generator. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

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

__all__ = [
    'GetLaunchResult',
    'AwaitableGetLaunchResult',
    'get_launch',
    'get_launch_output',
]

@pulumi.output_type
class GetLaunchResult:
    def __init__(__self__, arn=None, description=None, execution_status=None, groups=None, metric_monitors=None, randomization_salt=None, scheduled_splits_config=None, tags=None):
        if arn and not isinstance(arn, str):
            raise TypeError("Expected argument 'arn' to be a str")
        pulumi.set(__self__, "arn", arn)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if execution_status and not isinstance(execution_status, dict):
            raise TypeError("Expected argument 'execution_status' to be a dict")
        pulumi.set(__self__, "execution_status", execution_status)
        if groups and not isinstance(groups, list):
            raise TypeError("Expected argument 'groups' to be a list")
        pulumi.set(__self__, "groups", groups)
        if metric_monitors and not isinstance(metric_monitors, list):
            raise TypeError("Expected argument 'metric_monitors' to be a list")
        pulumi.set(__self__, "metric_monitors", metric_monitors)
        if randomization_salt and not isinstance(randomization_salt, str):
            raise TypeError("Expected argument 'randomization_salt' to be a str")
        pulumi.set(__self__, "randomization_salt", randomization_salt)
        if scheduled_splits_config and not isinstance(scheduled_splits_config, list):
            raise TypeError("Expected argument 'scheduled_splits_config' to be a list")
        pulumi.set(__self__, "scheduled_splits_config", scheduled_splits_config)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)

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

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

    @property
    @pulumi.getter(name="executionStatus")
    def execution_status(self) -> Optional['outputs.LaunchExecutionStatusObject']:
        """
        Start or Stop Launch Launch. Default is not started.
        """
        return pulumi.get(self, "execution_status")

    @property
    @pulumi.getter
    def groups(self) -> Optional[Sequence['outputs.LaunchGroupObject']]:
        return pulumi.get(self, "groups")

    @property
    @pulumi.getter(name="metricMonitors")
    def metric_monitors(self) -> Optional[Sequence['outputs.LaunchMetricDefinitionObject']]:
        return pulumi.get(self, "metric_monitors")

    @property
    @pulumi.getter(name="randomizationSalt")
    def randomization_salt(self) -> Optional[str]:
        return pulumi.get(self, "randomization_salt")

    @property
    @pulumi.getter(name="scheduledSplitsConfig")
    def scheduled_splits_config(self) -> Optional[Sequence['outputs.LaunchStepConfig']]:
        return pulumi.get(self, "scheduled_splits_config")

    @property
    @pulumi.getter
    def tags(self) -> Optional[Sequence['outputs.LaunchTag']]:
        """
        An array of key-value pairs to apply to this resource.
        """
        return pulumi.get(self, "tags")


class AwaitableGetLaunchResult(GetLaunchResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetLaunchResult(
            arn=self.arn,
            description=self.description,
            execution_status=self.execution_status,
            groups=self.groups,
            metric_monitors=self.metric_monitors,
            randomization_salt=self.randomization_salt,
            scheduled_splits_config=self.scheduled_splits_config,
            tags=self.tags)


def get_launch(arn: Optional[str] = None,
               opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetLaunchResult:
    """
    Resource Type definition for AWS::Evidently::Launch.
    """
    __args__ = dict()
    __args__['arn'] = arn
    if opts is None:
        opts = pulumi.InvokeOptions()
    if opts.version is None:
        opts.version = _utilities.get_version()
    __ret__ = pulumi.runtime.invoke('aws-native:evidently:getLaunch', __args__, opts=opts, typ=GetLaunchResult).value

    return AwaitableGetLaunchResult(
        arn=__ret__.arn,
        description=__ret__.description,
        execution_status=__ret__.execution_status,
        groups=__ret__.groups,
        metric_monitors=__ret__.metric_monitors,
        randomization_salt=__ret__.randomization_salt,
        scheduled_splits_config=__ret__.scheduled_splits_config,
        tags=__ret__.tags)


@_utilities.lift_output_func(get_launch)
def get_launch_output(arn: Optional[pulumi.Input[str]] = None,
                      opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetLaunchResult]:
    """
    Resource Type definition for AWS::Evidently::Launch.
    """
    ...
