Releases: NTIA/scos-sensor
1.0.0
This release includes the following changes:
- README updates
- Bug fixes
- Updated requirements for security vulnerabilities
- Add host Postgres user and group for Postgres database folder permissions when deploying with Puppet
- For the browsable API, automatically log out the user and end the session after 15 minutes
- Adds support for OAUTH 2.0 authentication for task result callback
- Adds support for authentication to scos-sensor API using OAUTH 2.0 JWT (JSON Web Token)
- Removes is_private and admin_only.
- User must be superuser or have JWT authority matching REQUIRED_ROLE setting
- Add drivers folder for copying files into the scos-sensor API Docker container
- Upgrade to latest pip version in scos-sensor API Docker container
- Replaced MAX_TASK_RESULTS with MAX_DISK_USAGE which defaults to 85%
- Refactored scos-sensor to support plugins for different actions and signal analyzers
- Added feature to copy required driver files to specified locations in the API container
- Added documentation on how to create required SSL certificates and JWT keys.
- Added script for creating localhost SSL certificate for testing
- Added height to location
- Modified the scheduler to set the status of a task_result to 'notification_failed' in the event that the notification to the callback URL fails
- Moved sensor definition/capabilities initialization from scos-sensor into scos-actions
- Now using pip-tools to manage dependencies
- Use broad version requirements for dependencies to reduce conflicts with scos plugins.
- Updated dependencies, removed unneeded dependencies and moved some dependencies from requirements to requirements-dev
- Added support for preselectors
- Fixed Ubuntu version to 18.04
- Fixed gps sync
Tasks Endpoint
The largest change in the release is that the /acquisitions
endpoint, which holds data produced when the scheduler runs a task that saves data in the database, and the /results
endpoint, which was created later to give some status information about each task run, have been merged into a new /tasks
endpoint.
We also took this opportunity to relocate the "task queue", which provides a snapshot of upcoming tasks as seen by the scheduler, from the /status
endpoint into /tasks
.
/tasks/upcoming
now shows the tasks queue. It now shows at most settings.MAX_TASK_QUEUE
upcoming tasks.
/tasks/completed
gives overview information about the number of results available for each schedule entry that you have permissions to view, and also provides a link to download a multi-recording archive of all available data for that schedule entry.
/tasks/completed/{schedule_entry_name}
lists each task result and "metadata" and SigMF "archive" links under the new data key, if available.
/tasks/completed/{schedule_entry_name}/{task_id}
shows the detail view for a single task result.
Multi-recording SigMF archives are now supported, which means actions can produce them. The "stepped frequency" style actions now produce a multi-recording archive to allow a different sample rate at each center frequency.
Python 3.7 or later is required
Other changes:
- sensor definition can be loaded from a json file
- actions can be defined in yaml (see
/configs/actions/README.md
) - m4s and IQ actions defined across 700MHz band
- superuser (admin) account can be generated automatically from environment variables
- django-debug-toolbar is enabled when DEBUG=true
- object's url field name changed from "url" to "self" for consistency with RFC 42867
- Task object (displayed in task queue at
/tasks/upcoming
) "time" field changed from epoch timestamp to datetime string to better align with rest of API - setup automatic code formatters using
pre-commit
. See the DEVELOPING.md file for notes - updated NTIA license
- updated calibration file format
- updated SigMF metadata
- set clock rate based on calibration file and sample rate used
- action callback now passes token in header
- action callback SSL verification can be disabled with CALLBACK_SSL_VERIFICATION environment variable
- last calibration time reported on status endpoint
- added MAX_TASK_RESULTS environment variable to control the maximum task results for a schedule entry before oldest results will be overwritten
- added MANAGER_FQDN and MANAGER_IP to resolve hostname for scos-manager in docker container
- m4s actions now use flat top window for FFT
- sensor overload reported in SigMF metadata
- separate calibration files used for sensor and signal analyzer (usrp)
- datetime fields now use millisecond ISO-8601 format
- Fixed many bugs, upgraded and added tests, updated dependency versions, and much more...
Tasks Endpoint
The largest change in the release is that the /acquisitions
endpoint, which holds data produced when the scheduler runs a task that saves data in the database, and the /results
endpoint, which was created later to give some status information about each task run, have been merged into a new /tasks
endpoint.
We also took this opportunity to relocate the "task queue", which provides a snapshot of upcoming tasks as seen by the scheduler, from the /status
endpoint into /tasks
.
/tasks/upcoming
now shows the tasks queue. It now shows at most settings.MAX_TASK_QUEUE
upcoming tasks.
/tasks/completed
gives overview information about the number of results available for each schedule entry that you have permissions to view, and also provides a link to download a multi-recording archive of all available data for that schedule entry.
/tasks/completed/{schedule_entry_name}
lists each task result and "metadata" and SigMF "archive" links under the new data key, if available.
/tasks/completed/{schedule_entry_name}/{task_id}
shows the detail view for a single task result.
Multi-recording SigMF archives are now supported, which means actions can produce them. The "stepped frequency" style actions now produce a multi-recording archive to allow a different sample rate at each center frequency.
Other changes:
- sensor definition can be loaded from a yaml file
- actions can be defined in yaml as well (see
/configs/actions/README.md
) - m4s and IQ actions defined across 700MHz band
- superuser (admin) account can be generated automatically from environment variables
- django-debug-toolbar is enabled when DEBUG=true
- object's url field name changed from "url" to "self" for consistency with RFC 42867
- Task object (displayed in task queue at
/tasks/upcoming
) "time" field changed from epoch timestamp to datetime string to better align with rest of API - setup automatic code formatters using
pre-commit
. See the DEVELOPING.md file for notes - updated NTIA license
- updated calibration file format
- updated SigMF metadata
- set clock rate based on calibration file and sample rate used
- action callback now passes token in header
- action callback SSL verification can be disabled with CALLBACK_SSL_VERIFICATION environment variable
- last calibration time reported on status endpoint
- added MAX_TASK_RESULTS environment variable to control the maximum task results for a schedule entry before oldest results will be overwritten
- added MANAGER_FQDN and MANAGER_IP to resolve hostname for scos-manager in docker container
- m4s actions now use flat top window for FFT
- sensor overload reported in SigMF metadata
- separate calibration files used for sensor and signal analyzer (usrp)
- Fixed many bugs, upgraded and added tests, updated dependency versions, and much more...
Tasks Endpoint
The largest change in the release is that the /acquisitions
endpoint, which holds data produced when the scheduler runs a task that saves data in the database, and the /results
endpoint, which was created later to give some status information about each task run, have been merged into a new /tasks
endpoint.
We also took this opportunity to relocate the "task queue", which provides a snapshot of upcoming tasks as seen by the scheduler, from the /status
endpoint into /tasks
.
/tasks/upcoming
now shows the tasks queue. It now shows at most settings.MAX_TASK_QUEUE
upcoming tasks.
/tasks/completed
gives overview information about the number of results available for each schedule entry that you have permissions to view, and also provides a link to download a multi-recording archive of all available data for that schedule entry.
/tasks/completed/{schedule_entry_name}
lists each task result and "metadata" and SigMF "archive" links under the new data
key, if available.
/tasks/completed/{schedule_entry_name}/{task_id}
shows the detail view for a single task result
Multi-recording SigMF archive are now supported, which means actions can produce them. The "stepped frequency" style actions now produce multi-recording archive to allow a different sample rate at each center frequency.
Other changes:
- sensor definition can be loaded from a yaml file
- actions can be defined in yaml as well (see /configs/README.md)
- m4s and IQ actions defined across 700MHz band
- superuser (admin) account can be generated automatically from environment variables
- django-debug-toolbar is enabled when DEBUG=true
- object's url field name changed from "url" to "self" for consistency with RFC 42867
- Task object (displayed in task queue at
/tasks/upcoming
) "time" field changed from epoch timestamp to datetime string to better align with rest of API - setup automatic code formatters using
pre-commit
. See the DEVELOPING.md file for notes - updated NTIA license
- updated calibration file format
- updated SigMF metadata
- set clock rate based on calibration file and sample rate used
- action callback now passes token in header
- action callback SSL verification can be disabled with CALLBACK_SSL_VERIFICATION environment variable
- last calibration time reported on status endpoint
- added MAX_TASK_RESULTS environment variable to control the maximum task results for a schedule entry before oldest results will be overwritten
- Fixed many bugs, upgraded and added tests, updates dependency version, and much more...
Tasks Endpoint
The largest change in the release is that the /acquisitions
endpoint, which holds data produced when the scheduler runs a task that saves data in the database, and the /results
endpoint, which was created later to give some status information about each task run, have been merged into a new /tasks
endpoint.
We also took this opportunity to relocate the "task queue", which provides a snapshot of upcoming tasks as seen by the scheduler, from the /status
endpoint into /tasks
.
/tasks/upcoming
now shows the tasks queue. It now shows at most settings.MAX_TASK_QUEUE
upcoming tasks.
/tasks/completed
gives overview information about the number of results available for reach schedule entry that you have permissions to view, and also provides a link to download a multi-recording archive of all available data for that schedule entry.
/tasks/completed/{schedule_entry_name}
lists each task result and "metadata" and SigMF "archive" links under the new data
key, if available.
/tasks/completed/{schedule_entry_name}/{task_id}
shows the detail view for a single task result
Multi-recording SigMF archive are now supported, which means actions can produce them. The "stepped frequency" style actions now produce multi-recording archive to allow a different sample rate at each center frequency.
Other changes:
- sensor definition can be loaded from a yaml file
- actions can be defined in yaml as well (see /configs/README.md)
- superuser (admin) account can be generated automatically from environment variables
- django-debug-toolbar is enabled when DEBUG=true
- object's url field name changed from "url" to "self" for consistency with RFC 42867
- Task object (displayed in task queue at
/tasks/upcoming
) "time" field changed from epoch timestamp to datetime string to better align with rest of API - setup automatic code formatters using
pre-commit
. See the DEVELOPING.md file fore notes - Fixed many bugs, upgraded and added tests, updates dependency version, and much more...
Handle more acquisitions on-disk
This release makes several modification to the API in order to better handle having a large number of acquisitions on disk. The changes include
- Pagination enabled - any endpoint that previously returned an array of objects now returns an object containing
next
andprevious
page links, a linkcount
, andresults
which holds the original array. Thank to this, loading a very large list of acquisitions will not crash the system.
GET /api/v1/schedule/
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"count": 5,
"next": null,
"previous": null,
"results": [
...
]
}
- The DRF API allows searching and sorting by various fields (using the new Filtering button)
/api/v1/acquisitions/
overview now includes anarchive
link option which will create a single multi-recording SigMF archive of all available acquisitions- Switches to new API documentation webpage generator so that auto-generated docs at https://ntia.github.io/scos-sensor/ are now accurate
Hotfix - fix typo: TuneResult -> TuneRequest
Issue was in the actual USRP interface code and is not hit by tests or the monitor_usrp
task, so slid through. Re: issue #135.
Switch to python3 by using UHD py3 binding
Patch fix for puppet-based build
Fix an issue where the autoheal tagged image wasn't being downloaded properly.
First stable release
This release includes many updates from almost a half year of running sensors in the lab.
Some of the many improvements include:
- Use ISO 8601 time for more consistent time interface
- Split schedule entry
stop
intoabsolute_stop
andrelative_stop
, whereabsolute_stop
takes an ISO 8601 datetime string andrelative_stop
is seconds after start. - Add lat/long to status endpoint and add ability to sync datetime and location to an onboard GPS with a new
sync_gps
action - Add
active
flag to schedule entry - Improve
results
endpoint - Add
validate_only
capability to schedule entry - Significantly reduce size and build-time of
api
docker container - Build
autoheal
at build-time instead of runtime to allow sensor to run without network connection - Add ability to apply a scale factor to incoming IQ samples
- Retry failed acquisitions at usrp interface level
- Significantly beefed-up unit testing
- Make
monitor_usrp
task even more robust - Better default gain settings
- New markdown + mathjax action algorithm descriptions
- New stepped frequency time domain IQ capture template action
- Security updates