amazonka-ecr-2.0: gen/Amazonka/ECR/CompleteLayerUpload.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.ECR.CompleteLayerUpload
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Informs Amazon ECR that the image layer upload has completed for a
-- specified registry, repository name, and upload ID. You can optionally
-- provide a @sha256@ digest of the image layer for data validation
-- purposes.
--
-- When an image is pushed, the CompleteLayerUpload API is called once per
-- each new image layer to verify that the upload has completed.
--
-- This operation is used by the Amazon ECR proxy and is not generally used
-- by customers for pulling and pushing images. In most cases, you should
-- use the @docker@ CLI to pull, tag, and push images.
module Amazonka.ECR.CompleteLayerUpload
( -- * Creating a Request
CompleteLayerUpload (..),
newCompleteLayerUpload,
-- * Request Lenses
completeLayerUpload_registryId,
completeLayerUpload_repositoryName,
completeLayerUpload_uploadId,
completeLayerUpload_layerDigests,
-- * Destructuring the Response
CompleteLayerUploadResponse (..),
newCompleteLayerUploadResponse,
-- * Response Lenses
completeLayerUploadResponse_layerDigest,
completeLayerUploadResponse_registryId,
completeLayerUploadResponse_repositoryName,
completeLayerUploadResponse_uploadId,
completeLayerUploadResponse_httpStatus,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ECR.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
-- | /See:/ 'newCompleteLayerUpload' smart constructor.
data CompleteLayerUpload = CompleteLayerUpload'
{ -- | The Amazon Web Services account ID associated with the registry to which
-- to upload layers. If you do not specify a registry, the default registry
-- is assumed.
registryId :: Prelude.Maybe Prelude.Text,
-- | The name of the repository to associate with the image layer.
repositoryName :: Prelude.Text,
-- | The upload ID from a previous InitiateLayerUpload operation to associate
-- with the image layer.
uploadId :: Prelude.Text,
-- | The @sha256@ digest of the image layer.
layerDigests :: Prelude.NonEmpty Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'CompleteLayerUpload' 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:
--
-- 'registryId', 'completeLayerUpload_registryId' - The Amazon Web Services account ID associated with the registry to which
-- to upload layers. If you do not specify a registry, the default registry
-- is assumed.
--
-- 'repositoryName', 'completeLayerUpload_repositoryName' - The name of the repository to associate with the image layer.
--
-- 'uploadId', 'completeLayerUpload_uploadId' - The upload ID from a previous InitiateLayerUpload operation to associate
-- with the image layer.
--
-- 'layerDigests', 'completeLayerUpload_layerDigests' - The @sha256@ digest of the image layer.
newCompleteLayerUpload ::
-- | 'repositoryName'
Prelude.Text ->
-- | 'uploadId'
Prelude.Text ->
-- | 'layerDigests'
Prelude.NonEmpty Prelude.Text ->
CompleteLayerUpload
newCompleteLayerUpload
pRepositoryName_
pUploadId_
pLayerDigests_ =
CompleteLayerUpload'
{ registryId = Prelude.Nothing,
repositoryName = pRepositoryName_,
uploadId = pUploadId_,
layerDigests = Lens.coerced Lens.# pLayerDigests_
}
-- | The Amazon Web Services account ID associated with the registry to which
-- to upload layers. If you do not specify a registry, the default registry
-- is assumed.
completeLayerUpload_registryId :: Lens.Lens' CompleteLayerUpload (Prelude.Maybe Prelude.Text)
completeLayerUpload_registryId = Lens.lens (\CompleteLayerUpload' {registryId} -> registryId) (\s@CompleteLayerUpload' {} a -> s {registryId = a} :: CompleteLayerUpload)
-- | The name of the repository to associate with the image layer.
completeLayerUpload_repositoryName :: Lens.Lens' CompleteLayerUpload Prelude.Text
completeLayerUpload_repositoryName = Lens.lens (\CompleteLayerUpload' {repositoryName} -> repositoryName) (\s@CompleteLayerUpload' {} a -> s {repositoryName = a} :: CompleteLayerUpload)
-- | The upload ID from a previous InitiateLayerUpload operation to associate
-- with the image layer.
completeLayerUpload_uploadId :: Lens.Lens' CompleteLayerUpload Prelude.Text
completeLayerUpload_uploadId = Lens.lens (\CompleteLayerUpload' {uploadId} -> uploadId) (\s@CompleteLayerUpload' {} a -> s {uploadId = a} :: CompleteLayerUpload)
-- | The @sha256@ digest of the image layer.
completeLayerUpload_layerDigests :: Lens.Lens' CompleteLayerUpload (Prelude.NonEmpty Prelude.Text)
completeLayerUpload_layerDigests = Lens.lens (\CompleteLayerUpload' {layerDigests} -> layerDigests) (\s@CompleteLayerUpload' {} a -> s {layerDigests = a} :: CompleteLayerUpload) Prelude.. Lens.coerced
instance Core.AWSRequest CompleteLayerUpload where
type
AWSResponse CompleteLayerUpload =
CompleteLayerUploadResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
CompleteLayerUploadResponse'
Prelude.<$> (x Data..?> "layerDigest")
Prelude.<*> (x Data..?> "registryId")
Prelude.<*> (x Data..?> "repositoryName")
Prelude.<*> (x Data..?> "uploadId")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable CompleteLayerUpload where
hashWithSalt _salt CompleteLayerUpload' {..} =
_salt
`Prelude.hashWithSalt` registryId
`Prelude.hashWithSalt` repositoryName
`Prelude.hashWithSalt` uploadId
`Prelude.hashWithSalt` layerDigests
instance Prelude.NFData CompleteLayerUpload where
rnf CompleteLayerUpload' {..} =
Prelude.rnf registryId
`Prelude.seq` Prelude.rnf repositoryName
`Prelude.seq` Prelude.rnf uploadId
`Prelude.seq` Prelude.rnf layerDigests
instance Data.ToHeaders CompleteLayerUpload where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "X-Amz-Target"
Data.=# ( "AmazonEC2ContainerRegistry_V20150921.CompleteLayerUpload" ::
Prelude.ByteString
),
"Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON CompleteLayerUpload where
toJSON CompleteLayerUpload' {..} =
Data.object
( Prelude.catMaybes
[ ("registryId" Data..=) Prelude.<$> registryId,
Prelude.Just
("repositoryName" Data..= repositoryName),
Prelude.Just ("uploadId" Data..= uploadId),
Prelude.Just ("layerDigests" Data..= layerDigests)
]
)
instance Data.ToPath CompleteLayerUpload where
toPath = Prelude.const "/"
instance Data.ToQuery CompleteLayerUpload where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newCompleteLayerUploadResponse' smart constructor.
data CompleteLayerUploadResponse = CompleteLayerUploadResponse'
{ -- | The @sha256@ digest of the image layer.
layerDigest :: Prelude.Maybe Prelude.Text,
-- | The registry ID associated with the request.
registryId :: Prelude.Maybe Prelude.Text,
-- | The repository name associated with the request.
repositoryName :: Prelude.Maybe Prelude.Text,
-- | The upload ID associated with the layer.
uploadId :: 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 'CompleteLayerUploadResponse' 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:
--
-- 'layerDigest', 'completeLayerUploadResponse_layerDigest' - The @sha256@ digest of the image layer.
--
-- 'registryId', 'completeLayerUploadResponse_registryId' - The registry ID associated with the request.
--
-- 'repositoryName', 'completeLayerUploadResponse_repositoryName' - The repository name associated with the request.
--
-- 'uploadId', 'completeLayerUploadResponse_uploadId' - The upload ID associated with the layer.
--
-- 'httpStatus', 'completeLayerUploadResponse_httpStatus' - The response's http status code.
newCompleteLayerUploadResponse ::
-- | 'httpStatus'
Prelude.Int ->
CompleteLayerUploadResponse
newCompleteLayerUploadResponse pHttpStatus_ =
CompleteLayerUploadResponse'
{ layerDigest =
Prelude.Nothing,
registryId = Prelude.Nothing,
repositoryName = Prelude.Nothing,
uploadId = Prelude.Nothing,
httpStatus = pHttpStatus_
}
-- | The @sha256@ digest of the image layer.
completeLayerUploadResponse_layerDigest :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)
completeLayerUploadResponse_layerDigest = Lens.lens (\CompleteLayerUploadResponse' {layerDigest} -> layerDigest) (\s@CompleteLayerUploadResponse' {} a -> s {layerDigest = a} :: CompleteLayerUploadResponse)
-- | The registry ID associated with the request.
completeLayerUploadResponse_registryId :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)
completeLayerUploadResponse_registryId = Lens.lens (\CompleteLayerUploadResponse' {registryId} -> registryId) (\s@CompleteLayerUploadResponse' {} a -> s {registryId = a} :: CompleteLayerUploadResponse)
-- | The repository name associated with the request.
completeLayerUploadResponse_repositoryName :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)
completeLayerUploadResponse_repositoryName = Lens.lens (\CompleteLayerUploadResponse' {repositoryName} -> repositoryName) (\s@CompleteLayerUploadResponse' {} a -> s {repositoryName = a} :: CompleteLayerUploadResponse)
-- | The upload ID associated with the layer.
completeLayerUploadResponse_uploadId :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)
completeLayerUploadResponse_uploadId = Lens.lens (\CompleteLayerUploadResponse' {uploadId} -> uploadId) (\s@CompleteLayerUploadResponse' {} a -> s {uploadId = a} :: CompleteLayerUploadResponse)
-- | The response's http status code.
completeLayerUploadResponse_httpStatus :: Lens.Lens' CompleteLayerUploadResponse Prelude.Int
completeLayerUploadResponse_httpStatus = Lens.lens (\CompleteLayerUploadResponse' {httpStatus} -> httpStatus) (\s@CompleteLayerUploadResponse' {} a -> s {httpStatus = a} :: CompleteLayerUploadResponse)
instance Prelude.NFData CompleteLayerUploadResponse where
rnf CompleteLayerUploadResponse' {..} =
Prelude.rnf layerDigest
`Prelude.seq` Prelude.rnf registryId
`Prelude.seq` Prelude.rnf repositoryName
`Prelude.seq` Prelude.rnf uploadId
`Prelude.seq` Prelude.rnf httpStatus