{-# 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.EKS.Types.Nodegroup
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.EKS.Types.Nodegroup where

import qualified Amazonka.Core as Core
import Amazonka.EKS.Types.AMITypes
import Amazonka.EKS.Types.CapacityTypes
import Amazonka.EKS.Types.LaunchTemplateSpecification
import Amazonka.EKS.Types.NodegroupHealth
import Amazonka.EKS.Types.NodegroupResources
import Amazonka.EKS.Types.NodegroupScalingConfig
import Amazonka.EKS.Types.NodegroupStatus
import Amazonka.EKS.Types.NodegroupUpdateConfig
import Amazonka.EKS.Types.RemoteAccessConfig
import Amazonka.EKS.Types.Taint
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | An object representing an Amazon EKS managed node group.
--
-- /See:/ 'newNodegroup' smart constructor.
data Nodegroup = Nodegroup'
  { -- | The Unix epoch timestamp in seconds for when the managed node group was
    -- last modified.
    Nodegroup -> Maybe POSIX
modifiedAt :: Prelude.Maybe Core.POSIX,
    -- | The capacity type of your managed node group.
    Nodegroup -> Maybe CapacityTypes
capacityType :: Prelude.Maybe CapacityTypes,
    -- | The current status of the managed node group.
    Nodegroup -> Maybe NodegroupStatus
status :: Prelude.Maybe NodegroupStatus,
    -- | If the node group wasn\'t deployed with a launch template, then this is
    -- the instance type that is associated with the node group. If the node
    -- group was deployed with a launch template, then this is @null@.
    Nodegroup -> Maybe [Text]
instanceTypes :: Prelude.Maybe [Prelude.Text],
    -- | The Unix epoch timestamp in seconds for when the managed node group was
    -- created.
    Nodegroup -> Maybe POSIX
createdAt :: Prelude.Maybe Core.POSIX,
    -- | The Kubernetes taints to be applied to the nodes in the node group when
    -- they are created. Effect is one of @No_Schedule@, @Prefer_No_Schedule@,
    -- or @No_Execute@. Kubernetes taints can be used together with tolerations
    -- to control how workloads are scheduled to your nodes.
    Nodegroup -> Maybe [Taint]
taints :: Prelude.Maybe [Taint],
    -- | The subnets that were specified for the Auto Scaling group that is
    -- associated with your node group.
    Nodegroup -> Maybe [Text]
subnets :: Prelude.Maybe [Prelude.Text],
    -- | If the node group wasn\'t deployed with a launch template, then this is
    -- the remote access configuration that is associated with the node group.
    -- If the node group was deployed with a launch template, then this is
    -- @null@.
    Nodegroup -> Maybe RemoteAccessConfig
remoteAccess :: Prelude.Maybe RemoteAccessConfig,
    -- | If the node group wasn\'t deployed with a launch template, then this is
    -- the disk size in the node group configuration. If the node group was
    -- deployed with a launch template, then this is @null@.
    Nodegroup -> Maybe Int
diskSize :: Prelude.Maybe Prelude.Int,
    -- | If the node group was deployed using a launch template with a custom
    -- AMI, then this is the AMI ID that was specified in the launch template.
    -- For node groups that weren\'t deployed using a launch template, this is
    -- the version of the Amazon EKS optimized AMI that the node group was
    -- deployed with.
    Nodegroup -> Maybe Text
releaseVersion :: Prelude.Maybe Prelude.Text,
    -- | The resources associated with the node group, such as Auto Scaling
    -- groups and security groups for remote access.
    Nodegroup -> Maybe NodegroupResources
resources :: Prelude.Maybe NodegroupResources,
    -- | The health status of the node group. If there are issues with your node
    -- group\'s health, they are listed here.
    Nodegroup -> Maybe NodegroupHealth
health :: Prelude.Maybe NodegroupHealth,
    -- | The IAM role associated with your node group. The Amazon EKS node
    -- @kubelet@ daemon makes calls to Amazon Web Services APIs on your behalf.
    -- Nodes receive permissions for these API calls through an IAM instance
    -- profile and associated policies.
    Nodegroup -> Maybe Text
nodeRole :: Prelude.Maybe Prelude.Text,
    -- | The scaling configuration details for the Auto Scaling group that is
    -- associated with your node group.
    Nodegroup -> Maybe NodegroupScalingConfig
scalingConfig :: Prelude.Maybe NodegroupScalingConfig,
    -- | The Kubernetes version of the managed node group.
    Nodegroup -> Maybe Text
version :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) associated with the managed node group.
    Nodegroup -> Maybe Text
nodegroupArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the cluster that the managed node group resides in.
    Nodegroup -> Maybe Text
clusterName :: Prelude.Maybe Prelude.Text,
    -- | If a launch template was used to create the node group, then this is the
    -- launch template that was used.
    Nodegroup -> Maybe LaunchTemplateSpecification
launchTemplate :: Prelude.Maybe LaunchTemplateSpecification,
    -- | The Kubernetes labels applied to the nodes in the node group.
    --
    -- Only labels that are applied with the Amazon EKS API are shown here.
    -- There may be other Kubernetes labels applied to the nodes in this group.
    Nodegroup -> Maybe (HashMap Text Text)
labels :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | If the node group was deployed using a launch template with a custom
    -- AMI, then this is @CUSTOM@. For node groups that weren\'t deployed using
    -- a launch template, this is the AMI type that was specified in the node
    -- group configuration.
    Nodegroup -> Maybe AMITypes
amiType :: Prelude.Maybe AMITypes,
    -- | The name associated with an Amazon EKS managed node group.
    Nodegroup -> Maybe Text
nodegroupName :: Prelude.Maybe Prelude.Text,
    -- | The node group update configuration.
    Nodegroup -> Maybe NodegroupUpdateConfig
updateConfig :: Prelude.Maybe NodegroupUpdateConfig,
    -- | The metadata applied to the node group to assist with categorization and
    -- organization. Each tag consists of a key and an optional value, both of
    -- which you define. Node group tags do not propagate to any other
    -- resources associated with the node group, such as the Amazon EC2
    -- instances or subnets.
    Nodegroup -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
  }
  deriving (Nodegroup -> Nodegroup -> Bool
(Nodegroup -> Nodegroup -> Bool)
-> (Nodegroup -> Nodegroup -> Bool) -> Eq Nodegroup
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Nodegroup -> Nodegroup -> Bool
$c/= :: Nodegroup -> Nodegroup -> Bool
== :: Nodegroup -> Nodegroup -> Bool
$c== :: Nodegroup -> Nodegroup -> Bool
Prelude.Eq, ReadPrec [Nodegroup]
ReadPrec Nodegroup
Int -> ReadS Nodegroup
ReadS [Nodegroup]
(Int -> ReadS Nodegroup)
-> ReadS [Nodegroup]
-> ReadPrec Nodegroup
-> ReadPrec [Nodegroup]
-> Read Nodegroup
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Nodegroup]
$creadListPrec :: ReadPrec [Nodegroup]
readPrec :: ReadPrec Nodegroup
$creadPrec :: ReadPrec Nodegroup
readList :: ReadS [Nodegroup]
$creadList :: ReadS [Nodegroup]
readsPrec :: Int -> ReadS Nodegroup
$creadsPrec :: Int -> ReadS Nodegroup
Prelude.Read, Int -> Nodegroup -> ShowS
[Nodegroup] -> ShowS
Nodegroup -> String
(Int -> Nodegroup -> ShowS)
-> (Nodegroup -> String)
-> ([Nodegroup] -> ShowS)
-> Show Nodegroup
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Nodegroup] -> ShowS
$cshowList :: [Nodegroup] -> ShowS
show :: Nodegroup -> String
$cshow :: Nodegroup -> String
showsPrec :: Int -> Nodegroup -> ShowS
$cshowsPrec :: Int -> Nodegroup -> ShowS
Prelude.Show, (forall x. Nodegroup -> Rep Nodegroup x)
-> (forall x. Rep Nodegroup x -> Nodegroup) -> Generic Nodegroup
forall x. Rep Nodegroup x -> Nodegroup
forall x. Nodegroup -> Rep Nodegroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Nodegroup x -> Nodegroup
$cfrom :: forall x. Nodegroup -> Rep Nodegroup x
Prelude.Generic)

-- |
-- Create a value of 'Nodegroup' 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:
--
-- 'modifiedAt', 'nodegroup_modifiedAt' - The Unix epoch timestamp in seconds for when the managed node group was
-- last modified.
--
-- 'capacityType', 'nodegroup_capacityType' - The capacity type of your managed node group.
--
-- 'status', 'nodegroup_status' - The current status of the managed node group.
--
-- 'instanceTypes', 'nodegroup_instanceTypes' - If the node group wasn\'t deployed with a launch template, then this is
-- the instance type that is associated with the node group. If the node
-- group was deployed with a launch template, then this is @null@.
--
-- 'createdAt', 'nodegroup_createdAt' - The Unix epoch timestamp in seconds for when the managed node group was
-- created.
--
-- 'taints', 'nodegroup_taints' - The Kubernetes taints to be applied to the nodes in the node group when
-- they are created. Effect is one of @No_Schedule@, @Prefer_No_Schedule@,
-- or @No_Execute@. Kubernetes taints can be used together with tolerations
-- to control how workloads are scheduled to your nodes.
--
-- 'subnets', 'nodegroup_subnets' - The subnets that were specified for the Auto Scaling group that is
-- associated with your node group.
--
-- 'remoteAccess', 'nodegroup_remoteAccess' - If the node group wasn\'t deployed with a launch template, then this is
-- the remote access configuration that is associated with the node group.
-- If the node group was deployed with a launch template, then this is
-- @null@.
--
-- 'diskSize', 'nodegroup_diskSize' - If the node group wasn\'t deployed with a launch template, then this is
-- the disk size in the node group configuration. If the node group was
-- deployed with a launch template, then this is @null@.
--
-- 'releaseVersion', 'nodegroup_releaseVersion' - If the node group was deployed using a launch template with a custom
-- AMI, then this is the AMI ID that was specified in the launch template.
-- For node groups that weren\'t deployed using a launch template, this is
-- the version of the Amazon EKS optimized AMI that the node group was
-- deployed with.
--
-- 'resources', 'nodegroup_resources' - The resources associated with the node group, such as Auto Scaling
-- groups and security groups for remote access.
--
-- 'health', 'nodegroup_health' - The health status of the node group. If there are issues with your node
-- group\'s health, they are listed here.
--
-- 'nodeRole', 'nodegroup_nodeRole' - The IAM role associated with your node group. The Amazon EKS node
-- @kubelet@ daemon makes calls to Amazon Web Services APIs on your behalf.
-- Nodes receive permissions for these API calls through an IAM instance
-- profile and associated policies.
--
-- 'scalingConfig', 'nodegroup_scalingConfig' - The scaling configuration details for the Auto Scaling group that is
-- associated with your node group.
--
-- 'version', 'nodegroup_version' - The Kubernetes version of the managed node group.
--
-- 'nodegroupArn', 'nodegroup_nodegroupArn' - The Amazon Resource Name (ARN) associated with the managed node group.
--
-- 'clusterName', 'nodegroup_clusterName' - The name of the cluster that the managed node group resides in.
--
-- 'launchTemplate', 'nodegroup_launchTemplate' - If a launch template was used to create the node group, then this is the
-- launch template that was used.
--
-- 'labels', 'nodegroup_labels' - The Kubernetes labels applied to the nodes in the node group.
--
-- Only labels that are applied with the Amazon EKS API are shown here.
-- There may be other Kubernetes labels applied to the nodes in this group.
--
-- 'amiType', 'nodegroup_amiType' - If the node group was deployed using a launch template with a custom
-- AMI, then this is @CUSTOM@. For node groups that weren\'t deployed using
-- a launch template, this is the AMI type that was specified in the node
-- group configuration.
--
-- 'nodegroupName', 'nodegroup_nodegroupName' - The name associated with an Amazon EKS managed node group.
--
-- 'updateConfig', 'nodegroup_updateConfig' - The node group update configuration.
--
-- 'tags', 'nodegroup_tags' - The metadata applied to the node group to assist with categorization and
-- organization. Each tag consists of a key and an optional value, both of
-- which you define. Node group tags do not propagate to any other
-- resources associated with the node group, such as the Amazon EC2
-- instances or subnets.
newNodegroup ::
  Nodegroup
newNodegroup :: Nodegroup
newNodegroup =
  Nodegroup' :: Maybe POSIX
-> Maybe CapacityTypes
-> Maybe NodegroupStatus
-> Maybe [Text]
-> Maybe POSIX
-> Maybe [Taint]
-> Maybe [Text]
-> Maybe RemoteAccessConfig
-> Maybe Int
-> Maybe Text
-> Maybe NodegroupResources
-> Maybe NodegroupHealth
-> Maybe Text
-> Maybe NodegroupScalingConfig
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe LaunchTemplateSpecification
-> Maybe (HashMap Text Text)
-> Maybe AMITypes
-> Maybe Text
-> Maybe NodegroupUpdateConfig
-> Maybe (HashMap Text Text)
-> Nodegroup
Nodegroup'
    { $sel:modifiedAt:Nodegroup' :: Maybe POSIX
modifiedAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:capacityType:Nodegroup' :: Maybe CapacityTypes
capacityType = Maybe CapacityTypes
forall a. Maybe a
Prelude.Nothing,
      $sel:status:Nodegroup' :: Maybe NodegroupStatus
status = Maybe NodegroupStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceTypes:Nodegroup' :: Maybe [Text]
instanceTypes = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:Nodegroup' :: Maybe POSIX
createdAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:taints:Nodegroup' :: Maybe [Taint]
taints = Maybe [Taint]
forall a. Maybe a
Prelude.Nothing,
      $sel:subnets:Nodegroup' :: Maybe [Text]
subnets = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:remoteAccess:Nodegroup' :: Maybe RemoteAccessConfig
remoteAccess = Maybe RemoteAccessConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:diskSize:Nodegroup' :: Maybe Int
diskSize = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:releaseVersion:Nodegroup' :: Maybe Text
releaseVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:resources:Nodegroup' :: Maybe NodegroupResources
resources = Maybe NodegroupResources
forall a. Maybe a
Prelude.Nothing,
      $sel:health:Nodegroup' :: Maybe NodegroupHealth
health = Maybe NodegroupHealth
forall a. Maybe a
Prelude.Nothing,
      $sel:nodeRole:Nodegroup' :: Maybe Text
nodeRole = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:scalingConfig:Nodegroup' :: Maybe NodegroupScalingConfig
scalingConfig = Maybe NodegroupScalingConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:version:Nodegroup' :: Maybe Text
version = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:nodegroupArn:Nodegroup' :: Maybe Text
nodegroupArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterName:Nodegroup' :: Maybe Text
clusterName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:launchTemplate:Nodegroup' :: Maybe LaunchTemplateSpecification
launchTemplate = Maybe LaunchTemplateSpecification
forall a. Maybe a
Prelude.Nothing,
      $sel:labels:Nodegroup' :: Maybe (HashMap Text Text)
labels = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:amiType:Nodegroup' :: Maybe AMITypes
amiType = Maybe AMITypes
forall a. Maybe a
Prelude.Nothing,
      $sel:nodegroupName:Nodegroup' :: Maybe Text
nodegroupName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:updateConfig:Nodegroup' :: Maybe NodegroupUpdateConfig
updateConfig = Maybe NodegroupUpdateConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Nodegroup' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing
    }

-- | The Unix epoch timestamp in seconds for when the managed node group was
-- last modified.
nodegroup_modifiedAt :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.UTCTime)
nodegroup_modifiedAt :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Nodegroup -> f Nodegroup
nodegroup_modifiedAt = (Nodegroup -> Maybe POSIX)
-> (Nodegroup -> Maybe POSIX -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe POSIX
modifiedAt :: Maybe POSIX
$sel:modifiedAt:Nodegroup' :: Nodegroup -> Maybe POSIX
modifiedAt} -> Maybe POSIX
modifiedAt) (\s :: Nodegroup
s@Nodegroup' {} Maybe POSIX
a -> Nodegroup
s {$sel:modifiedAt:Nodegroup' :: Maybe POSIX
modifiedAt = Maybe POSIX
a} :: Nodegroup) ((Maybe POSIX -> f (Maybe POSIX)) -> Nodegroup -> f Nodegroup)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Nodegroup
-> f Nodegroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The capacity type of your managed node group.
nodegroup_capacityType :: Lens.Lens' Nodegroup (Prelude.Maybe CapacityTypes)
nodegroup_capacityType :: (Maybe CapacityTypes -> f (Maybe CapacityTypes))
-> Nodegroup -> f Nodegroup
nodegroup_capacityType = (Nodegroup -> Maybe CapacityTypes)
-> (Nodegroup -> Maybe CapacityTypes -> Nodegroup)
-> Lens
     Nodegroup Nodegroup (Maybe CapacityTypes) (Maybe CapacityTypes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe CapacityTypes
capacityType :: Maybe CapacityTypes
$sel:capacityType:Nodegroup' :: Nodegroup -> Maybe CapacityTypes
capacityType} -> Maybe CapacityTypes
capacityType) (\s :: Nodegroup
s@Nodegroup' {} Maybe CapacityTypes
a -> Nodegroup
s {$sel:capacityType:Nodegroup' :: Maybe CapacityTypes
capacityType = Maybe CapacityTypes
a} :: Nodegroup)

-- | The current status of the managed node group.
nodegroup_status :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupStatus)
nodegroup_status :: (Maybe NodegroupStatus -> f (Maybe NodegroupStatus))
-> Nodegroup -> f Nodegroup
nodegroup_status = (Nodegroup -> Maybe NodegroupStatus)
-> (Nodegroup -> Maybe NodegroupStatus -> Nodegroup)
-> Lens
     Nodegroup Nodegroup (Maybe NodegroupStatus) (Maybe NodegroupStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe NodegroupStatus
status :: Maybe NodegroupStatus
$sel:status:Nodegroup' :: Nodegroup -> Maybe NodegroupStatus
status} -> Maybe NodegroupStatus
status) (\s :: Nodegroup
s@Nodegroup' {} Maybe NodegroupStatus
a -> Nodegroup
s {$sel:status:Nodegroup' :: Maybe NodegroupStatus
status = Maybe NodegroupStatus
a} :: Nodegroup)

-- | If the node group wasn\'t deployed with a launch template, then this is
-- the instance type that is associated with the node group. If the node
-- group was deployed with a launch template, then this is @null@.
nodegroup_instanceTypes :: Lens.Lens' Nodegroup (Prelude.Maybe [Prelude.Text])
nodegroup_instanceTypes :: (Maybe [Text] -> f (Maybe [Text])) -> Nodegroup -> f Nodegroup
nodegroup_instanceTypes = (Nodegroup -> Maybe [Text])
-> (Nodegroup -> Maybe [Text] -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe [Text]
instanceTypes :: Maybe [Text]
$sel:instanceTypes:Nodegroup' :: Nodegroup -> Maybe [Text]
instanceTypes} -> Maybe [Text]
instanceTypes) (\s :: Nodegroup
s@Nodegroup' {} Maybe [Text]
a -> Nodegroup
s {$sel:instanceTypes:Nodegroup' :: Maybe [Text]
instanceTypes = Maybe [Text]
a} :: Nodegroup) ((Maybe [Text] -> f (Maybe [Text])) -> Nodegroup -> f Nodegroup)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> Nodegroup
-> f Nodegroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Unix epoch timestamp in seconds for when the managed node group was
-- created.
nodegroup_createdAt :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.UTCTime)
nodegroup_createdAt :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Nodegroup -> f Nodegroup
nodegroup_createdAt = (Nodegroup -> Maybe POSIX)
-> (Nodegroup -> Maybe POSIX -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:Nodegroup' :: Nodegroup -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: Nodegroup
s@Nodegroup' {} Maybe POSIX
a -> Nodegroup
s {$sel:createdAt:Nodegroup' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: Nodegroup) ((Maybe POSIX -> f (Maybe POSIX)) -> Nodegroup -> f Nodegroup)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Nodegroup
-> f Nodegroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The Kubernetes taints to be applied to the nodes in the node group when
-- they are created. Effect is one of @No_Schedule@, @Prefer_No_Schedule@,
-- or @No_Execute@. Kubernetes taints can be used together with tolerations
-- to control how workloads are scheduled to your nodes.
nodegroup_taints :: Lens.Lens' Nodegroup (Prelude.Maybe [Taint])
nodegroup_taints :: (Maybe [Taint] -> f (Maybe [Taint])) -> Nodegroup -> f Nodegroup
nodegroup_taints = (Nodegroup -> Maybe [Taint])
-> (Nodegroup -> Maybe [Taint] -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe [Taint]) (Maybe [Taint])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe [Taint]
taints :: Maybe [Taint]
$sel:taints:Nodegroup' :: Nodegroup -> Maybe [Taint]
taints} -> Maybe [Taint]
taints) (\s :: Nodegroup
s@Nodegroup' {} Maybe [Taint]
a -> Nodegroup
s {$sel:taints:Nodegroup' :: Maybe [Taint]
taints = Maybe [Taint]
a} :: Nodegroup) ((Maybe [Taint] -> f (Maybe [Taint])) -> Nodegroup -> f Nodegroup)
-> ((Maybe [Taint] -> f (Maybe [Taint]))
    -> Maybe [Taint] -> f (Maybe [Taint]))
-> (Maybe [Taint] -> f (Maybe [Taint]))
-> Nodegroup
-> f Nodegroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Taint] [Taint] [Taint] [Taint]
-> Iso
     (Maybe [Taint]) (Maybe [Taint]) (Maybe [Taint]) (Maybe [Taint])
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 AnIso [Taint] [Taint] [Taint] [Taint]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The subnets that were specified for the Auto Scaling group that is
-- associated with your node group.
nodegroup_subnets :: Lens.Lens' Nodegroup (Prelude.Maybe [Prelude.Text])
nodegroup_subnets :: (Maybe [Text] -> f (Maybe [Text])) -> Nodegroup -> f Nodegroup
nodegroup_subnets = (Nodegroup -> Maybe [Text])
-> (Nodegroup -> Maybe [Text] -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe [Text]
subnets :: Maybe [Text]
$sel:subnets:Nodegroup' :: Nodegroup -> Maybe [Text]
subnets} -> Maybe [Text]
subnets) (\s :: Nodegroup
s@Nodegroup' {} Maybe [Text]
a -> Nodegroup
s {$sel:subnets:Nodegroup' :: Maybe [Text]
subnets = Maybe [Text]
a} :: Nodegroup) ((Maybe [Text] -> f (Maybe [Text])) -> Nodegroup -> f Nodegroup)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> Nodegroup
-> f Nodegroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | If the node group wasn\'t deployed with a launch template, then this is
-- the remote access configuration that is associated with the node group.
-- If the node group was deployed with a launch template, then this is
-- @null@.
nodegroup_remoteAccess :: Lens.Lens' Nodegroup (Prelude.Maybe RemoteAccessConfig)
nodegroup_remoteAccess :: (Maybe RemoteAccessConfig -> f (Maybe RemoteAccessConfig))
-> Nodegroup -> f Nodegroup
nodegroup_remoteAccess = (Nodegroup -> Maybe RemoteAccessConfig)
-> (Nodegroup -> Maybe RemoteAccessConfig -> Nodegroup)
-> Lens
     Nodegroup
     Nodegroup
     (Maybe RemoteAccessConfig)
     (Maybe RemoteAccessConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe RemoteAccessConfig
remoteAccess :: Maybe RemoteAccessConfig
$sel:remoteAccess:Nodegroup' :: Nodegroup -> Maybe RemoteAccessConfig
remoteAccess} -> Maybe RemoteAccessConfig
remoteAccess) (\s :: Nodegroup
s@Nodegroup' {} Maybe RemoteAccessConfig
a -> Nodegroup
s {$sel:remoteAccess:Nodegroup' :: Maybe RemoteAccessConfig
remoteAccess = Maybe RemoteAccessConfig
a} :: Nodegroup)

-- | If the node group wasn\'t deployed with a launch template, then this is
-- the disk size in the node group configuration. If the node group was
-- deployed with a launch template, then this is @null@.
nodegroup_diskSize :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Int)
nodegroup_diskSize :: (Maybe Int -> f (Maybe Int)) -> Nodegroup -> f Nodegroup
nodegroup_diskSize = (Nodegroup -> Maybe Int)
-> (Nodegroup -> Maybe Int -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe Int
diskSize :: Maybe Int
$sel:diskSize:Nodegroup' :: Nodegroup -> Maybe Int
diskSize} -> Maybe Int
diskSize) (\s :: Nodegroup
s@Nodegroup' {} Maybe Int
a -> Nodegroup
s {$sel:diskSize:Nodegroup' :: Maybe Int
diskSize = Maybe Int
a} :: Nodegroup)

-- | If the node group was deployed using a launch template with a custom
-- AMI, then this is the AMI ID that was specified in the launch template.
-- For node groups that weren\'t deployed using a launch template, this is
-- the version of the Amazon EKS optimized AMI that the node group was
-- deployed with.
nodegroup_releaseVersion :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_releaseVersion :: (Maybe Text -> f (Maybe Text)) -> Nodegroup -> f Nodegroup
nodegroup_releaseVersion = (Nodegroup -> Maybe Text)
-> (Nodegroup -> Maybe Text -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe Text
releaseVersion :: Maybe Text
$sel:releaseVersion:Nodegroup' :: Nodegroup -> Maybe Text
releaseVersion} -> Maybe Text
releaseVersion) (\s :: Nodegroup
s@Nodegroup' {} Maybe Text
a -> Nodegroup
s {$sel:releaseVersion:Nodegroup' :: Maybe Text
releaseVersion = Maybe Text
a} :: Nodegroup)

-- | The resources associated with the node group, such as Auto Scaling
-- groups and security groups for remote access.
nodegroup_resources :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupResources)
nodegroup_resources :: (Maybe NodegroupResources -> f (Maybe NodegroupResources))
-> Nodegroup -> f Nodegroup
nodegroup_resources = (Nodegroup -> Maybe NodegroupResources)
-> (Nodegroup -> Maybe NodegroupResources -> Nodegroup)
-> Lens
     Nodegroup
     Nodegroup
     (Maybe NodegroupResources)
     (Maybe NodegroupResources)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe NodegroupResources
resources :: Maybe NodegroupResources
$sel:resources:Nodegroup' :: Nodegroup -> Maybe NodegroupResources
resources} -> Maybe NodegroupResources
resources) (\s :: Nodegroup
s@Nodegroup' {} Maybe NodegroupResources
a -> Nodegroup
s {$sel:resources:Nodegroup' :: Maybe NodegroupResources
resources = Maybe NodegroupResources
a} :: Nodegroup)

-- | The health status of the node group. If there are issues with your node
-- group\'s health, they are listed here.
nodegroup_health :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupHealth)
nodegroup_health :: (Maybe NodegroupHealth -> f (Maybe NodegroupHealth))
-> Nodegroup -> f Nodegroup
nodegroup_health = (Nodegroup -> Maybe NodegroupHealth)
-> (Nodegroup -> Maybe NodegroupHealth -> Nodegroup)
-> Lens
     Nodegroup Nodegroup (Maybe NodegroupHealth) (Maybe NodegroupHealth)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe NodegroupHealth
health :: Maybe NodegroupHealth
$sel:health:Nodegroup' :: Nodegroup -> Maybe NodegroupHealth
health} -> Maybe NodegroupHealth
health) (\s :: Nodegroup
s@Nodegroup' {} Maybe NodegroupHealth
a -> Nodegroup
s {$sel:health:Nodegroup' :: Maybe NodegroupHealth
health = Maybe NodegroupHealth
a} :: Nodegroup)

-- | The IAM role associated with your node group. The Amazon EKS node
-- @kubelet@ daemon makes calls to Amazon Web Services APIs on your behalf.
-- Nodes receive permissions for these API calls through an IAM instance
-- profile and associated policies.
nodegroup_nodeRole :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_nodeRole :: (Maybe Text -> f (Maybe Text)) -> Nodegroup -> f Nodegroup
nodegroup_nodeRole = (Nodegroup -> Maybe Text)
-> (Nodegroup -> Maybe Text -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe Text
nodeRole :: Maybe Text
$sel:nodeRole:Nodegroup' :: Nodegroup -> Maybe Text
nodeRole} -> Maybe Text
nodeRole) (\s :: Nodegroup
s@Nodegroup' {} Maybe Text
a -> Nodegroup
s {$sel:nodeRole:Nodegroup' :: Maybe Text
nodeRole = Maybe Text
a} :: Nodegroup)

-- | The scaling configuration details for the Auto Scaling group that is
-- associated with your node group.
nodegroup_scalingConfig :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupScalingConfig)
nodegroup_scalingConfig :: (Maybe NodegroupScalingConfig -> f (Maybe NodegroupScalingConfig))
-> Nodegroup -> f Nodegroup
nodegroup_scalingConfig = (Nodegroup -> Maybe NodegroupScalingConfig)
-> (Nodegroup -> Maybe NodegroupScalingConfig -> Nodegroup)
-> Lens
     Nodegroup
     Nodegroup
     (Maybe NodegroupScalingConfig)
     (Maybe NodegroupScalingConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe NodegroupScalingConfig
scalingConfig :: Maybe NodegroupScalingConfig
$sel:scalingConfig:Nodegroup' :: Nodegroup -> Maybe NodegroupScalingConfig
scalingConfig} -> Maybe NodegroupScalingConfig
scalingConfig) (\s :: Nodegroup
s@Nodegroup' {} Maybe NodegroupScalingConfig
a -> Nodegroup
s {$sel:scalingConfig:Nodegroup' :: Maybe NodegroupScalingConfig
scalingConfig = Maybe NodegroupScalingConfig
a} :: Nodegroup)

-- | The Kubernetes version of the managed node group.
nodegroup_version :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_version :: (Maybe Text -> f (Maybe Text)) -> Nodegroup -> f Nodegroup
nodegroup_version = (Nodegroup -> Maybe Text)
-> (Nodegroup -> Maybe Text -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe Text
version :: Maybe Text
$sel:version:Nodegroup' :: Nodegroup -> Maybe Text
version} -> Maybe Text
version) (\s :: Nodegroup
s@Nodegroup' {} Maybe Text
a -> Nodegroup
s {$sel:version:Nodegroup' :: Maybe Text
version = Maybe Text
a} :: Nodegroup)

-- | The Amazon Resource Name (ARN) associated with the managed node group.
nodegroup_nodegroupArn :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_nodegroupArn :: (Maybe Text -> f (Maybe Text)) -> Nodegroup -> f Nodegroup
nodegroup_nodegroupArn = (Nodegroup -> Maybe Text)
-> (Nodegroup -> Maybe Text -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe Text
nodegroupArn :: Maybe Text
$sel:nodegroupArn:Nodegroup' :: Nodegroup -> Maybe Text
nodegroupArn} -> Maybe Text
nodegroupArn) (\s :: Nodegroup
s@Nodegroup' {} Maybe Text
a -> Nodegroup
s {$sel:nodegroupArn:Nodegroup' :: Maybe Text
nodegroupArn = Maybe Text
a} :: Nodegroup)

-- | The name of the cluster that the managed node group resides in.
nodegroup_clusterName :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_clusterName :: (Maybe Text -> f (Maybe Text)) -> Nodegroup -> f Nodegroup
nodegroup_clusterName = (Nodegroup -> Maybe Text)
-> (Nodegroup -> Maybe Text -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe Text
clusterName :: Maybe Text
$sel:clusterName:Nodegroup' :: Nodegroup -> Maybe Text
clusterName} -> Maybe Text
clusterName) (\s :: Nodegroup
s@Nodegroup' {} Maybe Text
a -> Nodegroup
s {$sel:clusterName:Nodegroup' :: Maybe Text
clusterName = Maybe Text
a} :: Nodegroup)

-- | If a launch template was used to create the node group, then this is the
-- launch template that was used.
nodegroup_launchTemplate :: Lens.Lens' Nodegroup (Prelude.Maybe LaunchTemplateSpecification)
nodegroup_launchTemplate :: (Maybe LaunchTemplateSpecification
 -> f (Maybe LaunchTemplateSpecification))
-> Nodegroup -> f Nodegroup
nodegroup_launchTemplate = (Nodegroup -> Maybe LaunchTemplateSpecification)
-> (Nodegroup -> Maybe LaunchTemplateSpecification -> Nodegroup)
-> Lens
     Nodegroup
     Nodegroup
     (Maybe LaunchTemplateSpecification)
     (Maybe LaunchTemplateSpecification)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe LaunchTemplateSpecification
launchTemplate :: Maybe LaunchTemplateSpecification
$sel:launchTemplate:Nodegroup' :: Nodegroup -> Maybe LaunchTemplateSpecification
launchTemplate} -> Maybe LaunchTemplateSpecification
launchTemplate) (\s :: Nodegroup
s@Nodegroup' {} Maybe LaunchTemplateSpecification
a -> Nodegroup
s {$sel:launchTemplate:Nodegroup' :: Maybe LaunchTemplateSpecification
launchTemplate = Maybe LaunchTemplateSpecification
a} :: Nodegroup)

-- | The Kubernetes labels applied to the nodes in the node group.
--
-- Only labels that are applied with the Amazon EKS API are shown here.
-- There may be other Kubernetes labels applied to the nodes in this group.
nodegroup_labels :: Lens.Lens' Nodegroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
nodegroup_labels :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Nodegroup -> f Nodegroup
nodegroup_labels = (Nodegroup -> Maybe (HashMap Text Text))
-> (Nodegroup -> Maybe (HashMap Text Text) -> Nodegroup)
-> Lens
     Nodegroup
     Nodegroup
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe (HashMap Text Text)
labels :: Maybe (HashMap Text Text)
$sel:labels:Nodegroup' :: Nodegroup -> Maybe (HashMap Text Text)
labels} -> Maybe (HashMap Text Text)
labels) (\s :: Nodegroup
s@Nodegroup' {} Maybe (HashMap Text Text)
a -> Nodegroup
s {$sel:labels:Nodegroup' :: Maybe (HashMap Text Text)
labels = Maybe (HashMap Text Text)
a} :: Nodegroup) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> Nodegroup -> f Nodegroup)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Nodegroup
-> f Nodegroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | If the node group was deployed using a launch template with a custom
-- AMI, then this is @CUSTOM@. For node groups that weren\'t deployed using
-- a launch template, this is the AMI type that was specified in the node
-- group configuration.
nodegroup_amiType :: Lens.Lens' Nodegroup (Prelude.Maybe AMITypes)
nodegroup_amiType :: (Maybe AMITypes -> f (Maybe AMITypes)) -> Nodegroup -> f Nodegroup
nodegroup_amiType = (Nodegroup -> Maybe AMITypes)
-> (Nodegroup -> Maybe AMITypes -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe AMITypes) (Maybe AMITypes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe AMITypes
amiType :: Maybe AMITypes
$sel:amiType:Nodegroup' :: Nodegroup -> Maybe AMITypes
amiType} -> Maybe AMITypes
amiType) (\s :: Nodegroup
s@Nodegroup' {} Maybe AMITypes
a -> Nodegroup
s {$sel:amiType:Nodegroup' :: Maybe AMITypes
amiType = Maybe AMITypes
a} :: Nodegroup)

-- | The name associated with an Amazon EKS managed node group.
nodegroup_nodegroupName :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_nodegroupName :: (Maybe Text -> f (Maybe Text)) -> Nodegroup -> f Nodegroup
nodegroup_nodegroupName = (Nodegroup -> Maybe Text)
-> (Nodegroup -> Maybe Text -> Nodegroup)
-> Lens Nodegroup Nodegroup (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe Text
nodegroupName :: Maybe Text
$sel:nodegroupName:Nodegroup' :: Nodegroup -> Maybe Text
nodegroupName} -> Maybe Text
nodegroupName) (\s :: Nodegroup
s@Nodegroup' {} Maybe Text
a -> Nodegroup
s {$sel:nodegroupName:Nodegroup' :: Maybe Text
nodegroupName = Maybe Text
a} :: Nodegroup)

-- | The node group update configuration.
nodegroup_updateConfig :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupUpdateConfig)
nodegroup_updateConfig :: (Maybe NodegroupUpdateConfig -> f (Maybe NodegroupUpdateConfig))
-> Nodegroup -> f Nodegroup
nodegroup_updateConfig = (Nodegroup -> Maybe NodegroupUpdateConfig)
-> (Nodegroup -> Maybe NodegroupUpdateConfig -> Nodegroup)
-> Lens
     Nodegroup
     Nodegroup
     (Maybe NodegroupUpdateConfig)
     (Maybe NodegroupUpdateConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe NodegroupUpdateConfig
updateConfig :: Maybe NodegroupUpdateConfig
$sel:updateConfig:Nodegroup' :: Nodegroup -> Maybe NodegroupUpdateConfig
updateConfig} -> Maybe NodegroupUpdateConfig
updateConfig) (\s :: Nodegroup
s@Nodegroup' {} Maybe NodegroupUpdateConfig
a -> Nodegroup
s {$sel:updateConfig:Nodegroup' :: Maybe NodegroupUpdateConfig
updateConfig = Maybe NodegroupUpdateConfig
a} :: Nodegroup)

-- | The metadata applied to the node group to assist with categorization and
-- organization. Each tag consists of a key and an optional value, both of
-- which you define. Node group tags do not propagate to any other
-- resources associated with the node group, such as the Amazon EC2
-- instances or subnets.
nodegroup_tags :: Lens.Lens' Nodegroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
nodegroup_tags :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Nodegroup -> f Nodegroup
nodegroup_tags = (Nodegroup -> Maybe (HashMap Text Text))
-> (Nodegroup -> Maybe (HashMap Text Text) -> Nodegroup)
-> Lens
     Nodegroup
     Nodegroup
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Nodegroup' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:Nodegroup' :: Nodegroup -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: Nodegroup
s@Nodegroup' {} Maybe (HashMap Text Text)
a -> Nodegroup
s {$sel:tags:Nodegroup' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: Nodegroup) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> Nodegroup -> f Nodegroup)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Nodegroup
-> f Nodegroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.FromJSON Nodegroup where
  parseJSON :: Value -> Parser Nodegroup
parseJSON =
    String -> (Object -> Parser Nodegroup) -> Value -> Parser Nodegroup
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Nodegroup"
      ( \Object
x ->
          Maybe POSIX
-> Maybe CapacityTypes
-> Maybe NodegroupStatus
-> Maybe [Text]
-> Maybe POSIX
-> Maybe [Taint]
-> Maybe [Text]
-> Maybe RemoteAccessConfig
-> Maybe Int
-> Maybe Text
-> Maybe NodegroupResources
-> Maybe NodegroupHealth
-> Maybe Text
-> Maybe NodegroupScalingConfig
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe LaunchTemplateSpecification
-> Maybe (HashMap Text Text)
-> Maybe AMITypes
-> Maybe Text
-> Maybe NodegroupUpdateConfig
-> Maybe (HashMap Text Text)
-> Nodegroup
Nodegroup'
            (Maybe POSIX
 -> Maybe CapacityTypes
 -> Maybe NodegroupStatus
 -> Maybe [Text]
 -> Maybe POSIX
 -> Maybe [Taint]
 -> Maybe [Text]
 -> Maybe RemoteAccessConfig
 -> Maybe Int
 -> Maybe Text
 -> Maybe NodegroupResources
 -> Maybe NodegroupHealth
 -> Maybe Text
 -> Maybe NodegroupScalingConfig
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe LaunchTemplateSpecification
 -> Maybe (HashMap Text Text)
 -> Maybe AMITypes
 -> Maybe Text
 -> Maybe NodegroupUpdateConfig
 -> Maybe (HashMap Text Text)
 -> Nodegroup)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe CapacityTypes
      -> Maybe NodegroupStatus
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Taint]
      -> Maybe [Text]
      -> Maybe RemoteAccessConfig
      -> Maybe Int
      -> Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"modifiedAt")
            Parser
  (Maybe CapacityTypes
   -> Maybe NodegroupStatus
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Taint]
   -> Maybe [Text]
   -> Maybe RemoteAccessConfig
   -> Maybe Int
   -> Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe CapacityTypes)
-> Parser
     (Maybe NodegroupStatus
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Taint]
      -> Maybe [Text]
      -> Maybe RemoteAccessConfig
      -> Maybe Int
      -> Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CapacityTypes)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"capacityType")
            Parser
  (Maybe NodegroupStatus
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Taint]
   -> Maybe [Text]
   -> Maybe RemoteAccessConfig
   -> Maybe Int
   -> Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe NodegroupStatus)
-> Parser
     (Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Taint]
      -> Maybe [Text]
      -> Maybe RemoteAccessConfig
      -> Maybe Int
      -> Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NodegroupStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"status")
            Parser
  (Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Taint]
   -> Maybe [Text]
   -> Maybe RemoteAccessConfig
   -> Maybe Int
   -> Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe [Text])
-> Parser
     (Maybe POSIX
      -> Maybe [Taint]
      -> Maybe [Text]
      -> Maybe RemoteAccessConfig
      -> Maybe Int
      -> Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"instanceTypes" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe POSIX
   -> Maybe [Taint]
   -> Maybe [Text]
   -> Maybe RemoteAccessConfig
   -> Maybe Int
   -> Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe [Taint]
      -> Maybe [Text]
      -> Maybe RemoteAccessConfig
      -> Maybe Int
      -> Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"createdAt")
            Parser
  (Maybe [Taint]
   -> Maybe [Text]
   -> Maybe RemoteAccessConfig
   -> Maybe Int
   -> Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe [Taint])
-> Parser
     (Maybe [Text]
      -> Maybe RemoteAccessConfig
      -> Maybe Int
      -> Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Taint]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"taints" Parser (Maybe (Maybe [Taint]))
-> Maybe [Taint] -> Parser (Maybe [Taint])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Taint]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe [Text]
   -> Maybe RemoteAccessConfig
   -> Maybe Int
   -> Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe [Text])
-> Parser
     (Maybe RemoteAccessConfig
      -> Maybe Int
      -> Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"subnets" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe RemoteAccessConfig
   -> Maybe Int
   -> Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe RemoteAccessConfig)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RemoteAccessConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"remoteAccess")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"diskSize")
            Parser
  (Maybe Text
   -> Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe Text)
-> Parser
     (Maybe NodegroupResources
      -> Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"releaseVersion")
            Parser
  (Maybe NodegroupResources
   -> Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe NodegroupResources)
-> Parser
     (Maybe NodegroupHealth
      -> Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NodegroupResources)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"resources")
            Parser
  (Maybe NodegroupHealth
   -> Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe NodegroupHealth)
-> Parser
     (Maybe Text
      -> Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NodegroupHealth)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"health")
            Parser
  (Maybe Text
   -> Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe Text)
-> Parser
     (Maybe NodegroupScalingConfig
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"nodeRole")
            Parser
  (Maybe NodegroupScalingConfig
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe NodegroupScalingConfig)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NodegroupScalingConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"scalingConfig")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"version")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"nodegroupArn")
            Parser
  (Maybe Text
   -> Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe Text)
-> Parser
     (Maybe LaunchTemplateSpecification
      -> Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clusterName")
            Parser
  (Maybe LaunchTemplateSpecification
   -> Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe LaunchTemplateSpecification)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LaunchTemplateSpecification)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"launchTemplate")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe AMITypes
      -> Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"labels" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe AMITypes
   -> Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe AMITypes)
-> Parser
     (Maybe Text
      -> Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text)
      -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AMITypes)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"amiType")
            Parser
  (Maybe Text
   -> Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text)
   -> Nodegroup)
-> Parser (Maybe Text)
-> Parser
     (Maybe NodegroupUpdateConfig
      -> Maybe (HashMap Text Text) -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"nodegroupName")
            Parser
  (Maybe NodegroupUpdateConfig
   -> Maybe (HashMap Text Text) -> Nodegroup)
-> Parser (Maybe NodegroupUpdateConfig)
-> Parser (Maybe (HashMap Text Text) -> Nodegroup)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NodegroupUpdateConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"updateConfig")
            Parser (Maybe (HashMap Text Text) -> Nodegroup)
-> Parser (Maybe (HashMap Text Text)) -> Parser Nodegroup
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tags" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable Nodegroup

instance Prelude.NFData Nodegroup