1.2.0
What's Changed
All notable changes to this project will be documented in this file.
🚀 Highlights
Support Cumulocity IoT device availability feature #2940
The Cumulocity IoT Device monitoring feature is supported out-of-the-box with thin-edge.io. This makes it easier to monitor if your device is online and sending data (with minimal bandwidth).
Check out the documentation for more details.
Cumulocity Remote Access connections are now independent when using systemd #3007
If you're using systemd, then the Cumulocity Cloud Remote Access feature is even more useful as thin-edge.io now uses systemd socket activation to launch the connection meaning that the connection is now fully independent of other services...to put it another way, if you're using the Cumulocity IoT Cloud Remote Access feature to connect securely to your device with SSH, then you can now restart all of the thin-edge.io services, or even do a full thin-edge.io update without getting disconnected!
tedge config supports appending/removing values in an array-type tedge configs - #2943
This might not sound very interesting but if you're using custom SmartREST 2.0 templates with thin-edge.io, then the adding and remove templates just became a lot easier. You can easily add and remove single values without having to check what any existing values are.
For example, adding and removing values to the c8y.smartrest.templates
setting is shown below (also including a comparison without how it previous was done).
# before - each time you set a new value you have to provide the old values
tedge config set c8y.smartrest.templates mycollection1
tedge config set c8y.smartrest.templates mycollection1,mycollection2
tedge config set c8y.smartrest.templates mycollection1,mycollection2,mycollection3
# after - only add the value you want
tedge config add c8y.smartrest.templates mycollection1
tedge config add c8y.smartrest.templates mycollection2
tedge config add c8y.smartrest.templates mycollection3
# Or remove a single value without checking what was previously set
tedge config remove c8y.smartrest.templates mycollection2
Note These new command is not just limited to the c8y.smartrest.templates
configuration, but any array based configuration like c8y.topics
, az.topics
or aws.topic
.
🚀 Features
- aws: retry aws connection check when establishing initial connection - #3004
- c8y|cli: tedge cert upload usability improvements - #2961
- configuration: avoid using 444 permissions in example tedge-configuration file - #2948
- configuration: use loopback ip address instead of alias to improve compatibility - #2952
- configuration|troubleshooting: Use workflows for config and log management operations - #2844
- mqtt: Add reconnection backoff to built-in bridge - #2915
- software: add extra context to errors when atomically writing to file - #2975
- software: skip package download if the url is empty - #2905
- troubleshooting: add path and method used to HTTP error messages to improve debugability - #2957
- troubleshooting: skip filtering by date when a static path is used - #2991
- troubleshooting|c8y: upload c8y log file on failure by default - #3009
- troubleshooting|c8y: use direct c8y connection for c8y-remote-access-plugin - #3006
- workflows: workflow support combining fixed strings with variable expansions - #2918
🐛 Bug Fixes
- c8y: Remove unwanted host header before forwarding request to Cumulocity - #2946
- c8y: use MQTT as well as HTTP host to determine possible tenant url - #2977
- childdevices: tedge-agent skip legacy topic subscription when running as a child device - #3035
- childdevices: tedge-agent use the root topic when provided by the cli flag - #3033
- cli:
tedge config get
returns 1 when a key is not set - #2995 - configuration: make tedge-write not reset owner/group - #2974
- configuration: use octal format for file permission in generated example file - #2958
- configuration|c8y: Parse root certificate from either file or directory in tedge cert upload - #2953
- fix: stop OperationHandler spawning extra tasks - #3046
- mqtt: built-in MQTT bridge handling of QoS 0 messages published to the cloud topic - #3028
- mqtt: Handle messages republished by MQTT bridge following a disconnection event - #3018
- mqtt|cli: disconnect cleanly from local MQTT broker in tedge connect - #3025
- mqtt|cli: Ensure the MQTT connection is properly closed - #2936
- mqtt|cli: tedge mqtt ignoring ctrl-c when connection fails - #2950
- packaging: improve compatibility of user/group existence check in package maintainer scripts - #2942
- software: Include software plugin output in workflow log - #2895
- software|mqtt: too many software list requests - #2964
- workflows: command steps are executed twice - #2937
📓 Documentation
- aws: fix link to the example aws policy - #2998
- c8y: add advanced software mgmt descriptions - #2985
- c8y: add instructions for Cumulocity IoT custom domains - #2970
- c8y|aws|az: improve mapper documentation via adding user-context - #3000
- configuration: change config management permissions in the example - #2955
- docs: fix broken links in markdown files - #2962
- docs: Fix outdated Apama plugin documentation - #2996
- docs: update internal release process - #2934
- firmware: improve onboarding instructions - #2971
- mqtt|certificates: add common errors section for update-ca-certificates when rehashing fails - #2992
⛵ Refactor
- c8y: operations module - #3012
- c8y|registration: c8y mapper republishes metadata message with
@id
- #2925 - monitoring: Refactor health status code - #2919
- workflows: rename workflow related structs - #2912
🔎 Testing
- c8y|testing: use more robust http parsing in the c8y-proxy host header tests - #2956
- mqtt|cli|testing: ensure the MQTT connection is properly closed - #2944
- mqtt|testing: built-in bridge system test compatibility - #2911
- mqtt|testing: remove OpenSSL Error check because of flakiness - #2989
- plugins|testing: fix unit test to pass when the unit socket file exists - #3041
- testing: don't remove systemd-tmpfiles-setup service which is responsible for creating tmp folders - #2979
- testing: fix regex escaping in function description - #2930
- testing: improve debugging of bootstrap script and include systemd/cgroup compat check - #2981
- testing: update c8y system test lib to improve retry logging - #2931
- testing: use library keyword to check folder ownership - #2993
- troubleshooting: Repair log file test that is failing when running in collection of tests - #2897
- troubleshooting|testing|workflows: add a custom command based log_upload workflow - #2983
📋 Miscellaneous Tasks
- c8y: Improve c8y_mapper_ext operation handler API - #2997
- c8y: Simplify the operation handling code by replacing fragmented control flow with regular async/await - #2904
- chore: bump MSRV in the workflow to 1.78 - #2965
- chore: bump rust-version in cargo.toml - #2967
- ci: update nightly toolchain for udeps in workflow - #2968
- mqtt: Cleanup unused code and fix doc related to SmartREST 104 - #2913
- mqtt|testing: Fix remaining test failures from built-in bridge - #2879
- testing: Address long running unit tests - #2928
🔎 CI/CD
- ci: add explicit dependency on build job - #2909
- ci: auto generate changelog - #2926
- ci: changelog formatting and classification improvements - #3040
- ci: changelog generation from tags and don't fail on errors - #3044
- ci: update search index by triggering algolia crawler on newly deployed gh_pages - #2927
- ci: validate build jobs - #2910
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.1.1..1.2.0