{-# 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.Outposts.Types.RackPhysicalProperties
-- 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.Outposts.Types.RackPhysicalProperties where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Outposts.Types.FiberOpticCableType
import Amazonka.Outposts.Types.MaximumSupportedWeightLbs
import Amazonka.Outposts.Types.OpticalStandard
import Amazonka.Outposts.Types.PowerConnector
import Amazonka.Outposts.Types.PowerDrawKva
import Amazonka.Outposts.Types.PowerFeedDrop
import Amazonka.Outposts.Types.PowerPhase
import Amazonka.Outposts.Types.UplinkCount
import Amazonka.Outposts.Types.UplinkGbps
import qualified Amazonka.Prelude as Prelude

-- | Information about the physical and logistical details for racks at
-- sites. For more information about hardware requirements for racks, see
-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#checklist Network readiness checklist>
-- in the Amazon Web Services Outposts User Guide.
--
-- /See:/ 'newRackPhysicalProperties' smart constructor.
data RackPhysicalProperties = RackPhysicalProperties'
  { -- | The type of fiber used to attach the Outpost to the network.
    RackPhysicalProperties -> Maybe FiberOpticCableType
fiberOpticCableType :: Prelude.Maybe FiberOpticCableType,
    -- | The maximum rack weight that this site can support. @NO_LIMIT@ is over
    -- 2000 lbs (907 kg).
    RackPhysicalProperties -> Maybe MaximumSupportedWeightLbs
maximumSupportedWeightLbs :: Prelude.Maybe MaximumSupportedWeightLbs,
    -- | The type of optical standard used to attach the Outpost to the network.
    -- This field is dependent on uplink speed, fiber type, and distance to the
    -- upstream device. For more information about networking requirements for
    -- racks, see
    -- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
    -- in the Amazon Web Services Outposts User Guide.
    RackPhysicalProperties -> Maybe OpticalStandard
opticalStandard :: Prelude.Maybe OpticalStandard,
    -- | The power connector for the hardware.
    RackPhysicalProperties -> Maybe PowerConnector
powerConnector :: Prelude.Maybe PowerConnector,
    -- | The power draw available at the hardware placement position for the
    -- rack.
    RackPhysicalProperties -> Maybe PowerDrawKva
powerDrawKva :: Prelude.Maybe PowerDrawKva,
    -- | The position of the power feed.
    RackPhysicalProperties -> Maybe PowerFeedDrop
powerFeedDrop :: Prelude.Maybe PowerFeedDrop,
    -- | The power option that you can provide for hardware.
    RackPhysicalProperties -> Maybe PowerPhase
powerPhase :: Prelude.Maybe PowerPhase,
    -- | The number of uplinks each Outpost network device.
    RackPhysicalProperties -> Maybe UplinkCount
uplinkCount :: Prelude.Maybe UplinkCount,
    -- | The uplink speed the rack supports for the connection to the Region.
    RackPhysicalProperties -> Maybe UplinkGbps
uplinkGbps :: Prelude.Maybe UplinkGbps
  }
  deriving (RackPhysicalProperties -> RackPhysicalProperties -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RackPhysicalProperties -> RackPhysicalProperties -> Bool
$c/= :: RackPhysicalProperties -> RackPhysicalProperties -> Bool
== :: RackPhysicalProperties -> RackPhysicalProperties -> Bool
$c== :: RackPhysicalProperties -> RackPhysicalProperties -> Bool
Prelude.Eq, ReadPrec [RackPhysicalProperties]
ReadPrec RackPhysicalProperties
Int -> ReadS RackPhysicalProperties
ReadS [RackPhysicalProperties]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RackPhysicalProperties]
$creadListPrec :: ReadPrec [RackPhysicalProperties]
readPrec :: ReadPrec RackPhysicalProperties
$creadPrec :: ReadPrec RackPhysicalProperties
readList :: ReadS [RackPhysicalProperties]
$creadList :: ReadS [RackPhysicalProperties]
readsPrec :: Int -> ReadS RackPhysicalProperties
$creadsPrec :: Int -> ReadS RackPhysicalProperties
Prelude.Read, Int -> RackPhysicalProperties -> ShowS
[RackPhysicalProperties] -> ShowS
RackPhysicalProperties -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RackPhysicalProperties] -> ShowS
$cshowList :: [RackPhysicalProperties] -> ShowS
show :: RackPhysicalProperties -> String
$cshow :: RackPhysicalProperties -> String
showsPrec :: Int -> RackPhysicalProperties -> ShowS
$cshowsPrec :: Int -> RackPhysicalProperties -> ShowS
Prelude.Show, forall x. Rep RackPhysicalProperties x -> RackPhysicalProperties
forall x. RackPhysicalProperties -> Rep RackPhysicalProperties x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RackPhysicalProperties x -> RackPhysicalProperties
$cfrom :: forall x. RackPhysicalProperties -> Rep RackPhysicalProperties x
Prelude.Generic)

-- |
-- Create a value of 'RackPhysicalProperties' 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:
--
-- 'fiberOpticCableType', 'rackPhysicalProperties_fiberOpticCableType' - The type of fiber used to attach the Outpost to the network.
--
-- 'maximumSupportedWeightLbs', 'rackPhysicalProperties_maximumSupportedWeightLbs' - The maximum rack weight that this site can support. @NO_LIMIT@ is over
-- 2000 lbs (907 kg).
--
-- 'opticalStandard', 'rackPhysicalProperties_opticalStandard' - The type of optical standard used to attach the Outpost to the network.
-- This field is dependent on uplink speed, fiber type, and distance to the
-- upstream device. For more information about networking requirements for
-- racks, see
-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
-- in the Amazon Web Services Outposts User Guide.
--
-- 'powerConnector', 'rackPhysicalProperties_powerConnector' - The power connector for the hardware.
--
-- 'powerDrawKva', 'rackPhysicalProperties_powerDrawKva' - The power draw available at the hardware placement position for the
-- rack.
--
-- 'powerFeedDrop', 'rackPhysicalProperties_powerFeedDrop' - The position of the power feed.
--
-- 'powerPhase', 'rackPhysicalProperties_powerPhase' - The power option that you can provide for hardware.
--
-- 'uplinkCount', 'rackPhysicalProperties_uplinkCount' - The number of uplinks each Outpost network device.
--
-- 'uplinkGbps', 'rackPhysicalProperties_uplinkGbps' - The uplink speed the rack supports for the connection to the Region.
newRackPhysicalProperties ::
  RackPhysicalProperties
newRackPhysicalProperties :: RackPhysicalProperties
newRackPhysicalProperties =
  RackPhysicalProperties'
    { $sel:fiberOpticCableType:RackPhysicalProperties' :: Maybe FiberOpticCableType
fiberOpticCableType =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maximumSupportedWeightLbs:RackPhysicalProperties' :: Maybe MaximumSupportedWeightLbs
maximumSupportedWeightLbs = forall a. Maybe a
Prelude.Nothing,
      $sel:opticalStandard:RackPhysicalProperties' :: Maybe OpticalStandard
opticalStandard = forall a. Maybe a
Prelude.Nothing,
      $sel:powerConnector:RackPhysicalProperties' :: Maybe PowerConnector
powerConnector = forall a. Maybe a
Prelude.Nothing,
      $sel:powerDrawKva:RackPhysicalProperties' :: Maybe PowerDrawKva
powerDrawKva = forall a. Maybe a
Prelude.Nothing,
      $sel:powerFeedDrop:RackPhysicalProperties' :: Maybe PowerFeedDrop
powerFeedDrop = forall a. Maybe a
Prelude.Nothing,
      $sel:powerPhase:RackPhysicalProperties' :: Maybe PowerPhase
powerPhase = forall a. Maybe a
Prelude.Nothing,
      $sel:uplinkCount:RackPhysicalProperties' :: Maybe UplinkCount
uplinkCount = forall a. Maybe a
Prelude.Nothing,
      $sel:uplinkGbps:RackPhysicalProperties' :: Maybe UplinkGbps
uplinkGbps = forall a. Maybe a
Prelude.Nothing
    }

-- | The type of fiber used to attach the Outpost to the network.
rackPhysicalProperties_fiberOpticCableType :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe FiberOpticCableType)
rackPhysicalProperties_fiberOpticCableType :: Lens' RackPhysicalProperties (Maybe FiberOpticCableType)
rackPhysicalProperties_fiberOpticCableType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe FiberOpticCableType
fiberOpticCableType :: Maybe FiberOpticCableType
$sel:fiberOpticCableType:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe FiberOpticCableType
fiberOpticCableType} -> Maybe FiberOpticCableType
fiberOpticCableType) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe FiberOpticCableType
a -> RackPhysicalProperties
s {$sel:fiberOpticCableType:RackPhysicalProperties' :: Maybe FiberOpticCableType
fiberOpticCableType = Maybe FiberOpticCableType
a} :: RackPhysicalProperties)

-- | The maximum rack weight that this site can support. @NO_LIMIT@ is over
-- 2000 lbs (907 kg).
rackPhysicalProperties_maximumSupportedWeightLbs :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe MaximumSupportedWeightLbs)
rackPhysicalProperties_maximumSupportedWeightLbs :: Lens' RackPhysicalProperties (Maybe MaximumSupportedWeightLbs)
rackPhysicalProperties_maximumSupportedWeightLbs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe MaximumSupportedWeightLbs
maximumSupportedWeightLbs :: Maybe MaximumSupportedWeightLbs
$sel:maximumSupportedWeightLbs:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe MaximumSupportedWeightLbs
maximumSupportedWeightLbs} -> Maybe MaximumSupportedWeightLbs
maximumSupportedWeightLbs) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe MaximumSupportedWeightLbs
a -> RackPhysicalProperties
s {$sel:maximumSupportedWeightLbs:RackPhysicalProperties' :: Maybe MaximumSupportedWeightLbs
maximumSupportedWeightLbs = Maybe MaximumSupportedWeightLbs
a} :: RackPhysicalProperties)

-- | The type of optical standard used to attach the Outpost to the network.
-- This field is dependent on uplink speed, fiber type, and distance to the
-- upstream device. For more information about networking requirements for
-- racks, see
-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
-- in the Amazon Web Services Outposts User Guide.
rackPhysicalProperties_opticalStandard :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe OpticalStandard)
rackPhysicalProperties_opticalStandard :: Lens' RackPhysicalProperties (Maybe OpticalStandard)
rackPhysicalProperties_opticalStandard = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe OpticalStandard
opticalStandard :: Maybe OpticalStandard
$sel:opticalStandard:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe OpticalStandard
opticalStandard} -> Maybe OpticalStandard
opticalStandard) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe OpticalStandard
a -> RackPhysicalProperties
s {$sel:opticalStandard:RackPhysicalProperties' :: Maybe OpticalStandard
opticalStandard = Maybe OpticalStandard
a} :: RackPhysicalProperties)

-- | The power connector for the hardware.
rackPhysicalProperties_powerConnector :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe PowerConnector)
rackPhysicalProperties_powerConnector :: Lens' RackPhysicalProperties (Maybe PowerConnector)
rackPhysicalProperties_powerConnector = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe PowerConnector
powerConnector :: Maybe PowerConnector
$sel:powerConnector:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerConnector
powerConnector} -> Maybe PowerConnector
powerConnector) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe PowerConnector
a -> RackPhysicalProperties
s {$sel:powerConnector:RackPhysicalProperties' :: Maybe PowerConnector
powerConnector = Maybe PowerConnector
a} :: RackPhysicalProperties)

-- | The power draw available at the hardware placement position for the
-- rack.
rackPhysicalProperties_powerDrawKva :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe PowerDrawKva)
rackPhysicalProperties_powerDrawKva :: Lens' RackPhysicalProperties (Maybe PowerDrawKva)
rackPhysicalProperties_powerDrawKva = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe PowerDrawKva
powerDrawKva :: Maybe PowerDrawKva
$sel:powerDrawKva:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerDrawKva
powerDrawKva} -> Maybe PowerDrawKva
powerDrawKva) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe PowerDrawKva
a -> RackPhysicalProperties
s {$sel:powerDrawKva:RackPhysicalProperties' :: Maybe PowerDrawKva
powerDrawKva = Maybe PowerDrawKva
a} :: RackPhysicalProperties)

-- | The position of the power feed.
rackPhysicalProperties_powerFeedDrop :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe PowerFeedDrop)
rackPhysicalProperties_powerFeedDrop :: Lens' RackPhysicalProperties (Maybe PowerFeedDrop)
rackPhysicalProperties_powerFeedDrop = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe PowerFeedDrop
powerFeedDrop :: Maybe PowerFeedDrop
$sel:powerFeedDrop:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerFeedDrop
powerFeedDrop} -> Maybe PowerFeedDrop
powerFeedDrop) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe PowerFeedDrop
a -> RackPhysicalProperties
s {$sel:powerFeedDrop:RackPhysicalProperties' :: Maybe PowerFeedDrop
powerFeedDrop = Maybe PowerFeedDrop
a} :: RackPhysicalProperties)

-- | The power option that you can provide for hardware.
rackPhysicalProperties_powerPhase :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe PowerPhase)
rackPhysicalProperties_powerPhase :: Lens' RackPhysicalProperties (Maybe PowerPhase)
rackPhysicalProperties_powerPhase = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe PowerPhase
powerPhase :: Maybe PowerPhase
$sel:powerPhase:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerPhase
powerPhase} -> Maybe PowerPhase
powerPhase) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe PowerPhase
a -> RackPhysicalProperties
s {$sel:powerPhase:RackPhysicalProperties' :: Maybe PowerPhase
powerPhase = Maybe PowerPhase
a} :: RackPhysicalProperties)

-- | The number of uplinks each Outpost network device.
rackPhysicalProperties_uplinkCount :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe UplinkCount)
rackPhysicalProperties_uplinkCount :: Lens' RackPhysicalProperties (Maybe UplinkCount)
rackPhysicalProperties_uplinkCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe UplinkCount
uplinkCount :: Maybe UplinkCount
$sel:uplinkCount:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe UplinkCount
uplinkCount} -> Maybe UplinkCount
uplinkCount) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe UplinkCount
a -> RackPhysicalProperties
s {$sel:uplinkCount:RackPhysicalProperties' :: Maybe UplinkCount
uplinkCount = Maybe UplinkCount
a} :: RackPhysicalProperties)

-- | The uplink speed the rack supports for the connection to the Region.
rackPhysicalProperties_uplinkGbps :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe UplinkGbps)
rackPhysicalProperties_uplinkGbps :: Lens' RackPhysicalProperties (Maybe UplinkGbps)
rackPhysicalProperties_uplinkGbps = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RackPhysicalProperties' {Maybe UplinkGbps
uplinkGbps :: Maybe UplinkGbps
$sel:uplinkGbps:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe UplinkGbps
uplinkGbps} -> Maybe UplinkGbps
uplinkGbps) (\s :: RackPhysicalProperties
s@RackPhysicalProperties' {} Maybe UplinkGbps
a -> RackPhysicalProperties
s {$sel:uplinkGbps:RackPhysicalProperties' :: Maybe UplinkGbps
uplinkGbps = Maybe UplinkGbps
a} :: RackPhysicalProperties)

instance Data.FromJSON RackPhysicalProperties where
  parseJSON :: Value -> Parser RackPhysicalProperties
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"RackPhysicalProperties"
      ( \Object
x ->
          Maybe FiberOpticCableType
-> Maybe MaximumSupportedWeightLbs
-> Maybe OpticalStandard
-> Maybe PowerConnector
-> Maybe PowerDrawKva
-> Maybe PowerFeedDrop
-> Maybe PowerPhase
-> Maybe UplinkCount
-> Maybe UplinkGbps
-> RackPhysicalProperties
RackPhysicalProperties'
            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
"FiberOpticCableType")
            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
"MaximumSupportedWeightLbs")
            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
"OpticalStandard")
            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
"PowerConnector")
            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
"PowerDrawKva")
            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
"PowerFeedDrop")
            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
"PowerPhase")
            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
"UplinkCount")
            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
"UplinkGbps")
      )

instance Prelude.Hashable RackPhysicalProperties where
  hashWithSalt :: Int -> RackPhysicalProperties -> Int
hashWithSalt Int
_salt RackPhysicalProperties' {Maybe FiberOpticCableType
Maybe MaximumSupportedWeightLbs
Maybe OpticalStandard
Maybe PowerConnector
Maybe PowerDrawKva
Maybe PowerFeedDrop
Maybe PowerPhase
Maybe UplinkCount
Maybe UplinkGbps
uplinkGbps :: Maybe UplinkGbps
uplinkCount :: Maybe UplinkCount
powerPhase :: Maybe PowerPhase
powerFeedDrop :: Maybe PowerFeedDrop
powerDrawKva :: Maybe PowerDrawKva
powerConnector :: Maybe PowerConnector
opticalStandard :: Maybe OpticalStandard
maximumSupportedWeightLbs :: Maybe MaximumSupportedWeightLbs
fiberOpticCableType :: Maybe FiberOpticCableType
$sel:uplinkGbps:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe UplinkGbps
$sel:uplinkCount:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe UplinkCount
$sel:powerPhase:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerPhase
$sel:powerFeedDrop:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerFeedDrop
$sel:powerDrawKva:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerDrawKva
$sel:powerConnector:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerConnector
$sel:opticalStandard:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe OpticalStandard
$sel:maximumSupportedWeightLbs:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe MaximumSupportedWeightLbs
$sel:fiberOpticCableType:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe FiberOpticCableType
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FiberOpticCableType
fiberOpticCableType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MaximumSupportedWeightLbs
maximumSupportedWeightLbs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OpticalStandard
opticalStandard
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PowerConnector
powerConnector
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PowerDrawKva
powerDrawKva
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PowerFeedDrop
powerFeedDrop
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PowerPhase
powerPhase
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UplinkCount
uplinkCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UplinkGbps
uplinkGbps

instance Prelude.NFData RackPhysicalProperties where
  rnf :: RackPhysicalProperties -> ()
rnf RackPhysicalProperties' {Maybe FiberOpticCableType
Maybe MaximumSupportedWeightLbs
Maybe OpticalStandard
Maybe PowerConnector
Maybe PowerDrawKva
Maybe PowerFeedDrop
Maybe PowerPhase
Maybe UplinkCount
Maybe UplinkGbps
uplinkGbps :: Maybe UplinkGbps
uplinkCount :: Maybe UplinkCount
powerPhase :: Maybe PowerPhase
powerFeedDrop :: Maybe PowerFeedDrop
powerDrawKva :: Maybe PowerDrawKva
powerConnector :: Maybe PowerConnector
opticalStandard :: Maybe OpticalStandard
maximumSupportedWeightLbs :: Maybe MaximumSupportedWeightLbs
fiberOpticCableType :: Maybe FiberOpticCableType
$sel:uplinkGbps:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe UplinkGbps
$sel:uplinkCount:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe UplinkCount
$sel:powerPhase:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerPhase
$sel:powerFeedDrop:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerFeedDrop
$sel:powerDrawKva:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerDrawKva
$sel:powerConnector:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerConnector
$sel:opticalStandard:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe OpticalStandard
$sel:maximumSupportedWeightLbs:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe MaximumSupportedWeightLbs
$sel:fiberOpticCableType:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe FiberOpticCableType
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe FiberOpticCableType
fiberOpticCableType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MaximumSupportedWeightLbs
maximumSupportedWeightLbs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OpticalStandard
opticalStandard
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PowerConnector
powerConnector
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PowerDrawKva
powerDrawKva
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PowerFeedDrop
powerFeedDrop
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PowerPhase
powerPhase
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UplinkCount
uplinkCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UplinkGbps
uplinkGbps

instance Data.ToJSON RackPhysicalProperties where
  toJSON :: RackPhysicalProperties -> Value
toJSON RackPhysicalProperties' {Maybe FiberOpticCableType
Maybe MaximumSupportedWeightLbs
Maybe OpticalStandard
Maybe PowerConnector
Maybe PowerDrawKva
Maybe PowerFeedDrop
Maybe PowerPhase
Maybe UplinkCount
Maybe UplinkGbps
uplinkGbps :: Maybe UplinkGbps
uplinkCount :: Maybe UplinkCount
powerPhase :: Maybe PowerPhase
powerFeedDrop :: Maybe PowerFeedDrop
powerDrawKva :: Maybe PowerDrawKva
powerConnector :: Maybe PowerConnector
opticalStandard :: Maybe OpticalStandard
maximumSupportedWeightLbs :: Maybe MaximumSupportedWeightLbs
fiberOpticCableType :: Maybe FiberOpticCableType
$sel:uplinkGbps:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe UplinkGbps
$sel:uplinkCount:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe UplinkCount
$sel:powerPhase:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerPhase
$sel:powerFeedDrop:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerFeedDrop
$sel:powerDrawKva:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerDrawKva
$sel:powerConnector:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe PowerConnector
$sel:opticalStandard:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe OpticalStandard
$sel:maximumSupportedWeightLbs:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe MaximumSupportedWeightLbs
$sel:fiberOpticCableType:RackPhysicalProperties' :: RackPhysicalProperties -> Maybe FiberOpticCableType
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"FiberOpticCableType" 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 FiberOpticCableType
fiberOpticCableType,
            (Key
"MaximumSupportedWeightLbs" 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 MaximumSupportedWeightLbs
maximumSupportedWeightLbs,
            (Key
"OpticalStandard" 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 OpticalStandard
opticalStandard,
            (Key
"PowerConnector" 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 PowerConnector
powerConnector,
            (Key
"PowerDrawKva" 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 PowerDrawKva
powerDrawKva,
            (Key
"PowerFeedDrop" 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 PowerFeedDrop
powerFeedDrop,
            (Key
"PowerPhase" 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 PowerPhase
powerPhase,
            (Key
"UplinkCount" 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 UplinkCount
uplinkCount,
            (Key
"UplinkGbps" 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 UplinkGbps
uplinkGbps
          ]
      )