{-# 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.DataSync.CreateLocationFsxLustre
-- 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 an endpoint for an Amazon FSx for Lustre file system.
module Amazonka.DataSync.CreateLocationFsxLustre
  ( -- * Creating a Request
    CreateLocationFsxLustre (..),
    newCreateLocationFsxLustre,

    -- * Request Lenses
    createLocationFsxLustre_subdirectory,
    createLocationFsxLustre_tags,
    createLocationFsxLustre_fsxFilesystemArn,
    createLocationFsxLustre_securityGroupArns,

    -- * Destructuring the Response
    CreateLocationFsxLustreResponse (..),
    newCreateLocationFsxLustreResponse,

    -- * Response Lenses
    createLocationFsxLustreResponse_locationArn,
    createLocationFsxLustreResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.DataSync.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newCreateLocationFsxLustre' smart constructor.
data CreateLocationFsxLustre = CreateLocationFsxLustre'
  { -- | A subdirectory in the location\'s path. This subdirectory in the FSx for
    -- Lustre file system is used to read data from the FSx for Lustre source
    -- location or write data to the FSx for Lustre destination.
    CreateLocationFsxLustre -> Maybe Text
subdirectory :: Prelude.Maybe Prelude.Text,
    -- | The key-value pair that represents a tag that you want to add to the
    -- resource. The value can be an empty string. This value helps you manage,
    -- filter, and search for your resources. We recommend that you create a
    -- name tag for your location.
    CreateLocationFsxLustre -> Maybe [TagListEntry]
tags :: Prelude.Maybe [TagListEntry],
    -- | The Amazon Resource Name (ARN) for the FSx for Lustre file system.
    CreateLocationFsxLustre -> Text
fsxFilesystemArn :: Prelude.Text,
    -- | The Amazon Resource Names (ARNs) of the security groups that are used to
    -- configure the FSx for Lustre file system.
    CreateLocationFsxLustre -> NonEmpty Text
securityGroupArns :: Prelude.NonEmpty Prelude.Text
  }
  deriving (CreateLocationFsxLustre -> CreateLocationFsxLustre -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateLocationFsxLustre -> CreateLocationFsxLustre -> Bool
$c/= :: CreateLocationFsxLustre -> CreateLocationFsxLustre -> Bool
== :: CreateLocationFsxLustre -> CreateLocationFsxLustre -> Bool
$c== :: CreateLocationFsxLustre -> CreateLocationFsxLustre -> Bool
Prelude.Eq, ReadPrec [CreateLocationFsxLustre]
ReadPrec CreateLocationFsxLustre
Int -> ReadS CreateLocationFsxLustre
ReadS [CreateLocationFsxLustre]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateLocationFsxLustre]
$creadListPrec :: ReadPrec [CreateLocationFsxLustre]
readPrec :: ReadPrec CreateLocationFsxLustre
$creadPrec :: ReadPrec CreateLocationFsxLustre
readList :: ReadS [CreateLocationFsxLustre]
$creadList :: ReadS [CreateLocationFsxLustre]
readsPrec :: Int -> ReadS CreateLocationFsxLustre
$creadsPrec :: Int -> ReadS CreateLocationFsxLustre
Prelude.Read, Int -> CreateLocationFsxLustre -> ShowS
[CreateLocationFsxLustre] -> ShowS
CreateLocationFsxLustre -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateLocationFsxLustre] -> ShowS
$cshowList :: [CreateLocationFsxLustre] -> ShowS
show :: CreateLocationFsxLustre -> String
$cshow :: CreateLocationFsxLustre -> String
showsPrec :: Int -> CreateLocationFsxLustre -> ShowS
$cshowsPrec :: Int -> CreateLocationFsxLustre -> ShowS
Prelude.Show, forall x. Rep CreateLocationFsxLustre x -> CreateLocationFsxLustre
forall x. CreateLocationFsxLustre -> Rep CreateLocationFsxLustre x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateLocationFsxLustre x -> CreateLocationFsxLustre
$cfrom :: forall x. CreateLocationFsxLustre -> Rep CreateLocationFsxLustre x
Prelude.Generic)

-- |
-- Create a value of 'CreateLocationFsxLustre' 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:
--
-- 'subdirectory', 'createLocationFsxLustre_subdirectory' - A subdirectory in the location\'s path. This subdirectory in the FSx for
-- Lustre file system is used to read data from the FSx for Lustre source
-- location or write data to the FSx for Lustre destination.
--
-- 'tags', 'createLocationFsxLustre_tags' - The key-value pair that represents a tag that you want to add to the
-- resource. The value can be an empty string. This value helps you manage,
-- filter, and search for your resources. We recommend that you create a
-- name tag for your location.
--
-- 'fsxFilesystemArn', 'createLocationFsxLustre_fsxFilesystemArn' - The Amazon Resource Name (ARN) for the FSx for Lustre file system.
--
-- 'securityGroupArns', 'createLocationFsxLustre_securityGroupArns' - The Amazon Resource Names (ARNs) of the security groups that are used to
-- configure the FSx for Lustre file system.
newCreateLocationFsxLustre ::
  -- | 'fsxFilesystemArn'
  Prelude.Text ->
  -- | 'securityGroupArns'
  Prelude.NonEmpty Prelude.Text ->
  CreateLocationFsxLustre
newCreateLocationFsxLustre :: Text -> NonEmpty Text -> CreateLocationFsxLustre
newCreateLocationFsxLustre
  Text
pFsxFilesystemArn_
  NonEmpty Text
pSecurityGroupArns_ =
    CreateLocationFsxLustre'
      { $sel:subdirectory:CreateLocationFsxLustre' :: Maybe Text
subdirectory =
          forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateLocationFsxLustre' :: Maybe [TagListEntry]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:fsxFilesystemArn:CreateLocationFsxLustre' :: Text
fsxFilesystemArn = Text
pFsxFilesystemArn_,
        $sel:securityGroupArns:CreateLocationFsxLustre' :: NonEmpty Text
securityGroupArns =
          forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty Text
pSecurityGroupArns_
      }

-- | A subdirectory in the location\'s path. This subdirectory in the FSx for
-- Lustre file system is used to read data from the FSx for Lustre source
-- location or write data to the FSx for Lustre destination.
createLocationFsxLustre_subdirectory :: Lens.Lens' CreateLocationFsxLustre (Prelude.Maybe Prelude.Text)
createLocationFsxLustre_subdirectory :: Lens' CreateLocationFsxLustre (Maybe Text)
createLocationFsxLustre_subdirectory = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateLocationFsxLustre' {Maybe Text
subdirectory :: Maybe Text
$sel:subdirectory:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Maybe Text
subdirectory} -> Maybe Text
subdirectory) (\s :: CreateLocationFsxLustre
s@CreateLocationFsxLustre' {} Maybe Text
a -> CreateLocationFsxLustre
s {$sel:subdirectory:CreateLocationFsxLustre' :: Maybe Text
subdirectory = Maybe Text
a} :: CreateLocationFsxLustre)

-- | The key-value pair that represents a tag that you want to add to the
-- resource. The value can be an empty string. This value helps you manage,
-- filter, and search for your resources. We recommend that you create a
-- name tag for your location.
createLocationFsxLustre_tags :: Lens.Lens' CreateLocationFsxLustre (Prelude.Maybe [TagListEntry])
createLocationFsxLustre_tags :: Lens' CreateLocationFsxLustre (Maybe [TagListEntry])
createLocationFsxLustre_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateLocationFsxLustre' {Maybe [TagListEntry]
tags :: Maybe [TagListEntry]
$sel:tags:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Maybe [TagListEntry]
tags} -> Maybe [TagListEntry]
tags) (\s :: CreateLocationFsxLustre
s@CreateLocationFsxLustre' {} Maybe [TagListEntry]
a -> CreateLocationFsxLustre
s {$sel:tags:CreateLocationFsxLustre' :: Maybe [TagListEntry]
tags = Maybe [TagListEntry]
a} :: CreateLocationFsxLustre) 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 Amazon Resource Name (ARN) for the FSx for Lustre file system.
createLocationFsxLustre_fsxFilesystemArn :: Lens.Lens' CreateLocationFsxLustre Prelude.Text
createLocationFsxLustre_fsxFilesystemArn :: Lens' CreateLocationFsxLustre Text
createLocationFsxLustre_fsxFilesystemArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateLocationFsxLustre' {Text
fsxFilesystemArn :: Text
$sel:fsxFilesystemArn:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Text
fsxFilesystemArn} -> Text
fsxFilesystemArn) (\s :: CreateLocationFsxLustre
s@CreateLocationFsxLustre' {} Text
a -> CreateLocationFsxLustre
s {$sel:fsxFilesystemArn:CreateLocationFsxLustre' :: Text
fsxFilesystemArn = Text
a} :: CreateLocationFsxLustre)

-- | The Amazon Resource Names (ARNs) of the security groups that are used to
-- configure the FSx for Lustre file system.
createLocationFsxLustre_securityGroupArns :: Lens.Lens' CreateLocationFsxLustre (Prelude.NonEmpty Prelude.Text)
createLocationFsxLustre_securityGroupArns :: Lens' CreateLocationFsxLustre (NonEmpty Text)
createLocationFsxLustre_securityGroupArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateLocationFsxLustre' {NonEmpty Text
securityGroupArns :: NonEmpty Text
$sel:securityGroupArns:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> NonEmpty Text
securityGroupArns} -> NonEmpty Text
securityGroupArns) (\s :: CreateLocationFsxLustre
s@CreateLocationFsxLustre' {} NonEmpty Text
a -> CreateLocationFsxLustre
s {$sel:securityGroupArns:CreateLocationFsxLustre' :: NonEmpty Text
securityGroupArns = NonEmpty Text
a} :: CreateLocationFsxLustre) 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 CreateLocationFsxLustre where
  type
    AWSResponse CreateLocationFsxLustre =
      CreateLocationFsxLustreResponse
  request :: (Service -> Service)
-> CreateLocationFsxLustre -> Request CreateLocationFsxLustre
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 CreateLocationFsxLustre
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateLocationFsxLustre)))
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 -> Int -> CreateLocationFsxLustreResponse
CreateLocationFsxLustreResponse'
            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
"LocationArn")
            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 CreateLocationFsxLustre where
  hashWithSalt :: Int -> CreateLocationFsxLustre -> Int
hashWithSalt Int
_salt CreateLocationFsxLustre' {Maybe [TagListEntry]
Maybe Text
NonEmpty Text
Text
securityGroupArns :: NonEmpty Text
fsxFilesystemArn :: Text
tags :: Maybe [TagListEntry]
subdirectory :: Maybe Text
$sel:securityGroupArns:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> NonEmpty Text
$sel:fsxFilesystemArn:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Text
$sel:tags:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Maybe [TagListEntry]
$sel:subdirectory:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subdirectory
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [TagListEntry]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
fsxFilesystemArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty Text
securityGroupArns

instance Prelude.NFData CreateLocationFsxLustre where
  rnf :: CreateLocationFsxLustre -> ()
rnf CreateLocationFsxLustre' {Maybe [TagListEntry]
Maybe Text
NonEmpty Text
Text
securityGroupArns :: NonEmpty Text
fsxFilesystemArn :: Text
tags :: Maybe [TagListEntry]
subdirectory :: Maybe Text
$sel:securityGroupArns:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> NonEmpty Text
$sel:fsxFilesystemArn:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Text
$sel:tags:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Maybe [TagListEntry]
$sel:subdirectory:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subdirectory
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [TagListEntry]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
fsxFilesystemArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty Text
securityGroupArns

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

instance Data.ToJSON CreateLocationFsxLustre where
  toJSON :: CreateLocationFsxLustre -> Value
toJSON CreateLocationFsxLustre' {Maybe [TagListEntry]
Maybe Text
NonEmpty Text
Text
securityGroupArns :: NonEmpty Text
fsxFilesystemArn :: Text
tags :: Maybe [TagListEntry]
subdirectory :: Maybe Text
$sel:securityGroupArns:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> NonEmpty Text
$sel:fsxFilesystemArn:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Text
$sel:tags:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Maybe [TagListEntry]
$sel:subdirectory:CreateLocationFsxLustre' :: CreateLocationFsxLustre -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Subdirectory" 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 Text
subdirectory,
            (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 [TagListEntry]
tags,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"FsxFilesystemArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
fsxFilesystemArn),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"SecurityGroupArns" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty Text
securityGroupArns)
          ]
      )

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

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

-- | /See:/ 'newCreateLocationFsxLustreResponse' smart constructor.
data CreateLocationFsxLustreResponse = CreateLocationFsxLustreResponse'
  { -- | The Amazon Resource Name (ARN) of the FSx for Lustre file system
    -- location that\'s created.
    CreateLocationFsxLustreResponse -> Maybe Text
locationArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateLocationFsxLustreResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateLocationFsxLustreResponse
-> CreateLocationFsxLustreResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateLocationFsxLustreResponse
-> CreateLocationFsxLustreResponse -> Bool
$c/= :: CreateLocationFsxLustreResponse
-> CreateLocationFsxLustreResponse -> Bool
== :: CreateLocationFsxLustreResponse
-> CreateLocationFsxLustreResponse -> Bool
$c== :: CreateLocationFsxLustreResponse
-> CreateLocationFsxLustreResponse -> Bool
Prelude.Eq, ReadPrec [CreateLocationFsxLustreResponse]
ReadPrec CreateLocationFsxLustreResponse
Int -> ReadS CreateLocationFsxLustreResponse
ReadS [CreateLocationFsxLustreResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateLocationFsxLustreResponse]
$creadListPrec :: ReadPrec [CreateLocationFsxLustreResponse]
readPrec :: ReadPrec CreateLocationFsxLustreResponse
$creadPrec :: ReadPrec CreateLocationFsxLustreResponse
readList :: ReadS [CreateLocationFsxLustreResponse]
$creadList :: ReadS [CreateLocationFsxLustreResponse]
readsPrec :: Int -> ReadS CreateLocationFsxLustreResponse
$creadsPrec :: Int -> ReadS CreateLocationFsxLustreResponse
Prelude.Read, Int -> CreateLocationFsxLustreResponse -> ShowS
[CreateLocationFsxLustreResponse] -> ShowS
CreateLocationFsxLustreResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateLocationFsxLustreResponse] -> ShowS
$cshowList :: [CreateLocationFsxLustreResponse] -> ShowS
show :: CreateLocationFsxLustreResponse -> String
$cshow :: CreateLocationFsxLustreResponse -> String
showsPrec :: Int -> CreateLocationFsxLustreResponse -> ShowS
$cshowsPrec :: Int -> CreateLocationFsxLustreResponse -> ShowS
Prelude.Show, forall x.
Rep CreateLocationFsxLustreResponse x
-> CreateLocationFsxLustreResponse
forall x.
CreateLocationFsxLustreResponse
-> Rep CreateLocationFsxLustreResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateLocationFsxLustreResponse x
-> CreateLocationFsxLustreResponse
$cfrom :: forall x.
CreateLocationFsxLustreResponse
-> Rep CreateLocationFsxLustreResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateLocationFsxLustreResponse' 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:
--
-- 'locationArn', 'createLocationFsxLustreResponse_locationArn' - The Amazon Resource Name (ARN) of the FSx for Lustre file system
-- location that\'s created.
--
-- 'httpStatus', 'createLocationFsxLustreResponse_httpStatus' - The response's http status code.
newCreateLocationFsxLustreResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateLocationFsxLustreResponse
newCreateLocationFsxLustreResponse :: Int -> CreateLocationFsxLustreResponse
newCreateLocationFsxLustreResponse Int
pHttpStatus_ =
  CreateLocationFsxLustreResponse'
    { $sel:locationArn:CreateLocationFsxLustreResponse' :: Maybe Text
locationArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateLocationFsxLustreResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) of the FSx for Lustre file system
-- location that\'s created.
createLocationFsxLustreResponse_locationArn :: Lens.Lens' CreateLocationFsxLustreResponse (Prelude.Maybe Prelude.Text)
createLocationFsxLustreResponse_locationArn :: Lens' CreateLocationFsxLustreResponse (Maybe Text)
createLocationFsxLustreResponse_locationArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateLocationFsxLustreResponse' {Maybe Text
locationArn :: Maybe Text
$sel:locationArn:CreateLocationFsxLustreResponse' :: CreateLocationFsxLustreResponse -> Maybe Text
locationArn} -> Maybe Text
locationArn) (\s :: CreateLocationFsxLustreResponse
s@CreateLocationFsxLustreResponse' {} Maybe Text
a -> CreateLocationFsxLustreResponse
s {$sel:locationArn:CreateLocationFsxLustreResponse' :: Maybe Text
locationArn = Maybe Text
a} :: CreateLocationFsxLustreResponse)

-- | The response's http status code.
createLocationFsxLustreResponse_httpStatus :: Lens.Lens' CreateLocationFsxLustreResponse Prelude.Int
createLocationFsxLustreResponse_httpStatus :: Lens' CreateLocationFsxLustreResponse Int
createLocationFsxLustreResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateLocationFsxLustreResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateLocationFsxLustreResponse' :: CreateLocationFsxLustreResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateLocationFsxLustreResponse
s@CreateLocationFsxLustreResponse' {} Int
a -> CreateLocationFsxLustreResponse
s {$sel:httpStatus:CreateLocationFsxLustreResponse' :: Int
httpStatus = Int
a} :: CreateLocationFsxLustreResponse)

instance
  Prelude.NFData
    CreateLocationFsxLustreResponse
  where
  rnf :: CreateLocationFsxLustreResponse -> ()
rnf CreateLocationFsxLustreResponse' {Int
Maybe Text
httpStatus :: Int
locationArn :: Maybe Text
$sel:httpStatus:CreateLocationFsxLustreResponse' :: CreateLocationFsxLustreResponse -> Int
$sel:locationArn:CreateLocationFsxLustreResponse' :: CreateLocationFsxLustreResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
locationArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus