module Stratosphere.EKS.Nodegroup ( module Exports, Nodegroup(..), mkNodegroup ) where import qualified Data.Aeson as JSON import qualified Stratosphere.Prelude as Prelude import Stratosphere.Property import {-# SOURCE #-} Stratosphere.EKS.Nodegroup.LaunchTemplateSpecificationProperty as Exports import {-# SOURCE #-} Stratosphere.EKS.Nodegroup.NodeRepairConfigProperty as Exports import {-# SOURCE #-} Stratosphere.EKS.Nodegroup.RemoteAccessProperty as Exports import {-# SOURCE #-} Stratosphere.EKS.Nodegroup.ScalingConfigProperty as Exports import {-# SOURCE #-} Stratosphere.EKS.Nodegroup.TaintProperty as Exports import {-# SOURCE #-} Stratosphere.EKS.Nodegroup.UpdateConfigProperty as Exports import Stratosphere.ResourceProperties import Stratosphere.Value data Nodegroup = -- | See: Nodegroup {haddock_workaround_ :: (), -- | See: amiType :: (Prelude.Maybe (Value Prelude.Text)), -- | See: capacityType :: (Prelude.Maybe (Value Prelude.Text)), -- | See: clusterName :: (Value Prelude.Text), -- | See: diskSize :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: forceUpdateEnabled :: (Prelude.Maybe (Value Prelude.Bool)), -- | See: instanceTypes :: (Prelude.Maybe (ValueList Prelude.Text)), -- | See: labels :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))), -- | See: launchTemplate :: (Prelude.Maybe LaunchTemplateSpecificationProperty), -- | See: nodeRepairConfig :: (Prelude.Maybe NodeRepairConfigProperty), -- | See: nodeRole :: (Value Prelude.Text), -- | See: nodegroupName :: (Prelude.Maybe (Value Prelude.Text)), -- | See: releaseVersion :: (Prelude.Maybe (Value Prelude.Text)), -- | See: remoteAccess :: (Prelude.Maybe RemoteAccessProperty), -- | See: scalingConfig :: (Prelude.Maybe ScalingConfigProperty), -- | See: subnets :: (ValueList Prelude.Text), -- | See: tags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))), -- | See: taints :: (Prelude.Maybe [TaintProperty]), -- | See: updateConfig :: (Prelude.Maybe UpdateConfigProperty), -- | See: version :: (Prelude.Maybe (Value Prelude.Text))} deriving stock (Prelude.Eq, Prelude.Show) mkNodegroup :: Value Prelude.Text -> Value Prelude.Text -> ValueList Prelude.Text -> Nodegroup mkNodegroup clusterName nodeRole subnets = Nodegroup {haddock_workaround_ = (), clusterName = clusterName, nodeRole = nodeRole, subnets = subnets, amiType = Prelude.Nothing, capacityType = Prelude.Nothing, diskSize = Prelude.Nothing, forceUpdateEnabled = Prelude.Nothing, instanceTypes = Prelude.Nothing, labels = Prelude.Nothing, launchTemplate = Prelude.Nothing, nodeRepairConfig = Prelude.Nothing, nodegroupName = Prelude.Nothing, releaseVersion = Prelude.Nothing, remoteAccess = Prelude.Nothing, scalingConfig = Prelude.Nothing, tags = Prelude.Nothing, taints = Prelude.Nothing, updateConfig = Prelude.Nothing, version = Prelude.Nothing} instance ToResourceProperties Nodegroup where toResourceProperties Nodegroup {..} = ResourceProperties {awsType = "AWS::EKS::Nodegroup", supportsTags = Prelude.True, properties = Prelude.fromList ((Prelude.<>) ["ClusterName" JSON..= clusterName, "NodeRole" JSON..= nodeRole, "Subnets" JSON..= subnets] (Prelude.catMaybes [(JSON..=) "AmiType" Prelude.<$> amiType, (JSON..=) "CapacityType" Prelude.<$> capacityType, (JSON..=) "DiskSize" Prelude.<$> diskSize, (JSON..=) "ForceUpdateEnabled" Prelude.<$> forceUpdateEnabled, (JSON..=) "InstanceTypes" Prelude.<$> instanceTypes, (JSON..=) "Labels" Prelude.<$> labels, (JSON..=) "LaunchTemplate" Prelude.<$> launchTemplate, (JSON..=) "NodeRepairConfig" Prelude.<$> nodeRepairConfig, (JSON..=) "NodegroupName" Prelude.<$> nodegroupName, (JSON..=) "ReleaseVersion" Prelude.<$> releaseVersion, (JSON..=) "RemoteAccess" Prelude.<$> remoteAccess, (JSON..=) "ScalingConfig" Prelude.<$> scalingConfig, (JSON..=) "Tags" Prelude.<$> tags, (JSON..=) "Taints" Prelude.<$> taints, (JSON..=) "UpdateConfig" Prelude.<$> updateConfig, (JSON..=) "Version" Prelude.<$> version]))} instance JSON.ToJSON Nodegroup where toJSON Nodegroup {..} = JSON.object (Prelude.fromList ((Prelude.<>) ["ClusterName" JSON..= clusterName, "NodeRole" JSON..= nodeRole, "Subnets" JSON..= subnets] (Prelude.catMaybes [(JSON..=) "AmiType" Prelude.<$> amiType, (JSON..=) "CapacityType" Prelude.<$> capacityType, (JSON..=) "DiskSize" Prelude.<$> diskSize, (JSON..=) "ForceUpdateEnabled" Prelude.<$> forceUpdateEnabled, (JSON..=) "InstanceTypes" Prelude.<$> instanceTypes, (JSON..=) "Labels" Prelude.<$> labels, (JSON..=) "LaunchTemplate" Prelude.<$> launchTemplate, (JSON..=) "NodeRepairConfig" Prelude.<$> nodeRepairConfig, (JSON..=) "NodegroupName" Prelude.<$> nodegroupName, (JSON..=) "ReleaseVersion" Prelude.<$> releaseVersion, (JSON..=) "RemoteAccess" Prelude.<$> remoteAccess, (JSON..=) "ScalingConfig" Prelude.<$> scalingConfig, (JSON..=) "Tags" Prelude.<$> tags, (JSON..=) "Taints" Prelude.<$> taints, (JSON..=) "UpdateConfig" Prelude.<$> updateConfig, (JSON..=) "Version" Prelude.<$> version]))) instance Property "AmiType" Nodegroup where type PropertyType "AmiType" Nodegroup = Value Prelude.Text set newValue Nodegroup {..} = Nodegroup {amiType = Prelude.pure newValue, ..} instance Property "CapacityType" Nodegroup where type PropertyType "CapacityType" Nodegroup = Value Prelude.Text set newValue Nodegroup {..} = Nodegroup {capacityType = Prelude.pure newValue, ..} instance Property "ClusterName" Nodegroup where type PropertyType "ClusterName" Nodegroup = Value Prelude.Text set newValue Nodegroup {..} = Nodegroup {clusterName = newValue, ..} instance Property "DiskSize" Nodegroup where type PropertyType "DiskSize" Nodegroup = Value Prelude.Integer set newValue Nodegroup {..} = Nodegroup {diskSize = Prelude.pure newValue, ..} instance Property "ForceUpdateEnabled" Nodegroup where type PropertyType "ForceUpdateEnabled" Nodegroup = Value Prelude.Bool set newValue Nodegroup {..} = Nodegroup {forceUpdateEnabled = Prelude.pure newValue, ..} instance Property "InstanceTypes" Nodegroup where type PropertyType "InstanceTypes" Nodegroup = ValueList Prelude.Text set newValue Nodegroup {..} = Nodegroup {instanceTypes = Prelude.pure newValue, ..} instance Property "Labels" Nodegroup where type PropertyType "Labels" Nodegroup = Prelude.Map Prelude.Text (Value Prelude.Text) set newValue Nodegroup {..} = Nodegroup {labels = Prelude.pure newValue, ..} instance Property "LaunchTemplate" Nodegroup where type PropertyType "LaunchTemplate" Nodegroup = LaunchTemplateSpecificationProperty set newValue Nodegroup {..} = Nodegroup {launchTemplate = Prelude.pure newValue, ..} instance Property "NodeRepairConfig" Nodegroup where type PropertyType "NodeRepairConfig" Nodegroup = NodeRepairConfigProperty set newValue Nodegroup {..} = Nodegroup {nodeRepairConfig = Prelude.pure newValue, ..} instance Property "NodeRole" Nodegroup where type PropertyType "NodeRole" Nodegroup = Value Prelude.Text set newValue Nodegroup {..} = Nodegroup {nodeRole = newValue, ..} instance Property "NodegroupName" Nodegroup where type PropertyType "NodegroupName" Nodegroup = Value Prelude.Text set newValue Nodegroup {..} = Nodegroup {nodegroupName = Prelude.pure newValue, ..} instance Property "ReleaseVersion" Nodegroup where type PropertyType "ReleaseVersion" Nodegroup = Value Prelude.Text set newValue Nodegroup {..} = Nodegroup {releaseVersion = Prelude.pure newValue, ..} instance Property "RemoteAccess" Nodegroup where type PropertyType "RemoteAccess" Nodegroup = RemoteAccessProperty set newValue Nodegroup {..} = Nodegroup {remoteAccess = Prelude.pure newValue, ..} instance Property "ScalingConfig" Nodegroup where type PropertyType "ScalingConfig" Nodegroup = ScalingConfigProperty set newValue Nodegroup {..} = Nodegroup {scalingConfig = Prelude.pure newValue, ..} instance Property "Subnets" Nodegroup where type PropertyType "Subnets" Nodegroup = ValueList Prelude.Text set newValue Nodegroup {..} = Nodegroup {subnets = newValue, ..} instance Property "Tags" Nodegroup where type PropertyType "Tags" Nodegroup = Prelude.Map Prelude.Text (Value Prelude.Text) set newValue Nodegroup {..} = Nodegroup {tags = Prelude.pure newValue, ..} instance Property "Taints" Nodegroup where type PropertyType "Taints" Nodegroup = [TaintProperty] set newValue Nodegroup {..} = Nodegroup {taints = Prelude.pure newValue, ..} instance Property "UpdateConfig" Nodegroup where type PropertyType "UpdateConfig" Nodegroup = UpdateConfigProperty set newValue Nodegroup {..} = Nodegroup {updateConfig = Prelude.pure newValue, ..} instance Property "Version" Nodegroup where type PropertyType "Version" Nodegroup = Value Prelude.Text set newValue Nodegroup {..} = Nodegroup {version = Prelude.pure newValue, ..}