packages feed

amazonka-elastic-inference-2.0: gen/Amazonka/ElasticInference/DescribeAccelerators.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.ElasticInference.DescribeAccelerators
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes information over a provided set of accelerators belonging to
-- an account.
--
-- This operation returns paginated results.
module Amazonka.ElasticInference.DescribeAccelerators
  ( -- * Creating a Request
    DescribeAccelerators (..),
    newDescribeAccelerators,

    -- * Request Lenses
    describeAccelerators_acceleratorIds,
    describeAccelerators_filters,
    describeAccelerators_maxResults,
    describeAccelerators_nextToken,

    -- * Destructuring the Response
    DescribeAcceleratorsResponse (..),
    newDescribeAcceleratorsResponse,

    -- * Response Lenses
    describeAcceleratorsResponse_acceleratorSet,
    describeAcceleratorsResponse_nextToken,
    describeAcceleratorsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeAccelerators' smart constructor.
data DescribeAccelerators = DescribeAccelerators'
  { -- | The IDs of the accelerators to describe.
    acceleratorIds :: Prelude.Maybe [Prelude.Text],
    -- | One or more filters. Filter names and values are case-sensitive. Valid
    -- filter names are: accelerator-types: can provide a list of accelerator
    -- type names to filter for. instance-id: can provide a list of EC2
    -- instance ids to filter for.
    filters :: Prelude.Maybe [Filter],
    -- | The total number of items to return in the command\'s output. If the
    -- total number of items available is more than the value specified, a
    -- NextToken is provided in the command\'s output. To resume pagination,
    -- provide the NextToken value in the starting-token argument of a
    -- subsequent command. Do not use the NextToken response element directly
    -- outside of the AWS CLI.
    maxResults :: Prelude.Maybe Prelude.Natural,
    -- | A token to specify where to start paginating. This is the NextToken from
    -- a previously truncated response.
    nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeAccelerators' 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:
--
-- 'acceleratorIds', 'describeAccelerators_acceleratorIds' - The IDs of the accelerators to describe.
--
-- 'filters', 'describeAccelerators_filters' - One or more filters. Filter names and values are case-sensitive. Valid
-- filter names are: accelerator-types: can provide a list of accelerator
-- type names to filter for. instance-id: can provide a list of EC2
-- instance ids to filter for.
--
-- 'maxResults', 'describeAccelerators_maxResults' - The total number of items to return in the command\'s output. If the
-- total number of items available is more than the value specified, a
-- NextToken is provided in the command\'s output. To resume pagination,
-- provide the NextToken value in the starting-token argument of a
-- subsequent command. Do not use the NextToken response element directly
-- outside of the AWS CLI.
--
-- 'nextToken', 'describeAccelerators_nextToken' - A token to specify where to start paginating. This is the NextToken from
-- a previously truncated response.
newDescribeAccelerators ::
  DescribeAccelerators
newDescribeAccelerators =
  DescribeAccelerators'
    { acceleratorIds =
        Prelude.Nothing,
      filters = Prelude.Nothing,
      maxResults = Prelude.Nothing,
      nextToken = Prelude.Nothing
    }

-- | The IDs of the accelerators to describe.
describeAccelerators_acceleratorIds :: Lens.Lens' DescribeAccelerators (Prelude.Maybe [Prelude.Text])
describeAccelerators_acceleratorIds = Lens.lens (\DescribeAccelerators' {acceleratorIds} -> acceleratorIds) (\s@DescribeAccelerators' {} a -> s {acceleratorIds = a} :: DescribeAccelerators) Prelude.. Lens.mapping Lens.coerced

-- | One or more filters. Filter names and values are case-sensitive. Valid
-- filter names are: accelerator-types: can provide a list of accelerator
-- type names to filter for. instance-id: can provide a list of EC2
-- instance ids to filter for.
describeAccelerators_filters :: Lens.Lens' DescribeAccelerators (Prelude.Maybe [Filter])
describeAccelerators_filters = Lens.lens (\DescribeAccelerators' {filters} -> filters) (\s@DescribeAccelerators' {} a -> s {filters = a} :: DescribeAccelerators) Prelude.. Lens.mapping Lens.coerced

-- | The total number of items to return in the command\'s output. If the
-- total number of items available is more than the value specified, a
-- NextToken is provided in the command\'s output. To resume pagination,
-- provide the NextToken value in the starting-token argument of a
-- subsequent command. Do not use the NextToken response element directly
-- outside of the AWS CLI.
describeAccelerators_maxResults :: Lens.Lens' DescribeAccelerators (Prelude.Maybe Prelude.Natural)
describeAccelerators_maxResults = Lens.lens (\DescribeAccelerators' {maxResults} -> maxResults) (\s@DescribeAccelerators' {} a -> s {maxResults = a} :: DescribeAccelerators)

-- | A token to specify where to start paginating. This is the NextToken from
-- a previously truncated response.
describeAccelerators_nextToken :: Lens.Lens' DescribeAccelerators (Prelude.Maybe Prelude.Text)
describeAccelerators_nextToken = Lens.lens (\DescribeAccelerators' {nextToken} -> nextToken) (\s@DescribeAccelerators' {} a -> s {nextToken = a} :: DescribeAccelerators)

instance Core.AWSPager DescribeAccelerators where
  page rq rs
    | Core.stop
        ( rs
            Lens.^? describeAcceleratorsResponse_nextToken
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Core.stop
        ( rs
            Lens.^? describeAcceleratorsResponse_acceleratorSet
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Prelude.otherwise =
        Prelude.Just
          Prelude.$ rq
          Prelude.& describeAccelerators_nextToken
          Lens..~ rs
          Lens.^? describeAcceleratorsResponse_nextToken
          Prelude.. Lens._Just

instance Core.AWSRequest DescribeAccelerators where
  type
    AWSResponse DescribeAccelerators =
      DescribeAcceleratorsResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DescribeAcceleratorsResponse'
            Prelude.<$> (x Data..?> "acceleratorSet" Core..!@ Prelude.mempty)
            Prelude.<*> (x Data..?> "nextToken")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable DescribeAccelerators where
  hashWithSalt _salt DescribeAccelerators' {..} =
    _salt
      `Prelude.hashWithSalt` acceleratorIds
      `Prelude.hashWithSalt` filters
      `Prelude.hashWithSalt` maxResults
      `Prelude.hashWithSalt` nextToken

instance Prelude.NFData DescribeAccelerators where
  rnf DescribeAccelerators' {..} =
    Prelude.rnf acceleratorIds
      `Prelude.seq` Prelude.rnf filters
      `Prelude.seq` Prelude.rnf maxResults
      `Prelude.seq` Prelude.rnf nextToken

instance Data.ToHeaders DescribeAccelerators where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeAccelerators where
  toJSON DescribeAccelerators' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("acceleratorIds" Data..=)
              Prelude.<$> acceleratorIds,
            ("filters" Data..=) Prelude.<$> filters,
            ("maxResults" Data..=) Prelude.<$> maxResults,
            ("nextToken" Data..=) Prelude.<$> nextToken
          ]
      )

instance Data.ToPath DescribeAccelerators where
  toPath = Prelude.const "/describe-accelerators"

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

-- | /See:/ 'newDescribeAcceleratorsResponse' smart constructor.
data DescribeAcceleratorsResponse = DescribeAcceleratorsResponse'
  { -- | The details of the Elastic Inference Accelerators.
    acceleratorSet :: Prelude.Maybe [ElasticInferenceAccelerator],
    -- | A token to specify where to start paginating. This is the NextToken from
    -- a previously truncated response.
    nextToken :: 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 'DescribeAcceleratorsResponse' 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:
--
-- 'acceleratorSet', 'describeAcceleratorsResponse_acceleratorSet' - The details of the Elastic Inference Accelerators.
--
-- 'nextToken', 'describeAcceleratorsResponse_nextToken' - A token to specify where to start paginating. This is the NextToken from
-- a previously truncated response.
--
-- 'httpStatus', 'describeAcceleratorsResponse_httpStatus' - The response's http status code.
newDescribeAcceleratorsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeAcceleratorsResponse
newDescribeAcceleratorsResponse pHttpStatus_ =
  DescribeAcceleratorsResponse'
    { acceleratorSet =
        Prelude.Nothing,
      nextToken = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The details of the Elastic Inference Accelerators.
describeAcceleratorsResponse_acceleratorSet :: Lens.Lens' DescribeAcceleratorsResponse (Prelude.Maybe [ElasticInferenceAccelerator])
describeAcceleratorsResponse_acceleratorSet = Lens.lens (\DescribeAcceleratorsResponse' {acceleratorSet} -> acceleratorSet) (\s@DescribeAcceleratorsResponse' {} a -> s {acceleratorSet = a} :: DescribeAcceleratorsResponse) Prelude.. Lens.mapping Lens.coerced

-- | A token to specify where to start paginating. This is the NextToken from
-- a previously truncated response.
describeAcceleratorsResponse_nextToken :: Lens.Lens' DescribeAcceleratorsResponse (Prelude.Maybe Prelude.Text)
describeAcceleratorsResponse_nextToken = Lens.lens (\DescribeAcceleratorsResponse' {nextToken} -> nextToken) (\s@DescribeAcceleratorsResponse' {} a -> s {nextToken = a} :: DescribeAcceleratorsResponse)

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

instance Prelude.NFData DescribeAcceleratorsResponse where
  rnf DescribeAcceleratorsResponse' {..} =
    Prelude.rnf acceleratorSet
      `Prelude.seq` Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf httpStatus