Astarte Versions Save

Core Astarte Repository

v1.0.0

2 years ago

Astarte v1.0.0 release.

CHANGELOG

Added

  • Add support for volatile triggers on interfaces with object aggregation.

Changed

  • Document future removal of Astarte Operator's support for Cassandra.
  • Log application version when starting.

Fixed

  • [astarte_appengine_api] Fix the support for null values in interfaces, the fix contained in 1.0.0-rc.0 was incomplete.

Other Changes Since v0.11

Added

  • [astarte_appengine_api] Add /v1/<realm>/version endpoint, returning the API application version.
  • [astarte_realm_management_api] Add /v1/<realm>/version endpoint, returning the API application version.
  • [astarte_pairing_api] Add /v1/<realm>/version endpoint, returning the API application version.
  • [astarte_housekeeping_api] Add /v1/version endpoint, returning the API application version.
  • [astarte_housekeeping] Allow deleting a realm. The feature can be enabled with an environment variable (defaults to disabled).
  • [astarte_data_updater_plant] Declare custom exchanges when an AMQP trigger is loaded.
  • [appengine_api] Add metadata to device
  • [trigger_engine] Allow configuring preferred http method (such as PUT or GET) (see #128).
  • [trigger_egnine] Add optional support to custom http headers, such as Authorization: Bearer ... (see #129).
  • [data_updater_plant] Handle device hearbeat sent by VerneMQ plugin.
  • [data_updater_plant] Deactivate Data Updaters when they don't receive messages for some time, freeing up resources.
  • [appengine_api] Support SSL connections to RabbitMQ.
  • [data_updater_plant] Support SSL connections to RabbitMQ.
  • [trigger_engine] Support SSL connections to RabbitMQ.
  • Default max certificate chain length to 10.
  • AMQP trigger actions (publish to custom exchanges) as an alternative to http triggers actions.
  • Ensure data pushed towards the device is correctly delivered when using QoS > 0.
  • [realm_management_api] Allow installing device-specific and group-specific triggers. To do so, pass the device_id or group_name key inside the simple_trigger.
  • [data_updater_plant] Add support for device-specific and group-specific triggers.
  • Add support for device error triggers.

Changed

  • [astarte_realm_management] Make amqp_routing_key mandatory in AMQP actions.
  • Update documentation for backing up and restoring Astarte.
  • Update documentation for Operator's uninstall procedure.
  • [astarte_e2e] Client disconnections are responsible for triggering a mail alert.
  • Run tests against RabbitMQ 3.8.14 and ScyllaDB 4.4-rc.4 / Cassandra 3.11.10.
  • Update dependencies to latest available versions (see mix.lock files).
  • Update Elixir to 1.11.4 and OTP to 23.2.
  • Rename device metadata to attributes. This requires a manual intervention on the database, see the Schema Changes documentation for additional information.
  • [astarte_housekeeping_api] Remove format check on Cassandra datacenter name when a realm is created, the datacenter is just verified against the one present in the database.
  • [housekeeping] Increase the delay between connection attempts to 1000 ms, for an overall number of 60 attempts.
  • [data_updater_plant] Default the total queue count to 128, de facto exploiting multiqueue support.
  • [data_updater_plant] Default the queue range end to 127.
  • Update Phoenix to version 1.5.
  • Rework metrics to reduce the clutter while monitoring astarte services.
  • [realm_management] Allow updating doc, description and explicit_timestamp within mappings when bumping an interface minor.
  • Remove postgresql dependency in docker-compose, make CFSSL stateless.
  • Update Operator's documentation for install/upgrade/uninstall procedures.
  • [appengine_api] Always return an object when GETting on object aggregated interfaces.
  • Replace Conform and Distillery with Elixir native releases.
  • Remove the ASTARTE_ prefix from all env variables.
  • [realm_management_api] Triggers http actions are now validated.
  • [realm_management_api] It is now possible to omit the device_id in a device_trigger. This is equivalent to passing * as device_id. The old behaviour is still supported.

Fixed

  • [astarte_appengine_api] Don't crash when an interface contains null values, just show them as null in the resulting JSON.
  • [astarte_realm_management] Fix log noise due to Cassandra warnings when checking health (see #420).
  • [astarte_e2e] Fix alerting mechanism preventing "unknown" failures to be raised or linked.
  • [astarte_appengine_api] Allow retrieving data from interfaces with parametric endpoint and object aggregation (see #480).
  • [astarte_appengine_api] Encode binaryblob values with Base64 even if they are contained in an aggregate value.
  • [astarte_trigger_engine] Encode binaryblob values with Base64 even if they are contained in an aggregate value.
  • [astarte_appengine_api] Fix regression that made it impossible to use Astarte Channels.
  • [astarte_appengine_api] Fix bug that prevented data publishing in object aggregated interfaces.
  • [astarte_appengine_api] Fix regression that prevented properties to be set before the first connection of a device.
  • [astarte_realm_management] Fix a bug that prevented AMQP triggers to be correctly installed.
  • [astarte_data_updater_plant] Mark device as offline and send device_disconnected event when forcing a device disconnection.
  • [astarte_data_updater_plant] Fix bug that blocked queues when trying to disconnect an already disconnected device.
  • Make sure devices are eventually marked as disconnected even if they disconnect while VerneMQ is temporarily down (see #305).

Removed

  • [appengine_api] Remove deprecated not versioned socket route.

v1.0.0-rc.0

3 years ago

First Astarte v1.0.0 release candidate.

CHANGELOG

Added

  • [astarte_appengine_api] Add /v1/<realm>/version endpoint, returning the API application version.
  • [astarte_realm_management_api] Add /v1/<realm>/version endpoint, returning the API application version.
  • [astarte_pairing_api] Add /v1/<realm>/version endpoint, returning the API application version.
  • [astarte_housekeeping_api] Add /v1/version endpoint, returning the API application version.

Changed

  • [astarte_realm_management] Make amqp_routing_key mandatory in AMQP actions.
  • Update documentation for backing up and restoring Astarte.
  • Update documentation for Operator's uninstall procedure.

Fixed

  • [astarte_appengine_api] Don't crash when an interface contains null values, just show them as null in the resulting JSON.
  • [astarte_realm_management] Fix log noise due to Cassandra warnings when checking health (see #420).

v1.0.0-beta.2

3 years ago

Second Astarte v1.0.0 beta.

CHANGELOG

Fixed

  • [astarte_e2e] Fix alerting mechanism preventing "unknown" failures to be raised or linked.
  • [astarte_appengine_api] Allow retrieving data from interfaces with parametric endpoint and object aggregation (see #480).
  • [astarte_appengine_api] Encode binaryblob values with Base64 even if they are contained in an aggregate value.
  • [astarte_trigger_engine] Encode binaryblob values with Base64 even if they are contained in an aggregate value.

Changed

  • [astarte_e2e] Client disconnections are responsible for triggering a mail alert.
  • Run tests against RabbitMQ 3.8.14 and ScyllaDB 4.4-rc.4 / Cassandra 3.11.10.
  • Update dependencies to latest available versions (see mix.lock files).
  • Update Elixir to 1.11.4 and OTP to 23.2.
  • Rename device metadata to attributes. This requires a manual intervention on the database, see the Schema Changes documentation for additional information.

v1.0.0-beta.1

3 years ago

First Astarte v1.0.0 beta.

CHANGELOG

Fixed

  • [astarte_appengine_api] Fix regression that made it impossible to use Astarte Channels.
  • [astarte_appengine_api] Fix bug that prevented data publishing in object aggregated interfaces.
  • [astarte_appengine_api] Fix regression that prevented properties to be set before the first connection of a device.
  • [astarte_realm_management] Fix a bug that prevented AMQP triggers to be correctly installed.
  • [astarte_data_updater_plant] Mark device as offline and send device_disconnected event when forcing a device disconnection.
  • [astarte_data_updater_plant] Fix bug that blocked queues when trying to disconnect an already disconnected device.

Added

  • [astarte_housekeeping] Allow deleting a realm. The feature can be enabled with an environment variable (defaults to disabled).
  • [astarte_data_updater_plant] Declare custom exchanges when an AMQP trigger is loaded.

Changed

  • [astarte_housekeeping_api] Remove format check on Cassandra datacenter name when a realm is created, the datacenter is just verified against the one present in the database.
  • [housekeeping] Increase the delay between connection attempts to 1000 ms, for an overall number of 60 attempts.
  • [data_updater_plant] Default the total queue count to 128, de facto exploiting multiqueue support.
  • [data_updater_plant] Default the queue range end to 127.
  • Update Phoenix to version 1.5.
  • Rework metrics to reduce the clutter while monitoring astarte services.
  • [realm_management] Allow updating doc, description and explicit_timestamp within mappings when bumping an interface minor.
  • Remove postgresql dependency in docker-compose, make CFSSL stateless.
  • Update Operator's documentation for install/upgrade/uninstall procedures.

v0.11.4

3 years ago

Astarte v0.11.4 release.

CHANGELOG

Fixed

  • Avoid creating an housekeeping_public.pem directory if docker-compose up doesn't find the housekeeping keypair.
  • [trigger_engine] Correctly handle triggers on binaryblob interfaces, serializing value with base64 like appengine does.
  • [data_updater_plant] Consider database_retention_ttl when inserting data on device owned aggregate interfaces.
  • [realm_management] Do not allow value_change, value_change_applied and path_removed triggers on datastreams.
  • [realm_management] Do not allow /* as match path when using value_change and value_change_applied. (workaround to https://github.com/astarte-platform/astarte/issues/513).
  • [trigger_engine] Update certifi to 2.5.3 (includes 2020-11-13 mkcert.org full CA bundle).

v0.11.3

3 years ago

Astarte v0.11.3 release.

v0.11.2

3 years ago

Astarte v0.11.2 release.

CHANGELOG

Added

  • [trigger_engine] Add ignore_ssl_errors key in trigger actions, allowing to ignore SSL actions when delivering an HTTP trigger action.
  • [trigger_engine] Update certifi to 2.5.2
  • Update Elixir to 1.8.2

Changed

  • [appengine_api] Remove topic from channel metrics.

v1.0.0-alpha.1

3 years ago

First Astarte 1.0.0 alpha release

CHANGELOG

Fixed

  • Make sure devices are eventually marked as disconnected even if they disconnect while VerneMQ is temporarily down (see #305).

Changed

  • [appengine_api] Always return an object when GETting on object aggregated interfaces.
  • Replace Conform and Distillery with Elixir native releases.
  • Remove the ASTARTE_ prefix from all env variables.
  • [realm_management_api] Triggers http actions are now validated.
  • [realm_management_api] It is now possible to omit the device_id in a device_trigger. This is equivalent to passing * as device_id. The old behaviour is still supported.

Added

  • [appengine_api] Add metadata to device
  • [trigger_engine] Allow configuring preferred http method (such as PUT or GET) (see #128).
  • [trigger_egnine] Add optional support to custom http headers, such as Authorization: Bearer ... (see #129).
  • [data_updater_plant] Handle device hearbeat sent by VerneMQ plugin.
  • [data_updater_plant] Deactivate Data Updaters when they don't receive messages for some time, freeing up resources.
  • [appengine_api] Support SSL connections to RabbitMQ.
  • [data_updater_plant] Support SSL connections to RabbitMQ.
  • [trigger_engine] Support SSL connections to RabbitMQ.
  • Default max certificate chain length to 10.
  • AMQP trigger actions (publish to custom exchanges) as an alternative to http triggers actions.
  • Ensure data pushed towards the device is correctly delivered when using QoS > 0.
  • [realm_management_api] Allow installing device-specific and group-specific triggers. To do so, pass the device_id or group_name key inside the simple_trigger.
  • [data_updater_plant] Add support for device-specific and group-specific triggers.
  • Add support for device error triggers.

v0.11.1

4 years ago

Astarte v0.11.1 release.

CHANGELOG

Added

  • [data_updater_plant] Add DATA_UPDATER_PLANT_AMQP_DATA_QUEUE_TOTAL_COUNT environment variable, this must be equal to the total number of queues in the Astarte instance.
  • [trigger_engine] Add TRIGGER_ENGINE_AMQP_PREFETCH_COUNT environment variable to set the prefetech count of AMQPEventsConsumer, avoiding excessive memory usage.

Fixed

  • Wait for schema_version agreement before applying any schema change (such as creating tables or a new realm). (see #312).
  • [appengine_api] Fix the metric counting discarded channel events, it was not correctly increased.
  • [data_update_plant] Validate UTF8 strings coming from the broker (i.e. interface and path) to avoid passing invalid strings to the database.
  • [data_updater_plant] Fix a bug that was sometimes stalling a data updater queue process (see #375.

v0.11.0

4 years ago

Astarte v0.11.0 release.

CHANGELOG

Fixed

  • [appengine_api] Handle server owned datetime values correctly
  • [housekeeping] Fix a bug preventing the public key of newly created realms to be correctly inserted to the realm (see #294).
  • [data_updater_plant] Fix a bug that was preventing volatile triggers (specifically, the ones targeting the * interface) to be loaded immediately.

Changes since v0.10

Added

  • [pairing_api] Add health endpoint.
  • [realm_management_api] Add health endpoint.
  • [housekeeping] Add Prometheus instrumenters and exporters.
  • [trigger_engine] Add health endpoint.
  • [housekeeping] Add health endpoint.
  • [realm_management] Add health endpoint.
  • [pairing] Add health endpoint.
  • [data_updater_plant] Add health endpoint.
  • [data_updater_plant] Export specific metrics with telemetry.
  • [trigger_engine] Export specific metrics with telemetry.
  • [appengine_api] Export specific metrics with telemetry.
  • [pairing] Add Prometheus instrumenters and exporters.
  • [realm_management] Add Prometheus instrumenters and exporters.
  • [housekeeping_api] Add pretty_log.
  • [trigger_engine] Add pretty_log.
  • [pairing] Add pretty_log.
  • [pairing_api] Add Prometheus instrumenters and exporters
  • [realm_management_api] Add Prometheus instrumenters and exporters
  • [housekeeping_api] Add Prometheus instrumenters and exporters
  • Add standard interfaces for generic sensors.
  • [trigger_engine] Add Prometheus instrumenters and exporters
  • [pairing] Expose registration count and get_credentials count metrics.
  • Add astarte_import tool, which allows users to import devices and data using XML files.
  • [appegnine_api] Add new /v1/socket route for Astarte Channels. The /socket route is deprecated and will be removed in a future release.
  • [appengine_api] Add groups support, allowing to group devices and access them inside a group hierarchy.
  • [appengine_api] Add Prometheus metrics.
  • [appengine_api] Show interface stats (exchanged messages and bytes) in device introspection.
  • [appengine_api] Add previous_interfaces field to device details.
  • [appengine_api] Allow installing group triggers in Astarte Channels.
  • [data_updater_plant] Add support to multiple queues with consistent hashing
  • [data_updater_plant] Save exchanged bytes and messages for all interfaces.
  • [housekeeping] Add groups related columns and tables (schema has been changed).
  • [housekeeping] Add interface stats related columns (schema has been changed).
  • [housekeeping] Add database retention ttl and policy related columns (schema has been changed).
  • Allow specifying initial introspection when registering a device.
  • [realm_management] Trigger validation, checks that the interface is existing and performs validation on object aggregation triggers.

Changed

  • [realm_management] Correctly handle parametric endpoints regardless of the ordering, so that overlapping endpoints are always refused.
  • [all] Make Elixir logger handle OTP requests: print stack traces only when needed.
  • [appengine_api] Handle aggregated server owned interfaces.
  • [appengine-api] Handle TTL for server owned interfaces.
  • [realm_management] Handle hyphens in interface_name. (#96)
  • [realm_management] Restrict the use of * as interface_name only to incoming_data data triggers.
  • Use separate docker images with docker-compose
  • Use Scylla instead of Cassandra with docker-compose
  • Authorization regular expressions must not have delimiters: they are implicit.
  • [appengine_api] Change logs format to logfmt.
  • [data_updater_plant] Changed logs format to logfmt.
  • [realm_management] Changed logs format to logfmt.
  • [realm_management_api] Changed logs format to logfmt.
  • [housekeeping] Change database driver, start using Xandra.
  • [housekeeping_api] Move health check API from /v1/health to /health to be consistent with all Astarte components.

Fixed

  • [appengine_api] Handle server owned datetime values correctly
  • [housekeeping] Fix a bug preventing the public key of newly created realms to be correctly inserted to the realm (see #294).
  • [data_updater_plant] Fix a bug that was preventing volatile triggers (specifically, the ones targeting the * interface) to be loaded immediately.
  • [data_updater_plant] Discard unexpected object aggregated values on individual interfaces.
  • [trigger_engine] 500 was not included in the range of HTTP server errors, causing a crash.
  • [data_updater_plant] Load incoming_data triggers targeting any_interface. (#139)
  • [housekeeping] Remove extra column in realm migration, preventing the correct upgrade to 0.11.
  • [appengine_api] Fix crash that was happening when Channels received an event with an empty BSON as value (e.g. an IncomingDataEvent generated by an unset property).