{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Route53RecoveryReadiness.CreateResourceSet
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a resource set. A resource set is a set of resources of one type
-- that span multiple cells. You can associate a resource set with a
-- readiness check to monitor the resources for failover readiness.
module Amazonka.Route53RecoveryReadiness.CreateResourceSet
  ( -- * Creating a Request
    CreateResourceSet (..),
    newCreateResourceSet,

    -- * Request Lenses
    createResourceSet_tags,
    createResourceSet_resourceSetType,
    createResourceSet_resourceSetName,
    createResourceSet_resources,

    -- * Destructuring the Response
    CreateResourceSetResponse (..),
    newCreateResourceSetResponse,

    -- * Response Lenses
    createResourceSetResponse_resourceSetArn,
    createResourceSetResponse_resourceSetName,
    createResourceSetResponse_resourceSetType,
    createResourceSetResponse_resources,
    createResourceSetResponse_tags,
    createResourceSetResponse_httpStatus,
  )
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.Route53RecoveryReadiness.Types

-- | /See:/ 'newCreateResourceSet' smart constructor.
data CreateResourceSet = CreateResourceSet'
  { -- | A tag to associate with the parameters for a resource set.
    CreateResourceSet -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The resource type of the resources in the resource set. Enter one of the
    -- following values for resource type:
    --
    -- AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage,
    -- AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm,
    -- AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume,
    -- AWS::ElasticLoadBalancing::LoadBalancer,
    -- AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function,
    -- AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck,
    -- AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC,
    -- AWS::EC2::VPNConnection, AWS::EC2::VPNGateway,
    -- AWS::Route53RecoveryReadiness::DNSTargetResource
    CreateResourceSet -> Text
resourceSetType :: Prelude.Text,
    -- | The name of the resource set to create.
    CreateResourceSet -> Text
resourceSetName :: Prelude.Text,
    -- | A list of resource objects in the resource set.
    CreateResourceSet -> [Resource]
resources :: [Resource]
  }
  deriving (CreateResourceSet -> CreateResourceSet -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateResourceSet -> CreateResourceSet -> Bool
$c/= :: CreateResourceSet -> CreateResourceSet -> Bool
== :: CreateResourceSet -> CreateResourceSet -> Bool
$c== :: CreateResourceSet -> CreateResourceSet -> Bool
Prelude.Eq, ReadPrec [CreateResourceSet]
ReadPrec CreateResourceSet
Int -> ReadS CreateResourceSet
ReadS [CreateResourceSet]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateResourceSet]
$creadListPrec :: ReadPrec [CreateResourceSet]
readPrec :: ReadPrec CreateResourceSet
$creadPrec :: ReadPrec CreateResourceSet
readList :: ReadS [CreateResourceSet]
$creadList :: ReadS [CreateResourceSet]
readsPrec :: Int -> ReadS CreateResourceSet
$creadsPrec :: Int -> ReadS CreateResourceSet
Prelude.Read, Int -> CreateResourceSet -> ShowS
[CreateResourceSet] -> ShowS
CreateResourceSet -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateResourceSet] -> ShowS
$cshowList :: [CreateResourceSet] -> ShowS
show :: CreateResourceSet -> String
$cshow :: CreateResourceSet -> String
showsPrec :: Int -> CreateResourceSet -> ShowS
$cshowsPrec :: Int -> CreateResourceSet -> ShowS
Prelude.Show, forall x. Rep CreateResourceSet x -> CreateResourceSet
forall x. CreateResourceSet -> Rep CreateResourceSet x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateResourceSet x -> CreateResourceSet
$cfrom :: forall x. CreateResourceSet -> Rep CreateResourceSet x
Prelude.Generic)

-- |
-- Create a value of 'CreateResourceSet' 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:
--
-- 'tags', 'createResourceSet_tags' - A tag to associate with the parameters for a resource set.
--
-- 'resourceSetType', 'createResourceSet_resourceSetType' - The resource type of the resources in the resource set. Enter one of the
-- following values for resource type:
--
-- AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage,
-- AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm,
-- AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume,
-- AWS::ElasticLoadBalancing::LoadBalancer,
-- AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function,
-- AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck,
-- AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC,
-- AWS::EC2::VPNConnection, AWS::EC2::VPNGateway,
-- AWS::Route53RecoveryReadiness::DNSTargetResource
--
-- 'resourceSetName', 'createResourceSet_resourceSetName' - The name of the resource set to create.
--
-- 'resources', 'createResourceSet_resources' - A list of resource objects in the resource set.
newCreateResourceSet ::
  -- | 'resourceSetType'
  Prelude.Text ->
  -- | 'resourceSetName'
  Prelude.Text ->
  CreateResourceSet
newCreateResourceSet :: Text -> Text -> CreateResourceSet
newCreateResourceSet
  Text
pResourceSetType_
  Text
pResourceSetName_ =
    CreateResourceSet'
      { $sel:tags:CreateResourceSet' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:resourceSetType:CreateResourceSet' :: Text
resourceSetType = Text
pResourceSetType_,
        $sel:resourceSetName:CreateResourceSet' :: Text
resourceSetName = Text
pResourceSetName_,
        $sel:resources:CreateResourceSet' :: [Resource]
resources = forall a. Monoid a => a
Prelude.mempty
      }

-- | A tag to associate with the parameters for a resource set.
createResourceSet_tags :: Lens.Lens' CreateResourceSet (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createResourceSet_tags :: Lens' CreateResourceSet (Maybe (HashMap Text Text))
createResourceSet_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSet' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateResourceSet' :: CreateResourceSet -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateResourceSet
s@CreateResourceSet' {} Maybe (HashMap Text Text)
a -> CreateResourceSet
s {$sel:tags:CreateResourceSet' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateResourceSet) 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 resource type of the resources in the resource set. Enter one of the
-- following values for resource type:
--
-- AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage,
-- AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm,
-- AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume,
-- AWS::ElasticLoadBalancing::LoadBalancer,
-- AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function,
-- AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck,
-- AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC,
-- AWS::EC2::VPNConnection, AWS::EC2::VPNGateway,
-- AWS::Route53RecoveryReadiness::DNSTargetResource
createResourceSet_resourceSetType :: Lens.Lens' CreateResourceSet Prelude.Text
createResourceSet_resourceSetType :: Lens' CreateResourceSet Text
createResourceSet_resourceSetType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSet' {Text
resourceSetType :: Text
$sel:resourceSetType:CreateResourceSet' :: CreateResourceSet -> Text
resourceSetType} -> Text
resourceSetType) (\s :: CreateResourceSet
s@CreateResourceSet' {} Text
a -> CreateResourceSet
s {$sel:resourceSetType:CreateResourceSet' :: Text
resourceSetType = Text
a} :: CreateResourceSet)

-- | The name of the resource set to create.
createResourceSet_resourceSetName :: Lens.Lens' CreateResourceSet Prelude.Text
createResourceSet_resourceSetName :: Lens' CreateResourceSet Text
createResourceSet_resourceSetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSet' {Text
resourceSetName :: Text
$sel:resourceSetName:CreateResourceSet' :: CreateResourceSet -> Text
resourceSetName} -> Text
resourceSetName) (\s :: CreateResourceSet
s@CreateResourceSet' {} Text
a -> CreateResourceSet
s {$sel:resourceSetName:CreateResourceSet' :: Text
resourceSetName = Text
a} :: CreateResourceSet)

-- | A list of resource objects in the resource set.
createResourceSet_resources :: Lens.Lens' CreateResourceSet [Resource]
createResourceSet_resources :: Lens' CreateResourceSet [Resource]
createResourceSet_resources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSet' {[Resource]
resources :: [Resource]
$sel:resources:CreateResourceSet' :: CreateResourceSet -> [Resource]
resources} -> [Resource]
resources) (\s :: CreateResourceSet
s@CreateResourceSet' {} [Resource]
a -> CreateResourceSet
s {$sel:resources:CreateResourceSet' :: [Resource]
resources = [Resource]
a} :: CreateResourceSet) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.AWSRequest CreateResourceSet where
  type
    AWSResponse CreateResourceSet =
      CreateResourceSetResponse
  request :: (Service -> Service)
-> CreateResourceSet -> Request CreateResourceSet
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateResourceSet
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateResourceSet)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Resource]
-> Maybe (HashMap Text Text)
-> Int
-> CreateResourceSetResponse
CreateResourceSetResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"resourceSetArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"resourceSetName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"resourceSetType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"resources" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ 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 -> Either String (Maybe a)
Data..?> Key
"tags" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreateResourceSet where
  hashWithSalt :: Int -> CreateResourceSet -> Int
hashWithSalt Int
_salt CreateResourceSet' {[Resource]
Maybe (HashMap Text Text)
Text
resources :: [Resource]
resourceSetName :: Text
resourceSetType :: Text
tags :: Maybe (HashMap Text Text)
$sel:resources:CreateResourceSet' :: CreateResourceSet -> [Resource]
$sel:resourceSetName:CreateResourceSet' :: CreateResourceSet -> Text
$sel:resourceSetType:CreateResourceSet' :: CreateResourceSet -> Text
$sel:tags:CreateResourceSet' :: CreateResourceSet -> Maybe (HashMap Text Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
resourceSetType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
resourceSetName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Resource]
resources

instance Prelude.NFData CreateResourceSet where
  rnf :: CreateResourceSet -> ()
rnf CreateResourceSet' {[Resource]
Maybe (HashMap Text Text)
Text
resources :: [Resource]
resourceSetName :: Text
resourceSetType :: Text
tags :: Maybe (HashMap Text Text)
$sel:resources:CreateResourceSet' :: CreateResourceSet -> [Resource]
$sel:resourceSetName:CreateResourceSet' :: CreateResourceSet -> Text
$sel:resourceSetType:CreateResourceSet' :: CreateResourceSet -> Text
$sel:tags:CreateResourceSet' :: CreateResourceSet -> Maybe (HashMap Text Text)
..} =
    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 Text
resourceSetType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
resourceSetName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Resource]
resources

instance Data.ToHeaders CreateResourceSet where
  toHeaders :: CreateResourceSet -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateResourceSet where
  toJSON :: CreateResourceSet -> Value
toJSON CreateResourceSet' {[Resource]
Maybe (HashMap Text Text)
Text
resources :: [Resource]
resourceSetName :: Text
resourceSetType :: Text
tags :: Maybe (HashMap Text Text)
$sel:resources:CreateResourceSet' :: CreateResourceSet -> [Resource]
$sel:resourceSetName:CreateResourceSet' :: CreateResourceSet -> Text
$sel:resourceSetType:CreateResourceSet' :: CreateResourceSet -> Text
$sel:tags:CreateResourceSet' :: CreateResourceSet -> Maybe (HashMap Text Text)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"tags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
tags,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"resourceSetType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
resourceSetType),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"resourceSetName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
resourceSetName),
            forall a. a -> Maybe a
Prelude.Just (Key
"resources" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [Resource]
resources)
          ]
      )

instance Data.ToPath CreateResourceSet where
  toPath :: CreateResourceSet -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/resourcesets"

instance Data.ToQuery CreateResourceSet where
  toQuery :: CreateResourceSet -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newCreateResourceSetResponse' smart constructor.
data CreateResourceSetResponse = CreateResourceSetResponse'
  { -- | The Amazon Resource Name (ARN) for the resource set.
    CreateResourceSetResponse -> Maybe Text
resourceSetArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the resource set.
    CreateResourceSetResponse -> Maybe Text
resourceSetName :: Prelude.Maybe Prelude.Text,
    -- | The resource type of the resources in the resource set. Enter one of the
    -- following values for resource type:
    --
    -- AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage,
    -- AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm,
    -- AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume,
    -- AWS::ElasticLoadBalancing::LoadBalancer,
    -- AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function,
    -- AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck,
    -- AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC,
    -- AWS::EC2::VPNConnection, AWS::EC2::VPNGateway,
    -- AWS::Route53RecoveryReadiness::DNSTargetResource
    CreateResourceSetResponse -> Maybe Text
resourceSetType :: Prelude.Maybe Prelude.Text,
    -- | A list of resource objects.
    CreateResourceSetResponse -> Maybe [Resource]
resources :: Prelude.Maybe [Resource],
    CreateResourceSetResponse -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The response's http status code.
    CreateResourceSetResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateResourceSetResponse -> CreateResourceSetResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateResourceSetResponse -> CreateResourceSetResponse -> Bool
$c/= :: CreateResourceSetResponse -> CreateResourceSetResponse -> Bool
== :: CreateResourceSetResponse -> CreateResourceSetResponse -> Bool
$c== :: CreateResourceSetResponse -> CreateResourceSetResponse -> Bool
Prelude.Eq, ReadPrec [CreateResourceSetResponse]
ReadPrec CreateResourceSetResponse
Int -> ReadS CreateResourceSetResponse
ReadS [CreateResourceSetResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateResourceSetResponse]
$creadListPrec :: ReadPrec [CreateResourceSetResponse]
readPrec :: ReadPrec CreateResourceSetResponse
$creadPrec :: ReadPrec CreateResourceSetResponse
readList :: ReadS [CreateResourceSetResponse]
$creadList :: ReadS [CreateResourceSetResponse]
readsPrec :: Int -> ReadS CreateResourceSetResponse
$creadsPrec :: Int -> ReadS CreateResourceSetResponse
Prelude.Read, Int -> CreateResourceSetResponse -> ShowS
[CreateResourceSetResponse] -> ShowS
CreateResourceSetResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateResourceSetResponse] -> ShowS
$cshowList :: [CreateResourceSetResponse] -> ShowS
show :: CreateResourceSetResponse -> String
$cshow :: CreateResourceSetResponse -> String
showsPrec :: Int -> CreateResourceSetResponse -> ShowS
$cshowsPrec :: Int -> CreateResourceSetResponse -> ShowS
Prelude.Show, forall x.
Rep CreateResourceSetResponse x -> CreateResourceSetResponse
forall x.
CreateResourceSetResponse -> Rep CreateResourceSetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateResourceSetResponse x -> CreateResourceSetResponse
$cfrom :: forall x.
CreateResourceSetResponse -> Rep CreateResourceSetResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateResourceSetResponse' 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:
--
-- 'resourceSetArn', 'createResourceSetResponse_resourceSetArn' - The Amazon Resource Name (ARN) for the resource set.
--
-- 'resourceSetName', 'createResourceSetResponse_resourceSetName' - The name of the resource set.
--
-- 'resourceSetType', 'createResourceSetResponse_resourceSetType' - The resource type of the resources in the resource set. Enter one of the
-- following values for resource type:
--
-- AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage,
-- AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm,
-- AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume,
-- AWS::ElasticLoadBalancing::LoadBalancer,
-- AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function,
-- AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck,
-- AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC,
-- AWS::EC2::VPNConnection, AWS::EC2::VPNGateway,
-- AWS::Route53RecoveryReadiness::DNSTargetResource
--
-- 'resources', 'createResourceSetResponse_resources' - A list of resource objects.
--
-- 'tags', 'createResourceSetResponse_tags' - Undocumented member.
--
-- 'httpStatus', 'createResourceSetResponse_httpStatus' - The response's http status code.
newCreateResourceSetResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateResourceSetResponse
newCreateResourceSetResponse :: Int -> CreateResourceSetResponse
newCreateResourceSetResponse Int
pHttpStatus_ =
  CreateResourceSetResponse'
    { $sel:resourceSetArn:CreateResourceSetResponse' :: Maybe Text
resourceSetArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:resourceSetName:CreateResourceSetResponse' :: Maybe Text
resourceSetName = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceSetType:CreateResourceSetResponse' :: Maybe Text
resourceSetType = forall a. Maybe a
Prelude.Nothing,
      $sel:resources:CreateResourceSetResponse' :: Maybe [Resource]
resources = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateResourceSetResponse' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateResourceSetResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) for the resource set.
createResourceSetResponse_resourceSetArn :: Lens.Lens' CreateResourceSetResponse (Prelude.Maybe Prelude.Text)
createResourceSetResponse_resourceSetArn :: Lens' CreateResourceSetResponse (Maybe Text)
createResourceSetResponse_resourceSetArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSetResponse' {Maybe Text
resourceSetArn :: Maybe Text
$sel:resourceSetArn:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe Text
resourceSetArn} -> Maybe Text
resourceSetArn) (\s :: CreateResourceSetResponse
s@CreateResourceSetResponse' {} Maybe Text
a -> CreateResourceSetResponse
s {$sel:resourceSetArn:CreateResourceSetResponse' :: Maybe Text
resourceSetArn = Maybe Text
a} :: CreateResourceSetResponse)

-- | The name of the resource set.
createResourceSetResponse_resourceSetName :: Lens.Lens' CreateResourceSetResponse (Prelude.Maybe Prelude.Text)
createResourceSetResponse_resourceSetName :: Lens' CreateResourceSetResponse (Maybe Text)
createResourceSetResponse_resourceSetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSetResponse' {Maybe Text
resourceSetName :: Maybe Text
$sel:resourceSetName:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe Text
resourceSetName} -> Maybe Text
resourceSetName) (\s :: CreateResourceSetResponse
s@CreateResourceSetResponse' {} Maybe Text
a -> CreateResourceSetResponse
s {$sel:resourceSetName:CreateResourceSetResponse' :: Maybe Text
resourceSetName = Maybe Text
a} :: CreateResourceSetResponse)

-- | The resource type of the resources in the resource set. Enter one of the
-- following values for resource type:
--
-- AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage,
-- AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm,
-- AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume,
-- AWS::ElasticLoadBalancing::LoadBalancer,
-- AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function,
-- AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck,
-- AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC,
-- AWS::EC2::VPNConnection, AWS::EC2::VPNGateway,
-- AWS::Route53RecoveryReadiness::DNSTargetResource
createResourceSetResponse_resourceSetType :: Lens.Lens' CreateResourceSetResponse (Prelude.Maybe Prelude.Text)
createResourceSetResponse_resourceSetType :: Lens' CreateResourceSetResponse (Maybe Text)
createResourceSetResponse_resourceSetType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSetResponse' {Maybe Text
resourceSetType :: Maybe Text
$sel:resourceSetType:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe Text
resourceSetType} -> Maybe Text
resourceSetType) (\s :: CreateResourceSetResponse
s@CreateResourceSetResponse' {} Maybe Text
a -> CreateResourceSetResponse
s {$sel:resourceSetType:CreateResourceSetResponse' :: Maybe Text
resourceSetType = Maybe Text
a} :: CreateResourceSetResponse)

-- | A list of resource objects.
createResourceSetResponse_resources :: Lens.Lens' CreateResourceSetResponse (Prelude.Maybe [Resource])
createResourceSetResponse_resources :: Lens' CreateResourceSetResponse (Maybe [Resource])
createResourceSetResponse_resources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSetResponse' {Maybe [Resource]
resources :: Maybe [Resource]
$sel:resources:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe [Resource]
resources} -> Maybe [Resource]
resources) (\s :: CreateResourceSetResponse
s@CreateResourceSetResponse' {} Maybe [Resource]
a -> CreateResourceSetResponse
s {$sel:resources:CreateResourceSetResponse' :: Maybe [Resource]
resources = Maybe [Resource]
a} :: CreateResourceSetResponse) 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

-- | Undocumented member.
createResourceSetResponse_tags :: Lens.Lens' CreateResourceSetResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createResourceSetResponse_tags :: Lens' CreateResourceSetResponse (Maybe (HashMap Text Text))
createResourceSetResponse_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSetResponse' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateResourceSetResponse
s@CreateResourceSetResponse' {} Maybe (HashMap Text Text)
a -> CreateResourceSetResponse
s {$sel:tags:CreateResourceSetResponse' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateResourceSetResponse) 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 response's http status code.
createResourceSetResponse_httpStatus :: Lens.Lens' CreateResourceSetResponse Prelude.Int
createResourceSetResponse_httpStatus :: Lens' CreateResourceSetResponse Int
createResourceSetResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateResourceSetResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateResourceSetResponse' :: CreateResourceSetResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateResourceSetResponse
s@CreateResourceSetResponse' {} Int
a -> CreateResourceSetResponse
s {$sel:httpStatus:CreateResourceSetResponse' :: Int
httpStatus = Int
a} :: CreateResourceSetResponse)

instance Prelude.NFData CreateResourceSetResponse where
  rnf :: CreateResourceSetResponse -> ()
rnf CreateResourceSetResponse' {Int
Maybe [Resource]
Maybe Text
Maybe (HashMap Text Text)
httpStatus :: Int
tags :: Maybe (HashMap Text Text)
resources :: Maybe [Resource]
resourceSetType :: Maybe Text
resourceSetName :: Maybe Text
resourceSetArn :: Maybe Text
$sel:httpStatus:CreateResourceSetResponse' :: CreateResourceSetResponse -> Int
$sel:tags:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe (HashMap Text Text)
$sel:resources:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe [Resource]
$sel:resourceSetType:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe Text
$sel:resourceSetName:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe Text
$sel:resourceSetArn:CreateResourceSetResponse' :: CreateResourceSetResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceSetArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceSetName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceSetType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Resource]
resources
      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 Int
httpStatus