packages feed

amazonka-dms-2.0: gen/Amazonka/DMS/CreateFleetAdvisorCollector.hs

{-# 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.DMS.CreateFleetAdvisorCollector
-- 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 Fleet Advisor collector using the specified parameters.
module Amazonka.DMS.CreateFleetAdvisorCollector
  ( -- * Creating a Request
    CreateFleetAdvisorCollector (..),
    newCreateFleetAdvisorCollector,

    -- * Request Lenses
    createFleetAdvisorCollector_description,
    createFleetAdvisorCollector_collectorName,
    createFleetAdvisorCollector_serviceAccessRoleArn,
    createFleetAdvisorCollector_s3BucketName,

    -- * Destructuring the Response
    CreateFleetAdvisorCollectorResponse (..),
    newCreateFleetAdvisorCollectorResponse,

    -- * Response Lenses
    createFleetAdvisorCollectorResponse_collectorName,
    createFleetAdvisorCollectorResponse_collectorReferencedId,
    createFleetAdvisorCollectorResponse_description,
    createFleetAdvisorCollectorResponse_s3BucketName,
    createFleetAdvisorCollectorResponse_serviceAccessRoleArn,
    createFleetAdvisorCollectorResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateFleetAdvisorCollector' smart constructor.
data CreateFleetAdvisorCollector = CreateFleetAdvisorCollector'
  { -- | A summary description of your Fleet Advisor collector.
    description :: Prelude.Maybe Prelude.Text,
    -- | The name of your Fleet Advisor collector (for example,
    -- @sample-collector@).
    collectorName :: Prelude.Text,
    -- | The IAM role that grants permissions to access the specified Amazon S3
    -- bucket.
    serviceAccessRoleArn :: Prelude.Text,
    -- | The Amazon S3 bucket that the Fleet Advisor collector uses to store
    -- inventory metadata.
    s3BucketName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateFleetAdvisorCollector' 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:
--
-- 'description', 'createFleetAdvisorCollector_description' - A summary description of your Fleet Advisor collector.
--
-- 'collectorName', 'createFleetAdvisorCollector_collectorName' - The name of your Fleet Advisor collector (for example,
-- @sample-collector@).
--
-- 'serviceAccessRoleArn', 'createFleetAdvisorCollector_serviceAccessRoleArn' - The IAM role that grants permissions to access the specified Amazon S3
-- bucket.
--
-- 's3BucketName', 'createFleetAdvisorCollector_s3BucketName' - The Amazon S3 bucket that the Fleet Advisor collector uses to store
-- inventory metadata.
newCreateFleetAdvisorCollector ::
  -- | 'collectorName'
  Prelude.Text ->
  -- | 'serviceAccessRoleArn'
  Prelude.Text ->
  -- | 's3BucketName'
  Prelude.Text ->
  CreateFleetAdvisorCollector
newCreateFleetAdvisorCollector
  pCollectorName_
  pServiceAccessRoleArn_
  pS3BucketName_ =
    CreateFleetAdvisorCollector'
      { description =
          Prelude.Nothing,
        collectorName = pCollectorName_,
        serviceAccessRoleArn = pServiceAccessRoleArn_,
        s3BucketName = pS3BucketName_
      }

-- | A summary description of your Fleet Advisor collector.
createFleetAdvisorCollector_description :: Lens.Lens' CreateFleetAdvisorCollector (Prelude.Maybe Prelude.Text)
createFleetAdvisorCollector_description = Lens.lens (\CreateFleetAdvisorCollector' {description} -> description) (\s@CreateFleetAdvisorCollector' {} a -> s {description = a} :: CreateFleetAdvisorCollector)

-- | The name of your Fleet Advisor collector (for example,
-- @sample-collector@).
createFleetAdvisorCollector_collectorName :: Lens.Lens' CreateFleetAdvisorCollector Prelude.Text
createFleetAdvisorCollector_collectorName = Lens.lens (\CreateFleetAdvisorCollector' {collectorName} -> collectorName) (\s@CreateFleetAdvisorCollector' {} a -> s {collectorName = a} :: CreateFleetAdvisorCollector)

-- | The IAM role that grants permissions to access the specified Amazon S3
-- bucket.
createFleetAdvisorCollector_serviceAccessRoleArn :: Lens.Lens' CreateFleetAdvisorCollector Prelude.Text
createFleetAdvisorCollector_serviceAccessRoleArn = Lens.lens (\CreateFleetAdvisorCollector' {serviceAccessRoleArn} -> serviceAccessRoleArn) (\s@CreateFleetAdvisorCollector' {} a -> s {serviceAccessRoleArn = a} :: CreateFleetAdvisorCollector)

-- | The Amazon S3 bucket that the Fleet Advisor collector uses to store
-- inventory metadata.
createFleetAdvisorCollector_s3BucketName :: Lens.Lens' CreateFleetAdvisorCollector Prelude.Text
createFleetAdvisorCollector_s3BucketName = Lens.lens (\CreateFleetAdvisorCollector' {s3BucketName} -> s3BucketName) (\s@CreateFleetAdvisorCollector' {} a -> s {s3BucketName = a} :: CreateFleetAdvisorCollector)

instance Core.AWSRequest CreateFleetAdvisorCollector where
  type
    AWSResponse CreateFleetAdvisorCollector =
      CreateFleetAdvisorCollectorResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          CreateFleetAdvisorCollectorResponse'
            Prelude.<$> (x Data..?> "CollectorName")
            Prelude.<*> (x Data..?> "CollectorReferencedId")
            Prelude.<*> (x Data..?> "Description")
            Prelude.<*> (x Data..?> "S3BucketName")
            Prelude.<*> (x Data..?> "ServiceAccessRoleArn")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable CreateFleetAdvisorCollector where
  hashWithSalt _salt CreateFleetAdvisorCollector' {..} =
    _salt
      `Prelude.hashWithSalt` description
      `Prelude.hashWithSalt` collectorName
      `Prelude.hashWithSalt` serviceAccessRoleArn
      `Prelude.hashWithSalt` s3BucketName

instance Prelude.NFData CreateFleetAdvisorCollector where
  rnf CreateFleetAdvisorCollector' {..} =
    Prelude.rnf description
      `Prelude.seq` Prelude.rnf collectorName
      `Prelude.seq` Prelude.rnf serviceAccessRoleArn
      `Prelude.seq` Prelude.rnf s3BucketName

instance Data.ToHeaders CreateFleetAdvisorCollector where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "AmazonDMSv20160101.CreateFleetAdvisorCollector" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateFleetAdvisorCollector where
  toJSON CreateFleetAdvisorCollector' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("Description" Data..=) Prelude.<$> description,
            Prelude.Just ("CollectorName" Data..= collectorName),
            Prelude.Just
              ( "ServiceAccessRoleArn"
                  Data..= serviceAccessRoleArn
              ),
            Prelude.Just ("S3BucketName" Data..= s3BucketName)
          ]
      )

instance Data.ToPath CreateFleetAdvisorCollector where
  toPath = Prelude.const "/"

instance Data.ToQuery CreateFleetAdvisorCollector where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newCreateFleetAdvisorCollectorResponse' smart constructor.
data CreateFleetAdvisorCollectorResponse = CreateFleetAdvisorCollectorResponse'
  { -- | The name of the new Fleet Advisor collector.
    collectorName :: Prelude.Maybe Prelude.Text,
    -- | The unique ID of the new Fleet Advisor collector, for example:
    -- @22fda70c-40d5-4acf-b233-a495bd8eb7f5@
    collectorReferencedId :: Prelude.Maybe Prelude.Text,
    -- | A summary description of the Fleet Advisor collector.
    description :: Prelude.Maybe Prelude.Text,
    -- | The Amazon S3 bucket that the collector uses to store inventory
    -- metadata.
    s3BucketName :: Prelude.Maybe Prelude.Text,
    -- | The IAM role that grants permissions to access the specified Amazon S3
    -- bucket.
    serviceAccessRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateFleetAdvisorCollectorResponse' 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:
--
-- 'collectorName', 'createFleetAdvisorCollectorResponse_collectorName' - The name of the new Fleet Advisor collector.
--
-- 'collectorReferencedId', 'createFleetAdvisorCollectorResponse_collectorReferencedId' - The unique ID of the new Fleet Advisor collector, for example:
-- @22fda70c-40d5-4acf-b233-a495bd8eb7f5@
--
-- 'description', 'createFleetAdvisorCollectorResponse_description' - A summary description of the Fleet Advisor collector.
--
-- 's3BucketName', 'createFleetAdvisorCollectorResponse_s3BucketName' - The Amazon S3 bucket that the collector uses to store inventory
-- metadata.
--
-- 'serviceAccessRoleArn', 'createFleetAdvisorCollectorResponse_serviceAccessRoleArn' - The IAM role that grants permissions to access the specified Amazon S3
-- bucket.
--
-- 'httpStatus', 'createFleetAdvisorCollectorResponse_httpStatus' - The response's http status code.
newCreateFleetAdvisorCollectorResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateFleetAdvisorCollectorResponse
newCreateFleetAdvisorCollectorResponse pHttpStatus_ =
  CreateFleetAdvisorCollectorResponse'
    { collectorName =
        Prelude.Nothing,
      collectorReferencedId =
        Prelude.Nothing,
      description = Prelude.Nothing,
      s3BucketName = Prelude.Nothing,
      serviceAccessRoleArn = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The name of the new Fleet Advisor collector.
createFleetAdvisorCollectorResponse_collectorName :: Lens.Lens' CreateFleetAdvisorCollectorResponse (Prelude.Maybe Prelude.Text)
createFleetAdvisorCollectorResponse_collectorName = Lens.lens (\CreateFleetAdvisorCollectorResponse' {collectorName} -> collectorName) (\s@CreateFleetAdvisorCollectorResponse' {} a -> s {collectorName = a} :: CreateFleetAdvisorCollectorResponse)

-- | The unique ID of the new Fleet Advisor collector, for example:
-- @22fda70c-40d5-4acf-b233-a495bd8eb7f5@
createFleetAdvisorCollectorResponse_collectorReferencedId :: Lens.Lens' CreateFleetAdvisorCollectorResponse (Prelude.Maybe Prelude.Text)
createFleetAdvisorCollectorResponse_collectorReferencedId = Lens.lens (\CreateFleetAdvisorCollectorResponse' {collectorReferencedId} -> collectorReferencedId) (\s@CreateFleetAdvisorCollectorResponse' {} a -> s {collectorReferencedId = a} :: CreateFleetAdvisorCollectorResponse)

-- | A summary description of the Fleet Advisor collector.
createFleetAdvisorCollectorResponse_description :: Lens.Lens' CreateFleetAdvisorCollectorResponse (Prelude.Maybe Prelude.Text)
createFleetAdvisorCollectorResponse_description = Lens.lens (\CreateFleetAdvisorCollectorResponse' {description} -> description) (\s@CreateFleetAdvisorCollectorResponse' {} a -> s {description = a} :: CreateFleetAdvisorCollectorResponse)

-- | The Amazon S3 bucket that the collector uses to store inventory
-- metadata.
createFleetAdvisorCollectorResponse_s3BucketName :: Lens.Lens' CreateFleetAdvisorCollectorResponse (Prelude.Maybe Prelude.Text)
createFleetAdvisorCollectorResponse_s3BucketName = Lens.lens (\CreateFleetAdvisorCollectorResponse' {s3BucketName} -> s3BucketName) (\s@CreateFleetAdvisorCollectorResponse' {} a -> s {s3BucketName = a} :: CreateFleetAdvisorCollectorResponse)

-- | The IAM role that grants permissions to access the specified Amazon S3
-- bucket.
createFleetAdvisorCollectorResponse_serviceAccessRoleArn :: Lens.Lens' CreateFleetAdvisorCollectorResponse (Prelude.Maybe Prelude.Text)
createFleetAdvisorCollectorResponse_serviceAccessRoleArn = Lens.lens (\CreateFleetAdvisorCollectorResponse' {serviceAccessRoleArn} -> serviceAccessRoleArn) (\s@CreateFleetAdvisorCollectorResponse' {} a -> s {serviceAccessRoleArn = a} :: CreateFleetAdvisorCollectorResponse)

-- | The response's http status code.
createFleetAdvisorCollectorResponse_httpStatus :: Lens.Lens' CreateFleetAdvisorCollectorResponse Prelude.Int
createFleetAdvisorCollectorResponse_httpStatus = Lens.lens (\CreateFleetAdvisorCollectorResponse' {httpStatus} -> httpStatus) (\s@CreateFleetAdvisorCollectorResponse' {} a -> s {httpStatus = a} :: CreateFleetAdvisorCollectorResponse)

instance
  Prelude.NFData
    CreateFleetAdvisorCollectorResponse
  where
  rnf CreateFleetAdvisorCollectorResponse' {..} =
    Prelude.rnf collectorName
      `Prelude.seq` Prelude.rnf collectorReferencedId
      `Prelude.seq` Prelude.rnf description
      `Prelude.seq` Prelude.rnf s3BucketName
      `Prelude.seq` Prelude.rnf serviceAccessRoleArn
      `Prelude.seq` Prelude.rnf httpStatus