{-# 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.NetworkManager.Types.CoreNetworkChangeValues
-- 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.NetworkManager.Types.CoreNetworkChangeValues where

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

-- | Describes a core network change.
--
-- /See:/ 'newCoreNetworkChangeValues' smart constructor.
data CoreNetworkChangeValues = CoreNetworkChangeValues'
  { -- | The ASN of a core network.
    CoreNetworkChangeValues -> Maybe Integer
asn :: Prelude.Maybe Prelude.Integer,
    -- | The IP addresses used for a core network.
    CoreNetworkChangeValues -> Maybe Text
cidr :: Prelude.Maybe Prelude.Text,
    -- | The ID of the destination.
    CoreNetworkChangeValues -> Maybe Text
destinationIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The Regions where edges are located in a core network.
    CoreNetworkChangeValues -> Maybe [Text]
edgeLocations :: Prelude.Maybe [Prelude.Text],
    -- | The inside IP addresses used for core network change values.
    CoreNetworkChangeValues -> Maybe [Text]
insideCidrBlocks :: Prelude.Maybe [Prelude.Text],
    -- | The names of the segments in a core network.
    CoreNetworkChangeValues -> Maybe Text
segmentName :: Prelude.Maybe Prelude.Text,
    -- | The shared segments for a core network change value.
    CoreNetworkChangeValues -> Maybe [Text]
sharedSegments :: Prelude.Maybe [Prelude.Text]
  }
  deriving (CoreNetworkChangeValues -> CoreNetworkChangeValues -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CoreNetworkChangeValues -> CoreNetworkChangeValues -> Bool
$c/= :: CoreNetworkChangeValues -> CoreNetworkChangeValues -> Bool
== :: CoreNetworkChangeValues -> CoreNetworkChangeValues -> Bool
$c== :: CoreNetworkChangeValues -> CoreNetworkChangeValues -> Bool
Prelude.Eq, ReadPrec [CoreNetworkChangeValues]
ReadPrec CoreNetworkChangeValues
Int -> ReadS CoreNetworkChangeValues
ReadS [CoreNetworkChangeValues]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CoreNetworkChangeValues]
$creadListPrec :: ReadPrec [CoreNetworkChangeValues]
readPrec :: ReadPrec CoreNetworkChangeValues
$creadPrec :: ReadPrec CoreNetworkChangeValues
readList :: ReadS [CoreNetworkChangeValues]
$creadList :: ReadS [CoreNetworkChangeValues]
readsPrec :: Int -> ReadS CoreNetworkChangeValues
$creadsPrec :: Int -> ReadS CoreNetworkChangeValues
Prelude.Read, Int -> CoreNetworkChangeValues -> ShowS
[CoreNetworkChangeValues] -> ShowS
CoreNetworkChangeValues -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CoreNetworkChangeValues] -> ShowS
$cshowList :: [CoreNetworkChangeValues] -> ShowS
show :: CoreNetworkChangeValues -> String
$cshow :: CoreNetworkChangeValues -> String
showsPrec :: Int -> CoreNetworkChangeValues -> ShowS
$cshowsPrec :: Int -> CoreNetworkChangeValues -> ShowS
Prelude.Show, forall x. Rep CoreNetworkChangeValues x -> CoreNetworkChangeValues
forall x. CoreNetworkChangeValues -> Rep CoreNetworkChangeValues x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CoreNetworkChangeValues x -> CoreNetworkChangeValues
$cfrom :: forall x. CoreNetworkChangeValues -> Rep CoreNetworkChangeValues x
Prelude.Generic)

-- |
-- Create a value of 'CoreNetworkChangeValues' 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:
--
-- 'asn', 'coreNetworkChangeValues_asn' - The ASN of a core network.
--
-- 'cidr', 'coreNetworkChangeValues_cidr' - The IP addresses used for a core network.
--
-- 'destinationIdentifier', 'coreNetworkChangeValues_destinationIdentifier' - The ID of the destination.
--
-- 'edgeLocations', 'coreNetworkChangeValues_edgeLocations' - The Regions where edges are located in a core network.
--
-- 'insideCidrBlocks', 'coreNetworkChangeValues_insideCidrBlocks' - The inside IP addresses used for core network change values.
--
-- 'segmentName', 'coreNetworkChangeValues_segmentName' - The names of the segments in a core network.
--
-- 'sharedSegments', 'coreNetworkChangeValues_sharedSegments' - The shared segments for a core network change value.
newCoreNetworkChangeValues ::
  CoreNetworkChangeValues
newCoreNetworkChangeValues :: CoreNetworkChangeValues
newCoreNetworkChangeValues =
  CoreNetworkChangeValues'
    { $sel:asn:CoreNetworkChangeValues' :: Maybe Integer
asn = forall a. Maybe a
Prelude.Nothing,
      $sel:cidr:CoreNetworkChangeValues' :: Maybe Text
cidr = forall a. Maybe a
Prelude.Nothing,
      $sel:destinationIdentifier:CoreNetworkChangeValues' :: Maybe Text
destinationIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:edgeLocations:CoreNetworkChangeValues' :: Maybe [Text]
edgeLocations = forall a. Maybe a
Prelude.Nothing,
      $sel:insideCidrBlocks:CoreNetworkChangeValues' :: Maybe [Text]
insideCidrBlocks = forall a. Maybe a
Prelude.Nothing,
      $sel:segmentName:CoreNetworkChangeValues' :: Maybe Text
segmentName = forall a. Maybe a
Prelude.Nothing,
      $sel:sharedSegments:CoreNetworkChangeValues' :: Maybe [Text]
sharedSegments = forall a. Maybe a
Prelude.Nothing
    }

-- | The ASN of a core network.
coreNetworkChangeValues_asn :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe Prelude.Integer)
coreNetworkChangeValues_asn :: Lens' CoreNetworkChangeValues (Maybe Integer)
coreNetworkChangeValues_asn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoreNetworkChangeValues' {Maybe Integer
asn :: Maybe Integer
$sel:asn:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Integer
asn} -> Maybe Integer
asn) (\s :: CoreNetworkChangeValues
s@CoreNetworkChangeValues' {} Maybe Integer
a -> CoreNetworkChangeValues
s {$sel:asn:CoreNetworkChangeValues' :: Maybe Integer
asn = Maybe Integer
a} :: CoreNetworkChangeValues)

-- | The IP addresses used for a core network.
coreNetworkChangeValues_cidr :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe Prelude.Text)
coreNetworkChangeValues_cidr :: Lens' CoreNetworkChangeValues (Maybe Text)
coreNetworkChangeValues_cidr = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoreNetworkChangeValues' {Maybe Text
cidr :: Maybe Text
$sel:cidr:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
cidr} -> Maybe Text
cidr) (\s :: CoreNetworkChangeValues
s@CoreNetworkChangeValues' {} Maybe Text
a -> CoreNetworkChangeValues
s {$sel:cidr:CoreNetworkChangeValues' :: Maybe Text
cidr = Maybe Text
a} :: CoreNetworkChangeValues)

-- | The ID of the destination.
coreNetworkChangeValues_destinationIdentifier :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe Prelude.Text)
coreNetworkChangeValues_destinationIdentifier :: Lens' CoreNetworkChangeValues (Maybe Text)
coreNetworkChangeValues_destinationIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoreNetworkChangeValues' {Maybe Text
destinationIdentifier :: Maybe Text
$sel:destinationIdentifier:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
destinationIdentifier} -> Maybe Text
destinationIdentifier) (\s :: CoreNetworkChangeValues
s@CoreNetworkChangeValues' {} Maybe Text
a -> CoreNetworkChangeValues
s {$sel:destinationIdentifier:CoreNetworkChangeValues' :: Maybe Text
destinationIdentifier = Maybe Text
a} :: CoreNetworkChangeValues)

-- | The Regions where edges are located in a core network.
coreNetworkChangeValues_edgeLocations :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe [Prelude.Text])
coreNetworkChangeValues_edgeLocations :: Lens' CoreNetworkChangeValues (Maybe [Text])
coreNetworkChangeValues_edgeLocations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoreNetworkChangeValues' {Maybe [Text]
edgeLocations :: Maybe [Text]
$sel:edgeLocations:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
edgeLocations} -> Maybe [Text]
edgeLocations) (\s :: CoreNetworkChangeValues
s@CoreNetworkChangeValues' {} Maybe [Text]
a -> CoreNetworkChangeValues
s {$sel:edgeLocations:CoreNetworkChangeValues' :: Maybe [Text]
edgeLocations = Maybe [Text]
a} :: CoreNetworkChangeValues) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The inside IP addresses used for core network change values.
coreNetworkChangeValues_insideCidrBlocks :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe [Prelude.Text])
coreNetworkChangeValues_insideCidrBlocks :: Lens' CoreNetworkChangeValues (Maybe [Text])
coreNetworkChangeValues_insideCidrBlocks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoreNetworkChangeValues' {Maybe [Text]
insideCidrBlocks :: Maybe [Text]
$sel:insideCidrBlocks:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
insideCidrBlocks} -> Maybe [Text]
insideCidrBlocks) (\s :: CoreNetworkChangeValues
s@CoreNetworkChangeValues' {} Maybe [Text]
a -> CoreNetworkChangeValues
s {$sel:insideCidrBlocks:CoreNetworkChangeValues' :: Maybe [Text]
insideCidrBlocks = Maybe [Text]
a} :: CoreNetworkChangeValues) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The names of the segments in a core network.
coreNetworkChangeValues_segmentName :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe Prelude.Text)
coreNetworkChangeValues_segmentName :: Lens' CoreNetworkChangeValues (Maybe Text)
coreNetworkChangeValues_segmentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoreNetworkChangeValues' {Maybe Text
segmentName :: Maybe Text
$sel:segmentName:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
segmentName} -> Maybe Text
segmentName) (\s :: CoreNetworkChangeValues
s@CoreNetworkChangeValues' {} Maybe Text
a -> CoreNetworkChangeValues
s {$sel:segmentName:CoreNetworkChangeValues' :: Maybe Text
segmentName = Maybe Text
a} :: CoreNetworkChangeValues)

-- | The shared segments for a core network change value.
coreNetworkChangeValues_sharedSegments :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe [Prelude.Text])
coreNetworkChangeValues_sharedSegments :: Lens' CoreNetworkChangeValues (Maybe [Text])
coreNetworkChangeValues_sharedSegments = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoreNetworkChangeValues' {Maybe [Text]
sharedSegments :: Maybe [Text]
$sel:sharedSegments:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
sharedSegments} -> Maybe [Text]
sharedSegments) (\s :: CoreNetworkChangeValues
s@CoreNetworkChangeValues' {} Maybe [Text]
a -> CoreNetworkChangeValues
s {$sel:sharedSegments:CoreNetworkChangeValues' :: Maybe [Text]
sharedSegments = Maybe [Text]
a} :: CoreNetworkChangeValues) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON CoreNetworkChangeValues where
  parseJSON :: Value -> Parser CoreNetworkChangeValues
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"CoreNetworkChangeValues"
      ( \Object
x ->
          Maybe Integer
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe [Text]
-> Maybe Text
-> Maybe [Text]
-> CoreNetworkChangeValues
CoreNetworkChangeValues'
            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
"Asn")
            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
"Cidr")
            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
"DestinationIdentifier")
            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
"EdgeLocations" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"InsideCidrBlocks"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            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
"SegmentName")
            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
"SharedSegments"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance Prelude.Hashable CoreNetworkChangeValues where
  hashWithSalt :: Int -> CoreNetworkChangeValues -> Int
hashWithSalt Int
_salt CoreNetworkChangeValues' {Maybe Integer
Maybe [Text]
Maybe Text
sharedSegments :: Maybe [Text]
segmentName :: Maybe Text
insideCidrBlocks :: Maybe [Text]
edgeLocations :: Maybe [Text]
destinationIdentifier :: Maybe Text
cidr :: Maybe Text
asn :: Maybe Integer
$sel:sharedSegments:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
$sel:segmentName:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
$sel:insideCidrBlocks:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
$sel:edgeLocations:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
$sel:destinationIdentifier:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
$sel:cidr:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
$sel:asn:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Integer
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
asn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
cidr
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
destinationIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
edgeLocations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
insideCidrBlocks
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
segmentName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
sharedSegments

instance Prelude.NFData CoreNetworkChangeValues where
  rnf :: CoreNetworkChangeValues -> ()
rnf CoreNetworkChangeValues' {Maybe Integer
Maybe [Text]
Maybe Text
sharedSegments :: Maybe [Text]
segmentName :: Maybe Text
insideCidrBlocks :: Maybe [Text]
edgeLocations :: Maybe [Text]
destinationIdentifier :: Maybe Text
cidr :: Maybe Text
asn :: Maybe Integer
$sel:sharedSegments:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
$sel:segmentName:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
$sel:insideCidrBlocks:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
$sel:edgeLocations:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe [Text]
$sel:destinationIdentifier:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
$sel:cidr:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Text
$sel:asn:CoreNetworkChangeValues' :: CoreNetworkChangeValues -> Maybe Integer
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
asn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
cidr
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
destinationIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
edgeLocations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
insideCidrBlocks
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
segmentName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
sharedSegments