Releases: astarte-platform/astarte
v1.3.0-rc.0
First Astarte v1.3.0 release candidate.
Changes since 1.2
Added
- [astarte_data_updater_plant] Added separate AMQP triggers producer configuration (falls back to general AMQP producer settings if unset):
DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_HOST- Host for triggers producer connection (no default, falls back to producer host)DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_USERNAME- Username for triggers producer (no default, falls back to producer username)DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_PASSWORD- Password for triggers producer (no default, falls back to producer password)DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_VIRTUAL_HOST- Virtual host for triggers producer (no default, falls back to producer virtual host)DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_PORT- Port for triggers producer (no default, falls back to producer port)DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_SSL_ENABLED- Enable SSL for triggers producer (no default, falls back to producer SSL setting)DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_SSL_CA_FILE- CA certificate file for triggers producer SSL (falls back to producer CA file or bundled cURL certificates)DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_SSL_DISABLE_SNI- Disable Server Name Indication for triggers producer (default: false)DATA_UPDATER_PLANT_AMQP_TRIGGERS_PRODUCER_SSL_CUSTOM_SNI- Custom SNI hostname for triggers producer (falls back to producer host if unset)
- [astarte_housekeeping] support network topology replication strategy for the
astartekeyspace, with the following env vars:HOUSEKEEPING_ASTARTE_KEYSPACE_REPLICATION_STRATEGY- Replication strategy for theastartekeyspace: "SimpleStrategy" or "NetworkTopologyStrategy" (default: "SimpleStrategy")HOUSEKEEPING_ASTARTE_KEYSPACE_REPLICATION_FACTOR- Replication factor when using SimpleStrategy (default: 1)HOUSEKEEPING_ASTARTE_KEYSPACE_NETWORK_REPLICATION_MAP- Datacenter replication map when using NetworkTopologyStrategy (no default, required when using network strategy)
- Added database events handling configuration across all services:
DATABASE_EVENTS_HANDLING_METHOD- Controls how database events are handled: "expose" (via telemetry) or "log" (to logs) (default: "expose")
- [astarte_pairing] Added device registration triggers
- [astarte_realm_management] Added device deletion started and device deletion completed triggers
- Allow devices with empty introspection
- Devices can now declare support for optional Astarte MQTT v1 features to Astarte via capabilities
- Support for
purge_properties_compression_formatcapability. possible values arezlib(default) andplaintext
Changed
- BREAKING: Merged API services into main services, eliminating separate containers:
astarte-housekeeping-apimerged intoastarte-housekeepingastarte-pairing-apimerged intoastarte-pairingastarte-realm-management-apimerged intoastarte-realm-management
- BREAKING: [astarte_housekeeping] Housekeeping now creates an AMQP vhost for each created realm. Some required configuration was introduced:
HOUSEKEEPING_AMQP_HOST- AMQP host for housekeeping operations (required in production, defaults to "localhost" in dev/test)HOUSEKEEPING_AMQP_SSL_ENABLED- Enable SSL for AMQP connections (default: false)HOUSEKEEPING_AMQP_SSL_CA_FILE- CA certificate file for AMQP SSL connections (default: bundled cURL certificate bundle)HOUSEKEEPING_AMQP_SSL_DISABLE_SNI- Disable Server Name Indication (default: false)HOUSEKEEPING_AMQP_SSL_CUSTOM_SNI- Custom SNI hostname (defaults to AMQP host if unset)HOUSEKEEPING_AMQP_USERNAME- AMQP username (default: guest)HOUSEKEEPING_AMQP_PASSWORD- AMQP password (default: guest)HOUSEKEEPING_AMQP_MANAGEMENT_PORT- AMQP management API port (default: 15672)
- BREAKING: [astarte_pairing] AMQP Producer configuration is now mandatory using the
ASTARTE_EVENTS_PRODUCER_AMQP_*environment variables - BREAKING: [astarte_realm_management] AMQP Producer configuration is now mandatory using the
ASTARTE_EVENTS_PRODUCER_AMQP_*environment variables - More accurate health checks for astarte services
Fixed
- [astarte_data_updater_plant] Do not crash when transient triggers are installed on devices with outdated introspection
- [astarte_data_updater_plant] Correctly encode values when sending properties to device on connection
- [astarte_realm_management] Allow to delete long-disconnected devices
v1.2.1-rc.0
First Astarte v1.2.1 release candidate.
Changes since 1.2.1-alpha.0
Added
- New environment variables to control how clustering work, needed on AppEngine and DUP.
CLUSTERING_STRATEGY. Its possible values are:none(default): the service will not look for other nodes/services.docker-compose: this is meant to work in our docker-compose environment and no additional configuration is needed.kubernetes: other nodes/services are found thanks to kubernetes DNS, and the other variables below are relevant.
CLUSTERING_KUBERNETES_NAMESPACE. It states under which namespace the Astarte instance has been deployed. Defaults toastarte.DATA_UPDATER_PLANT_CLUSTERING_KUBERNETES_SELECTOR. The Endpoint label to query to get other data updater plant instances. Defaults toapp=astarte-data-updater-plant.VERNEMQ_CLUSTERING_KUBERNETES_SELECTOR. The Pod label to use to query Kubernetes to find VerneMQ instances. Defaults toapp=astarte-vernemq.VERNEMQ_CLUSTERING_KUBERNETES_SERVICE_NAME. The Service name to use to query Kubernetes to find VerneMQ instances. Defaults toastarte-vernemq.
Changed
- Rework RPC between AppEngine and DUP using Erlang's native clustering and
message-passing instead of AMQP queues:
#1186.
Fix #699. - Rework RPC between AppEngine and VerneMQ using Erlang's native clustering and
message-passing instead of AMQP queues:
#1194. - Rework RPC between DUP and VerneMQ using Erlang's native clustering and
message-passing instead of AMQP queues:
#1197. - Changed the database driver from CQEx (unmantained) to (E)xandra
- [astarte_trigger_engine] avoid exposing unknown_fields in mustache templates
- [astarte_trigger_engine] properly handle incoming introspection events
Fixed
- avoid leaving dangling device deletion entries
- [astarte_appengine_api] fix a crash on invalid object update values
- [astarte_appengine_api] fix a crash with empty result and
disjoint_tablesformat for object aggregates - [astarte_appengine_api] Create needed AMQP exchanges instead of crashing
- [astarte_appengine_api] Handle unset of properties which don't allow being unset
- [astarte_data_updater_plant] fix a crash when performing updates of deleted values
- [astarte_data_updater_plant] Fix a crash while handling device introspection
- [astarte_data_updater_plant] Fix DataUpdater GenServer timeout handling that prevented inactive processes to shut down automatically.
- [astarte_data_updater_plant] Handle unset of properties which don't allow being unset
- [astarte_data_updater_plant] properly discard heartbeat messages when discarding messages
- [astarte_data_updater_plant] Properly reconnect to RabbitMQ in case of disconnection
- [astarte_data_updater_plant] Some queries had the
astarte_instance_idapplied twice - [astarte_realm_management] avoid crashing on interface list
- [astarte_realm_management] avoid crash when deleting devices with invalid introspection
- [astarte_realm_management] ensure devices are cleaned up after being deleted
v1.2.1-alpha.0
First Astarte 1.2.1 alpha release.
Changes since 1.2.0
Changed
- Update the docker-compose configuration to allow both physical and virtual devices
to connect to Astarte, provided that the devices and the host are on the same LAN.
Fixed
- [astarte_appengine_api] Correctly handle Cassandra
varchars. - [astarte_data_updater_plant] Correctly handle Cassandra
varchars. - [astarte_housekeeping] Correctly handle Cassandra
varchars. - [astarte_pairing] Correctly handle Cassandra
varchars. - [astarte_realm_management] Correctly handle Cassandra
varchars. - [astarte_trigger_engine] Correctly handle Cassandra
varchars. - [astarte_pairing] Fix a corner case in the realm public key retrieval
when connection to the database might fail. - [astarte_realm_management] Fix a corner case in the realm public key retrieval
when connection to the database might fail. - [astarte_appengine_api] Fix a corner case in the realm public key retrieval
when connection to the database might fail. - [astarte_data_updater_plant] Do not generate redundant disconnection
triggers in corner cases when a device is already disconnected.
Fix #1014.
v1.2.0 - Salty Grasshopper
Astarte v1.2.0 Salty Grasshopper release.
Changes since 1.1
Added
- [astarte_trigger_engine] Add
trigger_nameto envent payload
and mustache template - Add support for limiting the number of registered devices in a realm.
Existing realms are not affected by this change. - [astarte_realm_management_api] Allow to read realm's device registration limit
using the/config/device_registration_limitendpoint. - [astarte_housekeeping_api] Allow to read and set a realm's device registration
limit using the realm fetch and update API, respectively. - [astarte_appengine_api] Show deletion status in device details.
- [astarte_appengine_api] Add /version endpoint which returns the microservice
application version. - [astarte_appengine_api] Added group name decoder plug
- [astarte_realm_management_api] Add /version endpoint which returns
the microservice application version. - [astarte_pairing_api] Add /version endpoint which returns the microservice
application version. - [astarte_housekeeping_api] Add /version endpoint which returns
the microservice application version. - [astarte_housekeeping_api] Allow to customize the RPC call timeout with
HOUSEKEEPING_API_RPC_TIMEOUT(default: 5 seconds). - Add API usage metrics.
- Add support for setting the maximum datastream storage retention period in a
realm (in seconds). Existing realms are not affected by this change. - [astarte_housekeeping_api] Allow to read and set a realm's maximum datastream
storage retention period using the realm fetch and update API, respectively. - [astarte_realm_management_api] Allow to read realm's maximum datastream
storage retention period with the/config/datastream_maximum_storage_retention
endpoint.
Changed
-
Forward port changes from release 1.1.
-
[astarte_housekeeping_api] Introduce a PATCH-based API for realm update.
The old POST-based one is deprecated. -
[astarte_housekeeping] Support the new PATCH-based API for realm update.
-
Update Elixir to 1.15.7.
-
Update Erlang/OTP to 26.1.
-
Update container base image to Debian
Bookworm. -
Container user has changed from
roottonobody. -
BREAKING: incoming_introspection events display introspection as a map rather
than a plaintext string. Revert to the old behaviour by setting
DATA_UPDATER_PLANT_GENERATE_LEGACY_INCOMING_INTROSPECTION_EVENTStotrue.
See astarte-platform/astarte_core#77. -
BREAKING: [astarte_realm_management] do not allow installation of interfaces
where database_retention_ttl exceeds the realm's maximum datastream storage
retention period, if set.Fixed
-
Forward port changes from release-1.1 (connection failure when delivering triggers is handled as an error).
v1.2.0-rc.0
First Astarte v1.2.0 release candidate.
CHANGELOG
Changes since v1.1:
Added
- [astarte_trigger_engine] Add
trigger_nameto envent payload and mustache template - Add support for limiting the number of registered devices in a realm. Existing realms are not affected by this change.
- [astarte_realm_management_api] Allow to read realm's device registration limit using the
/config/device_registration_limitendpoint. - [astarte_housekeeping_api] Allow to read and set a realm's device registration limit using the realm fetch and update API, respectively.
- [astarte_appengine_api] Show deletion status in device details.
- [astarte_appengine_api] Add /version endpoint which returns the microservice application version.
- [astarte_appengine_api] Added group name decoder plug
- [astarte_realm_management_api] Add /version endpoint which returns the microservice application version.
- [astarte_pairing_api] Add /version endpoint which returns the microservice application version.
- [astarte_housekeeping_api] Add /version endpoint which returns the microservice application version.
- [astarte_housekeeping_api] Allow to customize the RPC call timeout with
HOUSEKEEPING_API_RPC_TIMEOUT(default: 5 seconds). - Add API usage metrics.
- Add support for setting the maximum datastream storage retention period in a realm (in seconds). Existing realms are not affected by this change.
- [astarte_housekeeping_api] Allow to read and set a realm's maximum datastream storage retention period using the realm fetch and update API, respectively.
- [astarte_realm_management_api] Allow to read realm's maximum datastream storage retention period with the
/config/datastream_maximum_storage_retentionendpoint.
Changed
- Forward port changes from release 1.1.
- [astarte_housekeeping_api] Introduce a PATCH-based API for realm update. The old POST-based one is deprecated.
- [astarte_housekeeping] Support the new PATCH-based API for realm update.
- Update Elixir to 1.15.7.
- Update Erlang/OTP to 26.1.
- Update container base image to Debian
Bookworm. - Container user has changed from
roottonobody. - BREAKING: incoming_introspection events display introspection as a map rather than a plaintext string. Revert to the old behaviour by setting
DATA_UPDATER_PLANT_GENERATE_LEGACY_INCOMING_INTROSPECTION_EVENTStotrue. See astarte-platform/astarte_core#77. - BREAKING: [astarte_realm_management] do not allow installation of interfaces where database_retention_ttl exceeds the realm's maximum datastream storage retention period, if set.
v1.0.6
Sixth Astarte 1.0 maintenance release.
CHANGELOG
Changes since v1.0.5:
Fixed
- [astarte_appengine_api] Allow to send binaryblobarrays over server owned interfaces.
- [astarte_appengine_api] Doubles and DoubleArrays without decimal part are no longer saved as
integer, but a trailing zero is added. - [astarte_data_updater_plant] Do not crash when receiving a malformed purge properties message.
- [astarte_pairing_api] Gracefully handle HTTP requests with malformed payload.
- [astarte_housekeeping_api] Gracefully handle HTTP requests with malformed payload.
- [astarte_realm_management_api] Gracefully handle HTTP requests with malformed payload.
- [astarte_appengine_api] Expose exchanged_bytes metrics as
sum(instead ofcounter). - [astarte_pairing] Do not reset total sent messages/bytes when re-registering a device.
Fix #776.
v1.1.1
First Astarte 1.1 maintenance release.
CHANGELOG
Changes since v1.1.0:
Fixed
- [astarte_data_updater_plant] Don't crash when retrieving the interface version
in a device whose introspection is empty, allowing data inastarte-data_
AMQP queues to flow seamlessy. - [astarte_appengine_api] Don't crash when retrieving the interface version
in a device whose introspection is empty. - [astarte_appengine_api] Return the number of results specified by
downsample_to
when there are more samples than the default query limit.
Fix #824. - [astarte_appengine_api] Return the number of results specified by
downsample_to
when used in combination withformat=disjoint_tables.
Fix #149. - [astarte-realm_management] Do not crash when some synchronous operations
(e.g. interface install) succeed. - [astarte_data_updater_plant] Don't crash when handling incoming
binaryblobvalues
(see astarte-platform/astarte_core#95). - Forward-port changes from release-1.0 (correctly handle server-owned data,
bugfixes in AppEngine, Data Updater Plant and Pairing).
Changed
- [astarte_e2e] Update Elixir to 1.14.5 and Erlang/OTP to 25.3.2 (see #858).
v1.0.5
Fifth Astarte 1.0 maintenance release.
CHANGELOG
Changes since v1.0.4:
Fixed
- [astarte_appengine_api] Correctly handle
binaryblobanddatetimein server-owned object
aggregated interfaces. - [astarte_appengine_api] Handle non-array values POSTed to an array endpoint gracefully instead of
crashing with an Internal Server Error - [astarte_appengine_api] Handle updates of objects with invalid keys gracefully instead of crashing
with an Internal Server Error. - [astarte_appengine_api] Return the number of results specified by
downsample_to
when there are more samples than the default query limit.
Fix #824. - [astarte_appengine_api] Return the number of results specified by
downsample_to
when used in combination withformat=disjoint_tables.
Fix #149. - [astarte_appengine_api] Fix log noise with cassandra during health checks.
Fix #817. - [astarte_pairing] Fix crash when using a custom CA certificate.
- [astarte_data_updater_plant] Remove asynchronous startup of Data Updater, which could lead to Data
Updater stalling in some corner cases.
Changed
- [doc] Update the documentation structure. Pages dealing with administrative tasks involving the
Astarte Operator and Kubernetes are moved to the astarte-kubernetes-operator repository.
v1.1.0
Astarte v1.1.0 release.
Changes Since v1.0
Added
- [astarte_data_updater_plant] Add support for device introspection triggers.
- [astarte_realm_management] Add support for device introspection triggers.
- [astarte_realm_management_api] Add support for device introspection triggers.
- [astarte_realm_management] Add support for delivery policies for HTTP triggers.
- [astarte_realm_management_api] Add support for delivery policies for HTTP triggers.
- [astarte_data_updater_plant] Add a HTTP trigger routing mechanism based on trigger policies.
- [astarte_trigger_engine] Add a customizable HTTP trigger redelivery mechanism via trigger policies (see #554).
Changed
- Update Elixir to 1.14.5 and Erlang/OTP to 25.3.2.
- [astarte_data_updater_plant] Use the
internalevent type for Astarte internal messages. (e.g. device heartbeat).
Fixed
- [astarte_trigger_engine] Allow to decode events that do not contain the deprecated
versionfield. - [astarte_realm_management_api] Provide detailed feedback when a trigger action is malformed. Fix #748.
- [astarte_realm_management_api] Include the
policyfield when a trigger is returned. - [astarte_appengine_api] Return empty data instead of error when querying
propertiesinterfaces which are not fully populated. Fix 531.
v1.1.0-rc.0
First Astarte v1.1.0 release candidate.
CHANGELOG
Changed
- Update Elixir to 1.14.5 and Erlang/OTP to 25.3.2.
- [astarte_data_updater_plant] Use the
internalevent type for Astarte internal messages. (e.g. device heartbeat).
Fixed
- [astarte_realm_management_api] Provide detailed feedback when a trigger action is malformed. Fix #748.
- [astarte_realm_management_api] Include the
policyfield when a trigger is returned.