Coder Social home page Coder Social logo

swodlr's People

Contributors

cqbanh avatar frankinspace avatar nikki-t avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

swodlr's Issues

Implement basic API

After some initial discussions about the proposed architecture (https://github.com/podaac/swodlr/wiki/Architecture), implement a simple API for working with the domain objects discussed.

Acceptance Criteria:

  • User should be able to create an L2 Raster Product object
  • User can view a L2 Raster Product object that was previously created

api: Schema updates, TEA link generation, lookup optimizations, and more

  • Update database schema to provide S3 URI storage for generated products
  • Update ProductHistory to provide requested timestamp in GraphQL schema
  • Bucket to TEA endpoint mapping in Spring configurations
  • S3 bucket URI to TEA URI converter
  • Unify pagination strategy across all searchable objects
  • Implement frontend redirect from OAuth2 flow

Update architecture to V3

Expand ingest-to-sds to be step function with sqs as input
Group other lambdas into step functions

Enable encryption on RDS database

It is likely this will be required by NASA / Earthdata Cloud in the near future. We should get in front of it and enable encryption on the RDS database now since we're still early in development.

raster-create: Process updates

  • Add notify_update to the post-evaluate step in the step function to provide more visibility into generation
  • Create the publish_data lambda and add to step function
  • Unit tests for publish_data
  • Fix CI/CD pipeline variable

Implement CI/CD Pipelines

Implement CI/CD pipelines via GitHub Actions

First pass AC (feel free to suggest a change):

  • Pipeline performs linting/unit tests on all branches
  • Pipeline performs .jar and Docker container builds for API
  • Pipeline pushes generated artifacts to GitHub Repository
  • Pipeline automatically increments version number based on branch (main/develop/*), and increment develop branch based on release; likely to be handled by bump2version
  • Pipeline generates tags based on branch (main/develop/release); likely to be handled by bump2version

API: CORS/Cookie fixes for frontend use

Fix API service to provide proper CORS headers/cookie options depending on environment deployed in. SIT environment should relax security policies to allow for local frontend development

As an end user, I want to be able to select a configuration provided by the API

Implement pre-defined configurations for users to select:

(1) output_granule_extent_flag (e.g., 0)
(2) raster_resolution (e.g., 100, 200)
(3) output_sampling_grid_type (e.g., utm)
(4) utm_zone_adjust (e.g., 0)
(5) mgrs_band_adjust (e.g., 0)

User provides Cycle/Pass/Scene IDs & select from above pre-defined configurations provided by our API.

As a swodlr UI user, I want to have a convenient tool to get scene ID so that I can use it to submit the raster request

In v1 of swodlr UI, an user puts in cycle/pass/sceneID to submit a request to generate customized L2 raster products. The scene ID can be found from the SDP SWOT_L2_HR_Raster granule in its file naming convention, iso metadata, CMR, or is calculated using an equation.

The code that calculates the scene ID via an equation is already developed in the backend service. Create a convenient tool that leverage the existing backend code to provide the end user the scene IDs using the equation.

As a developer, I want to modify the GQL schema to clarify product query/mutation intent

Modify the GQL schema to better differentiate the raster product querying and creation operations. query.l2RasterProduct should remain the same, but provide documentation that if the product does not exist, it will not be created. mutation.queryOrCreateL2RasterProduct should provide the same functionality as query.l2RasterProduct, but in addition, if a product requested does not exist, it will initiate the generation of the product

This differentiation should cover the two base use cases for Swodlr

As a user, I do not want to see stacktraces when errors occur

Not urgent as we are still in development but I want to track this because we need to fix it before public deployment.

The default error page currently includes stack traces and info that we do not want to be publicly available when the service is published.

Need to create a user-friendly error page that indicates an error occurred. The error page should include a unique error code identifier so that service operators/developers can quickly search application logs using the unique error code to find the relevant stack trace.

Implement tests for API

Create tests for the API using an in memory database as storage.

A few test cases that should be present:

  • Given product does not exist, create new raster product. Validate new product exists
  • Given product exists, lookup raster product. Validate product returned
  • Given product exists, lookup status of raster product. Validate correct status returned
  • Given product does not exist, lookup raster product. Validate error returned indicating product not found

user-notify: implementation

Implement user notification via email when requested custom raster product is ready for download

A/C: Demonstrate user get an email notification to download when products are generated

Setup project

  • Initialize new Spring Boot project using JDK 17 and Spring 5.3
  • Build project using Gradle 7.5

Just need the skeleton of the project for now

Setup RDS database

This service is going to have to connect to an RDS instance to store state. Need to setup an RDS instance using terraform.

AC:

  • Terraform scripts written and can be manually applied to SIT environment
  • RDS instance is created with 2 users: an administrator with ownership permissions and an application user with permissions limited to a specific schema to be used for the application.

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.