{-# 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.DAX.Types.Node -- 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.DAX.Types.Node where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import Amazonka.DAX.Types.Endpoint import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude -- | Represents an individual node within a DAX cluster. -- -- /See:/ 'newNode' smart constructor. data Node = Node' { -- | The Availability Zone (AZ) in which the node has been deployed. availabilityZone :: Prelude.Maybe Prelude.Text, -- | The endpoint for the node, consisting of a DNS name and a port number. -- Client applications can connect directly to a node endpoint, if desired -- (as an alternative to allowing DAX client software to intelligently -- route requests and responses to nodes in the DAX cluster. endpoint :: Prelude.Maybe Endpoint, -- | The date and time (in UNIX epoch format) when the node was launched. nodeCreateTime :: Prelude.Maybe Data.POSIX, -- | A system-generated identifier for the node. nodeId :: Prelude.Maybe Prelude.Text, -- | The current status of the node. For example: @available@. nodeStatus :: Prelude.Maybe Prelude.Text, -- | The status of the parameter group associated with this node. For -- example, @in-sync@. parameterGroupStatus :: Prelude.Maybe Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'Node' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'availabilityZone', 'node_availabilityZone' - The Availability Zone (AZ) in which the node has been deployed. -- -- 'endpoint', 'node_endpoint' - The endpoint for the node, consisting of a DNS name and a port number. -- Client applications can connect directly to a node endpoint, if desired -- (as an alternative to allowing DAX client software to intelligently -- route requests and responses to nodes in the DAX cluster. -- -- 'nodeCreateTime', 'node_nodeCreateTime' - The date and time (in UNIX epoch format) when the node was launched. -- -- 'nodeId', 'node_nodeId' - A system-generated identifier for the node. -- -- 'nodeStatus', 'node_nodeStatus' - The current status of the node. For example: @available@. -- -- 'parameterGroupStatus', 'node_parameterGroupStatus' - The status of the parameter group associated with this node. For -- example, @in-sync@. newNode :: Node newNode = Node' { availabilityZone = Prelude.Nothing, endpoint = Prelude.Nothing, nodeCreateTime = Prelude.Nothing, nodeId = Prelude.Nothing, nodeStatus = Prelude.Nothing, parameterGroupStatus = Prelude.Nothing } -- | The Availability Zone (AZ) in which the node has been deployed. node_availabilityZone :: Lens.Lens' Node (Prelude.Maybe Prelude.Text) node_availabilityZone = Lens.lens (\Node' {availabilityZone} -> availabilityZone) (\s@Node' {} a -> s {availabilityZone = a} :: Node) -- | The endpoint for the node, consisting of a DNS name and a port number. -- Client applications can connect directly to a node endpoint, if desired -- (as an alternative to allowing DAX client software to intelligently -- route requests and responses to nodes in the DAX cluster. node_endpoint :: Lens.Lens' Node (Prelude.Maybe Endpoint) node_endpoint = Lens.lens (\Node' {endpoint} -> endpoint) (\s@Node' {} a -> s {endpoint = a} :: Node) -- | The date and time (in UNIX epoch format) when the node was launched. node_nodeCreateTime :: Lens.Lens' Node (Prelude.Maybe Prelude.UTCTime) node_nodeCreateTime = Lens.lens (\Node' {nodeCreateTime} -> nodeCreateTime) (\s@Node' {} a -> s {nodeCreateTime = a} :: Node) Prelude.. Lens.mapping Data._Time -- | A system-generated identifier for the node. node_nodeId :: Lens.Lens' Node (Prelude.Maybe Prelude.Text) node_nodeId = Lens.lens (\Node' {nodeId} -> nodeId) (\s@Node' {} a -> s {nodeId = a} :: Node) -- | The current status of the node. For example: @available@. node_nodeStatus :: Lens.Lens' Node (Prelude.Maybe Prelude.Text) node_nodeStatus = Lens.lens (\Node' {nodeStatus} -> nodeStatus) (\s@Node' {} a -> s {nodeStatus = a} :: Node) -- | The status of the parameter group associated with this node. For -- example, @in-sync@. node_parameterGroupStatus :: Lens.Lens' Node (Prelude.Maybe Prelude.Text) node_parameterGroupStatus = Lens.lens (\Node' {parameterGroupStatus} -> parameterGroupStatus) (\s@Node' {} a -> s {parameterGroupStatus = a} :: Node) instance Data.FromJSON Node where parseJSON = Data.withObject "Node" ( \x -> Node' Prelude.<$> (x Data..:? "AvailabilityZone") Prelude.<*> (x Data..:? "Endpoint") Prelude.<*> (x Data..:? "NodeCreateTime") Prelude.<*> (x Data..:? "NodeId") Prelude.<*> (x Data..:? "NodeStatus") Prelude.<*> (x Data..:? "ParameterGroupStatus") ) instance Prelude.Hashable Node where hashWithSalt _salt Node' {..} = _salt `Prelude.hashWithSalt` availabilityZone `Prelude.hashWithSalt` endpoint `Prelude.hashWithSalt` nodeCreateTime `Prelude.hashWithSalt` nodeId `Prelude.hashWithSalt` nodeStatus `Prelude.hashWithSalt` parameterGroupStatus instance Prelude.NFData Node where rnf Node' {..} = Prelude.rnf availabilityZone `Prelude.seq` Prelude.rnf endpoint `Prelude.seq` Prelude.rnf nodeCreateTime `Prelude.seq` Prelude.rnf nodeId `Prelude.seq` Prelude.rnf nodeStatus `Prelude.seq` Prelude.rnf parameterGroupStatus