# 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 copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from ... import _utilities
from ._enums import *

__all__ = [
    'ManagedNetworkPeeringPolicyPropertiesArgs',
    'ResourceIdArgs',
    'ScopeArgs',
]

@pulumi.input_type
class ManagedNetworkPeeringPolicyPropertiesArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[Union[str, 'Type']],
                 hub: Optional[pulumi.Input['ResourceIdArgs']] = None,
                 mesh: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]] = None,
                 spokes: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]] = None):
        """
        Properties of a Managed Network Peering Policy
        :param pulumi.Input[Union[str, 'Type']] type: Gets or sets the connectivity type of a network structure policy
        :param pulumi.Input['ResourceIdArgs'] hub: Gets or sets the hub virtual network ID
        :param pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]] mesh: Gets or sets the mesh group IDs
        :param pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]] spokes: Gets or sets the spokes group IDs
        """
        pulumi.set(__self__, "type", type)
        if hub is not None:
            pulumi.set(__self__, "hub", hub)
        if mesh is not None:
            pulumi.set(__self__, "mesh", mesh)
        if spokes is not None:
            pulumi.set(__self__, "spokes", spokes)

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[Union[str, 'Type']]:
        """
        Gets or sets the connectivity type of a network structure policy
        """
        return pulumi.get(self, "type")

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

    @property
    @pulumi.getter
    def hub(self) -> Optional[pulumi.Input['ResourceIdArgs']]:
        """
        Gets or sets the hub virtual network ID
        """
        return pulumi.get(self, "hub")

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

    @property
    @pulumi.getter
    def mesh(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]:
        """
        Gets or sets the mesh group IDs
        """
        return pulumi.get(self, "mesh")

    @mesh.setter
    def mesh(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]):
        pulumi.set(self, "mesh", value)

    @property
    @pulumi.getter
    def spokes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]:
        """
        Gets or sets the spokes group IDs
        """
        return pulumi.get(self, "spokes")

    @spokes.setter
    def spokes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]):
        pulumi.set(self, "spokes", value)


@pulumi.input_type
class ResourceIdArgs:
    def __init__(__self__, *,
                 id: Optional[pulumi.Input[str]] = None):
        """
        Generic pointer to a resource
        :param pulumi.Input[str] id: Resource Id
        """
        if id is not None:
            pulumi.set(__self__, "id", id)

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

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


@pulumi.input_type
class ScopeArgs:
    def __init__(__self__, *,
                 management_groups: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]] = None,
                 subnets: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]] = None,
                 subscriptions: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]] = None,
                 virtual_networks: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]] = None):
        """
        Scope of a Managed Network
        :param pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]] management_groups: The collection of management groups covered by the Managed Network
        :param pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]] subnets: The collection of  subnets covered by the Managed Network
        :param pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]] subscriptions: The collection of subscriptions covered by the Managed Network
        :param pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]] virtual_networks: The collection of virtual nets covered by the Managed Network
        """
        if management_groups is not None:
            pulumi.set(__self__, "management_groups", management_groups)
        if subnets is not None:
            pulumi.set(__self__, "subnets", subnets)
        if subscriptions is not None:
            pulumi.set(__self__, "subscriptions", subscriptions)
        if virtual_networks is not None:
            pulumi.set(__self__, "virtual_networks", virtual_networks)

    @property
    @pulumi.getter(name="managementGroups")
    def management_groups(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]:
        """
        The collection of management groups covered by the Managed Network
        """
        return pulumi.get(self, "management_groups")

    @management_groups.setter
    def management_groups(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]):
        pulumi.set(self, "management_groups", value)

    @property
    @pulumi.getter
    def subnets(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]:
        """
        The collection of  subnets covered by the Managed Network
        """
        return pulumi.get(self, "subnets")

    @subnets.setter
    def subnets(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]):
        pulumi.set(self, "subnets", value)

    @property
    @pulumi.getter
    def subscriptions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]:
        """
        The collection of subscriptions covered by the Managed Network
        """
        return pulumi.get(self, "subscriptions")

    @subscriptions.setter
    def subscriptions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]):
        pulumi.set(self, "subscriptions", value)

    @property
    @pulumi.getter(name="virtualNetworks")
    def virtual_networks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]:
        """
        The collection of virtual nets covered by the Managed Network
        """
        return pulumi.get(self, "virtual_networks")

    @virtual_networks.setter
    def virtual_networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResourceIdArgs']]]]):
        pulumi.set(self, "virtual_networks", value)


