{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.CodeDeploy.Types.TrafficRoutingConfig where
import Amazonka.CodeDeploy.Types.TimeBasedCanary
import Amazonka.CodeDeploy.Types.TimeBasedLinear
import Amazonka.CodeDeploy.Types.TrafficRoutingType
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
data TrafficRoutingConfig = TrafficRoutingConfig'
{
TrafficRoutingConfig -> Maybe TimeBasedCanary
timeBasedCanary :: Prelude.Maybe TimeBasedCanary,
TrafficRoutingConfig -> Maybe TimeBasedLinear
timeBasedLinear :: Prelude.Maybe TimeBasedLinear,
TrafficRoutingConfig -> Maybe TrafficRoutingType
type' :: Prelude.Maybe TrafficRoutingType
}
deriving (TrafficRoutingConfig -> TrafficRoutingConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TrafficRoutingConfig -> TrafficRoutingConfig -> Bool
$c/= :: TrafficRoutingConfig -> TrafficRoutingConfig -> Bool
== :: TrafficRoutingConfig -> TrafficRoutingConfig -> Bool
$c== :: TrafficRoutingConfig -> TrafficRoutingConfig -> Bool
Prelude.Eq, ReadPrec [TrafficRoutingConfig]
ReadPrec TrafficRoutingConfig
Int -> ReadS TrafficRoutingConfig
ReadS [TrafficRoutingConfig]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TrafficRoutingConfig]
$creadListPrec :: ReadPrec [TrafficRoutingConfig]
readPrec :: ReadPrec TrafficRoutingConfig
$creadPrec :: ReadPrec TrafficRoutingConfig
readList :: ReadS [TrafficRoutingConfig]
$creadList :: ReadS [TrafficRoutingConfig]
readsPrec :: Int -> ReadS TrafficRoutingConfig
$creadsPrec :: Int -> ReadS TrafficRoutingConfig
Prelude.Read, Int -> TrafficRoutingConfig -> ShowS
[TrafficRoutingConfig] -> ShowS
TrafficRoutingConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TrafficRoutingConfig] -> ShowS
$cshowList :: [TrafficRoutingConfig] -> ShowS
show :: TrafficRoutingConfig -> String
$cshow :: TrafficRoutingConfig -> String
showsPrec :: Int -> TrafficRoutingConfig -> ShowS
$cshowsPrec :: Int -> TrafficRoutingConfig -> ShowS
Prelude.Show, forall x. Rep TrafficRoutingConfig x -> TrafficRoutingConfig
forall x. TrafficRoutingConfig -> Rep TrafficRoutingConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TrafficRoutingConfig x -> TrafficRoutingConfig
$cfrom :: forall x. TrafficRoutingConfig -> Rep TrafficRoutingConfig x
Prelude.Generic)
newTrafficRoutingConfig ::
TrafficRoutingConfig
newTrafficRoutingConfig :: TrafficRoutingConfig
newTrafficRoutingConfig =
TrafficRoutingConfig'
{ $sel:timeBasedCanary:TrafficRoutingConfig' :: Maybe TimeBasedCanary
timeBasedCanary =
forall a. Maybe a
Prelude.Nothing,
$sel:timeBasedLinear:TrafficRoutingConfig' :: Maybe TimeBasedLinear
timeBasedLinear = forall a. Maybe a
Prelude.Nothing,
$sel:type':TrafficRoutingConfig' :: Maybe TrafficRoutingType
type' = forall a. Maybe a
Prelude.Nothing
}
trafficRoutingConfig_timeBasedCanary :: Lens.Lens' TrafficRoutingConfig (Prelude.Maybe TimeBasedCanary)
trafficRoutingConfig_timeBasedCanary :: Lens' TrafficRoutingConfig (Maybe TimeBasedCanary)
trafficRoutingConfig_timeBasedCanary = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficRoutingConfig' {Maybe TimeBasedCanary
timeBasedCanary :: Maybe TimeBasedCanary
$sel:timeBasedCanary:TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TimeBasedCanary
timeBasedCanary} -> Maybe TimeBasedCanary
timeBasedCanary) (\s :: TrafficRoutingConfig
s@TrafficRoutingConfig' {} Maybe TimeBasedCanary
a -> TrafficRoutingConfig
s {$sel:timeBasedCanary:TrafficRoutingConfig' :: Maybe TimeBasedCanary
timeBasedCanary = Maybe TimeBasedCanary
a} :: TrafficRoutingConfig)
trafficRoutingConfig_timeBasedLinear :: Lens.Lens' TrafficRoutingConfig (Prelude.Maybe TimeBasedLinear)
trafficRoutingConfig_timeBasedLinear :: Lens' TrafficRoutingConfig (Maybe TimeBasedLinear)
trafficRoutingConfig_timeBasedLinear = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficRoutingConfig' {Maybe TimeBasedLinear
timeBasedLinear :: Maybe TimeBasedLinear
$sel:timeBasedLinear:TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TimeBasedLinear
timeBasedLinear} -> Maybe TimeBasedLinear
timeBasedLinear) (\s :: TrafficRoutingConfig
s@TrafficRoutingConfig' {} Maybe TimeBasedLinear
a -> TrafficRoutingConfig
s {$sel:timeBasedLinear:TrafficRoutingConfig' :: Maybe TimeBasedLinear
timeBasedLinear = Maybe TimeBasedLinear
a} :: TrafficRoutingConfig)
trafficRoutingConfig_type :: Lens.Lens' TrafficRoutingConfig (Prelude.Maybe TrafficRoutingType)
trafficRoutingConfig_type :: Lens' TrafficRoutingConfig (Maybe TrafficRoutingType)
trafficRoutingConfig_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficRoutingConfig' {Maybe TrafficRoutingType
type' :: Maybe TrafficRoutingType
$sel:type':TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TrafficRoutingType
type'} -> Maybe TrafficRoutingType
type') (\s :: TrafficRoutingConfig
s@TrafficRoutingConfig' {} Maybe TrafficRoutingType
a -> TrafficRoutingConfig
s {$sel:type':TrafficRoutingConfig' :: Maybe TrafficRoutingType
type' = Maybe TrafficRoutingType
a} :: TrafficRoutingConfig)
instance Data.FromJSON TrafficRoutingConfig where
parseJSON :: Value -> Parser TrafficRoutingConfig
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"TrafficRoutingConfig"
( \Object
x ->
Maybe TimeBasedCanary
-> Maybe TimeBasedLinear
-> Maybe TrafficRoutingType
-> TrafficRoutingConfig
TrafficRoutingConfig'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"timeBasedCanary")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"timeBasedLinear")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"type")
)
instance Prelude.Hashable TrafficRoutingConfig where
hashWithSalt :: Int -> TrafficRoutingConfig -> Int
hashWithSalt Int
_salt TrafficRoutingConfig' {Maybe TimeBasedCanary
Maybe TimeBasedLinear
Maybe TrafficRoutingType
type' :: Maybe TrafficRoutingType
timeBasedLinear :: Maybe TimeBasedLinear
timeBasedCanary :: Maybe TimeBasedCanary
$sel:type':TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TrafficRoutingType
$sel:timeBasedLinear:TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TimeBasedLinear
$sel:timeBasedCanary:TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TimeBasedCanary
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimeBasedCanary
timeBasedCanary
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimeBasedLinear
timeBasedLinear
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TrafficRoutingType
type'
instance Prelude.NFData TrafficRoutingConfig where
rnf :: TrafficRoutingConfig -> ()
rnf TrafficRoutingConfig' {Maybe TimeBasedCanary
Maybe TimeBasedLinear
Maybe TrafficRoutingType
type' :: Maybe TrafficRoutingType
timeBasedLinear :: Maybe TimeBasedLinear
timeBasedCanary :: Maybe TimeBasedCanary
$sel:type':TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TrafficRoutingType
$sel:timeBasedLinear:TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TimeBasedLinear
$sel:timeBasedCanary:TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TimeBasedCanary
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe TimeBasedCanary
timeBasedCanary
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimeBasedLinear
timeBasedLinear
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TrafficRoutingType
type'
instance Data.ToJSON TrafficRoutingConfig where
toJSON :: TrafficRoutingConfig -> Value
toJSON TrafficRoutingConfig' {Maybe TimeBasedCanary
Maybe TimeBasedLinear
Maybe TrafficRoutingType
type' :: Maybe TrafficRoutingType
timeBasedLinear :: Maybe TimeBasedLinear
timeBasedCanary :: Maybe TimeBasedCanary
$sel:type':TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TrafficRoutingType
$sel:timeBasedLinear:TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TimeBasedLinear
$sel:timeBasedCanary:TrafficRoutingConfig' :: TrafficRoutingConfig -> Maybe TimeBasedCanary
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"timeBasedCanary" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimeBasedCanary
timeBasedCanary,
(Key
"timeBasedLinear" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimeBasedLinear
timeBasedLinear,
(Key
"type" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TrafficRoutingType
type'
]
)