NASA DRL's International Polar Orbiter Processing Package (IPOPP) is a collection of subsystems developed by NASA DRL which act as an ochestration framework for ingesting, processing, and publishing satellite imagery.
This repo houses public documentation and issue-tracking for the working collection of subsystems as maintained by the USF IMaRS group. Helpful raw files may also be stored here, but generally documentation will be in markdown format in the /docs directory and can be browsed from github directly. Remember that individual subsystems may have their own documentation and issue-tracking, this repo is the broad catch-all for when you're not sure or for getting a general overview.
Because the individual sub-systems of IPOPP are (somewhat) independent (hopefully more so in the future), we maintain these subsystems in individual repositories:
- IS - Information System (TODO)
- DSM - Data Storage Manager
- NSLS - Logging System
- NCS - Control System (TODO)
It may be possible to package the subsystems into this repo using git sub-modules in the future, but I haven't gottent there yet.
USF IMaRS makes use of the following SPA packages within the IPOPP framework:
A few additional tools we have developed:
- imars_bin is a collection of common scripts used by a couple of our SPA packages
- RemoteDownlinks is used to ingest raw satellite files over the internet from NASA rather than recieving them directly
- ipopp-thumbs is a little script to produce thumbnails from larger true-color pngs
- StationTester is an attempt to implement a test-suite across SPAs. It also includes a script which reads your IPOPP configuration and produces a dependency graph to help track down pipeline issues.
- ipopp-installer was an attempt to script our IPOPP installation which was later replaced by use of puppet.
Here is a directed graph generated by StationTester depicting our pipeline:
Lastly, please note that IMaRS is currently attempting to use puppet as a way to programatically deploy and configure IPOPP processing nodes. The puppet-ipopp module works in conjunction with roles/profiles in our puppet configuration to this end.