module Stratosphere.AppMesh.VirtualService.VirtualServiceProviderProperty (
        module Exports, VirtualServiceProviderProperty(..),
        mkVirtualServiceProviderProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.AppMesh.VirtualService.VirtualNodeServiceProviderProperty as Exports
import {-# SOURCE #-} Stratosphere.AppMesh.VirtualService.VirtualRouterServiceProviderProperty as Exports
import Stratosphere.ResourceProperties
data VirtualServiceProviderProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualservice-virtualserviceprovider.html>
    VirtualServiceProviderProperty {VirtualServiceProviderProperty -> ()
haddock_workaround_ :: (),
                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualservice-virtualserviceprovider.html#cfn-appmesh-virtualservice-virtualserviceprovider-virtualnode>
                                    VirtualServiceProviderProperty
-> Maybe VirtualNodeServiceProviderProperty
virtualNode :: (Prelude.Maybe VirtualNodeServiceProviderProperty),
                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualservice-virtualserviceprovider.html#cfn-appmesh-virtualservice-virtualserviceprovider-virtualrouter>
                                    VirtualServiceProviderProperty
-> Maybe VirtualRouterServiceProviderProperty
virtualRouter :: (Prelude.Maybe VirtualRouterServiceProviderProperty)}
  deriving stock (VirtualServiceProviderProperty
-> VirtualServiceProviderProperty -> Bool
(VirtualServiceProviderProperty
 -> VirtualServiceProviderProperty -> Bool)
-> (VirtualServiceProviderProperty
    -> VirtualServiceProviderProperty -> Bool)
-> Eq VirtualServiceProviderProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VirtualServiceProviderProperty
-> VirtualServiceProviderProperty -> Bool
== :: VirtualServiceProviderProperty
-> VirtualServiceProviderProperty -> Bool
$c/= :: VirtualServiceProviderProperty
-> VirtualServiceProviderProperty -> Bool
/= :: VirtualServiceProviderProperty
-> VirtualServiceProviderProperty -> Bool
Prelude.Eq, Int -> VirtualServiceProviderProperty -> ShowS
[VirtualServiceProviderProperty] -> ShowS
VirtualServiceProviderProperty -> String
(Int -> VirtualServiceProviderProperty -> ShowS)
-> (VirtualServiceProviderProperty -> String)
-> ([VirtualServiceProviderProperty] -> ShowS)
-> Show VirtualServiceProviderProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VirtualServiceProviderProperty -> ShowS
showsPrec :: Int -> VirtualServiceProviderProperty -> ShowS
$cshow :: VirtualServiceProviderProperty -> String
show :: VirtualServiceProviderProperty -> String
$cshowList :: [VirtualServiceProviderProperty] -> ShowS
showList :: [VirtualServiceProviderProperty] -> ShowS
Prelude.Show)
mkVirtualServiceProviderProperty :: VirtualServiceProviderProperty
mkVirtualServiceProviderProperty :: VirtualServiceProviderProperty
mkVirtualServiceProviderProperty
  = VirtualServiceProviderProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), virtualNode :: Maybe VirtualNodeServiceProviderProperty
virtualNode = Maybe VirtualNodeServiceProviderProperty
forall a. Maybe a
Prelude.Nothing,
       virtualRouter :: Maybe VirtualRouterServiceProviderProperty
virtualRouter = Maybe VirtualRouterServiceProviderProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties VirtualServiceProviderProperty where
  toResourceProperties :: VirtualServiceProviderProperty -> ResourceProperties
toResourceProperties VirtualServiceProviderProperty {Maybe VirtualNodeServiceProviderProperty
Maybe VirtualRouterServiceProviderProperty
()
haddock_workaround_ :: VirtualServiceProviderProperty -> ()
virtualNode :: VirtualServiceProviderProperty
-> Maybe VirtualNodeServiceProviderProperty
virtualRouter :: VirtualServiceProviderProperty
-> Maybe VirtualRouterServiceProviderProperty
haddock_workaround_ :: ()
virtualNode :: Maybe VirtualNodeServiceProviderProperty
virtualRouter :: Maybe VirtualRouterServiceProviderProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::AppMesh::VirtualService.VirtualServiceProvider",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Item Object] -> Object
forall l. IsList l => [Item l] -> l
Prelude.fromList
                        ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
                           [Key -> VirtualNodeServiceProviderProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"VirtualNode" (VirtualNodeServiceProviderProperty -> (Key, Value))
-> Maybe VirtualNodeServiceProviderProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VirtualNodeServiceProviderProperty
virtualNode,
                            Key -> VirtualRouterServiceProviderProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"VirtualRouter" (VirtualRouterServiceProviderProperty -> (Key, Value))
-> Maybe VirtualRouterServiceProviderProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VirtualRouterServiceProviderProperty
virtualRouter])}
instance JSON.ToJSON VirtualServiceProviderProperty where
  toJSON :: VirtualServiceProviderProperty -> Value
toJSON VirtualServiceProviderProperty {Maybe VirtualNodeServiceProviderProperty
Maybe VirtualRouterServiceProviderProperty
()
haddock_workaround_ :: VirtualServiceProviderProperty -> ()
virtualNode :: VirtualServiceProviderProperty
-> Maybe VirtualNodeServiceProviderProperty
virtualRouter :: VirtualServiceProviderProperty
-> Maybe VirtualRouterServiceProviderProperty
haddock_workaround_ :: ()
virtualNode :: Maybe VirtualNodeServiceProviderProperty
virtualRouter :: Maybe VirtualRouterServiceProviderProperty
..}
    = [(Key, Value)] -> Value
JSON.object
        ([Item [(Key, Value)]] -> [(Key, Value)]
forall l. IsList l => [Item l] -> l
Prelude.fromList
           ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
              [Key -> VirtualNodeServiceProviderProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"VirtualNode" (VirtualNodeServiceProviderProperty -> (Key, Value))
-> Maybe VirtualNodeServiceProviderProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VirtualNodeServiceProviderProperty
virtualNode,
               Key -> VirtualRouterServiceProviderProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"VirtualRouter" (VirtualRouterServiceProviderProperty -> (Key, Value))
-> Maybe VirtualRouterServiceProviderProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VirtualRouterServiceProviderProperty
virtualRouter]))
instance Property "VirtualNode" VirtualServiceProviderProperty where
  type PropertyType "VirtualNode" VirtualServiceProviderProperty = VirtualNodeServiceProviderProperty
  set :: PropertyType "VirtualNode" VirtualServiceProviderProperty
-> VirtualServiceProviderProperty -> VirtualServiceProviderProperty
set PropertyType "VirtualNode" VirtualServiceProviderProperty
newValue VirtualServiceProviderProperty {Maybe VirtualNodeServiceProviderProperty
Maybe VirtualRouterServiceProviderProperty
()
haddock_workaround_ :: VirtualServiceProviderProperty -> ()
virtualNode :: VirtualServiceProviderProperty
-> Maybe VirtualNodeServiceProviderProperty
virtualRouter :: VirtualServiceProviderProperty
-> Maybe VirtualRouterServiceProviderProperty
haddock_workaround_ :: ()
virtualNode :: Maybe VirtualNodeServiceProviderProperty
virtualRouter :: Maybe VirtualRouterServiceProviderProperty
..}
    = VirtualServiceProviderProperty
        {virtualNode :: Maybe VirtualNodeServiceProviderProperty
virtualNode = VirtualNodeServiceProviderProperty
-> Maybe VirtualNodeServiceProviderProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "VirtualNode" VirtualServiceProviderProperty
VirtualNodeServiceProviderProperty
newValue, Maybe VirtualRouterServiceProviderProperty
()
haddock_workaround_ :: ()
virtualRouter :: Maybe VirtualRouterServiceProviderProperty
haddock_workaround_ :: ()
virtualRouter :: Maybe VirtualRouterServiceProviderProperty
..}
instance Property "VirtualRouter" VirtualServiceProviderProperty where
  type PropertyType "VirtualRouter" VirtualServiceProviderProperty = VirtualRouterServiceProviderProperty
  set :: PropertyType "VirtualRouter" VirtualServiceProviderProperty
-> VirtualServiceProviderProperty -> VirtualServiceProviderProperty
set PropertyType "VirtualRouter" VirtualServiceProviderProperty
newValue VirtualServiceProviderProperty {Maybe VirtualNodeServiceProviderProperty
Maybe VirtualRouterServiceProviderProperty
()
haddock_workaround_ :: VirtualServiceProviderProperty -> ()
virtualNode :: VirtualServiceProviderProperty
-> Maybe VirtualNodeServiceProviderProperty
virtualRouter :: VirtualServiceProviderProperty
-> Maybe VirtualRouterServiceProviderProperty
haddock_workaround_ :: ()
virtualNode :: Maybe VirtualNodeServiceProviderProperty
virtualRouter :: Maybe VirtualRouterServiceProviderProperty
..}
    = VirtualServiceProviderProperty
        {virtualRouter :: Maybe VirtualRouterServiceProviderProperty
virtualRouter = VirtualRouterServiceProviderProperty
-> Maybe VirtualRouterServiceProviderProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "VirtualRouter" VirtualServiceProviderProperty
VirtualRouterServiceProviderProperty
newValue, Maybe VirtualNodeServiceProviderProperty
()
haddock_workaround_ :: ()
virtualNode :: Maybe VirtualNodeServiceProviderProperty
haddock_workaround_ :: ()
virtualNode :: Maybe VirtualNodeServiceProviderProperty
..}