{-# 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.SSM.Types.InstanceInformation
-- 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.SSM.Types.InstanceInformation where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SSM.Types.InstanceAggregatedAssociationOverview
import Amazonka.SSM.Types.PingStatus
import Amazonka.SSM.Types.PlatformType
import Amazonka.SSM.Types.ResourceType
import Amazonka.SSM.Types.SourceType

-- | Describes a filter for a specific list of managed nodes.
--
-- /See:/ 'newInstanceInformation' smart constructor.
data InstanceInformation = InstanceInformation'
  { -- | The activation ID created by Amazon Web Services Systems Manager when
    -- the server or virtual machine (VM) was registered.
    InstanceInformation -> Maybe Text
activationId :: Prelude.Maybe Prelude.Text,
    -- | The version of SSM Agent running on your Linux managed node.
    InstanceInformation -> Maybe Text
agentVersion :: Prelude.Maybe Prelude.Text,
    -- | Information about the association.
    InstanceInformation -> Maybe InstanceAggregatedAssociationOverview
associationOverview :: Prelude.Maybe InstanceAggregatedAssociationOverview,
    -- | The status of the association.
    InstanceInformation -> Maybe Text
associationStatus :: Prelude.Maybe Prelude.Text,
    -- | The fully qualified host name of the managed node.
    InstanceInformation -> Maybe Text
computerName :: Prelude.Maybe Prelude.Text,
    -- | The IP address of the managed node.
    InstanceInformation -> Maybe Text
iPAddress :: Prelude.Maybe Prelude.Text,
    -- | The Identity and Access Management (IAM) role assigned to the
    -- on-premises Systems Manager managed node. This call doesn\'t return the
    -- IAM role for Amazon Elastic Compute Cloud (Amazon EC2) instances. To
    -- retrieve the IAM role for an EC2 instance, use the Amazon EC2
    -- @DescribeInstances@ operation. For information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html DescribeInstances>
    -- in the /Amazon EC2 API Reference/ or
    -- <https://docs.aws.amazon.com/cli/latest/ec2/describe-instances.html describe-instances>
    -- in the /Amazon Web Services CLI Command Reference/.
    InstanceInformation -> Maybe Text
iamRole :: Prelude.Maybe Prelude.Text,
    -- | The managed node ID.
    InstanceInformation -> Maybe Text
instanceId :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether the latest version of SSM Agent is running on your
    -- Linux managed node. This field doesn\'t indicate whether or not the
    -- latest version is installed on Windows managed nodes, because some older
    -- versions of Windows Server use the EC2Config service to process Systems
    -- Manager requests.
    InstanceInformation -> Maybe Bool
isLatestVersion :: Prelude.Maybe Prelude.Bool,
    -- | The date the association was last run.
    InstanceInformation -> Maybe POSIX
lastAssociationExecutionDate :: Prelude.Maybe Data.POSIX,
    -- | The date and time when the agent last pinged the Systems Manager
    -- service.
    InstanceInformation -> Maybe POSIX
lastPingDateTime :: Prelude.Maybe Data.POSIX,
    -- | The last date the association was successfully run.
    InstanceInformation -> Maybe POSIX
lastSuccessfulAssociationExecutionDate :: Prelude.Maybe Data.POSIX,
    -- | The name assigned to an on-premises server, edge device, or virtual
    -- machine (VM) when it is activated as a Systems Manager managed node. The
    -- name is specified as the @DefaultInstanceName@ property using the
    -- CreateActivation command. It is applied to the managed node by
    -- specifying the Activation Code and Activation ID when you install SSM
    -- Agent on the node, as explained in
    -- <https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-linux.html Install SSM Agent for a hybrid environment (Linux)>
    -- and
    -- <https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-win.html Install SSM Agent for a hybrid environment (Windows)>.
    -- To retrieve the @Name@ tag of an EC2 instance, use the Amazon EC2
    -- @DescribeInstances@ operation. For information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html DescribeInstances>
    -- in the /Amazon EC2 API Reference/ or
    -- <https://docs.aws.amazon.com/cli/latest/ec2/describe-instances.html describe-instances>
    -- in the /Amazon Web Services CLI Command Reference/.
    InstanceInformation -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | Connection status of SSM Agent.
    --
    -- The status @Inactive@ has been deprecated and is no longer in use.
    InstanceInformation -> Maybe PingStatus
pingStatus :: Prelude.Maybe PingStatus,
    -- | The name of the operating system platform running on your managed node.
    InstanceInformation -> Maybe Text
platformName :: Prelude.Maybe Prelude.Text,
    -- | The operating system platform type.
    InstanceInformation -> Maybe PlatformType
platformType :: Prelude.Maybe PlatformType,
    -- | The version of the OS platform running on your managed node.
    InstanceInformation -> Maybe Text
platformVersion :: Prelude.Maybe Prelude.Text,
    -- | The date the server or VM was registered with Amazon Web Services as a
    -- managed node.
    InstanceInformation -> Maybe POSIX
registrationDate :: Prelude.Maybe Data.POSIX,
    -- | The type of instance. Instances are either EC2 instances or managed
    -- instances.
    InstanceInformation -> Maybe ResourceType
resourceType :: Prelude.Maybe ResourceType,
    -- | The ID of the source resource. For IoT Greengrass devices, @SourceId@ is
    -- the Thing name.
    InstanceInformation -> Maybe Text
sourceId :: Prelude.Maybe Prelude.Text,
    -- | The type of the source resource. For IoT Greengrass devices,
    -- @SourceType@ is @AWS::IoT::Thing@.
    InstanceInformation -> Maybe SourceType
sourceType :: Prelude.Maybe SourceType
  }
  deriving (InstanceInformation -> InstanceInformation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InstanceInformation -> InstanceInformation -> Bool
$c/= :: InstanceInformation -> InstanceInformation -> Bool
== :: InstanceInformation -> InstanceInformation -> Bool
$c== :: InstanceInformation -> InstanceInformation -> Bool
Prelude.Eq, ReadPrec [InstanceInformation]
ReadPrec InstanceInformation
Int -> ReadS InstanceInformation
ReadS [InstanceInformation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [InstanceInformation]
$creadListPrec :: ReadPrec [InstanceInformation]
readPrec :: ReadPrec InstanceInformation
$creadPrec :: ReadPrec InstanceInformation
readList :: ReadS [InstanceInformation]
$creadList :: ReadS [InstanceInformation]
readsPrec :: Int -> ReadS InstanceInformation
$creadsPrec :: Int -> ReadS InstanceInformation
Prelude.Read, Int -> InstanceInformation -> ShowS
[InstanceInformation] -> ShowS
InstanceInformation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InstanceInformation] -> ShowS
$cshowList :: [InstanceInformation] -> ShowS
show :: InstanceInformation -> String
$cshow :: InstanceInformation -> String
showsPrec :: Int -> InstanceInformation -> ShowS
$cshowsPrec :: Int -> InstanceInformation -> ShowS
Prelude.Show, forall x. Rep InstanceInformation x -> InstanceInformation
forall x. InstanceInformation -> Rep InstanceInformation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep InstanceInformation x -> InstanceInformation
$cfrom :: forall x. InstanceInformation -> Rep InstanceInformation x
Prelude.Generic)

-- |
-- Create a value of 'InstanceInformation' 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:
--
-- 'activationId', 'instanceInformation_activationId' - The activation ID created by Amazon Web Services Systems Manager when
-- the server or virtual machine (VM) was registered.
--
-- 'agentVersion', 'instanceInformation_agentVersion' - The version of SSM Agent running on your Linux managed node.
--
-- 'associationOverview', 'instanceInformation_associationOverview' - Information about the association.
--
-- 'associationStatus', 'instanceInformation_associationStatus' - The status of the association.
--
-- 'computerName', 'instanceInformation_computerName' - The fully qualified host name of the managed node.
--
-- 'iPAddress', 'instanceInformation_iPAddress' - The IP address of the managed node.
--
-- 'iamRole', 'instanceInformation_iamRole' - The Identity and Access Management (IAM) role assigned to the
-- on-premises Systems Manager managed node. This call doesn\'t return the
-- IAM role for Amazon Elastic Compute Cloud (Amazon EC2) instances. To
-- retrieve the IAM role for an EC2 instance, use the Amazon EC2
-- @DescribeInstances@ operation. For information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html DescribeInstances>
-- in the /Amazon EC2 API Reference/ or
-- <https://docs.aws.amazon.com/cli/latest/ec2/describe-instances.html describe-instances>
-- in the /Amazon Web Services CLI Command Reference/.
--
-- 'instanceId', 'instanceInformation_instanceId' - The managed node ID.
--
-- 'isLatestVersion', 'instanceInformation_isLatestVersion' - Indicates whether the latest version of SSM Agent is running on your
-- Linux managed node. This field doesn\'t indicate whether or not the
-- latest version is installed on Windows managed nodes, because some older
-- versions of Windows Server use the EC2Config service to process Systems
-- Manager requests.
--
-- 'lastAssociationExecutionDate', 'instanceInformation_lastAssociationExecutionDate' - The date the association was last run.
--
-- 'lastPingDateTime', 'instanceInformation_lastPingDateTime' - The date and time when the agent last pinged the Systems Manager
-- service.
--
-- 'lastSuccessfulAssociationExecutionDate', 'instanceInformation_lastSuccessfulAssociationExecutionDate' - The last date the association was successfully run.
--
-- 'name', 'instanceInformation_name' - The name assigned to an on-premises server, edge device, or virtual
-- machine (VM) when it is activated as a Systems Manager managed node. The
-- name is specified as the @DefaultInstanceName@ property using the
-- CreateActivation command. It is applied to the managed node by
-- specifying the Activation Code and Activation ID when you install SSM
-- Agent on the node, as explained in
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-linux.html Install SSM Agent for a hybrid environment (Linux)>
-- and
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-win.html Install SSM Agent for a hybrid environment (Windows)>.
-- To retrieve the @Name@ tag of an EC2 instance, use the Amazon EC2
-- @DescribeInstances@ operation. For information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html DescribeInstances>
-- in the /Amazon EC2 API Reference/ or
-- <https://docs.aws.amazon.com/cli/latest/ec2/describe-instances.html describe-instances>
-- in the /Amazon Web Services CLI Command Reference/.
--
-- 'pingStatus', 'instanceInformation_pingStatus' - Connection status of SSM Agent.
--
-- The status @Inactive@ has been deprecated and is no longer in use.
--
-- 'platformName', 'instanceInformation_platformName' - The name of the operating system platform running on your managed node.
--
-- 'platformType', 'instanceInformation_platformType' - The operating system platform type.
--
-- 'platformVersion', 'instanceInformation_platformVersion' - The version of the OS platform running on your managed node.
--
-- 'registrationDate', 'instanceInformation_registrationDate' - The date the server or VM was registered with Amazon Web Services as a
-- managed node.
--
-- 'resourceType', 'instanceInformation_resourceType' - The type of instance. Instances are either EC2 instances or managed
-- instances.
--
-- 'sourceId', 'instanceInformation_sourceId' - The ID of the source resource. For IoT Greengrass devices, @SourceId@ is
-- the Thing name.
--
-- 'sourceType', 'instanceInformation_sourceType' - The type of the source resource. For IoT Greengrass devices,
-- @SourceType@ is @AWS::IoT::Thing@.
newInstanceInformation ::
  InstanceInformation
newInstanceInformation :: InstanceInformation
newInstanceInformation =
  InstanceInformation'
    { $sel:activationId:InstanceInformation' :: Maybe Text
activationId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:agentVersion:InstanceInformation' :: Maybe Text
agentVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:associationOverview:InstanceInformation' :: Maybe InstanceAggregatedAssociationOverview
associationOverview = forall a. Maybe a
Prelude.Nothing,
      $sel:associationStatus:InstanceInformation' :: Maybe Text
associationStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:computerName:InstanceInformation' :: Maybe Text
computerName = forall a. Maybe a
Prelude.Nothing,
      $sel:iPAddress:InstanceInformation' :: Maybe Text
iPAddress = forall a. Maybe a
Prelude.Nothing,
      $sel:iamRole:InstanceInformation' :: Maybe Text
iamRole = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceId:InstanceInformation' :: Maybe Text
instanceId = forall a. Maybe a
Prelude.Nothing,
      $sel:isLatestVersion:InstanceInformation' :: Maybe Bool
isLatestVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:lastAssociationExecutionDate:InstanceInformation' :: Maybe POSIX
lastAssociationExecutionDate = forall a. Maybe a
Prelude.Nothing,
      $sel:lastPingDateTime:InstanceInformation' :: Maybe POSIX
lastPingDateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:lastSuccessfulAssociationExecutionDate:InstanceInformation' :: Maybe POSIX
lastSuccessfulAssociationExecutionDate =
        forall a. Maybe a
Prelude.Nothing,
      $sel:name:InstanceInformation' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:pingStatus:InstanceInformation' :: Maybe PingStatus
pingStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:platformName:InstanceInformation' :: Maybe Text
platformName = forall a. Maybe a
Prelude.Nothing,
      $sel:platformType:InstanceInformation' :: Maybe PlatformType
platformType = forall a. Maybe a
Prelude.Nothing,
      $sel:platformVersion:InstanceInformation' :: Maybe Text
platformVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:registrationDate:InstanceInformation' :: Maybe POSIX
registrationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceType:InstanceInformation' :: Maybe ResourceType
resourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceId:InstanceInformation' :: Maybe Text
sourceId = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceType:InstanceInformation' :: Maybe SourceType
sourceType = forall a. Maybe a
Prelude.Nothing
    }

-- | The activation ID created by Amazon Web Services Systems Manager when
-- the server or virtual machine (VM) was registered.
instanceInformation_activationId :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_activationId :: Lens' InstanceInformation (Maybe Text)
instanceInformation_activationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
activationId :: Maybe Text
$sel:activationId:InstanceInformation' :: InstanceInformation -> Maybe Text
activationId} -> Maybe Text
activationId) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:activationId:InstanceInformation' :: Maybe Text
activationId = Maybe Text
a} :: InstanceInformation)

-- | The version of SSM Agent running on your Linux managed node.
instanceInformation_agentVersion :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_agentVersion :: Lens' InstanceInformation (Maybe Text)
instanceInformation_agentVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
agentVersion :: Maybe Text
$sel:agentVersion:InstanceInformation' :: InstanceInformation -> Maybe Text
agentVersion} -> Maybe Text
agentVersion) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:agentVersion:InstanceInformation' :: Maybe Text
agentVersion = Maybe Text
a} :: InstanceInformation)

-- | Information about the association.
instanceInformation_associationOverview :: Lens.Lens' InstanceInformation (Prelude.Maybe InstanceAggregatedAssociationOverview)
instanceInformation_associationOverview :: Lens'
  InstanceInformation (Maybe InstanceAggregatedAssociationOverview)
instanceInformation_associationOverview = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe InstanceAggregatedAssociationOverview
associationOverview :: Maybe InstanceAggregatedAssociationOverview
$sel:associationOverview:InstanceInformation' :: InstanceInformation -> Maybe InstanceAggregatedAssociationOverview
associationOverview} -> Maybe InstanceAggregatedAssociationOverview
associationOverview) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe InstanceAggregatedAssociationOverview
a -> InstanceInformation
s {$sel:associationOverview:InstanceInformation' :: Maybe InstanceAggregatedAssociationOverview
associationOverview = Maybe InstanceAggregatedAssociationOverview
a} :: InstanceInformation)

-- | The status of the association.
instanceInformation_associationStatus :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_associationStatus :: Lens' InstanceInformation (Maybe Text)
instanceInformation_associationStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
associationStatus :: Maybe Text
$sel:associationStatus:InstanceInformation' :: InstanceInformation -> Maybe Text
associationStatus} -> Maybe Text
associationStatus) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:associationStatus:InstanceInformation' :: Maybe Text
associationStatus = Maybe Text
a} :: InstanceInformation)

-- | The fully qualified host name of the managed node.
instanceInformation_computerName :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_computerName :: Lens' InstanceInformation (Maybe Text)
instanceInformation_computerName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
computerName :: Maybe Text
$sel:computerName:InstanceInformation' :: InstanceInformation -> Maybe Text
computerName} -> Maybe Text
computerName) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:computerName:InstanceInformation' :: Maybe Text
computerName = Maybe Text
a} :: InstanceInformation)

-- | The IP address of the managed node.
instanceInformation_iPAddress :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_iPAddress :: Lens' InstanceInformation (Maybe Text)
instanceInformation_iPAddress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
iPAddress :: Maybe Text
$sel:iPAddress:InstanceInformation' :: InstanceInformation -> Maybe Text
iPAddress} -> Maybe Text
iPAddress) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:iPAddress:InstanceInformation' :: Maybe Text
iPAddress = Maybe Text
a} :: InstanceInformation)

-- | The Identity and Access Management (IAM) role assigned to the
-- on-premises Systems Manager managed node. This call doesn\'t return the
-- IAM role for Amazon Elastic Compute Cloud (Amazon EC2) instances. To
-- retrieve the IAM role for an EC2 instance, use the Amazon EC2
-- @DescribeInstances@ operation. For information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html DescribeInstances>
-- in the /Amazon EC2 API Reference/ or
-- <https://docs.aws.amazon.com/cli/latest/ec2/describe-instances.html describe-instances>
-- in the /Amazon Web Services CLI Command Reference/.
instanceInformation_iamRole :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_iamRole :: Lens' InstanceInformation (Maybe Text)
instanceInformation_iamRole = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
iamRole :: Maybe Text
$sel:iamRole:InstanceInformation' :: InstanceInformation -> Maybe Text
iamRole} -> Maybe Text
iamRole) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:iamRole:InstanceInformation' :: Maybe Text
iamRole = Maybe Text
a} :: InstanceInformation)

-- | The managed node ID.
instanceInformation_instanceId :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_instanceId :: Lens' InstanceInformation (Maybe Text)
instanceInformation_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
instanceId :: Maybe Text
$sel:instanceId:InstanceInformation' :: InstanceInformation -> Maybe Text
instanceId} -> Maybe Text
instanceId) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:instanceId:InstanceInformation' :: Maybe Text
instanceId = Maybe Text
a} :: InstanceInformation)

-- | Indicates whether the latest version of SSM Agent is running on your
-- Linux managed node. This field doesn\'t indicate whether or not the
-- latest version is installed on Windows managed nodes, because some older
-- versions of Windows Server use the EC2Config service to process Systems
-- Manager requests.
instanceInformation_isLatestVersion :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Bool)
instanceInformation_isLatestVersion :: Lens' InstanceInformation (Maybe Bool)
instanceInformation_isLatestVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Bool
isLatestVersion :: Maybe Bool
$sel:isLatestVersion:InstanceInformation' :: InstanceInformation -> Maybe Bool
isLatestVersion} -> Maybe Bool
isLatestVersion) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Bool
a -> InstanceInformation
s {$sel:isLatestVersion:InstanceInformation' :: Maybe Bool
isLatestVersion = Maybe Bool
a} :: InstanceInformation)

-- | The date the association was last run.
instanceInformation_lastAssociationExecutionDate :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.UTCTime)
instanceInformation_lastAssociationExecutionDate :: Lens' InstanceInformation (Maybe UTCTime)
instanceInformation_lastAssociationExecutionDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe POSIX
lastAssociationExecutionDate :: Maybe POSIX
$sel:lastAssociationExecutionDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
lastAssociationExecutionDate} -> Maybe POSIX
lastAssociationExecutionDate) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe POSIX
a -> InstanceInformation
s {$sel:lastAssociationExecutionDate:InstanceInformation' :: Maybe POSIX
lastAssociationExecutionDate = Maybe POSIX
a} :: InstanceInformation) 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 date and time when the agent last pinged the Systems Manager
-- service.
instanceInformation_lastPingDateTime :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.UTCTime)
instanceInformation_lastPingDateTime :: Lens' InstanceInformation (Maybe UTCTime)
instanceInformation_lastPingDateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe POSIX
lastPingDateTime :: Maybe POSIX
$sel:lastPingDateTime:InstanceInformation' :: InstanceInformation -> Maybe POSIX
lastPingDateTime} -> Maybe POSIX
lastPingDateTime) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe POSIX
a -> InstanceInformation
s {$sel:lastPingDateTime:InstanceInformation' :: Maybe POSIX
lastPingDateTime = Maybe POSIX
a} :: InstanceInformation) 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 last date the association was successfully run.
instanceInformation_lastSuccessfulAssociationExecutionDate :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.UTCTime)
instanceInformation_lastSuccessfulAssociationExecutionDate :: Lens' InstanceInformation (Maybe UTCTime)
instanceInformation_lastSuccessfulAssociationExecutionDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe POSIX
lastSuccessfulAssociationExecutionDate :: Maybe POSIX
$sel:lastSuccessfulAssociationExecutionDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
lastSuccessfulAssociationExecutionDate} -> Maybe POSIX
lastSuccessfulAssociationExecutionDate) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe POSIX
a -> InstanceInformation
s {$sel:lastSuccessfulAssociationExecutionDate:InstanceInformation' :: Maybe POSIX
lastSuccessfulAssociationExecutionDate = Maybe POSIX
a} :: InstanceInformation) 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 name assigned to an on-premises server, edge device, or virtual
-- machine (VM) when it is activated as a Systems Manager managed node. The
-- name is specified as the @DefaultInstanceName@ property using the
-- CreateActivation command. It is applied to the managed node by
-- specifying the Activation Code and Activation ID when you install SSM
-- Agent on the node, as explained in
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-linux.html Install SSM Agent for a hybrid environment (Linux)>
-- and
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-win.html Install SSM Agent for a hybrid environment (Windows)>.
-- To retrieve the @Name@ tag of an EC2 instance, use the Amazon EC2
-- @DescribeInstances@ operation. For information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html DescribeInstances>
-- in the /Amazon EC2 API Reference/ or
-- <https://docs.aws.amazon.com/cli/latest/ec2/describe-instances.html describe-instances>
-- in the /Amazon Web Services CLI Command Reference/.
instanceInformation_name :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_name :: Lens' InstanceInformation (Maybe Text)
instanceInformation_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
name :: Maybe Text
$sel:name:InstanceInformation' :: InstanceInformation -> Maybe Text
name} -> Maybe Text
name) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:name:InstanceInformation' :: Maybe Text
name = Maybe Text
a} :: InstanceInformation)

-- | Connection status of SSM Agent.
--
-- The status @Inactive@ has been deprecated and is no longer in use.
instanceInformation_pingStatus :: Lens.Lens' InstanceInformation (Prelude.Maybe PingStatus)
instanceInformation_pingStatus :: Lens' InstanceInformation (Maybe PingStatus)
instanceInformation_pingStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe PingStatus
pingStatus :: Maybe PingStatus
$sel:pingStatus:InstanceInformation' :: InstanceInformation -> Maybe PingStatus
pingStatus} -> Maybe PingStatus
pingStatus) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe PingStatus
a -> InstanceInformation
s {$sel:pingStatus:InstanceInformation' :: Maybe PingStatus
pingStatus = Maybe PingStatus
a} :: InstanceInformation)

-- | The name of the operating system platform running on your managed node.
instanceInformation_platformName :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_platformName :: Lens' InstanceInformation (Maybe Text)
instanceInformation_platformName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
platformName :: Maybe Text
$sel:platformName:InstanceInformation' :: InstanceInformation -> Maybe Text
platformName} -> Maybe Text
platformName) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:platformName:InstanceInformation' :: Maybe Text
platformName = Maybe Text
a} :: InstanceInformation)

-- | The operating system platform type.
instanceInformation_platformType :: Lens.Lens' InstanceInformation (Prelude.Maybe PlatformType)
instanceInformation_platformType :: Lens' InstanceInformation (Maybe PlatformType)
instanceInformation_platformType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe PlatformType
platformType :: Maybe PlatformType
$sel:platformType:InstanceInformation' :: InstanceInformation -> Maybe PlatformType
platformType} -> Maybe PlatformType
platformType) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe PlatformType
a -> InstanceInformation
s {$sel:platformType:InstanceInformation' :: Maybe PlatformType
platformType = Maybe PlatformType
a} :: InstanceInformation)

-- | The version of the OS platform running on your managed node.
instanceInformation_platformVersion :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_platformVersion :: Lens' InstanceInformation (Maybe Text)
instanceInformation_platformVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
platformVersion :: Maybe Text
$sel:platformVersion:InstanceInformation' :: InstanceInformation -> Maybe Text
platformVersion} -> Maybe Text
platformVersion) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:platformVersion:InstanceInformation' :: Maybe Text
platformVersion = Maybe Text
a} :: InstanceInformation)

-- | The date the server or VM was registered with Amazon Web Services as a
-- managed node.
instanceInformation_registrationDate :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.UTCTime)
instanceInformation_registrationDate :: Lens' InstanceInformation (Maybe UTCTime)
instanceInformation_registrationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe POSIX
registrationDate :: Maybe POSIX
$sel:registrationDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
registrationDate} -> Maybe POSIX
registrationDate) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe POSIX
a -> InstanceInformation
s {$sel:registrationDate:InstanceInformation' :: Maybe POSIX
registrationDate = Maybe POSIX
a} :: InstanceInformation) 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 type of instance. Instances are either EC2 instances or managed
-- instances.
instanceInformation_resourceType :: Lens.Lens' InstanceInformation (Prelude.Maybe ResourceType)
instanceInformation_resourceType :: Lens' InstanceInformation (Maybe ResourceType)
instanceInformation_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe ResourceType
resourceType :: Maybe ResourceType
$sel:resourceType:InstanceInformation' :: InstanceInformation -> Maybe ResourceType
resourceType} -> Maybe ResourceType
resourceType) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe ResourceType
a -> InstanceInformation
s {$sel:resourceType:InstanceInformation' :: Maybe ResourceType
resourceType = Maybe ResourceType
a} :: InstanceInformation)

-- | The ID of the source resource. For IoT Greengrass devices, @SourceId@ is
-- the Thing name.
instanceInformation_sourceId :: Lens.Lens' InstanceInformation (Prelude.Maybe Prelude.Text)
instanceInformation_sourceId :: Lens' InstanceInformation (Maybe Text)
instanceInformation_sourceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe Text
sourceId :: Maybe Text
$sel:sourceId:InstanceInformation' :: InstanceInformation -> Maybe Text
sourceId} -> Maybe Text
sourceId) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe Text
a -> InstanceInformation
s {$sel:sourceId:InstanceInformation' :: Maybe Text
sourceId = Maybe Text
a} :: InstanceInformation)

-- | The type of the source resource. For IoT Greengrass devices,
-- @SourceType@ is @AWS::IoT::Thing@.
instanceInformation_sourceType :: Lens.Lens' InstanceInformation (Prelude.Maybe SourceType)
instanceInformation_sourceType :: Lens' InstanceInformation (Maybe SourceType)
instanceInformation_sourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceInformation' {Maybe SourceType
sourceType :: Maybe SourceType
$sel:sourceType:InstanceInformation' :: InstanceInformation -> Maybe SourceType
sourceType} -> Maybe SourceType
sourceType) (\s :: InstanceInformation
s@InstanceInformation' {} Maybe SourceType
a -> InstanceInformation
s {$sel:sourceType:InstanceInformation' :: Maybe SourceType
sourceType = Maybe SourceType
a} :: InstanceInformation)

instance Data.FromJSON InstanceInformation where
  parseJSON :: Value -> Parser InstanceInformation
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"InstanceInformation"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe InstanceAggregatedAssociationOverview
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe POSIX
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe PingStatus
-> Maybe Text
-> Maybe PlatformType
-> Maybe Text
-> Maybe POSIX
-> Maybe ResourceType
-> Maybe Text
-> Maybe SourceType
-> InstanceInformation
InstanceInformation'
            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
"ActivationId")
            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
"AgentVersion")
            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
"AssociationOverview")
            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
"AssociationStatus")
            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
"ComputerName")
            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
"IPAddress")
            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
"IamRole")
            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
"InstanceId")
            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
"IsLatestVersion")
            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
"LastAssociationExecutionDate")
            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
"LastPingDateTime")
            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
"LastSuccessfulAssociationExecutionDate")
            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
"Name")
            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
"PingStatus")
            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
"PlatformName")
            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
"PlatformType")
            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
"PlatformVersion")
            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
"RegistrationDate")
            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
"ResourceType")
            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
"SourceId")
            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
"SourceType")
      )

instance Prelude.Hashable InstanceInformation where
  hashWithSalt :: Int -> InstanceInformation -> Int
hashWithSalt Int
_salt InstanceInformation' {Maybe Bool
Maybe Text
Maybe POSIX
Maybe InstanceAggregatedAssociationOverview
Maybe PingStatus
Maybe PlatformType
Maybe ResourceType
Maybe SourceType
sourceType :: Maybe SourceType
sourceId :: Maybe Text
resourceType :: Maybe ResourceType
registrationDate :: Maybe POSIX
platformVersion :: Maybe Text
platformType :: Maybe PlatformType
platformName :: Maybe Text
pingStatus :: Maybe PingStatus
name :: Maybe Text
lastSuccessfulAssociationExecutionDate :: Maybe POSIX
lastPingDateTime :: Maybe POSIX
lastAssociationExecutionDate :: Maybe POSIX
isLatestVersion :: Maybe Bool
instanceId :: Maybe Text
iamRole :: Maybe Text
iPAddress :: Maybe Text
computerName :: Maybe Text
associationStatus :: Maybe Text
associationOverview :: Maybe InstanceAggregatedAssociationOverview
agentVersion :: Maybe Text
activationId :: Maybe Text
$sel:sourceType:InstanceInformation' :: InstanceInformation -> Maybe SourceType
$sel:sourceId:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:resourceType:InstanceInformation' :: InstanceInformation -> Maybe ResourceType
$sel:registrationDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
$sel:platformVersion:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:platformType:InstanceInformation' :: InstanceInformation -> Maybe PlatformType
$sel:platformName:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:pingStatus:InstanceInformation' :: InstanceInformation -> Maybe PingStatus
$sel:name:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:lastSuccessfulAssociationExecutionDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
$sel:lastPingDateTime:InstanceInformation' :: InstanceInformation -> Maybe POSIX
$sel:lastAssociationExecutionDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
$sel:isLatestVersion:InstanceInformation' :: InstanceInformation -> Maybe Bool
$sel:instanceId:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:iamRole:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:iPAddress:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:computerName:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:associationStatus:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:associationOverview:InstanceInformation' :: InstanceInformation -> Maybe InstanceAggregatedAssociationOverview
$sel:agentVersion:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:activationId:InstanceInformation' :: InstanceInformation -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
activationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
agentVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceAggregatedAssociationOverview
associationOverview
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
associationStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
computerName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
iPAddress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
iamRole
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
isLatestVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastAssociationExecutionDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastPingDateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastSuccessfulAssociationExecutionDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PingStatus
pingStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
platformName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PlatformType
platformType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
platformVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
registrationDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceType
resourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SourceType
sourceType

instance Prelude.NFData InstanceInformation where
  rnf :: InstanceInformation -> ()
rnf InstanceInformation' {Maybe Bool
Maybe Text
Maybe POSIX
Maybe InstanceAggregatedAssociationOverview
Maybe PingStatus
Maybe PlatformType
Maybe ResourceType
Maybe SourceType
sourceType :: Maybe SourceType
sourceId :: Maybe Text
resourceType :: Maybe ResourceType
registrationDate :: Maybe POSIX
platformVersion :: Maybe Text
platformType :: Maybe PlatformType
platformName :: Maybe Text
pingStatus :: Maybe PingStatus
name :: Maybe Text
lastSuccessfulAssociationExecutionDate :: Maybe POSIX
lastPingDateTime :: Maybe POSIX
lastAssociationExecutionDate :: Maybe POSIX
isLatestVersion :: Maybe Bool
instanceId :: Maybe Text
iamRole :: Maybe Text
iPAddress :: Maybe Text
computerName :: Maybe Text
associationStatus :: Maybe Text
associationOverview :: Maybe InstanceAggregatedAssociationOverview
agentVersion :: Maybe Text
activationId :: Maybe Text
$sel:sourceType:InstanceInformation' :: InstanceInformation -> Maybe SourceType
$sel:sourceId:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:resourceType:InstanceInformation' :: InstanceInformation -> Maybe ResourceType
$sel:registrationDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
$sel:platformVersion:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:platformType:InstanceInformation' :: InstanceInformation -> Maybe PlatformType
$sel:platformName:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:pingStatus:InstanceInformation' :: InstanceInformation -> Maybe PingStatus
$sel:name:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:lastSuccessfulAssociationExecutionDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
$sel:lastPingDateTime:InstanceInformation' :: InstanceInformation -> Maybe POSIX
$sel:lastAssociationExecutionDate:InstanceInformation' :: InstanceInformation -> Maybe POSIX
$sel:isLatestVersion:InstanceInformation' :: InstanceInformation -> Maybe Bool
$sel:instanceId:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:iamRole:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:iPAddress:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:computerName:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:associationStatus:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:associationOverview:InstanceInformation' :: InstanceInformation -> Maybe InstanceAggregatedAssociationOverview
$sel:agentVersion:InstanceInformation' :: InstanceInformation -> Maybe Text
$sel:activationId:InstanceInformation' :: InstanceInformation -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
activationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
agentVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceAggregatedAssociationOverview
associationOverview
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
associationStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
computerName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
iPAddress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
iamRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
isLatestVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastAssociationExecutionDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastPingDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe POSIX
lastSuccessfulAssociationExecutionDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PingStatus
pingStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
platformName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PlatformType
platformType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
platformVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
registrationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceType
resourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SourceType
sourceType