Skip to content

Releases: astarte-platform/astarte

v1.3.0-rc.0

21 Nov 14:58
v1.3.0-rc.0
8573895

Choose a tag to compare

v1.3.0-rc.0 Pre-release
Pre-release

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 astarte keyspace, with the following env vars:
    • HOUSEKEEPING_ASTARTE_KEYSPACE_REPLICATION_STRATEGY - Replication strategy for the astarte keyspace: "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_format capability. possible values are zlib (default) and plaintext

Changed

  • BREAKING: Merged API services into main services, eliminating separate containers:
    • astarte-housekeeping-api merged into astarte-housekeeping
    • astarte-pairing-api merged into astarte-pairing
    • astarte-realm-management-api merged into astarte-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

27 Aug 07:03
3317e9c

Choose a tag to compare

v1.2.1-rc.0 Pre-release
Pre-release

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 to astarte.
    • DATA_UPDATER_PLANT_CLUSTERING_KUBERNETES_SELECTOR. The Endpoint label to query to get other data updater plant instances. Defaults to app=astarte-data-updater-plant.
    • VERNEMQ_CLUSTERING_KUBERNETES_SELECTOR. The Pod label to use to query Kubernetes to find VerneMQ instances. Defaults to app=astarte-vernemq.
    • VERNEMQ_CLUSTERING_KUBERNETES_SERVICE_NAME. The Service name to use to query Kubernetes to find VerneMQ instances. Defaults to astarte-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_tables format 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_id applied 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

10 Apr 15:31
v1.2.1-alpha.0
b065a81

Choose a tag to compare

v1.2.1-alpha.0 Pre-release
Pre-release

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

02 Jul 14:09
v1.2.0
7b7041b

Choose a tag to compare

Astarte v1.2.0 Salty Grasshopper release.

Changes since 1.1

Added

  • [astarte_trigger_engine] Add trigger_name to 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_limit endpoint.
  • [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 root to nobody.

  • 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_EVENTS to true.
    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

11 Jun 13:02
v1.2.0-rc.0
35c877e

Choose a tag to compare

v1.2.0-rc.0 Pre-release
Pre-release

First Astarte v1.2.0 release candidate.

CHANGELOG

Changes since v1.1:

Added

  • [astarte_trigger_engine] Add trigger_name to 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_limit endpoint.
  • [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 root to nobody.
  • 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_EVENTS to true. 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

23 Apr 21:15
v1.0.6
92dd0fc

Choose a tag to compare

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 of counter).
  • [astarte_pairing] Do not reset total sent messages/bytes when re-registering a device.
    Fix #776.

v1.1.1

15 Nov 15:29
v1.1.1
eaac25f

Choose a tag to compare

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 in astarte-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 with format=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 binaryblob values
    (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

26 Sep 10:27
v1.0.5
1e3e6fe

Choose a tag to compare

Fifth Astarte 1.0 maintenance release.

CHANGELOG

Changes since v1.0.4:

Fixed

  • [astarte_appengine_api] Correctly handle binaryblob and datetime in 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 with format=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

20 Jun 18:59
v1.1.0
e0fd426

Choose a tag to compare

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 internal event type for Astarte internal messages. (e.g. device heartbeat).

Fixed

  • [astarte_trigger_engine] Allow to decode events that do not contain the deprecated version field.
  • [astarte_realm_management_api] Provide detailed feedback when a trigger action is malformed. Fix #748.
  • [astarte_realm_management_api] Include the policy field when a trigger is returned.
  • [astarte_appengine_api] Return empty data instead of error when querying properties interfaces which are not fully populated. Fix 531.

v1.1.0-rc.0

09 Jun 15:49
v1.1.0-rc.0
84eadf5

Choose a tag to compare

v1.1.0-rc.0 Pre-release
Pre-release

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 internal event 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 policy field when a trigger is returned.