v5.11.0
OpenC3 COSMOS 5.11.0 - Bringing Everything Together
Welcome to OpenC3 COSMOS 5.11.0!
Significant Data Reduction CPU Utilization Improvements
The Reducer tasks periodically run and can use a lot of CPU. This change throttles data reduction to using at most 30% of a CPU per target by default, and this setting is adjustable. There is also a new configuration setting to completely disable data reduction if it is not needed.
HttpClientInterface and HttpServerInterface
Initial versions of an HttpClientInterface and HttpServerInterface are included in this release. An example of use can be found Here. Note that this code is still pending unit testing and may be buggy.
Hex in Item Detail Dialog
The item detail dialog now also shows the Raw value in hex for integer items.
Improvements to Accessors and Protocols
Accessors are now instantiated with each packet which allows them to take constructor arguments. This allows for the creation of more advanced accessors for packets, and supports the new HttpAccessor and FormAccessor classes. Protocols now support passing an extra hash of data in read_data and write_data. This allows for eloquent protocols that don't have to save data in variables to pass between the raw data phase and the packet phase.
Logger Improvements
Logger now supports three types of log entries: log, notification, and alert. Additionally, WARN and above severity levels can be optionally written out to STDERR instead of STDOUT if the OPENC3_USE_STDERR environment variable is set. The Log MessagesChannel API has also been updated to support querying historical log messages, and the log file format is now proper JSON entries that are newline separated. Finally, logs that aren't associated with any scope are now logged into a NOSCOPE path in the logs bucket.
Possible migration required. This change removed NotificationModel, and all use of that class should be replaced by use of Logger with type: Logger::NOTIFICATION.
Continued Python Development
Python development continues. Some Interfaces and Protocols are now included. Also, much better testing and unit tests. More to come. We are still targeting the ability to create Python based Interfaces and Target code by the end of the month.
Note: Python support is still Beta in this release.
Monthly Dependency Updates
We've updated all our dependencies driving down the number of CVEs in all of our containers.
Notable Bug Fixes
- Fixed an issue causing a never ending loop of the init container caused by changing in Minio
- Force folder_name to be unique to prevent conflicting tool installs
- Fixed an issue with Websockets failing authentication if passwords contained special characters
- Fixed plugin installation diff views
- ERB on full commented out lines is no longer executed. Note: will still execute in trailing comments
- Better support for UTF-8 characters in config files
- Fixed unit test performance in mock_redis xread
- Updated Sleeper class to properly close pipe handles
- Fixed the creation of an anonymous Docker volume for the redis-ephemeral container
All Pull Requests in this Release
- Post release workflows by @ryanmelt in #784
- Python parsers by @jmthomas in #786
- Bump actions/github-script from 4 to 6 by @dependabot in #788
- Force unique folder_name for tools by @ryanmelt in #793
- Small Patches to Help with the Local Workflow by @stephen-ritter in #789
- Python logs & interface by @jmthomas in #795
- Reducer improvements by @jmthomas in #791
- Bump apollo-server-core from 3.12.0 to 3.12.1 in /openc3-cosmos-init/plugins by @dependabot in #803
- Accessor updates by @ryanmelt in #802
- Add Python streams and interfaces by @jmthomas in #797
- Bump actions/checkout from 3 to 4 by @dependabot in #806
- Show ENV usage in screen by @jmthomas in #819
- encodeURI for action cable consumers by @jmthomas in #818
- Fix ace-diff alignment issues by @jmthomas in #822
- Python microservices by @jmthomas in #817
- Display raw UINT/INT values as hex by @jmthomas in #821
- Comment out ERB by @jmthomas in #820
- REDUCER_DISABLE option for targets by @jmthomas in #826
- Handle UTF-8 in config files by @jmthomas in #828
- Dependencies by @jmthomas in #825
- Bump semver from 6.3.0 to 6.3.1 in /openc3/templates/tool_react by @dependabot in #829
- Technical debt cleanup by @ryanmelt in #815
- Http Interfaces by @ryanmelt in #805
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to [email protected].
Thanks!
Full Changelog: Changelog