amazonka-codedeploy-2.0: gen/Amazonka/CodeDeploy/Types/TargetGroupPairInfo.hs
{-# 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 #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.CodeDeploy.Types.TargetGroupPairInfo
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CodeDeploy.Types.TargetGroupPairInfo where
import Amazonka.CodeDeploy.Types.TargetGroupInfo
import Amazonka.CodeDeploy.Types.TrafficRoute
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
-- | Information about two target groups and how traffic is routed during an
-- Amazon ECS deployment. An optional test traffic route can be specified.
--
-- /See:/ 'newTargetGroupPairInfo' smart constructor.
data TargetGroupPairInfo = TargetGroupPairInfo'
{ -- | The path used by a load balancer to route production traffic when an
-- Amazon ECS deployment is complete.
prodTrafficRoute :: Prelude.Maybe TrafficRoute,
-- | One pair of target groups. One is associated with the original task set.
-- The second is associated with the task set that serves traffic after the
-- deployment is complete.
targetGroups :: Prelude.Maybe [TargetGroupInfo],
-- | An optional path used by a load balancer to route test traffic after an
-- Amazon ECS deployment. Validation can occur while test traffic is served
-- during a deployment.
testTrafficRoute :: Prelude.Maybe TrafficRoute
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'TargetGroupPairInfo' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'prodTrafficRoute', 'targetGroupPairInfo_prodTrafficRoute' - The path used by a load balancer to route production traffic when an
-- Amazon ECS deployment is complete.
--
-- 'targetGroups', 'targetGroupPairInfo_targetGroups' - One pair of target groups. One is associated with the original task set.
-- The second is associated with the task set that serves traffic after the
-- deployment is complete.
--
-- 'testTrafficRoute', 'targetGroupPairInfo_testTrafficRoute' - An optional path used by a load balancer to route test traffic after an
-- Amazon ECS deployment. Validation can occur while test traffic is served
-- during a deployment.
newTargetGroupPairInfo ::
TargetGroupPairInfo
newTargetGroupPairInfo =
TargetGroupPairInfo'
{ prodTrafficRoute =
Prelude.Nothing,
targetGroups = Prelude.Nothing,
testTrafficRoute = Prelude.Nothing
}
-- | The path used by a load balancer to route production traffic when an
-- Amazon ECS deployment is complete.
targetGroupPairInfo_prodTrafficRoute :: Lens.Lens' TargetGroupPairInfo (Prelude.Maybe TrafficRoute)
targetGroupPairInfo_prodTrafficRoute = Lens.lens (\TargetGroupPairInfo' {prodTrafficRoute} -> prodTrafficRoute) (\s@TargetGroupPairInfo' {} a -> s {prodTrafficRoute = a} :: TargetGroupPairInfo)
-- | One pair of target groups. One is associated with the original task set.
-- The second is associated with the task set that serves traffic after the
-- deployment is complete.
targetGroupPairInfo_targetGroups :: Lens.Lens' TargetGroupPairInfo (Prelude.Maybe [TargetGroupInfo])
targetGroupPairInfo_targetGroups = Lens.lens (\TargetGroupPairInfo' {targetGroups} -> targetGroups) (\s@TargetGroupPairInfo' {} a -> s {targetGroups = a} :: TargetGroupPairInfo) Prelude.. Lens.mapping Lens.coerced
-- | An optional path used by a load balancer to route test traffic after an
-- Amazon ECS deployment. Validation can occur while test traffic is served
-- during a deployment.
targetGroupPairInfo_testTrafficRoute :: Lens.Lens' TargetGroupPairInfo (Prelude.Maybe TrafficRoute)
targetGroupPairInfo_testTrafficRoute = Lens.lens (\TargetGroupPairInfo' {testTrafficRoute} -> testTrafficRoute) (\s@TargetGroupPairInfo' {} a -> s {testTrafficRoute = a} :: TargetGroupPairInfo)
instance Data.FromJSON TargetGroupPairInfo where
parseJSON =
Data.withObject
"TargetGroupPairInfo"
( \x ->
TargetGroupPairInfo'
Prelude.<$> (x Data..:? "prodTrafficRoute")
Prelude.<*> (x Data..:? "targetGroups" Data..!= Prelude.mempty)
Prelude.<*> (x Data..:? "testTrafficRoute")
)
instance Prelude.Hashable TargetGroupPairInfo where
hashWithSalt _salt TargetGroupPairInfo' {..} =
_salt
`Prelude.hashWithSalt` prodTrafficRoute
`Prelude.hashWithSalt` targetGroups
`Prelude.hashWithSalt` testTrafficRoute
instance Prelude.NFData TargetGroupPairInfo where
rnf TargetGroupPairInfo' {..} =
Prelude.rnf prodTrafficRoute
`Prelude.seq` Prelude.rnf targetGroups
`Prelude.seq` Prelude.rnf testTrafficRoute
instance Data.ToJSON TargetGroupPairInfo where
toJSON TargetGroupPairInfo' {..} =
Data.object
( Prelude.catMaybes
[ ("prodTrafficRoute" Data..=)
Prelude.<$> prodTrafficRoute,
("targetGroups" Data..=) Prelude.<$> targetGroups,
("testTrafficRoute" Data..=)
Prelude.<$> testTrafficRoute
]
)