Skip to content

Latest commit

Β 

History

History
607 lines (535 loc) Β· 47 KB

CHANGELOG.md

File metadata and controls

607 lines (535 loc) Β· 47 KB

EdgeX Device SDK Go

Github repository

Change Logs for EdgeX Dependencies

[v3.1.0] Napa - 2023-11-15 (Only compatible with the 3.x releases)

✨ Features

πŸ“– Documentation

πŸ‘· Build

πŸ€– Continuous Integration

πŸ§ͺ Testing

[v3.0.0] Minnesota - 2023-05-31 (Only compatible with the 3.x releases)

Features ✨

  • Add Start method to the ProtocolDriver interface (#453fffe)
    BREAKING CHANGE: Added required `Start` method to the ProtocolDriver interface. 
                     This method is called after the sdk has been completely initialized.
                     This is where device service should implement post initialization code. 
    
  • Add PatchDevice and DeviceExistsForName and refactor UpdateDeviceOperatingState(#)
    BREAKING CHANGE: SetDeviceOperatingState has been removed, and UpdateDeviceOperatingState has been modified to accept a models.OperatingState value.
    
  • Using url.PathUnescape for decoding API path (#cdd8b0f)
    BREAKING CHANGE: Use PathUnescape for decoding API path to consist with the change from MQTT topic, the MQTT topic path will encode with url.PathEscape.
    
  • All ProtocolDriver interface API implementations required (#d73da92)
BREAKING CHANGE: Move Discover(), ValidateDevice() to the ProtocolDriver interface to that they are required like the existing interfaces. 
                 This forces at a minimum an empty implementation which gives exposure to the developer that they exist.
                 Use interfaces.ProtocolDriver instead of any as parameter
  • Apply provision watcher model changes (#24d4a99)
    BREAKING CHANGE: Apply provision watcher model changes and skip the locked provision watcher.
    
  • Change configuration file format to YAML (#c61610b)
    BREAKING CHANGE: Configuration files are now in YAML format, Default file name is now configuration.yaml
    
  • Change device definition file to YAML format (#9bade9f)
    BREAKING CHANGE: Stop supporting TOML format and support YAML format for Device definition files
    
  • Apply JWT authentication to incoming calls (#774c203)
    BREAKING CHANGE: In secure mode, incoming REST API calls must have a JWT authentication token, with the exception of /api/v2/ping.
    
  • Remove LastConnected, LastReported and UpdateLastConnected configs (#7414f7f)
    BREAKING CHANGE: Remove LastConnected, LastReported and UpdateLastConnected configs
    
  • Consume contracts mod to update /secret DTO (#76cf874)
    BREAKING CHANGE: secret DTO object in core contracts uses SecretName instead of Path
    
  • Updates for common config (#9f4fc55)
    BREAKING CHANGE: Common config settings removed from configuration file 
    
  • Add additional service-name level in event publish topic (#15fb7a8)
    BREAKING CHANGE: event publish topic now <prefix>/<service-name>/<profile-name>/<device-name>/<source-name>
    
  • Replace REST device validation callback with MessageBus (#b7afc2a)
    BREAKING CHANGE: /validate/device REST endpoint removed
    
  • Replace REST device service callback with System Event (#e412a44)
    BREAKING CHANGE: /callback/service REST endpoint removed
    
  • Replace REST provision watcher callbacks with System Events(#8ea8883)
    BREAKING CHANGE: /callback/watcher and /callback/watcher/name/{name} REST endpoints have been removed
    
  • Replace REST device profile callback with System Events (#09198ff)
    BREAKING CHANGE: PUT /callback/profile REST endpoint has been removed
    
  • Remove UseMessageBus config (#482e5b9)
    BREAKING CHANGE: Removed the 'Device.UseMessageBus' config, the code for sending event via core-data REST client and the 'Clients.core-data' dependency
    
  • Remove old metrics collection and REST/metrics endpoint (#89d807d)
    BREAKING CHANGE: /metrics endpoint no longer available for any service
    
  • Replace REST device callbacks with System Events (#3f884e)
    BREAKING CHANGE: The following device callback REST endpoints are removed:
                       - POST /callback/device
                       - PUT /callback/device
                       - DELETE /callback/device/name/{name}
    
  • Remove ZeroMQ MessageBus capability (#f8460cf)
    BREAKING CHANGE: ZeroMQ MessageBus capability no longer available
    
  • Device ProtocolProperties have typed values (#1365) (#a6f9b45)
  • Enhance autodiscovery to better support multiple instances of same device service (#1444) (#d75af8d)
  • Consume new -d/--dev Dev Mode command-line flag (#d0b4661)
  • Consume SecretProvider breaking changes (#656a0e7)
  • Allow regex GET command returns partial result (#6d81477)
  • Enable regex for executing GET command (#efda1a8)
  • Support YAML format for ProvisionWatcher definition file (#a4f7691)
  • Publish event with updated value for PUT command (#420f04f)
  • Consume watch for common Writable config changes (#1372) (#84b3eaa)
  • Accept URL escape for device command name and resource name (#7be4a1d)
  • Add resource, command, and device tags to reading/event (#1297) (#93a0268)
  • Implement support for ProvisionWatchersDir (#1f95b19)

Bug Fixes πŸ›

  • Add UpdateDevice callback for device profile update (#d4adbed)
  • Fix typo "DeviceResourece" -> "DeviceResource" in error log message (#278dac4)

Code Refactoring β™»

  • Modify the numeric data type in Value Properties to pointer (#d2a234e)
    BREAKING CHANGE:
       - update mask,shift,base,scale,offset to pointer
       - update maximum and minimum data type from string to float64 pointer
    
  • Update data types in ResourceProperties (#c3c5272)
    BREAKING CHANGE: support mask,shift,base,scale,offset in numeric data type
    
  • Remove global variable 'ds' in service package (#e5f9ace)
    BREAKING CHANGE:
       - update ProtocolDriver Initialize method signature to pass
         DeviceServiceSDK interface as parameter
       - update DeviceServiceSDK interface:
         - update Getter method name to be more idiomatic
         - remove Stop() method as it should only be called by SDK
         - add AsyncValuesChannel and DiscoveredDeviceChannel getter method
         - rename AsyncReadings to AsyncReadingsEnabled
         - rename DeviceDiscovery to DeviceDiscoveryEnabled
    
       The DeviceServiceSDK interface is passed to ProtocolDriver as the
       only parameter in Initialize method so that developer can still access,
       mock and test with it.
    
  • Replace internal topics from config with new constants (#cf150bd)
    BREAKING CHANGE: Internal topics no longer configurable, except the base topic.
    
  • Rework Command via MessageBus for new Request API response topic (#d7de237c)
    BREAKING CHANGE: Command via MessageBus Topic configurations have changed (Note: later commit removes topic configuration)
    
  • Update config for message bus topic wild cards (#73fb48f)
    BREAKING CHANGE: use MQTT wild cards + for single level and # for multiple levels
    
  • Use bool types for command parameters to be more consistent (#89b19b1)
    BREAKING CHANGE: ds-pushevent and ds-returnevent to use bool true/false instead of yes/no
    
  • Update config for removal of SecretStore from services' configuration file (#11af1f)
    BREAKING CHANGE: SecretStore config no longer in service configuration file. 
                     Changes must be done via use of environment variable overrides of default values.
    
  • Rework code for refactored MessageBus Configuration (#ebb4d57)
    BREAKING CHANGE: MessageQueue renamed to MessageBus and fields changed. See v3 Migration guide.
    
  • Rename command line flags for the sake of consistency (#4aa2fa)
    BREAKING CHANGE: renamed -c/--confdir to -cd/--configDirand -f/--file to -cf/--configFile
    
  • Update module to v3 (#97d52b)
    BREAKING CHANGE: Import paths will need to change to v3
    
  • Consume ProvisionWatcher DTO change for ServiceName (#1453) (#3563ea3)
  • Tweaks to private config in Device Simple (#4b8be51)

Documentation πŸ“–

  • Update swagger to match latest changes in go-mod-core-contracts Device dto (#05593f9)
  • Update swagger to match latest changes in go-mod-contracts dtos common SecretRequest (#53645a9)
  • Replace V2 swagger file to V3 for 3.0.0 (#05376da)

Build πŸ‘·

  • Update to Go 1.20, Alpine 3.17 and linter v1.51.2 (#1383) (#a467ed6)
  • Update to latest module w/o TOML package (#bf4714d)

[v2.3.1] Levski - 2023-03-17 (Only compatible with the 2.x releases)

Bug Fixes πŸ›

  • Fix device sdk cache inconsistency by registering device service prior to driver initialization (#4d4ffc7)

[v2.3.0] Levski - 2022-11-09 (Only compatible with the 2.x releases)

Features ✨

  • Add metrics for count of Events and Readings sent (#1239) (#5df0661)
  • Enable service metrics (#94ac6d2)
  • Update device-simple CommandRequestTopic config (#03803f9)
  • Subscribe command request via internal messaging (#aed16fd)
  • Add interface for accessing the Device Service SDK (#16c2613)

Bug Fixes πŸ›

  • Publish envelope with empty payload when ds-returnevent=no (#6995182)
  • Fix empty device name when updating device's serviceName (#ff1b5b0)
  • Remove redundant logic of caching profile (#e9867ce)
  • Put cmd return 400 when updating empty string to NonString type (#a1088c2)
  • ProvisionWatcher callbacks return BaseResponse, not 204 No Content. (#3d985db)

Code Refactoring β™»

  • Use bootstrap handlers in go-mod-bootstrap and refactor device command application layer code (#1210) (#e5efdee)
  • Update to use deepCopy of messageBusInfo to avoid external adds (#adba0c6)

Documentation πŸ“–

Build πŸ‘·

  • Upgrade to Go 1.18 and alpine 3.16 (#91816c1)

[v2.2.0] Kamakura - 2022-5-11 (Only compatible with the 2.x releases)

Features ✨

  • Add MaxEventSize to limit event size (#ae5b097)
  • Implement ReadingUnits configuration for device profile changes (#daeaa2d)
  • Enable security hardening (#da52579)
  • Version bump to roll-in delayed service start feature (#7a7b6d1)
  • Implement ProtocolProperties validation mechanism (#07054d1)
  • Location of client service obtained from the registry (#936332d)
  • webserver: Include ServiceName in Common Responses (#402f152)

Bug Fixes πŸ›

  • Add missing Configuration interface method GetTelemetryInfo (#f9d12fc)
  • Update TestMetricsRequest to not fail when using -race (#aa2b65f)
  • Update validation API 200 response (#7c8475a)
  • configuration: add handling for custom config on /config endpoint (#4aeb844)

Code Refactoring β™»

  • Use go-mod-bootstrap RequestLimitMiddleware for MaxRequestSize (#b63934f)

Documentation πŸ“–

  • Publish swagger to 2.2.0 (#a109450)
  • Correct document links in README (#588dc1c)

Build πŸ‘·

  • Update to latest go-mod-messaging w/o ZMQ on windows (#a222f54)
    BREAKING CHANGE:
    ZeroMQ no longer supported on native Windows for EdgeX
    MessageBus
    
  • Updated formatting from gofmt 1.17 (#3c2e1aa)

Continuous Integration πŸ”„

  • Remove -race for unit tests for now to resolve failures in pipeline (#a3ef393)
  • Go 1.17 related changes (#20fc5d6)

[v2.1.0] Jakarta - 2021-11-17 (Only compatible with the 2.x releases)

Features ✨

  • Support object value type in Set Command (#801bc03)
  • Add NewCommandValueWithOrigin function (#c6c2082)
  • Support Object value type in Reading (#1025) (#d245461)

Bug Fixes πŸ›

  • Stop AutoEvents if the Device is locked (#1027) (#c02be29)
  • Fix nil pointer error when executing SET command with empty value (#0f89794)
  • Fix device yaml to Json error (#cf13810)
  • Update all TOML to use quote and not single-quote (#9e077e8)

Code Refactoring β™»

  • Change V2 Swagger to be published with 2.0 version (#9dee295)

Documentation πŸ“–

  • Update swagger version to 2.1.0 (#6cc4e69)
  • Add apiVersion to request body example (#1a6f6b9)
  • Remove the description about base64 encoding (#df04f74)
  • Update build status badge (#da9a265)
  • Update device-simple README and provisionwatcher example (#76abb45)

Build πŸ‘·

Continuous Integration πŸ”„

  • Remove need for CI specific Dockerfile (#4ea8c13)

[v2.0.0] Ireland - 2021-06-30 (Not Compatible with 1.x releases)

Features ✨

  • Enable using MessageBus as the default (#eca11b8)
  • support device profile provision in json format (#945ec1c)
  • add Event tagging capability (#149daef)
  • Add secure MessageBus capability (#57291f0)
  • CBOR encoding http response for event with binary reading (#0032f23)
  • update CommandRequest.Attributes type (#1370f96)
  • add request size middleware for device command (#c006079)
  • improve Event/Reading Origin logic (#c5bee4f)
  • update profile cache to reflect new profile model (#3ff13b5)
  • add capability to load devices from directory (#e2dd6f7)
  • Updated Attribution.txt for missing crypto module (#ed9c44c)
  • Enable Registry and Config access token (#40eaaf9)
  • update example configuration to support MessageBus (#a8316e3)
  • add MessageBus capablility (#0fbf16e)
  • Add support for structured custom configuration (#0699ac1)
  • add GetProfileByName function API (#691fc8b)
  • Upgrade core-contracts lib to use redesigned device profile (#816) (#a5ad5ab)
  • validate set command parameters against maximum/minimum and refactor transformer package (#813) (#3f52f3a)
  • update CommandValue for v2 (#dbb5e95)
  • handle no readings generated gracefully (#fd6d2d4)
  • spawn autoevents for discovered device (#4822fad)
  • process queryParams of url in PUT request (#0d64304)
  • dynamically adds profile in device callback (#26939be)
  • update v2 cache to load data via v2 clients (#b6352b0)
  • make update callback aware of service change (#3fc6617)
  • make DeviceService struct updatable (#ecc71a3)
  • add update device service callback (#9ee2204)
  • update v2 callback API (#b000b54)
  • update v2 command API (#3d1861d)
  • SecretProvider for storing/retrieving secrets (#bcd0eef)
  • Updates from PR review. (#c4cbbed)
  • Modify callback func to consist with V2 API (#98ab8c7)
  • Added missing module to Attribution.txt (#9a6397b)
  • Add /api/v2/secrets endpoint to store secrets (#2c57645)
  • Removed remote logging feature (#1cc1ee3)
  • v2: prepare v2 ProvisionWatcher model cache (#c95c718)
  • v2: add v2 ProvisionWatcher callback API (#ce664a3)

Test

Bug Fixes πŸ›

  • Fix device service update failed when startup (#785b4de)
  • fix default value usage in SET command (#65fbd6f)
  • modify function updateAssociatedProfile return errors (#942) (#13e775a)
  • correctly update DeviceService.deviceService model (#c48d0fd)
  • use RequestLimitMiddleware on all routes (#b69e6f6)
  • add logLevel check in LoggingMiddleware (#23eaf68)
  • fix deviceProfileMap refer to the same object (#cf93359)
  • fix set command resourceOperation mapping (#870) (#e9afc7c)
  • add Content-Type in context for MessageEnvelope (#2d80251)
  • add device OperatingState check in device command API (#db824b8)
  • remove StopAutoEvents call during bootstrap (#6d0d00b)
  • remove hard-coded Content-Type in SDK (#f2441cf)
  • sync v2 query parameter with ADR (#9940e7e)
  • rm unused pkg/service function params (#39c0334)

Code Refactoring β™»

  • remove redundant dic client code (#13aef19)
  • Change PublishTopicPrefix value to be 'edgex/events/device' (#37f218f)
  • remove unimplemented InitCmd/RemoveCmd configuration (#956) (#457577c)
  • Remove obsolete code from Add Secret (#951) (#93abf71)
  • Move top level individual config settings under Device section (#356d22d)
  • Use common ServiceInfo struct and adjust code/configuration (#a3cc839)
    BREAKING CHANGE:
    Device Service configuration items have changed
    
  • Update to assign and uses new Port Assignments (#1880e37)
  • Update for new service key names and overrides for hyphen to underscore (#8132b7b)
    BREAKING CHANGE:
    Service key names used in configuration have changed.
    
  • rename AutoEvent.Frequency field to Interval (#0649751)
  • replace usage of io/ioutl package (#cb99f86)
  • remove unnecessary check for WriteDeviceCommand (#e2c4148)
  • remove RO mapping not found warning log (#bcdc0e5)
  • update returned type to errors.Edgex (#eef323e)
  • return normal error type in pkg package (#a34d60e)
  • refactor MiddlewareFunc (#fd3eb0c)
  • Replace use of BurntSushi/toml with pelletier/go-toml (#dd0b196)
  • Replace file based with use of Secret Provider to get Access Tokens (#867) (#0004bfd)
    BREAKING CHANGE:
    All Device Services running with the secure Edgex Stack now need to have the SecretStore configured, a Vault token created and run with EDGEX_SECURITY_SECRET_STORE=true.
    
  • Switch to 2.0 Consul path (#8efa047)
    BREAKING CHANGE:
    Consul configuration now under the /2.0/ path
    
  • leverage latest profile cache (#ff9571a)
  • move config struct to config package (#5d743f6)
  • update bootstrap sequence (#0526fd6)
  • remove v1 code and unused constants (#3a954db)
  • remove v2 subdirectory for SDK (#269686d)
  • rename problematic terminology in SDK (#819fd06)
  • use new CommandValue function/method (#df528cb)
  • remove default floating encoding (#1a909d6)
  • replace PUT command wording to SET command (#6059ff5)
  • update logging message of simpledriver (#1c5dcca)
  • remove id map and by id method in cache (#59cae24)
  • upgrade SDK external function API for v2 (#583d861)
  • use constants defined in core-contracts (#91f06a6)
  • upgrade async function to handle v2 models (#75ab748)
  • upgrade bootstrap procoess for v2 (#d356ded)
  • refactor autoevents package for v2 (#316a12a)
  • upgrade command API to handle v2 models (#b71bc34)
  • upgrade provision package to use v2 models/clients (#62cbe10)
  • update clients package to use v2 client (#801d88e)
  • update container package for v2 (#ef8f9ac)
  • implement new utils function for v2 (#d7fb500)
  • upgrade transformer package for v2 (#82016d5)
  • upgrade SDK models to use v2 contract(model) (#de17357)
  • remove v1 cache and API code (#b998828)
  • leverage go-mod-core-contracts constants (#839fdd7)
  • consume edgex v2 go-mods (#71e5df7)
  • remove ValueType enumeration in Go-SDK (#ba4bab1)
  • Make SDK a V2 Go Module (#e04106a)
  • Fixup to change all occurances of secrets' to secret` (#24db2b5)

Documentation πŸ“–

  • Add badges to readme (#c8eb33a)
  • update v2 API swagger file (#97747a4)
  • v2: update schema to be consistent with edgex-go (#15155f8)

Build πŸ‘·

  • update snap build to use go1.16 via a build-snap (#bb5fdaa)
  • upgrade Golang to 1.16 (#9773bb9)
  • update snap build to use Golang 1.16 (#6dcb0bd)

Continuous Integration πŸ”„

  • update docker image name (#a051116)
  • update build files to support zmq dependency (#0b2e4f3)
  • standardize dockerfiles (#4682622)

v1.4.0 - 2021-01-08

Features ✨

  • update DS in metadata to reflect config change (#a5cd81b)
  • add a comment to explain why use buffer for sending event (#e273dc8)
  • autoevent adds buffer for sending event to coredata (#1c85f20)
  • Make the numeric value type allows overflow and NaN (#1c75f93)
  • remove AdminState check for callback api route (#b6110b2)
  • add v1 deviceService callback handler (#4cd2f77)
  • sdk: Implement Device AutoEvents SDK APIs (#e78e4a6)

Refactor

  • remove github.com/pkg/errors from Attribution.txt (#06df777)

Bug Fixes πŸ›

  • use pointer on Executor to correctly update it (#2bf6939)

Documentation πŸ“–

  • update release note for 1.4.0 release (#00c0363)

Build πŸ‘·

  • deps: bump gopkg.in/yaml.v2 from 2.3.0 to 2.4.0 (#7e6026a)
  • deps: bump github.com/gorilla/mux from 1.7.1 to 1.8.0 (#ea97e15)
  • deps: bump github.com/edgexfoundry/go-mod-bootstrap (#4691506)

Continuous Integration πŸ”„

  • add semantic.yml for commit linting, update PR template to latest (#ea09293)

v1.3.0 - 2020-11-11

Features ✨

  • implement Device SDK v2 common API (#fa7ee70)
  • implement v2 command API (#619) (#abee7d5)
  • implement v2 discovery API (#e0816de)
  • sdk: implement v2 callback api (#a3969cc)
  • sdk: prepare v2 cache for v2 callback api (#b24cbb4)
  • sdk: expose RegistryClient registryClient was already available on DeviceService, just made it public (#096110c)
  • sdk: start auto-discovery upon service startup (#9693139)

Bug Fixes πŸ›

  • pass ctx into client initialization function (#388ecb7)
  • improve device discovery flow and whitelist logic (#0e0b041)
  • fix autoevent panic during callback (#4c965aa)
  • fix device autodiscovery behavior (#4e5d2bb)
  • Create a buffer to handle the AsyncValues (#925ab5b)
  • update CommandExists to only check Device Commands (#7a69a11)
  • allow startup duration/interval to be overridden via env vars (#ea2f983)
  • sdk: prevent creating duplicate autoevent executor (#36fb88b)

Code Refactoring β™»

  • update LogLevel for pushing event to coredata (#05d1f85)
  • update dockerfile to appropriately use ENTRYPOINT and CMD, closes#569 (#6d7be66)
  • sdk: fix requested changes in PR (#97d2159)
  • sdk: release lock after discovery complete (#3b7bdf6)

Documentation πŸ“–

  • addition of version and LTS refs to README per arch's meeting (#bced3e5)

Build πŸ‘·

  • add dependabot.yml (#623c4a4)
  • upgrade to use Go 1.15 (#9448c71)
  • deps: bump gopkg.in/yaml.v2 from 2.2.8 to 2.3.0 (#bf2f1c2)
  • deps: bump github.com/OneOfOne/xxhash from 1.2.6 to 1.2.8 (#e4c69b4)
  • deps: bump github.com/edgexfoundry/go-mod-bootstrap (#497e2f1)
  • deps: bump github.com/edgexfoundry/go-mod-registry (#a563bd0)
  • deps: bump github.com/edgexfoundry/go-mod-bootstrap (#d1e6a07)

v1.2.3 - 2020-07-21

Code Refactoring β™»

Documentation πŸ“–

v1.2.2 - 2020-06-11

v1.2.1 - 2020-05-13

Features ✨

  • replace --serviceName with --instance (#7ed50e3)
  • add ability for service name override (#b7ceb80)

Bug Fixes πŸ›

  • Upgrade the Go modules to include the fixes (#d7b2a7f)
  • fix device service config stem in consul (#82cb5f2)
  • Update to use go-mod-bootstrap to fix issue with override un-done (#bf5510e)

v1.2.0 - 2020-04-27

Features ✨

  • environment: Allow uppercase environment overrides (#9151334)

Bug

  • MediaType: Update to latest go-mod-contracts for PropertyValue.MediaType fix (#84f383f)

Bug Fixes πŸ›

  • add update profile logic in device callback (#2966048)

Documentation πŸ“–

Build πŸ‘·

  • Update relevant files in device-sdk-go for Go 1.13. Closes #440. (#23bc509)

Reverts

  • Encode the float as base64 string by LB

v1.1.2 - 2020-02-11

Bug

  • MediaType: Fuji - Update to latest go-mod-contracts for PropertyValue.MediaType fix (#1218022)

v1.1.1 - 2019-12-06

v1.1.0 - 2019-11-11

Features ✨

  • server: Add API to allow adding additional routes to internal webserver (#6872dfc)

Bug

  • query-params: Fix panic if attributes isn't initalized (#dac6f04)

Feature

  • query-params: Handle QueryParams from EdgeX Command Service (#b172f45)

Bootstrap

v1.0.0 - 2019-06-25

0.7.1 - 2018-12-10

Async

Dstore