{-# 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.EKS.DescribeAddonVersions
-- 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 the versions for an add-on. Information such as the Kubernetes
-- versions that you can use the add-on with, the @owner@, @publisher@, and
-- the @type@ of the add-on are returned.
--
-- This operation returns paginated results.
module Amazonka.EKS.DescribeAddonVersions
  ( -- * Creating a Request
    DescribeAddonVersions (..),
    newDescribeAddonVersions,

    -- * Request Lenses
    describeAddonVersions_addonName,
    describeAddonVersions_kubernetesVersion,
    describeAddonVersions_maxResults,
    describeAddonVersions_nextToken,
    describeAddonVersions_owners,
    describeAddonVersions_publishers,
    describeAddonVersions_types,

    -- * Destructuring the Response
    DescribeAddonVersionsResponse (..),
    newDescribeAddonVersionsResponse,

    -- * Response Lenses
    describeAddonVersionsResponse_addons,
    describeAddonVersionsResponse_nextToken,
    describeAddonVersionsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeAddonVersions' smart constructor.
data DescribeAddonVersions = DescribeAddonVersions'
  { -- | The name of the add-on. The name must match one of the names returned by
    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>
    -- .
    DescribeAddonVersions -> Maybe Text
addonName :: Prelude.Maybe Prelude.Text,
    -- | The Kubernetes versions that you can use the add-on with.
    DescribeAddonVersions -> Maybe Text
kubernetesVersion :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of results to return.
    DescribeAddonVersions -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The @nextToken@ value returned from a previous paginated
    -- @DescribeAddonVersionsRequest@ where @maxResults@ was used and the
    -- results exceeded the value of that parameter. Pagination continues from
    -- the end of the previous results that returned the @nextToken@ value.
    --
    -- This token should be treated as an opaque identifier that is used only
    -- to retrieve the next items in a list and not for other programmatic
    -- purposes.
    DescribeAddonVersions -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The owner of the add-on. For valid @owners@, don\'t specify a value for
    -- this property.
    DescribeAddonVersions -> Maybe [Text]
owners :: Prelude.Maybe [Prelude.Text],
    -- | The publisher of the add-on. For valid @publishers@, don\'t specify a
    -- value for this property.
    DescribeAddonVersions -> Maybe [Text]
publishers :: Prelude.Maybe [Prelude.Text],
    -- | The type of the add-on. For valid @types@, don\'t specify a value for
    -- this property.
    DescribeAddonVersions -> Maybe [Text]
types :: Prelude.Maybe [Prelude.Text]
  }
  deriving (DescribeAddonVersions -> DescribeAddonVersions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeAddonVersions -> DescribeAddonVersions -> Bool
$c/= :: DescribeAddonVersions -> DescribeAddonVersions -> Bool
== :: DescribeAddonVersions -> DescribeAddonVersions -> Bool
$c== :: DescribeAddonVersions -> DescribeAddonVersions -> Bool
Prelude.Eq, ReadPrec [DescribeAddonVersions]
ReadPrec DescribeAddonVersions
Int -> ReadS DescribeAddonVersions
ReadS [DescribeAddonVersions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeAddonVersions]
$creadListPrec :: ReadPrec [DescribeAddonVersions]
readPrec :: ReadPrec DescribeAddonVersions
$creadPrec :: ReadPrec DescribeAddonVersions
readList :: ReadS [DescribeAddonVersions]
$creadList :: ReadS [DescribeAddonVersions]
readsPrec :: Int -> ReadS DescribeAddonVersions
$creadsPrec :: Int -> ReadS DescribeAddonVersions
Prelude.Read, Int -> DescribeAddonVersions -> ShowS
[DescribeAddonVersions] -> ShowS
DescribeAddonVersions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeAddonVersions] -> ShowS
$cshowList :: [DescribeAddonVersions] -> ShowS
show :: DescribeAddonVersions -> String
$cshow :: DescribeAddonVersions -> String
showsPrec :: Int -> DescribeAddonVersions -> ShowS
$cshowsPrec :: Int -> DescribeAddonVersions -> ShowS
Prelude.Show, forall x. Rep DescribeAddonVersions x -> DescribeAddonVersions
forall x. DescribeAddonVersions -> Rep DescribeAddonVersions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeAddonVersions x -> DescribeAddonVersions
$cfrom :: forall x. DescribeAddonVersions -> Rep DescribeAddonVersions x
Prelude.Generic)

-- |
-- Create a value of 'DescribeAddonVersions' 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:
--
-- 'addonName', 'describeAddonVersions_addonName' - The name of the add-on. The name must match one of the names returned by
-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>
-- .
--
-- 'kubernetesVersion', 'describeAddonVersions_kubernetesVersion' - The Kubernetes versions that you can use the add-on with.
--
-- 'maxResults', 'describeAddonVersions_maxResults' - The maximum number of results to return.
--
-- 'nextToken', 'describeAddonVersions_nextToken' - The @nextToken@ value returned from a previous paginated
-- @DescribeAddonVersionsRequest@ where @maxResults@ was used and the
-- results exceeded the value of that parameter. Pagination continues from
-- the end of the previous results that returned the @nextToken@ value.
--
-- This token should be treated as an opaque identifier that is used only
-- to retrieve the next items in a list and not for other programmatic
-- purposes.
--
-- 'owners', 'describeAddonVersions_owners' - The owner of the add-on. For valid @owners@, don\'t specify a value for
-- this property.
--
-- 'publishers', 'describeAddonVersions_publishers' - The publisher of the add-on. For valid @publishers@, don\'t specify a
-- value for this property.
--
-- 'types', 'describeAddonVersions_types' - The type of the add-on. For valid @types@, don\'t specify a value for
-- this property.
newDescribeAddonVersions ::
  DescribeAddonVersions
newDescribeAddonVersions :: DescribeAddonVersions
newDescribeAddonVersions =
  DescribeAddonVersions'
    { $sel:addonName:DescribeAddonVersions' :: Maybe Text
addonName = forall a. Maybe a
Prelude.Nothing,
      $sel:kubernetesVersion:DescribeAddonVersions' :: Maybe Text
kubernetesVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeAddonVersions' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeAddonVersions' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:owners:DescribeAddonVersions' :: Maybe [Text]
owners = forall a. Maybe a
Prelude.Nothing,
      $sel:publishers:DescribeAddonVersions' :: Maybe [Text]
publishers = forall a. Maybe a
Prelude.Nothing,
      $sel:types:DescribeAddonVersions' :: Maybe [Text]
types = forall a. Maybe a
Prelude.Nothing
    }

-- | The name of the add-on. The name must match one of the names returned by
-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>
-- .
describeAddonVersions_addonName :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe Prelude.Text)
describeAddonVersions_addonName :: Lens' DescribeAddonVersions (Maybe Text)
describeAddonVersions_addonName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersions' {Maybe Text
addonName :: Maybe Text
$sel:addonName:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
addonName} -> Maybe Text
addonName) (\s :: DescribeAddonVersions
s@DescribeAddonVersions' {} Maybe Text
a -> DescribeAddonVersions
s {$sel:addonName:DescribeAddonVersions' :: Maybe Text
addonName = Maybe Text
a} :: DescribeAddonVersions)

-- | The Kubernetes versions that you can use the add-on with.
describeAddonVersions_kubernetesVersion :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe Prelude.Text)
describeAddonVersions_kubernetesVersion :: Lens' DescribeAddonVersions (Maybe Text)
describeAddonVersions_kubernetesVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersions' {Maybe Text
kubernetesVersion :: Maybe Text
$sel:kubernetesVersion:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
kubernetesVersion} -> Maybe Text
kubernetesVersion) (\s :: DescribeAddonVersions
s@DescribeAddonVersions' {} Maybe Text
a -> DescribeAddonVersions
s {$sel:kubernetesVersion:DescribeAddonVersions' :: Maybe Text
kubernetesVersion = Maybe Text
a} :: DescribeAddonVersions)

-- | The maximum number of results to return.
describeAddonVersions_maxResults :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe Prelude.Natural)
describeAddonVersions_maxResults :: Lens' DescribeAddonVersions (Maybe Natural)
describeAddonVersions_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersions' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeAddonVersions
s@DescribeAddonVersions' {} Maybe Natural
a -> DescribeAddonVersions
s {$sel:maxResults:DescribeAddonVersions' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeAddonVersions)

-- | The @nextToken@ value returned from a previous paginated
-- @DescribeAddonVersionsRequest@ where @maxResults@ was used and the
-- results exceeded the value of that parameter. Pagination continues from
-- the end of the previous results that returned the @nextToken@ value.
--
-- This token should be treated as an opaque identifier that is used only
-- to retrieve the next items in a list and not for other programmatic
-- purposes.
describeAddonVersions_nextToken :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe Prelude.Text)
describeAddonVersions_nextToken :: Lens' DescribeAddonVersions (Maybe Text)
describeAddonVersions_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersions' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeAddonVersions
s@DescribeAddonVersions' {} Maybe Text
a -> DescribeAddonVersions
s {$sel:nextToken:DescribeAddonVersions' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeAddonVersions)

-- | The owner of the add-on. For valid @owners@, don\'t specify a value for
-- this property.
describeAddonVersions_owners :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe [Prelude.Text])
describeAddonVersions_owners :: Lens' DescribeAddonVersions (Maybe [Text])
describeAddonVersions_owners = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersions' {Maybe [Text]
owners :: Maybe [Text]
$sel:owners:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
owners} -> Maybe [Text]
owners) (\s :: DescribeAddonVersions
s@DescribeAddonVersions' {} Maybe [Text]
a -> DescribeAddonVersions
s {$sel:owners:DescribeAddonVersions' :: Maybe [Text]
owners = Maybe [Text]
a} :: DescribeAddonVersions) 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 publisher of the add-on. For valid @publishers@, don\'t specify a
-- value for this property.
describeAddonVersions_publishers :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe [Prelude.Text])
describeAddonVersions_publishers :: Lens' DescribeAddonVersions (Maybe [Text])
describeAddonVersions_publishers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersions' {Maybe [Text]
publishers :: Maybe [Text]
$sel:publishers:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
publishers} -> Maybe [Text]
publishers) (\s :: DescribeAddonVersions
s@DescribeAddonVersions' {} Maybe [Text]
a -> DescribeAddonVersions
s {$sel:publishers:DescribeAddonVersions' :: Maybe [Text]
publishers = Maybe [Text]
a} :: DescribeAddonVersions) 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 type of the add-on. For valid @types@, don\'t specify a value for
-- this property.
describeAddonVersions_types :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe [Prelude.Text])
describeAddonVersions_types :: Lens' DescribeAddonVersions (Maybe [Text])
describeAddonVersions_types = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersions' {Maybe [Text]
types :: Maybe [Text]
$sel:types:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
types} -> Maybe [Text]
types) (\s :: DescribeAddonVersions
s@DescribeAddonVersions' {} Maybe [Text]
a -> DescribeAddonVersions
s {$sel:types:DescribeAddonVersions' :: Maybe [Text]
types = Maybe [Text]
a} :: DescribeAddonVersions) 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

instance Core.AWSPager DescribeAddonVersions where
  page :: DescribeAddonVersions
-> AWSResponse DescribeAddonVersions -> Maybe DescribeAddonVersions
page DescribeAddonVersions
rq AWSResponse DescribeAddonVersions
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeAddonVersions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeAddonVersionsResponse (Maybe Text)
describeAddonVersionsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeAddonVersions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeAddonVersionsResponse (Maybe [AddonInfo])
describeAddonVersionsResponse_addons
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeAddonVersions
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeAddonVersions (Maybe Text)
describeAddonVersions_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeAddonVersions
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeAddonVersionsResponse (Maybe Text)
describeAddonVersionsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeAddonVersions where
  type
    AWSResponse DescribeAddonVersions =
      DescribeAddonVersionsResponse
  request :: (Service -> Service)
-> DescribeAddonVersions -> Request DescribeAddonVersions
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeAddonVersions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeAddonVersions)))
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 [AddonInfo]
-> Maybe Text -> Int -> DescribeAddonVersionsResponse
DescribeAddonVersionsResponse'
            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
"addons" 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
"nextToken")
            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 DescribeAddonVersions where
  hashWithSalt :: Int -> DescribeAddonVersions -> Int
hashWithSalt Int
_salt DescribeAddonVersions' {Maybe Natural
Maybe [Text]
Maybe Text
types :: Maybe [Text]
publishers :: Maybe [Text]
owners :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
kubernetesVersion :: Maybe Text
addonName :: Maybe Text
$sel:types:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:publishers:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:owners:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:nextToken:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
$sel:maxResults:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Natural
$sel:kubernetesVersion:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
$sel:addonName:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
addonName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kubernetesVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
owners
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
publishers
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
types

instance Prelude.NFData DescribeAddonVersions where
  rnf :: DescribeAddonVersions -> ()
rnf DescribeAddonVersions' {Maybe Natural
Maybe [Text]
Maybe Text
types :: Maybe [Text]
publishers :: Maybe [Text]
owners :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
kubernetesVersion :: Maybe Text
addonName :: Maybe Text
$sel:types:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:publishers:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:owners:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:nextToken:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
$sel:maxResults:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Natural
$sel:kubernetesVersion:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
$sel:addonName:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
addonName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kubernetesVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
owners
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
publishers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
types

instance Data.ToHeaders DescribeAddonVersions where
  toHeaders :: DescribeAddonVersions -> 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.ToPath DescribeAddonVersions where
  toPath :: DescribeAddonVersions -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/addons/supported-versions"

instance Data.ToQuery DescribeAddonVersions where
  toQuery :: DescribeAddonVersions -> QueryString
toQuery DescribeAddonVersions' {Maybe Natural
Maybe [Text]
Maybe Text
types :: Maybe [Text]
publishers :: Maybe [Text]
owners :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
kubernetesVersion :: Maybe Text
addonName :: Maybe Text
$sel:types:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:publishers:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:owners:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe [Text]
$sel:nextToken:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
$sel:maxResults:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Natural
$sel:kubernetesVersion:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
$sel:addonName:DescribeAddonVersions' :: DescribeAddonVersions -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"addonName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
addonName,
        ByteString
"kubernetesVersion" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
kubernetesVersion,
        ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"owners"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
owners),
        ByteString
"publishers"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
publishers),
        ByteString
"types"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
types)
      ]

-- | /See:/ 'newDescribeAddonVersionsResponse' smart constructor.
data DescribeAddonVersionsResponse = DescribeAddonVersionsResponse'
  { -- | The list of available versions with Kubernetes version compatibility and
    -- other properties.
    DescribeAddonVersionsResponse -> Maybe [AddonInfo]
addons :: Prelude.Maybe [AddonInfo],
    -- | The @nextToken@ value returned from a previous paginated
    -- @DescribeAddonVersionsResponse@ where @maxResults@ was used and the
    -- results exceeded the value of that parameter. Pagination continues from
    -- the end of the previous results that returned the @nextToken@ value.
    --
    -- This token should be treated as an opaque identifier that is used only
    -- to retrieve the next items in a list and not for other programmatic
    -- purposes.
    DescribeAddonVersionsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeAddonVersionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeAddonVersionsResponse
-> DescribeAddonVersionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeAddonVersionsResponse
-> DescribeAddonVersionsResponse -> Bool
$c/= :: DescribeAddonVersionsResponse
-> DescribeAddonVersionsResponse -> Bool
== :: DescribeAddonVersionsResponse
-> DescribeAddonVersionsResponse -> Bool
$c== :: DescribeAddonVersionsResponse
-> DescribeAddonVersionsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeAddonVersionsResponse]
ReadPrec DescribeAddonVersionsResponse
Int -> ReadS DescribeAddonVersionsResponse
ReadS [DescribeAddonVersionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeAddonVersionsResponse]
$creadListPrec :: ReadPrec [DescribeAddonVersionsResponse]
readPrec :: ReadPrec DescribeAddonVersionsResponse
$creadPrec :: ReadPrec DescribeAddonVersionsResponse
readList :: ReadS [DescribeAddonVersionsResponse]
$creadList :: ReadS [DescribeAddonVersionsResponse]
readsPrec :: Int -> ReadS DescribeAddonVersionsResponse
$creadsPrec :: Int -> ReadS DescribeAddonVersionsResponse
Prelude.Read, Int -> DescribeAddonVersionsResponse -> ShowS
[DescribeAddonVersionsResponse] -> ShowS
DescribeAddonVersionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeAddonVersionsResponse] -> ShowS
$cshowList :: [DescribeAddonVersionsResponse] -> ShowS
show :: DescribeAddonVersionsResponse -> String
$cshow :: DescribeAddonVersionsResponse -> String
showsPrec :: Int -> DescribeAddonVersionsResponse -> ShowS
$cshowsPrec :: Int -> DescribeAddonVersionsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeAddonVersionsResponse x
-> DescribeAddonVersionsResponse
forall x.
DescribeAddonVersionsResponse
-> Rep DescribeAddonVersionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeAddonVersionsResponse x
-> DescribeAddonVersionsResponse
$cfrom :: forall x.
DescribeAddonVersionsResponse
-> Rep DescribeAddonVersionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeAddonVersionsResponse' 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:
--
-- 'addons', 'describeAddonVersionsResponse_addons' - The list of available versions with Kubernetes version compatibility and
-- other properties.
--
-- 'nextToken', 'describeAddonVersionsResponse_nextToken' - The @nextToken@ value returned from a previous paginated
-- @DescribeAddonVersionsResponse@ where @maxResults@ was used and the
-- results exceeded the value of that parameter. Pagination continues from
-- the end of the previous results that returned the @nextToken@ value.
--
-- This token should be treated as an opaque identifier that is used only
-- to retrieve the next items in a list and not for other programmatic
-- purposes.
--
-- 'httpStatus', 'describeAddonVersionsResponse_httpStatus' - The response's http status code.
newDescribeAddonVersionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeAddonVersionsResponse
newDescribeAddonVersionsResponse :: Int -> DescribeAddonVersionsResponse
newDescribeAddonVersionsResponse Int
pHttpStatus_ =
  DescribeAddonVersionsResponse'
    { $sel:addons:DescribeAddonVersionsResponse' :: Maybe [AddonInfo]
addons =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeAddonVersionsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeAddonVersionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The list of available versions with Kubernetes version compatibility and
-- other properties.
describeAddonVersionsResponse_addons :: Lens.Lens' DescribeAddonVersionsResponse (Prelude.Maybe [AddonInfo])
describeAddonVersionsResponse_addons :: Lens' DescribeAddonVersionsResponse (Maybe [AddonInfo])
describeAddonVersionsResponse_addons = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersionsResponse' {Maybe [AddonInfo]
addons :: Maybe [AddonInfo]
$sel:addons:DescribeAddonVersionsResponse' :: DescribeAddonVersionsResponse -> Maybe [AddonInfo]
addons} -> Maybe [AddonInfo]
addons) (\s :: DescribeAddonVersionsResponse
s@DescribeAddonVersionsResponse' {} Maybe [AddonInfo]
a -> DescribeAddonVersionsResponse
s {$sel:addons:DescribeAddonVersionsResponse' :: Maybe [AddonInfo]
addons = Maybe [AddonInfo]
a} :: DescribeAddonVersionsResponse) 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 @nextToken@ value returned from a previous paginated
-- @DescribeAddonVersionsResponse@ where @maxResults@ was used and the
-- results exceeded the value of that parameter. Pagination continues from
-- the end of the previous results that returned the @nextToken@ value.
--
-- This token should be treated as an opaque identifier that is used only
-- to retrieve the next items in a list and not for other programmatic
-- purposes.
describeAddonVersionsResponse_nextToken :: Lens.Lens' DescribeAddonVersionsResponse (Prelude.Maybe Prelude.Text)
describeAddonVersionsResponse_nextToken :: Lens' DescribeAddonVersionsResponse (Maybe Text)
describeAddonVersionsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddonVersionsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeAddonVersionsResponse' :: DescribeAddonVersionsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeAddonVersionsResponse
s@DescribeAddonVersionsResponse' {} Maybe Text
a -> DescribeAddonVersionsResponse
s {$sel:nextToken:DescribeAddonVersionsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeAddonVersionsResponse)

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

instance Prelude.NFData DescribeAddonVersionsResponse where
  rnf :: DescribeAddonVersionsResponse -> ()
rnf DescribeAddonVersionsResponse' {Int
Maybe [AddonInfo]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
addons :: Maybe [AddonInfo]
$sel:httpStatus:DescribeAddonVersionsResponse' :: DescribeAddonVersionsResponse -> Int
$sel:nextToken:DescribeAddonVersionsResponse' :: DescribeAddonVersionsResponse -> Maybe Text
$sel:addons:DescribeAddonVersionsResponse' :: DescribeAddonVersionsResponse -> Maybe [AddonInfo]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [AddonInfo]
addons
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus