@cumulus/checksum
Advanced tools
Changelog
[v9.1.0] 2021-06-03
update-granules-cmr-metadata-file-links
task, the
granule UMM-G metadata should have version 1.6.2 or later, since CMR s3
link type 'GET DATA VIA DIRECT ACCESS' is not valid until UMM-G version
1.6.2EarthdataLoginClient
to
@cumulus/oauth-client/EarthdataLoginClient
and updated all references in
Cumulus Core.EarthdataLoginClient
property from earthdataLoginUrl
to
`loginUrl for consistency with new OAuth clients. See example in
oauth-client
README/s3credentials
endpoint to distribute
same-region read-only tokens based on a user's CMR ACLs./s3credentials
endpoint for distribution API/s3credentialsREADME
endpoint to distribution APItf-modules/cumulus_distribution
module to take earthdata or cognito credentialsexample/cumulus-tf/cumulus_distribution.tf
to use CSDAP credentialsS3ObjectStore
to aws-client
. This class allows for interaction with the S3 object store.object-store
package which contains abstracted object store functions for working with various cloud providers/
, /login
and /logout
endpoints to cumulus distribution apiisISOFile()
to check if a CMR file is a CMR ISO file.@cumulus/ingest/sqs
:
archiveSqsMessageToS3
- archives an incoming SQS message to S3deleteArchivedMessageFromS3
- deletes a processed SQS message from S3archiveSqsMessageToS3
to sqs-message-consumer
which
archives all incoming SQS messages to S3.deleteArchivedMessageFrom
to sqs-message-remover
which
deletes archived SQS message from S3 once it has been processed.@cumulus/api/es/*
code to new @cumulus/es-client
packagesfEventSqsToDbRecords
Lambda to 60 seconds to match
timeout for Knex library to acquire database connections@cumulus/cmrjs
updateCMRMetadata
and related functions to add
both HTTPS URLS and S3 URIs to CMR metadata.update-granules-cmr-metadata-file-links
task to add both HTTPS
URLs and S3 URIs to the OnlineAccessURLs field of CMR metadata. The task
configuration parameter cmrGranuleUrlType
now has default value both
.update-granules-cmr-metadata-file-links
task, the
granule UMM-G metadata should have version 1.6.2 or later, since CMR s3 link
type 'GET DATA VIA DIRECT ACCESS' is not valid until UMM-G version
1.6.2@cumulus/earthdata-login-client
to more generic
@cumulus/oauth-client
as a parent class for new OAuth clients.@cumulus/oauth-client/CognitoClient
to interface with AWS cognito login service.@cumulus/cmrjs
package:
@cumulus/cmrjs/cmr-utils.getGranuleTemporalInfo()
so it now
returns temporal info for CMR ISO 19115 SMAP XML files.@cumulus/cmrjs/cmr-utils.isCmrFilename()
to include
isISOFile()
.api-client/granules
functions as opposed to granulesApi from @cumulus/integration-tests
.remoteAltBucket
on download
method to allow for per-file override of
provider bucket for checksumremoteAltBucket
to allow for an override of the passed in provider
bucket for the source file/elasticsearch/index-from-database
from starting.docs/README.md
Changelog
[v8.1.1] 2021-04-30 -- Patch Release
Please note changes in 8.1.1 may not yet be released in future versions, as this is a backport/patch release on the 8.x series of releases. Updates that are included in the future will have a corresponding CHANGELOG entry in future releases.
isISOFile()
to check if a CMR file is a CMR ISO file.remoteAltBucket
on download
method to allow for per-file override of
provider bucket for checksumremoteAltBucket
to allow for an override of the passed in provider
bucket for the source fileCUMULUS-2497
@cumulus/cmrjs
package:
@cumulus/cmrjs/cmr-utils.getGranuleTemporalInfo()
so it now
returns temporal info for CMR ISO 19115 SMAP XML files.@cumulus/cmrjs/cmr-utils.isCmrFilename()
to include
isISOFile()
.Changelog
[v9.0.1] 2021-05-07
Please review the migration steps for 9.0.0 as this release is only a patch to correct a failure in our build script and push out corrected release artifacts. The previous migration steps still apply.
@cumulus/db
configuration to correctly build package.Changelog
[v9.0.0] 2021-05-03
@cumulus/api/models.asyncOperation
class in
favor of the added @cumulus/async-operations
module:
start
startAsyncOperations
async-operations
endpoint will now omit output
instead of
returning none
when the operation did not return output.@cumulus/api/models/granule.unpublishAndDeleteGranule
in favor
of @cumulus/api/lib/granule-remove-from-cmr.unpublishGranule
and
@cumulus/api/lib/granule-delete.deleteGranuleAndFiles
.sf-event-sqs-to-db-records
to write a granule's files to
PostgreSQL only after the workflow has exited the Running
status.
Please note that any workflow that uses sf_sqs_report_task
for
mid-workflow updates will be impacted.file
schema and TypeScript type definition to require
bucket
and key
fields.move granule
endpoint now moves granule files on a per-file basismove granule
endpoint on granule file move failure will retain the
file at it's original location, but continue to move any other granule
files.move
method from the @cumulus/api/models.granule
class.
logic is now handled in @cumulus/api/endpoints/granules
and is
accessible via the Core API.data-migration2
Lambda to be run after data-migration1
data-migration2
Lambda for migrating execution records
from DynamoDB to PostgreSQL@cumulus/async-operations
to core packages, exposing
startAsyncOperation
which will handle starting an async operation and
adding an entry to both PostgreSQL and DynamoDbcollections
tabledata-migration1
Lambda for migrating collection records
from Dynamo to PostgreSQLproviders
tabledata-migration1
Lambda for migrating provider records
from Dynamo to PostgreSQLdata-migration1
Lambda for migrating async operation
records from Dynamo to PostgreSQLdata-migration1
Lambda for migrating rule records from
DynamoDB to PostgreSQLrules
tableasyncOperations
tableexecutions
tabletranslateApiAsyncOperationToPostgresAsyncOperation
function to @cumulus/db
data-migration2
Lambda for migrating PDR records from
DynamoDB to PostgreSQLdata-migration2
Lambda for migrating Granule records from
DynamoDB to PostgreSQL and parse Granule records to store File records in
RDS.granules_executions
table to PostgreSQL schema to allow for a
many-to-many relationship between granules and executions
granules_executions
table referring to that record will also be
deleted.upsertGranuleWithExecutionJoinRecord
helper to @cumulus/db
to
allow for upserting a granule record and its corresponding
granules_execution
record@cumulus/db/translate/file/translateApiFiletoPostgresFile
@cumulus/db/translate/file/translateApiGranuletoPostgresGranule
@cumulus/message/Providers/getMessageProvider
@cumulus/message/Executions/getMessageExecutionOriginalPayload
@cumulus/message/Executions/getMessageExecutionFinalPayload
@cumulus/message/workflows/getMessageWorkflowTasks
@cumulus/message/workflows/getMessageWorkflowStartTime
@cumulus/message/workflows/getMessageWorkflowStopTime
@cumulus/message/workflows/getMessageWorkflowName
@cumulus/message/PDRs/getMessagePdrRunningExecutions
@cumulus/message/PDRs/getMessagePdrCompletedExecutions
@cumulus/message/PDRs/getMessagePdrFailedExecutions
@cumulus/message/PDRs/getMessagePdrStats
@cumulus/message/PDRs/getPdrPercentCompletion
@cumulus/message/workflows/getWorkflowDuration
translateApiRuleToPostgresRule
to @cumulus/db
to translate API
Rule to conform to Postgres Rule definition.sfEventSqsToDbRecords
Lambda for granule and
file writes to the core PostgreSQL databasecreate
in Rules Model to take in optional createdAt
parameter
which sets the value of createdAt if not specified during function call.sfEventSqsToDbRecords
Lambda to write execution, PDR,
and granule records to the core PostgreSQL database in parallel with
writes to DynamoDBsfEventSqsToDbRecords
Lambda for PDR writes
to the core PostgreSQL databasesfEventSqsToDbRecords
Lambda for execution
writes to the core PostgreSQL databaseasync-operations
endpoint will now omit output
instead of
returning none
when the operation did not return output.files
to remove filename
and
name
and only support file_name
.files
to remove size
to only
support file_size
.PostgresFile
to remove duplicate fields filename
and name
and
rename size
to file_size
.sf-event-sqs-to-db-records
behavior to discard and not throw an
error on an out-of-order/delayed message so as not to have it be sent to
the DLQ.DELETE /pdrs/{pdrname}
API behavior to also delete record from
PostgreSQL database.DELETE /granules/{granuleName}
API behavior to also delete
record from PostgreSQL database.Bulk operation BULK_GRANULE_DELETE
API behavior to also delete
records from PostgreSQL database.granule_cumulus_id
foreign key to granule in PostgreSQL files
table to use a CASCADE delete, so records in the files table are
automatically deleted by the database when the corresponding granule is
deleted.write-db-dlq-records-to-s3
lambda.process-dead-letter-archive
lambda to pick up and process dead letters in the S3 system bucket dead letter archive./deadLetterArchive/recoverCumulusMessages
endpoint to trigger an async operation to leverage this capability on demand.translateApiAsyncOperationToPostgresAsyncOperation
to call
JSON.stringify
and then JSON.parse
on output.postgres-migration-async-operation
lambda to start an ECS task to
run a the data-migration2
lambda.async_operations
table to include Data Migration 2
as a new
operation_type
.cumulus-tf/variables.tf
to include optional_dynamo_tables
that
will be merged with dynamo_tables
.packages/db/src/types/summary.ts
with
MigrationSummary
and DataMigration1
and DataMigration2
types.data-migration1
and data-migration2
lambdas to return
MigrationSummary
objects.RecordAlreadyMigrated
logs in data-migration1
and
data-migration2
granuleSearchParams.granuleId
or granuleSearchParams.collectionId
properties in the payload for the
<prefix>-postgres-migration-async-operation
LambdamigrationsList
property in the payload for the
<prefix>-postgres-migration-async-operation
LambdastoreErrors
function which stores errors in system bucket.executions
and granulesAndFiles
data migrations to call storeErrors
to store migration errors.system_bucket
variable to data-migration2
.executions
and granules
migrations to improve performance. The behavior of the parallel scanning and writes can be controlled via the following properties on the event input to the <prefix>-postgres-migration-async-operation
Lambda:
granuleMigrationParams.parallelScanSegments
: How many segments to divide your granules DynamoDB table into for parallel scanninggranuleMigrationParams.parallelScanLimit
: The maximum number of granule records to evaluate for each parallel scanning segment of the DynamoDB tablegranuleMigrationParams.writeConcurrency
: The maximum number of concurrent granule/file writes to perform to the PostgreSQL database across all DynamoDB segmentsexecutionMigrationParams.parallelScanSegments
: How many segments to divide your executions DynamoDB table into for parallel scanningexecutionMigrationParams.parallelScanLimit
: The maximum number of execution records to evaluate for each parallel scanning segment of the DynamoDB tableexecutionMigrationParams.writeConcurrency
: The maximum number of concurrent execution writes to perform to the PostgreSQL database across all DynamoDB segments@cumulus/aws-client/DynamoDb.parallelScan
helper to perform parallel scanning on DynamoDb tablesfailed
in both Postgres and DynamoDB if any/all of its files fail to write to the database.@cumulus/ingest/moveGranuleFiles
Changelog
[v8.1.0] 2021-04-29
@cumulus/api
/granules
and /granules/{granuleId}
endpoints now take getRecoveryStatus
parameter
to include recoveryStatus in result granule(s)@cumulus/api-client.granules.getGranule
function takes a query
parameter which can be used to
request additional granule information.@cumulus/api@7.2.1-alpha.0
for dashboard testingtf-modules/cumulus_distribution
module to standup a skeleton
distribution apiChangelog
[v8.0.0] 2021-04-08
/granules/bulk
to use queueUrl
property instead of a queueName
property for setting the queue to use for scheduling bulk granule workflowsqueueUrl
property in the request body. If provided, this value should be the full URL for an SQS queue.CUMULUS-2374
CUMULUS-2421
ecs_include_docker_cleanup_cronjob
boolean variable to the Cumulus module to enable cron job to clean up docker root storage blocks in ECS cluster template for non-device-mapper
storage drivers. Default value is false
. This fulfills a specific user support request. This feature is otherwise untested and will remain so until we can iterate with a better, more general-purpose solution. Use of this feature is NOT recommended unless you are certain you need it.CUMULUS-1808
deleteSnsTrigger
to give users more context about where to look to resolve ResourceNotFound error when disabling or deleting a rule.Changelog
[v7.2.0] 2021-03-23
@cumulus/api
to get recovery statusCopyToGlacier
step to example IngestAndPublishGranuleWithOrca workflowaddShortnameAndVersionIdToConceptId
field has been added to the config inputs of the hyrax-metadata-updates
taskChangelog
[v7.1.0] 2021-03-12
sync-granule
task will now properly handle syncing 0 byte files to S3rule.queueUrl
property. If provided, this value should be the full URL for an SQS queue.tf-modules/cumulus
module now supports a cmr_custom_host
variable that can
be used to set to an arbitrary host for making CMR requests (e.g.
https://custom-cmr-host.com
).buckets
variable to tf-modules/archive
example/cumulus-tf/orca.tf
and example/cumulus-tf/terraform.tfvars.example
CopyToGlacier
step to example IngestAndPublishGranule workflowchildWorkflowMeta
to queue-pdrs
config. An object passed to this config value will be merged into a child workflow message's meta
object. For an example of how this can be used, see example/cumulus-tf/discover_and_queue_pdrs_with_child_workflow_meta_workflow.asl.json
.rule.queueUrl
property will be used to schedule workflows for that rule. This change allows SQS/Kinesis rules to use any throttled queues defined for a deployment.workflow_start_time
against
the createdAt
field for each record to ensure old records do not
overwrite newer ones<prefix>-lambda-api-gateway
IAM role used by API Gateway Lambda now
supports accessing all buckets defined in your buckets
variable except
"internal" buckets/s3Credentials
endpoint based upon value for
environment variable DISABLE_S3_CREDENTIALS
. If set to "true", the
endpoint will not dispense S3 credentials and instead return a message
indicating that the endpoint has been disabled./elasticsearch
endpoint's reindex
function to prevent
reindexing when source and destination indices are the same.waitForAsyncOperationStatus
to take a retryObject
and use exponential backoff. Increased the total test duration for both
AsycOperation specs and the ReconciliationReports tests.queueUrl
from the parameters object for @cumulus/message/Build.buildQueueMessageFromTemplate
queueUrl
from the parameters object for @cumulus/message/Build.buildCumulusMeta
@cumulus/ingest/S3ProviderClient.sync()
preventing 0 byte files from being synced to S3.tf-modules/archive
:
private_buckets
protected_buckets
public_buckets
Changelog
[v7.0.0] 2021-02-22
example/cumulus-tf/orca.tf
and example/cumulus-tf/terraform.tfvars.example
CopyToGlacier
step to example IngestAndPublishGranule workflowcmrRevisionId
as an optional parameter to post-to-cmr
that will be used when publishing metadata to CMR.getCollectionsByShortNameAndVersion
to @cumulus/cmrjs that performs a compound query to CMR to retrieve collection information on a list of collections. This replaces a series of calls to the CMR for each collection with a single call on the /collections
endpoint and should improve performance when CMR return times are increased.publishUMMGJSON2CMR
to take in an optional revisionId
parameter.publishUMMGJSON2CMR
to throw an error if optional revisionId
does not match resulting revision ID.publishECHO10XML2CMR
to take in an optional revisionId
parameter.publishECHO10XML2CMR
to throw an error if optional revisionId
does not match resulting revision ID.publish2CMR
to take in optional cmrRevisionId
.getWriteHeaders
to take in an optional CMR Revision ID.ingestGranule
to take in an optional CMR Revision ID to pass to getWriteHeaders
.ingestUMMGranule
to take in an optional CMR Revision ID to pass to getWriteHeaders
./s3credentialsREADME
, to include Python and
JavaScript code demonstrating how to refrsh the s3credential for
programatic access.500
status is returned from CMR