{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.EKS.Types.Nodegroup where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
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.Prelude as Prelude

-- | An object representing an Amazon EKS managed node group.
--
-- /See:/ 'newNodegroup' smart constructor.
data Nodegroup = Nodegroup'
  { -- | 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 capacity type of your managed node group.
    Nodegroup -> Maybe CapacityTypes
capacityType :: Prelude.Maybe CapacityTypes,
    -- | The name of the cluster that the managed node group resides in.
    Nodegroup -> Maybe Text
clusterName :: Prelude.Maybe Prelude.Text,
    -- | The Unix epoch timestamp in seconds for when the managed node group was
    -- created.
    Nodegroup -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
    -- | 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,
    -- | 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,
    -- | 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 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 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 Unix epoch timestamp in seconds for when the managed node group was
    -- last modified.
    Nodegroup -> Maybe POSIX
modifiedAt :: Prelude.Maybe Data.POSIX,
    -- | 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 Amazon Resource Name (ARN) associated with the managed node group.
    Nodegroup -> Maybe Text
nodegroupArn :: Prelude.Maybe Prelude.Text,
    -- | The name associated with an Amazon EKS managed node group.
    Nodegroup -> Maybe Text
nodegroupName :: Prelude.Maybe Prelude.Text,
    -- | 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,
    -- | 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,
    -- | 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 scaling configuration details for the Auto Scaling group that is
    -- associated with your node group.
    Nodegroup -> Maybe NodegroupScalingConfig
scalingConfig :: Prelude.Maybe NodegroupScalingConfig,
    -- | The current status of the managed node group.
    Nodegroup -> Maybe NodegroupStatus
status :: Prelude.Maybe NodegroupStatus,
    -- | 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],
    -- | The metadata applied to the node group to assist with categorization and
    -- organization. Each tag consists of a key and an optional value. You
    -- define both. 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),
    -- | 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. For more
    -- information, see
    -- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.
    Nodegroup -> Maybe [Taint]
taints :: Prelude.Maybe [Taint],
    -- | The node group update configuration.
    Nodegroup -> Maybe NodegroupUpdateConfig
updateConfig :: Prelude.Maybe NodegroupUpdateConfig,
    -- | The Kubernetes version of the managed node group.
    Nodegroup -> Maybe Text
version :: Prelude.Maybe Prelude.Text
  }
  deriving (Nodegroup -> Nodegroup -> Bool
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]
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
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. 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:
--
-- '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.
--
-- 'capacityType', 'nodegroup_capacityType' - The capacity type of your managed node group.
--
-- 'clusterName', 'nodegroup_clusterName' - The name of the cluster that the managed node group resides in.
--
-- 'createdAt', 'nodegroup_createdAt' - The Unix epoch timestamp in seconds for when the managed node group was
-- created.
--
-- '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@.
--
-- 'health', 'nodegroup_health' - The health status of the node group. If there are issues with your node
-- group\'s health, they are listed here.
--
-- '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@.
--
-- '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.
--
-- 'launchTemplate', 'nodegroup_launchTemplate' - If a launch template was used to create the node group, then this is the
-- launch template that was used.
--
-- 'modifiedAt', 'nodegroup_modifiedAt' - The Unix epoch timestamp in seconds for when the managed node group was
-- last modified.
--
-- '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.
--
-- 'nodegroupArn', 'nodegroup_nodegroupArn' - The Amazon Resource Name (ARN) associated with the managed node group.
--
-- 'nodegroupName', 'nodegroup_nodegroupName' - The name associated with an Amazon EKS managed node group.
--
-- '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.
--
-- '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@.
--
-- 'resources', 'nodegroup_resources' - The resources associated with the node group, such as Auto Scaling
-- groups and security groups for remote access.
--
-- 'scalingConfig', 'nodegroup_scalingConfig' - The scaling configuration details for the Auto Scaling group that is
-- associated with your node group.
--
-- 'status', 'nodegroup_status' - The current status of the managed node group.
--
-- 'subnets', 'nodegroup_subnets' - The subnets that were specified for the Auto Scaling group that is
-- associated with your node group.
--
-- '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. You
-- define both. Node group tags do not propagate to any other resources
-- associated with the node group, such as the Amazon EC2 instances or
-- subnets.
--
-- '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. For more
-- information, see
-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.
--
-- 'updateConfig', 'nodegroup_updateConfig' - The node group update configuration.
--
-- 'version', 'nodegroup_version' - The Kubernetes version of the managed node group.
newNodegroup ::
  Nodegroup
newNodegroup :: Nodegroup
newNodegroup =
  Nodegroup'
    { $sel:amiType:Nodegroup' :: Maybe AMITypes
amiType = forall a. Maybe a
Prelude.Nothing,
      $sel:capacityType:Nodegroup' :: Maybe CapacityTypes
capacityType = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterName:Nodegroup' :: Maybe Text
clusterName = forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:Nodegroup' :: Maybe POSIX
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:diskSize:Nodegroup' :: Maybe Int
diskSize = forall a. Maybe a
Prelude.Nothing,
      $sel:health:Nodegroup' :: Maybe NodegroupHealth
health = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceTypes:Nodegroup' :: Maybe [Text]
instanceTypes = forall a. Maybe a
Prelude.Nothing,
      $sel:labels:Nodegroup' :: Maybe (HashMap Text Text)
labels = forall a. Maybe a
Prelude.Nothing,
      $sel:launchTemplate:Nodegroup' :: Maybe LaunchTemplateSpecification
launchTemplate = forall a. Maybe a
Prelude.Nothing,
      $sel:modifiedAt:Nodegroup' :: Maybe POSIX
modifiedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:nodeRole:Nodegroup' :: Maybe Text
nodeRole = forall a. Maybe a
Prelude.Nothing,
      $sel:nodegroupArn:Nodegroup' :: Maybe Text
nodegroupArn = forall a. Maybe a
Prelude.Nothing,
      $sel:nodegroupName:Nodegroup' :: Maybe Text
nodegroupName = forall a. Maybe a
Prelude.Nothing,
      $sel:releaseVersion:Nodegroup' :: Maybe Text
releaseVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:remoteAccess:Nodegroup' :: Maybe RemoteAccessConfig
remoteAccess = forall a. Maybe a
Prelude.Nothing,
      $sel:resources:Nodegroup' :: Maybe NodegroupResources
resources = forall a. Maybe a
Prelude.Nothing,
      $sel:scalingConfig:Nodegroup' :: Maybe NodegroupScalingConfig
scalingConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:status:Nodegroup' :: Maybe NodegroupStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:subnets:Nodegroup' :: Maybe [Text]
subnets = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Nodegroup' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:taints:Nodegroup' :: Maybe [Taint]
taints = forall a. Maybe a
Prelude.Nothing,
      $sel:updateConfig:Nodegroup' :: Maybe NodegroupUpdateConfig
updateConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:version:Nodegroup' :: Maybe Text
version = forall a. Maybe a
Prelude.Nothing
    }

-- | 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 :: Lens' Nodegroup (Maybe AMITypes)
nodegroup_amiType = 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 capacity type of your managed node group.
nodegroup_capacityType :: Lens.Lens' Nodegroup (Prelude.Maybe CapacityTypes)
nodegroup_capacityType :: Lens' Nodegroup (Maybe CapacityTypes)
nodegroup_capacityType = 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 name of the cluster that the managed node group resides in.
nodegroup_clusterName :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_clusterName :: Lens' Nodegroup (Maybe Text)
nodegroup_clusterName = 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)

-- | 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 :: Lens' Nodegroup (Maybe UTCTime)
nodegroup_createdAt = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | 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 :: Lens' Nodegroup (Maybe Int)
nodegroup_diskSize = 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)

-- | 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 :: Lens' Nodegroup (Maybe NodegroupHealth)
nodegroup_health = 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)

-- | 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 :: Lens' Nodegroup (Maybe [Text])
nodegroup_instanceTypes = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The 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 :: Lens' Nodegroup (Maybe (HashMap Text Text))
nodegroup_labels = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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 :: Lens' Nodegroup (Maybe LaunchTemplateSpecification)
nodegroup_launchTemplate = 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 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 :: Lens' Nodegroup (Maybe UTCTime)
nodegroup_modifiedAt = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | 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 :: Lens' Nodegroup (Maybe Text)
nodegroup_nodeRole = 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 Amazon Resource Name (ARN) associated with the managed node group.
nodegroup_nodegroupArn :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_nodegroupArn :: Lens' Nodegroup (Maybe Text)
nodegroup_nodegroupArn = 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 associated with an Amazon EKS managed node group.
nodegroup_nodegroupName :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_nodegroupName :: Lens' Nodegroup (Maybe Text)
nodegroup_nodegroupName = 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)

-- | 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 :: Lens' Nodegroup (Maybe Text)
nodegroup_releaseVersion = 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)

-- | 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 :: Lens' Nodegroup (Maybe RemoteAccessConfig)
nodegroup_remoteAccess = 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)

-- | 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 :: Lens' Nodegroup (Maybe NodegroupResources)
nodegroup_resources = 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 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 :: Lens' Nodegroup (Maybe NodegroupScalingConfig)
nodegroup_scalingConfig = 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 current status of the managed node group.
nodegroup_status :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupStatus)
nodegroup_status :: Lens' Nodegroup (Maybe NodegroupStatus)
nodegroup_status = 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)

-- | 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 :: Lens' Nodegroup (Maybe [Text])
nodegroup_subnets = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The metadata applied to the node group to assist with categorization and
-- organization. Each tag consists of a key and an optional value. You
-- define both. 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 :: Lens' Nodegroup (Maybe (HashMap Text Text))
nodegroup_tags = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The 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. For more
-- information, see
-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.
nodegroup_taints :: Lens.Lens' Nodegroup (Prelude.Maybe [Taint])
nodegroup_taints :: Lens' Nodegroup (Maybe [Taint])
nodegroup_taints = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The node group update configuration.
nodegroup_updateConfig :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupUpdateConfig)
nodegroup_updateConfig :: Lens' Nodegroup (Maybe NodegroupUpdateConfig)
nodegroup_updateConfig = 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 Kubernetes version of the managed node group.
nodegroup_version :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)
nodegroup_version :: Lens' Nodegroup (Maybe Text)
nodegroup_version = 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)

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

instance Prelude.Hashable Nodegroup where
  hashWithSalt :: Int -> Nodegroup -> Int
hashWithSalt Int
_salt Nodegroup' {Maybe Int
Maybe [Text]
Maybe [Taint]
Maybe Text
Maybe (HashMap Text Text)
Maybe POSIX
Maybe AMITypes
Maybe CapacityTypes
Maybe LaunchTemplateSpecification
Maybe NodegroupHealth
Maybe NodegroupResources
Maybe NodegroupScalingConfig
Maybe NodegroupStatus
Maybe NodegroupUpdateConfig
Maybe RemoteAccessConfig
version :: Maybe Text
updateConfig :: Maybe NodegroupUpdateConfig
taints :: Maybe [Taint]
tags :: Maybe (HashMap Text Text)
subnets :: Maybe [Text]
status :: Maybe NodegroupStatus
scalingConfig :: Maybe NodegroupScalingConfig
resources :: Maybe NodegroupResources
remoteAccess :: Maybe RemoteAccessConfig
releaseVersion :: Maybe Text
nodegroupName :: Maybe Text
nodegroupArn :: Maybe Text
nodeRole :: Maybe Text
modifiedAt :: Maybe POSIX
launchTemplate :: Maybe LaunchTemplateSpecification
labels :: Maybe (HashMap Text Text)
instanceTypes :: Maybe [Text]
health :: Maybe NodegroupHealth
diskSize :: Maybe Int
createdAt :: Maybe POSIX
clusterName :: Maybe Text
capacityType :: Maybe CapacityTypes
amiType :: Maybe AMITypes
$sel:version:Nodegroup' :: Nodegroup -> Maybe Text
$sel:updateConfig:Nodegroup' :: Nodegroup -> Maybe NodegroupUpdateConfig
$sel:taints:Nodegroup' :: Nodegroup -> Maybe [Taint]
$sel:tags:Nodegroup' :: Nodegroup -> Maybe (HashMap Text Text)
$sel:subnets:Nodegroup' :: Nodegroup -> Maybe [Text]
$sel:status:Nodegroup' :: Nodegroup -> Maybe NodegroupStatus
$sel:scalingConfig:Nodegroup' :: Nodegroup -> Maybe NodegroupScalingConfig
$sel:resources:Nodegroup' :: Nodegroup -> Maybe NodegroupResources
$sel:remoteAccess:Nodegroup' :: Nodegroup -> Maybe RemoteAccessConfig
$sel:releaseVersion:Nodegroup' :: Nodegroup -> Maybe Text
$sel:nodegroupName:Nodegroup' :: Nodegroup -> Maybe Text
$sel:nodegroupArn:Nodegroup' :: Nodegroup -> Maybe Text
$sel:nodeRole:Nodegroup' :: Nodegroup -> Maybe Text
$sel:modifiedAt:Nodegroup' :: Nodegroup -> Maybe POSIX
$sel:launchTemplate:Nodegroup' :: Nodegroup -> Maybe LaunchTemplateSpecification
$sel:labels:Nodegroup' :: Nodegroup -> Maybe (HashMap Text Text)
$sel:instanceTypes:Nodegroup' :: Nodegroup -> Maybe [Text]
$sel:health:Nodegroup' :: Nodegroup -> Maybe NodegroupHealth
$sel:diskSize:Nodegroup' :: Nodegroup -> Maybe Int
$sel:createdAt:Nodegroup' :: Nodegroup -> Maybe POSIX
$sel:clusterName:Nodegroup' :: Nodegroup -> Maybe Text
$sel:capacityType:Nodegroup' :: Nodegroup -> Maybe CapacityTypes
$sel:amiType:Nodegroup' :: Nodegroup -> Maybe AMITypes
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AMITypes
amiType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CapacityTypes
capacityType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
diskSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NodegroupHealth
health
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
instanceTypes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
labels
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateSpecification
launchTemplate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
modifiedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nodeRole
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nodegroupArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nodegroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
releaseVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RemoteAccessConfig
remoteAccess
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NodegroupResources
resources
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NodegroupScalingConfig
scalingConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NodegroupStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
subnets
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Taint]
taints
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NodegroupUpdateConfig
updateConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
version

instance Prelude.NFData Nodegroup where
  rnf :: Nodegroup -> ()
rnf Nodegroup' {Maybe Int
Maybe [Text]
Maybe [Taint]
Maybe Text
Maybe (HashMap Text Text)
Maybe POSIX
Maybe AMITypes
Maybe CapacityTypes
Maybe LaunchTemplateSpecification
Maybe NodegroupHealth
Maybe NodegroupResources
Maybe NodegroupScalingConfig
Maybe NodegroupStatus
Maybe NodegroupUpdateConfig
Maybe RemoteAccessConfig
version :: Maybe Text
updateConfig :: Maybe NodegroupUpdateConfig
taints :: Maybe [Taint]
tags :: Maybe (HashMap Text Text)
subnets :: Maybe [Text]
status :: Maybe NodegroupStatus
scalingConfig :: Maybe NodegroupScalingConfig
resources :: Maybe NodegroupResources
remoteAccess :: Maybe RemoteAccessConfig
releaseVersion :: Maybe Text
nodegroupName :: Maybe Text
nodegroupArn :: Maybe Text
nodeRole :: Maybe Text
modifiedAt :: Maybe POSIX
launchTemplate :: Maybe LaunchTemplateSpecification
labels :: Maybe (HashMap Text Text)
instanceTypes :: Maybe [Text]
health :: Maybe NodegroupHealth
diskSize :: Maybe Int
createdAt :: Maybe POSIX
clusterName :: Maybe Text
capacityType :: Maybe CapacityTypes
amiType :: Maybe AMITypes
$sel:version:Nodegroup' :: Nodegroup -> Maybe Text
$sel:updateConfig:Nodegroup' :: Nodegroup -> Maybe NodegroupUpdateConfig
$sel:taints:Nodegroup' :: Nodegroup -> Maybe [Taint]
$sel:tags:Nodegroup' :: Nodegroup -> Maybe (HashMap Text Text)
$sel:subnets:Nodegroup' :: Nodegroup -> Maybe [Text]
$sel:status:Nodegroup' :: Nodegroup -> Maybe NodegroupStatus
$sel:scalingConfig:Nodegroup' :: Nodegroup -> Maybe NodegroupScalingConfig
$sel:resources:Nodegroup' :: Nodegroup -> Maybe NodegroupResources
$sel:remoteAccess:Nodegroup' :: Nodegroup -> Maybe RemoteAccessConfig
$sel:releaseVersion:Nodegroup' :: Nodegroup -> Maybe Text
$sel:nodegroupName:Nodegroup' :: Nodegroup -> Maybe Text
$sel:nodegroupArn:Nodegroup' :: Nodegroup -> Maybe Text
$sel:nodeRole:Nodegroup' :: Nodegroup -> Maybe Text
$sel:modifiedAt:Nodegroup' :: Nodegroup -> Maybe POSIX
$sel:launchTemplate:Nodegroup' :: Nodegroup -> Maybe LaunchTemplateSpecification
$sel:labels:Nodegroup' :: Nodegroup -> Maybe (HashMap Text Text)
$sel:instanceTypes:Nodegroup' :: Nodegroup -> Maybe [Text]
$sel:health:Nodegroup' :: Nodegroup -> Maybe NodegroupHealth
$sel:diskSize:Nodegroup' :: Nodegroup -> Maybe Int
$sel:createdAt:Nodegroup' :: Nodegroup -> Maybe POSIX
$sel:clusterName:Nodegroup' :: Nodegroup -> Maybe Text
$sel:capacityType:Nodegroup' :: Nodegroup -> Maybe CapacityTypes
$sel:amiType:Nodegroup' :: Nodegroup -> Maybe AMITypes
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AMITypes
amiType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CapacityTypes
capacityType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
diskSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NodegroupHealth
health
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
instanceTypes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
labels
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchTemplateSpecification
launchTemplate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
modifiedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nodeRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nodegroupArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nodegroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
releaseVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RemoteAccessConfig
remoteAccess
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NodegroupResources
resources
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NodegroupScalingConfig
scalingConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NodegroupStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
subnets
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Taint]
taints
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NodegroupUpdateConfig
updateConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
version