Giter Club home page Giter Club logo

cumulus's Introduction

Cumulus Framework

npm version Coverage Status

About Cumulus

Cumulus is an open source cloud-based data ingest, archive, distribution, and management framework developed for NASA's future Earth Science data streams. This repo supports the development, deployment, and testing of Cumulus and supplies useful tips on configuration, workflow management, and operations. To learn more about Cumulus and NASA's Earth Observing System Data and Information System (EOSDIS) cloud initiatives go to More Information.


๐Ÿš€ Getting Started

Below is in-depth guidance to help get you started with your Cumulus development. To get a quick start on Cumulus deployment go to our Getting Started section.

Contents


๐Ÿ“– Documentation

๐Ÿ”จ Development

The Cumulus core repo is a monorepo managed by Lerna. Lerna is responsible for installing the dependencies of the packages and tasks that belong in this repo. In general, Cumulus's npm packages can be found in the packages directory, and workflow tasks can be found in the tasks directory.

To help cut down on the time and disk space required to install the dependencies of the packages in this monorepo, all devDependencies are defined in the top-level package.json. The Node module resolution algorithm allows all of the packages and tasks to find their dev dependencies in that top-level node_modules directory.

TL;DR - If you need to add a devDependency to a package, add it to the top-level package.json file, not the package.json associated with an individual package.

Installation

This is for installation for Cumulus development. See the Cumulus deployment section for instructions on deploying the released Cumulus packages.

Prerequisites

  • NVM and node version 16.19.0
  • AWS CLI
  • Bash
  • Docker (only required for testing)
  • docker-compose (only required for testing pip install docker-compose)
  • Python 3.10
  • pipenv

You may use brew to install the prerequisites. Visit Homebrew documentation for guidance.

Install the correct node version:

nvm install
nvm use

Install Lerna

We use Lerna to manage multiple Cumulus packages in the same repo. You need to install Lerna as a global module first:

npm install -g lerna

Install Local Dependencies

We use npm for local package management. Run the following to get your dependencies set up.

npm install
npm run bootstrap

Build all packages:

npm run build

Build and watch packages:

npm run watch

To add new packages go to Adding New Packages for guidance.

Running the Cumulus APIs locally

Start the API:

npm run serve

Or start the distribution API:

npm run serve-dist

See the API package documentation for more options.

๐Ÿ“ Tests

Unit Tests

LocalStack

LocalStack provides local versions of most AWS services for testing.

The LocalStack repository has installation instructions.

Localstack is included in the docker-compose file. You only need to run the docker-compose command in the next section in order to use it with your tests.

Docker containers

Turn on the docker containers first:

npm run start-unit-test-stack

Stop localstack/unit test services:

npm run stop-unit-test-stack

Run database migrations

npm run db:local:migrate

Using an AWS-hosted Elasticsearch server

The tests can be run against an Elasticsearch server running in AWS. This is useful if you are using an ARM-equipped Mac and are unable to run the old Intel version of Elasticsearch in Docker. These instructions assume that you have a deployment of Cumulus available, and the deployment name is "EXAMPLE".

Pre-Reqs
  • The AWS CLI is installed
  • The Session Manager plugin for the AWS CLI is installed
  • jq is installed
  • Your Cumulus deployment specified a key_name in cumulus-tf/terraform.tfvars that will grant you access to the EC2 instances that are part of that deployment
  • You are able to SSH into one of your EC2 instances (you are connected to a NASA VPN if required)
Configure ssh

Add the following to your ~/.ssh/config file

Host i-*
  User ec2-user
  ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
Start the ssh tunnel to Elasticsearch

Open an SSH tunnel to Elasticsearch with the following command.

./bin/es-tunnel.sh EXAMPLE

At this point you can send requests to https://localhost:8443 and get responses from your Elasticsearch domain running in AWS. Note that, because you're tunneling TLS-encrypted traffic, the certificates are not going to match. The test code handles this already but, if you're using curl, make sure to use the -k option to disable strict certificate checks.

$ curl -k https://localhost:8443
{
  "name" : "ABC123",
  "cluster_name" : "123:abc-es-vpc",
  "cluster_uuid" : "abc-Ti6N3IA2ULvpBQ",
  "version" : {
    "number" : "5.3.2",
    "build_hash" : "6bc5aba",
    "build_date" : "2022-09-02T09:03:07.611Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.2"
  },
  "tagline" : "You Know, for Search"
}
Run the tests

With the tunnel configured, you can now run the tests with the following command:

env \
  LOCAL_ES_HOST_PORT=8443 \
  LOCAL_ES_HOST_PROTOCOL=https \
  LOCAL_ES_HOST=localhost \
  LOCALSTACK_HOST=127.0.0.1 \
npm test

Run tests

Run the test commands next

export LOCAL_ES_HOST=127.0.0.1
export LOCALSTACK_HOST=127.0.0.1
npm test

Coverage tests

If tests are working, run coverage tests

export LOCAL_ES_HOST=127.0.0.1
export LOCALSTACK_HOST=127.0.0.1
npm run test:coverage

These tests will fail if coverage drops below certain thresholds or if unit tests fail.

an environment variable can be set to only measure and not threshold

export FAIL_ON_COVERAGE=false
npm run test:coverage

Additionally, you can facilitate updating coverage values with the included coverage script

npm run coverage -- --update

Integration Tests

For more information please read this.

Running tests via VS Code debugger

Copy the .vscode.example directory to .vscode to create your debugger launch configuration. Refer to the VS Code documentation on how to use the debugger.

๐Ÿ”ฆ Code Coverage and Quality

For more information please read this.

๐Ÿ“ฆ Adding New Packages

Create a new folder under packages if it is a common library or create folder under cumulus/tasks if it is a lambda task. cd to the folder and run npm init.

Make sure to name the package as @cumulus/package-name.

Running command in all package folders

lerna exec -- rm -rf ./package-lock.json

Cleaning Up all the repos

npm run clean

Contribution

Please refer to: https://github.com/nasa/cumulus/blob/master/CONTRIBUTING.md for more information.

๐Ÿ›’ Release

To release a new version of cumulus read this.


More Information

For more information about this project or more about NASA's Earth Observing System Data and Information System (EOSDIS) and its cloud work, please contact Katie Baynes or visit us at https://earthdata.nasa.gov.

cumulus's People

Contributors

abarciauskas-bgse avatar alukach avatar bilts avatar botanical avatar cappelaere avatar charleshuang80 avatar chuckwondo avatar dopeters avatar etcart avatar flamingbear avatar ifestus avatar indiejames avatar jaortega527 avatar jasongilman avatar jennyhliu avatar jjmccoy avatar jkovarik avatar kkelly51 avatar laurenfrederick avatar malikidreeshasankhan avatar markdboyd avatar nasamoduyebo avatar nemreid avatar nnaga1 avatar npauzenga avatar paulpilone avatar scisco avatar sethvincent avatar snyk-bot avatar vpnguye2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cumulus's Issues

terraform.tfvars.example doesn't exist under example/ directory.

I think example/ should be example/cumulus-tf/ directory.

#### Configure the Cumulus deployment

In the `example` directory, copy `terraform.tfvars.example` to
`terraform.tfvars` and update all of the parameters using values appropriate for
your deployment.

All granules failing to ingest for LP DAAC Cumulus instance

All new granules are failing to ingest into the LP DAAC Cumulus instance. The logs do not indicate what is causing the problem. The operator should be able to tell from the logs what is causing the problem. We also need to get ingest working again. Our operators should have a way to remedy this problem as well.

image

Elasticsearch Capacity

Can you provide any guidance on the size and number of nodes required to run a production Cumulus Elasticsearch cluster?

Lambda versioning

The information in the docs for Lambda versioning is incorrect:
https://github.com/nasa/cumulus/blob/master/docs/lambda_versioning.md

In that there is no supported field uniqueIdentifier under s2Source for Lambdas, and instead an error will be thrown if provided.

I'm not sure if that means the rest of the document is still relevant, does the versioning still happen like described here? Does it use the s3Source key field instead as an identifier?

Insufficient logging detail when timing out retrieving OAuth tokens

I saw an event where for some time we were unable to complete the OAuth token handeshake due to a timeout somewhere in the system.

You can see that it timed out ("Task timed out after 20.02 seconds"), but there is no stack trace or indication of what what it was doing that timed out (waiting for some URL?), which makes this difficult to triage.

Here are example logs:

19:13:55
[06/Jun/2019:19:13:55 +0000] "GET /token?state=https%3A%2F%2Fd3sxx7zkzigde1.cloudfront.net%2F%23%2Fauth HTTP/1.1"307 11 "https://d3sxx7zkzigde1.cloudfront.net/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36" -
๏…
19:13:55
END RequestId: 86e097d4-90ac-4fa6-9c40-92586125f011
๏…
19:13:55
REPORT RequestId: 86e097d4-90ac-4fa6-9c40-92586125f011 Duration: 95.12 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 512 MB
๏…
19:13:59
START RequestId: 864f7a3d-0f2c-4c08-83aa-b41684e8cea7 Version: $LATEST
๏…
19:14:19
END RequestId: 864f7a3d-0f2c-4c08-83aa-b41684e8cea7
๏…
19:14:19
REPORT RequestId: 864f7a3d-0f2c-4c08-83aa-b41684e8cea7 Duration: 20020.32 ms Billed Duration: 20000 ms Memory Size: 512 MB Max Memory Used: 512 MB
๏„ฟ
19:14:19
2019-06-06T19:14:19.346Z 864f7a3d-0f2c-4c08-83aa-b41684e8cea7 Task timed out after 20.02 seconds
2019-06-06T19:14:19.346Z 864f7a3d-0f2c-4c08-83aa-b41684e8cea7 Task timed out after 20.02 seconds

InRegionS3PolicyLambdaFunction | Unzipped size must be smaller than 262144000 bytes

When I deploy Cumulus v1.13.0, I'm getting an error that one of the lambdas is too large unzipped:

InRegionS3PolicyLambdaFunction | Unzipped size must be smaller than 262144000 bytes (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: 50d92946-814b-11e9-bbaf-9f7f6002a11b)

S3 shows the file as 54.9 MB. When I extract it, it's 319 mb. Within the zip file, there are the following folders:

49M app
25M bootstrap
12K bulkDelete
14M cleanExecutions
16M createReconciliationReport
25M dbIndexer
27M distribution
5.7M emsDistributionReport
26M emsReport
25M executeMigrations
25M indexer
25M jobs
14M messageConsumer
4.1M payloadLogger
14M sfScheduler
4.2M sfSemaphoreDown
1.6M sfSnsBroadcast
4.2M sfStarter

It looks like the space is consumed by unminified output of webpack. All these files appear to come from the NPM distribution, so I'm curious how this works for other people.

Is this a known issue? I'll update this ticket once I find out more information.

MODAPS_FPROC provider fails too frequently

The FTP connection between Cumulus and MODAPS fails way too frequently. Here is the error message reported on the Cumulus Dashboard.

{"message":"FTP list failed for modpdr01.nascom.nasa.gov: read ECONNRESET","details":{"message":"read ECONNRESET"}}

What is causing this problem? Is this an issue at MODAPS? Would using a different protocol (switching away from FTP) be beneficial? How do operators at the DAACs trouble-shoot/dig deeper into issues like this as opposed to just looking at the logs that are displayed on the Dashboard?

image

Timeout in bootstrap lambda

I'm getting a timeout in the bootstrap lambda. This is most likely an environment issue on our side, that I'm debugging.

The log message we get does not have the full stack trace for the primary issue. I.e. you can't tell which of the bootstrap operations is failing, though it is likely connecting to one of DynamoDB or Elasticsearch.

All of these functions except the dynamodb one are use async/await, so it may be that if that function was async you'd get more - once I confirm that this is the case I'll file a PR.

    bootstrapUsers(get(users, 'table'), get(users, 'records')),
    bootstrapCmrProvider(get(cmr, 'Password')),
    bootstrapDynamoDbTables(dynamos)

Here are the logs:

{
    "error": {
        "name": "Error",
        "message": "Request Timeout after 50000ms",
        "stack": [
            "Error: Request Timeout after 50000ms",
            "    at /var/task/index.js:288620:15",
            "    at Timeout.<anonymous> (/var/task/index.js:288649:7)",
            "    at ontimeout (timers.js:482:11)",
            "    at tryOnTimeout (timers.js:317:5)",
            "    at Timer.listOnTimeout (timers.js:277:5)"
        ]
    },
    "level": "error",
    "message": "Request Timeout after 50000ms",
    "sender": "unknown",
    "timestamp": "2019-06-26T18:36:30.965Z"
}

{
    "level": "info",
    "message": "RESPONSE BODY:\n {\"Status\":\"SUCCESS\",\"PhysicalResourceId\":\"cumulus-bootstraping-daac-ops-api-deployment\",\"StackId\":\"arn:aws:cloudformation:us-west-2:---:stack/pipe-sit/f43602a0-9840-11e9-ad97-06972e890616\",\"RequestId\":\"a0f360cb-17e9-4d39-a0a5-f96deb39642d\",\"LogicalResourceId\":\"CumulusCustomResource\",\"Data\":null}",
    "sender": "unknown",
    "timestamp": "2019-06-26T18:36:45.829Z"
}```

discover-pdrs name collision

@indiejames I noticed that we will have two discover-pdrs under tasks because wee have also called the discovery portion of PDR process discover-pdrs. I'm fine renaming ours. Any suggestions?

Deployment documents

Hi, Couple minor things I saw while doing my first deployment.

https://github.com/nasa/cumulus/blob/master/docs/deployment/README.md

says to clone:

git clone https://github.com/nasa/ template-deploy

actual repo name is:

https://github.com/nasa/ cumulus-template-deploy

Since not all deployments are us-east-1, users will probably need to add a couple more parameters to the S3 bucket creation mentioned here:

https://nasa.github.io/cumulus/docs/deployment/create_bucket

aws s3api create-bucket \
  --bucket foobar-internal \
  --region your-zone \
  --create-bucket-configuration LocationConstraint=your-zone

Probably wouldn't hurt to have those parameters spelled out.

yarn.lock vs npm shrinkwrap

We have been using yarn in cumulus-api deployments. Lerna supports yarn and obeys yarn.lock but it doesn't support npm5 and the built-in package-lock.json.

I suggest we keep using yarn for installation and package management. Thoughts?

@bilts @jasongilman @indiejames

Negative ingest/processing duration on Cumulus Dashboard

Granule ingest duration and the average processing times are negative on the Cumulus Dashboard. It looks like (from the 3rd screen print) the Created, Ingest started, and processing started times are incorrect. If the Created, Ingest started, and processing started times are corrected, it may fix the ingest duration and average processing time issues.

image

image

image

Region is missing in terraform Dynamodb instruction.

In example/README.md, region is missing for the following command.

$ aws dynamodb create-table \
    --table-name my-tf-locks \
    --attribute-definitions AttributeName=LockID,AttributeType=S \
    --key-schema AttributeName=LockID,KeyType=HASH \
    --billing-mode PAY_PER_REQUEST

Incorrect Documentation about source of Error

https://github.com/nasa/cumulus/blob/3b07b1c0fba29be8d860041959f5d5deeb03f454/docs/system-documentation/system-documentation.md

The section at the bottom: Error: Unable to import module 'index': Error

And the solution: "In order to resolve this issue, update the lambda source (in lambdas.yml, to point to the parent directory of the index.js file."

This is not correct. Add any syntax error inside your index.js file, and CloudWatch Logs will report this error. The error means that it is unable to import the module [because of some error].

It is not an error referencing the file.

When I expand the section in AWS Step Functions, it reveals the real error with my index.js file:

"cause": {
    "errorMessage": "Cannot find module 'node_modules/@cumulus/cumulus-message-adapter-js'",

But clicking the button in the Step Function console that says "CloudWatch Logs" just shows me the generic:

Unable to import module 'index': Error

Support for Lambda layers

It should be possible to add Lambda layers to a Lambda without having to provide your own cloudformation.template.yml file.

/cumulus/packages/deployment/app/cloudformation.template.yml:642

{{#each lambdas}}
  {{@key}}LambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      Code:
        S3Bucket: {{this.bucket}}
        S3Key: {{this.remote}}
      FunctionName: {{../stackName}}-{{@key}}
    {{#if this.layers}}
      Layers:
      {{#each this.layers}}
        - {{this}}
      {{/each}}
    {{/if}}
      Environment:
        Variables:

The addition is from {{#if this.layers}} to it's ending {{/if}}

Then layers can be specified in lambdas.yml such as:

MyLambda:
  runtime: python3.6
  handler: lambda_function.lambda_handler
  timeout: 300
  memory: 128
  s3Source:
    bucket: '{{buckets.internal.name}}'
    key: deploy/mylambda/0.1.0.zip
  layers:
    - arn:aws:lambda:us-west-2:552188055668:layer:geolambda:1

I could make a PR for this, but I'm not sure that the contributing guidelines are still valid given that issues aren't tracked within GitHub.

It's confusing whether I should specify Arn with version or not for CMA.

CMA deployment reports two things.

    "LayerArn": "arn:aws:lambda:us-east-1:12345:layer:tf-CMA-layer",
    "LayerVersionArn": "arn:aws:lambda:us-east-1:12345:tf-CMA-layer:1"

The following TF variable name seems to match LayerArn but example matches LayerVersionArn.

# Replace 12345 with your actual AWS account ID
cumulus_message_adapter_lambda_layer_arn = "arn:aws:lambda:us-east-1:12345:layer:Cumulus_Message_Adapter:4"

Can't deploy cumulus-tf.

I'm not an NGAP user.

Error: error getting Lambda Function (gsfc-ngap-sh-s3-sts-get-keys): ResourceNotFoundException: Function not found: arn:aws:lambda:us-east-1:xxxxx:function:gsfc-ngap-sh-s3-sts-get-keys
    status code: 404, request id: 348ca34c-bdcf-4651-9dfd-013f71570325

The above error happens during

module.cumulus.module.archive.data.aws_dynamodb_table.granules: Refreshing state...

Version mismatches between tags and npm packages for 1.11.x

There appears to be a mismatch between the tags for at least versions 1.11.2 and 1.11.3 and the same versions published to npm.

Cloned, checked out 1.11.2, 1.11.3, 1.12.0, and 1.12.1, then installed from npm and used weld to compare the directories.

The differences in the 1.12.x versions were as expected - no test directories in the npm package, and other minor differences likely due to packaging (I didn't look in depth across all).

The differences in the 1.11.x tag versions and their npm package counterparts however were substantial.

Just showing an example screenshot of the API for 1.11.2

image

Blue shows file differences, and when examined these are significant differences in the code. There's also new files that have been added. All the sub-packages I looked at had similar differences.

This came up as I was using 1.11.3 and wanted to use a custom cloudformation.template.yml file and ran into problems until I realized there was a difference between the version I was using (the 1.11.3 tagged version in the repo) and the original version I was using in my deployment that was from npm.

feat(audit): Update audit-ci to v2.0.1 and re-enable audit-ci in the pipeline

NPM's server response with ENOAUDIT has been frustrating for the audit-ci project, random failures have unnecessarily halted CI environments.

The recent v2.0.1 release (Diff) should fix the retry mechanism for NPM, addressing failures in your pipeline (ex: https://travis-ci.org/nasa/cumulus/jobs/531849256).

v2.0.0 is a major release (CHANGELOG) with soft breaking changes (only deprecation warnings). Your report will look slightly different since it will show "important" info rather than just the "summary" (significant improvement IMO).

I have investigated your audit-ci.json file and there are no actions required other than updating to v2.0.1 and uncommenting the job in Travis.

Cumulus should use yarn

Running npm run bootstrap as detailed in the README's setup instructions fails with an error like:

MacBook-Pro:cumulus aimeebarciauskas$ npm run bootstrap

> @1.0.0 bootstrap /Users/aimeebarciauskas/DevSeed/cumulus
> lerna bootstrap

...
lerna ERR! execute callback with error
lerna ERR! Error: Command failed: npm install
lerna ERR! npm WARN package.json @ No description
lerna ERR! npm WARN package.json @ No repository field.
lerna ERR! npm WARN package.json @ No README data
lerna ERR! npm WARN package.json @ No license field.
lerna ERR! npm ERR! addLocal Could not install /Users/aimeebarciauskas/DevSeed/packages/test-data
lerna ERR! npm ERR! Darwin 17.2.0
lerna ERR! npm ERR! argv "/Users/aimeebarciauskas/.nvm/versions/node/v4.3.2/bin/node" "/Users/aimeebarciauskas/.nvm/versions/node/v4.3.2/bin/npm" "install"
lerna ERR! npm ERR! node v4.3.2
lerna ERR! npm ERR! npm  v2.14.12
lerna ERR! npm ERR! path /Users/aimeebarciauskas/DevSeed/packages/test-data

Since yarn is a preferred node package manager because of how it locks dependencies, we should migrate cumulus to use yarn.

Google Oauth returns an error after access token expires

The application seems to be throwing an error once the access token expires, as there's no refresh token except after the first authorization.

To get around this for login purposes, you can revoke the access in the Google Account security management.

As far as reproducing this:

  • Log in via Google Oauth
  • Hit log out
  • Immediately try to log back in with same account
  • You should hit an error, which may be different depending on version.

1.11.2 looks like:

{
statusCode: 401,
error: "Unauthorized",
message: "The record has validation errors"
}

I'm following up this issue with a PR

Provider's Last Update field on Dashboard doesn't change

I updated the LPDAAC_HTTP_MODIS provider on the Cumulus Dashboard today and the Last Update field didn't change. The Last Update for that provider stayed at "11:13:39 04/13/17". I would have expected that provider to have a new date and time stamp.

Check out the Last Update column in the screen print.

image

cfn-lint generates error.

The following command

cfn-lint --template app/cloudformation.yml --region us-east-1 --ignore-checks W
generates some errors due to type:

E3012 Property Resources/es5Domain/Properties/ElasticsearchVersion should be of type String
app/cloudformation.yml:492:7

E3012 Property Resources/es5Domain/Properties/ElasticsearchClusterConfig/InstanceCount should be of type Integer
app/cloudformation.yml:494:9

E3012 Property Resources/es5Domain/Properties/SnapshotOptions/AutomatedSnapshotStartHour should be of type Integer
app/cloudformation.yml:497:9

E3012 Property Resources/cleanExecutionsLambdaFunction/Properties/Environment/Variables/nonCompleteExecutionPayloadTimeout should be of type String
app/cloudformation.yml:1322:11

E3012 Property Resources/cleanExecutionsLambdaFunction/Properties/Environment/Variables/completeExecutionPayloadTimeout should be of type String
app/cloudformation.yml:1323:11

E3012 Property Resources/cleanExecutionsLambdaFunction/Properties/Environment/Variables/nonCompleteExecutionPayloadTimeoutDisable should be of type String
app/cloudformation.yml:1324:11

E3012 Property Resources/cleanExecutionsLambdaFunction/Properties/Environment/Variables/completeExecutionPayloadTimeoutDisable should be of type String
app/cloudformation.yml:1325:11

tests failing for gibs-dashboard and gibs-ops-api

@jasongilman I'm working on making sure lerna run test works for the whole repository. This command runs the test script on every package including gibs-dashboard and gibs-ops-api. It fails on these two repos because of linting error. I can fix the issues or I can wait for you to fix them. Whichever works better for you.

Let me know.

Enable point in time backups on new tables

I see the following comment, and experienced the behavior as described by it:

**Imoprtant Note:** Configuring point-in-time recovery is not supported by the CloudFormation (as of June 2018). We enable this feature deployment using AWS API. However, due to a limitation of AWS API, the feature fails to be enabled if it is running against newly created tables.

This is no longer true - you can do the following in Cloudformation:

PointInTimeRecoverySpecification:
PointInTimeRecoveryEnabled: true

Preparing the repo for open sourcing

  • update readme
  • create root level entry point for using the library
  • rename gitc to cumulus
  • create authors/contributors file
  • update package.json across modules
  • prepare modules for publishing on npm

cc @bilts

EBS support in ECS

The ECS settings support adding additional EBS storage, but never mount it to the EC2 images.

Only one subnet id is allowed.

Error: Error creating ElasticSearch domain: ValidationException: You must specify exactly one subnet.
    status code: 400, request id: 8563ac94-0b07-11ea-8eb4-af8e39ea39f0
  on .terraform/modules/data_persistence/tf-modules/data-persistence/elasticsearch.tf line 94, in resource "aws_elasticsearch_domain" "es_vpc":
  94: resource "aws_elasticsearch_domain" "es_vpc" {

Missing \ in DynamoDB creation script.

Add \ after PAY_PER_REQUEST.

$ aws dynamodb create-table \
--table-name my-tf-locks \
--attribute-definitions AttributeName=LockID,AttributeType=S \
--key-schema AttributeName=LockID,KeyType=HASH \
--billing-mode PAY_PER_REQUEST
--region us-east-1

http/https protocols are not supported

https://github.com/cumulus-nasa/cumulus/tree/master/cumulus/tasks/discover-granules function throws the following error when using a provider with http/https protocol
{
"level": 50,
"time": 1513367217626,
"msg": "Protocol http is not supported.",
"pid": 1,
"hostname": "ip----",
"name": "cumulus",
"file": "discover-granules/index.js",
"type": "Error",
"stack": "Error: Protocol http is not supported.\n at Object.selector (/var/task/discover-granules/index.js:21486:16)\n at handler (/var/task/discover-granules/index.js:8900:31)",
"v": 1
}

Typo in CHANGELOG.md.

  • CUMULUS-398 - Fix not able to filter executions bu workflow

I think it should be "but."

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.