packages feed

amazonka-appmesh-2.0: gen/Amazonka/AppMesh/DescribeVirtualService.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.AppMesh.DescribeVirtualService
-- 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 an existing virtual service.
module Amazonka.AppMesh.DescribeVirtualService
  ( -- * Creating a Request
    DescribeVirtualService (..),
    newDescribeVirtualService,

    -- * Request Lenses
    describeVirtualService_meshOwner,
    describeVirtualService_meshName,
    describeVirtualService_virtualServiceName,

    -- * Destructuring the Response
    DescribeVirtualServiceResponse (..),
    newDescribeVirtualServiceResponse,

    -- * Response Lenses
    describeVirtualServiceResponse_httpStatus,
    describeVirtualServiceResponse_virtualService,
  )
where

import Amazonka.AppMesh.Types
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

-- |
--
-- /See:/ 'newDescribeVirtualService' smart constructor.
data DescribeVirtualService = DescribeVirtualService'
  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the
    -- account ID is not your own, then it\'s the ID of the account that shared
    -- the mesh with your account. For more information about mesh sharing, see
    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.
    meshOwner :: Prelude.Maybe Prelude.Text,
    -- | The name of the service mesh that the virtual service resides in.
    meshName :: Prelude.Text,
    -- | The name of the virtual service to describe.
    virtualServiceName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeVirtualService' 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:
--
-- 'meshOwner', 'describeVirtualService_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the
-- account ID is not your own, then it\'s the ID of the account that shared
-- the mesh with your account. For more information about mesh sharing, see
-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.
--
-- 'meshName', 'describeVirtualService_meshName' - The name of the service mesh that the virtual service resides in.
--
-- 'virtualServiceName', 'describeVirtualService_virtualServiceName' - The name of the virtual service to describe.
newDescribeVirtualService ::
  -- | 'meshName'
  Prelude.Text ->
  -- | 'virtualServiceName'
  Prelude.Text ->
  DescribeVirtualService
newDescribeVirtualService
  pMeshName_
  pVirtualServiceName_ =
    DescribeVirtualService'
      { meshOwner =
          Prelude.Nothing,
        meshName = pMeshName_,
        virtualServiceName = pVirtualServiceName_
      }

-- | The Amazon Web Services IAM account ID of the service mesh owner. If the
-- account ID is not your own, then it\'s the ID of the account that shared
-- the mesh with your account. For more information about mesh sharing, see
-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.
describeVirtualService_meshOwner :: Lens.Lens' DescribeVirtualService (Prelude.Maybe Prelude.Text)
describeVirtualService_meshOwner = Lens.lens (\DescribeVirtualService' {meshOwner} -> meshOwner) (\s@DescribeVirtualService' {} a -> s {meshOwner = a} :: DescribeVirtualService)

-- | The name of the service mesh that the virtual service resides in.
describeVirtualService_meshName :: Lens.Lens' DescribeVirtualService Prelude.Text
describeVirtualService_meshName = Lens.lens (\DescribeVirtualService' {meshName} -> meshName) (\s@DescribeVirtualService' {} a -> s {meshName = a} :: DescribeVirtualService)

-- | The name of the virtual service to describe.
describeVirtualService_virtualServiceName :: Lens.Lens' DescribeVirtualService Prelude.Text
describeVirtualService_virtualServiceName = Lens.lens (\DescribeVirtualService' {virtualServiceName} -> virtualServiceName) (\s@DescribeVirtualService' {} a -> s {virtualServiceName = a} :: DescribeVirtualService)

instance Core.AWSRequest DescribeVirtualService where
  type
    AWSResponse DescribeVirtualService =
      DescribeVirtualServiceResponse
  request overrides =
    Request.get (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DescribeVirtualServiceResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (Data.eitherParseJSON x)
      )

instance Prelude.Hashable DescribeVirtualService where
  hashWithSalt _salt DescribeVirtualService' {..} =
    _salt
      `Prelude.hashWithSalt` meshOwner
      `Prelude.hashWithSalt` meshName
      `Prelude.hashWithSalt` virtualServiceName

instance Prelude.NFData DescribeVirtualService where
  rnf DescribeVirtualService' {..} =
    Prelude.rnf meshOwner
      `Prelude.seq` Prelude.rnf meshName
      `Prelude.seq` Prelude.rnf virtualServiceName

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

instance Data.ToPath DescribeVirtualService where
  toPath DescribeVirtualService' {..} =
    Prelude.mconcat
      [ "/v20190125/meshes/",
        Data.toBS meshName,
        "/virtualServices/",
        Data.toBS virtualServiceName
      ]

instance Data.ToQuery DescribeVirtualService where
  toQuery DescribeVirtualService' {..} =
    Prelude.mconcat ["meshOwner" Data.=: meshOwner]

-- |
--
-- /See:/ 'newDescribeVirtualServiceResponse' smart constructor.
data DescribeVirtualServiceResponse = DescribeVirtualServiceResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | The full description of your virtual service.
    virtualService :: VirtualServiceData
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeVirtualServiceResponse' 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:
--
-- 'httpStatus', 'describeVirtualServiceResponse_httpStatus' - The response's http status code.
--
-- 'virtualService', 'describeVirtualServiceResponse_virtualService' - The full description of your virtual service.
newDescribeVirtualServiceResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'virtualService'
  VirtualServiceData ->
  DescribeVirtualServiceResponse
newDescribeVirtualServiceResponse
  pHttpStatus_
  pVirtualService_ =
    DescribeVirtualServiceResponse'
      { httpStatus =
          pHttpStatus_,
        virtualService = pVirtualService_
      }

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

-- | The full description of your virtual service.
describeVirtualServiceResponse_virtualService :: Lens.Lens' DescribeVirtualServiceResponse VirtualServiceData
describeVirtualServiceResponse_virtualService = Lens.lens (\DescribeVirtualServiceResponse' {virtualService} -> virtualService) (\s@DescribeVirtualServiceResponse' {} a -> s {virtualService = a} :: DescribeVirtualServiceResponse)

instance
  Prelude.NFData
    DescribeVirtualServiceResponse
  where
  rnf DescribeVirtualServiceResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf virtualService