Skip to content

Latest commit

 

History

History
498 lines (396 loc) · 48.3 KB

CHANGELOG.md

File metadata and controls

498 lines (396 loc) · 48.3 KB

App Functions SDK (in Go)

Github repository

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

Change Logs for EdgeX Dependencies

Features ✨

  • Add debug logging of Event/Reading details (#666) (#fc40647)

  • Upgrade to new V2 Clients and refactored PushToCore context API (#882) (#69a9f95)

    BREAKING CHANGE:
    PushToCore signature and required parameters have changed
    
  • Remove deprecated MQTTSend pipeline function (#592) (#c9ed7d5)

    BREAKING CHANGE:
    MQTTSend pipeline function no longer available. Replaced by MQTTSecretSend. 
    
  • Remove MarkAsPushed context API (#607) (#c562d37)

    BREAKING CHANGE:
    MarkAsPushed API is no longer available. 
    
  • Allow for multiple MessageBus subscription topics (#625) (#b307360)

  • Expect V2 Event DTO from triggers. (#616) (#2ceec0a)

    BREAKING CHANGE:
    Event and Reading DTOs have differrent/add/renamed fields from the V1 Event and Reading Models
    
  • Add secure MessageBus capability (#816) (#3b42cf3)

  • Switch to Redis as the default MessageBus for template service (#811) (#89c75ca)

  • Enable Registry and Config access token (#772) (#774021d)

  • Add GetAppSetting convenience API (#761) (#7158bb1)

  • Add custom structured configuration capability (#753) (#bc08826)

  • Port service template from hanoi branch (#703) (#ec0576e)

  • Add debug logging of the Event Tags (#dfa455d)

  • Remove remote logging service capability (#585) (#e5100d5)

  • Use V2 Command Client (#845) (#65135f1)

  • Use ResponseContentType in MessageBus (#644) (#8142930)

  • Add Storage to Context Interface (#867) (#d2e4f3e)

  • Add MakeItStop to stop the function pipeline form executing (#613) (#baae3ee)

  • Enable Custom Trigger Registration (#587) (#8220514)

  • store-forward: Remove Mongo as supported DB option (#589) (#d5e638f)

    BREAKING CHANGE:
    Mongo DB no longer availble as an option
    
  • transforms: Refactored PushToCore function (#882) (#69a9f95)

    BREAKING CHANGE:
    PushToCore required parameters have changed
    
  • transforms: Add ability to chain HTTP exports for export to multiple destinations (#860) (#1d9ed87)

  • transforms: Remove MarkAsPushed function (#607) (#c562d37)

    BREAKING CHANGE:
    MarkAsPushed is no longer available. 
    
  • transforms: Update Filters for V2 DTO changes (#680) (#583298e)

    BREAKING CHANGE:
    FilterByValueDescriptor has chnaged to FilterByResourceName
    
  • transforms: Add new FilterBySourceName function (#731) (#3ee2f0b)

  • transforms: Add secrets capability to Encryption pipeline function (#706) (#e84fe62)

  • transforms: Add KeepAlive and ConnectionTimeout to MQTT Export settings (#859) (#d9301fa)

  • transforms: Add URL Formatting To HTTP Sender (#877) (#24752ac)

  • transforms: Use Default Topic Formatting for Triggers (#897) (#b82a6b8)

  • transforms: Add Topic Formatting Capability to MQTTSecretSender (#872) (#881afdc)

Bug Fixes 🐛

  • Errors in dynamic pipeline updates allow previous pipeline to run, hiding the errors (#711) (#db11a9b)
  • Clean up retry properties and update secret path (#865) (#83c109e)
  • Added missing .ExternalMqtt subsection to error log message (#836) (#7563e5d)
  • Add missing instructions to remove replace statement from go.mod file (#818) (#caac711)
  • Fix webserver to use ServerBindAddr only if not blank, same as rest of EdgeX Services (#776) (#1fb879a)
    BREAKING CHANGE:
    Webserver will be locked down to listen just to `Host` value when If `ServerBindAddr ` is blank
    
  • Add json array check when determining CBOR of JSON encoding (#896) (#d07bca6)
  • Normalize Trigger Factory Returns (#699) (#d22e914)

Code Refactoring ♻

  • Use Core Metadata version API for version check (#906) (#94336c9)

  • Replace use of deprecated io/ioutil with proper package (#893) (#a453267)

  • Remove support for V1 Events/Readings (#889) (#d651532)

    BREAKING CHANGE:
    V1 Events/Readings no longer supported
    
  • Use common ServiceInfo struct and adjust code/configuration (#855) (#d73e4bf)

    BREAKING CHANGE:
    App Service's [Service] configuation has changed
    
  • Update to use new Port assignments (#850) (#497a5d9)

  • Update for new service key names and overrides for hyphen to underscore (#838) (#d014dc0)

    BREAKING CHANGE:
    Service key names used in configuration have changed.
    
  • Move topic config to appropriate config struct (#830) (#c9e8075)

    BREAKING CHANGE:
    Edgex-MessageBus and External-Mqtt configuration has changed
    
  • Replace file based with use of Secret Provider to get Access Tokens (#784) (#c52b117)

    BREAKING CHANGE:
    All App 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 (#782) (#da3d051)

    BREAKING CHANGE:
    Consul configuration now under the `/2.0/` path
    
  • Update Version Check to use V2 endpoint (#778) (#a3b28f5)

  • Make SDK a V2 Go Module (#643) (#29611b3)

    BREAKING CHANGE:
    Custom App Service's go.mod must have /v2 on end of SDK url
    All SDK imports must have /v2 in the path
    
  • Change to using service keys for names in Clients configuration (#747) (#c6680ff)

    BREAKING CHANGE:
    Clients configuration has changed and must be updated to use service keys for names
    
  • Rework SDK to use Interfaces and factory methods (#741) (#3a57661)

    BREAKING CHANGE:
    App Services will require refactoring to use new interfaces  and factory methods
    
  • Remove V1 REST API code and swagger (#730) (#7e0294b)

    BREAKING CHANGE:
    V1 REST API's no longer supported. Replaced by V2 REST API code and swagger.
    
  • Consolidate function pipeline configuration (#728) (#4a1f060)

    BREAKING CHANGE:
    Configuable Pipeline function setting have changed 
    
  • Restructure Trigger configuration (#724) (#8767d03)

    BREAKING CHANGE:
    - Renamed `Binding` to `Trigger`
    - Removed deprecated `MessageBus` trigger type, replaced by`edgex-messagebus`
    - Renamed `MessageBus` to `EdgexMessageBus`
    - Move `EdgexMessageBus` and `ExternalMqtt` under `Trigger` configuration
    
  • Remove deprecated environment variables and related code (#718) (#866257f)

    BREAKING CHANGE:
    The following environment variables no longer supported:
    - `edgex_profile` (replaced by uppercase version)
    - `edgex_service`
    
  • Rename MqttBroker configuration to ExternalMqtt (#717) (#a6c3fef)

    BREAKING CHANGE:
    Configuration section name changed
    
  • Rework secrets for HTTP Export so value in InsecureSecrets can be overridden (#714) (#4075ac3)

    BREAKING CHANGE:
    Parameters have changed for HTTP Post/Put with SecretHeader
    
  • Refactor V2 API /secrets to be singular /secret (#648) (#78327a4)

    BREAKING CHANGE:
    /api/v1/secrets changed to /api/v2/secret and expected JSON has chnaged
    
  • v2: Update Custom Trigger Configuration (#764) (#ad2f1fe)

Documentation 📖

Continuous Integration 🔄

[v1.3.1] Hanoi - 2021-02-04 (Compatible with all V1 Releases)

Bug Fixes 🐛

  • Upgrade to go-mod-messaging with ZMQ fix (#660) (#eab384c)

[v1.3.0] Hanoi - 2020-11-11 (Compatible with all V1 Releases)

Features ✨

Bug Fixes 🐛

  • Fix response content type issue 567 (#568) (#a22ec22)
  • http trigger response can set content-type (#551) (#d7502e4)
  • Adjust timing so test doesn't fail intermittently (#549) (#529345a)
  • backwards compatibility broken by #406, fixes #408 (#409) (#6ebb1d4)
  • Set Redis password in MessageBus.Optional when using redisstreams (#534) (#7fa6067)
  • Skip compatibility check when Core Data's version is 0.0.0 (developer build) (#533) (#35ab7bc)
  • Make path property required for the Secrets V1 & V2 APIs (#497) (#a28a1e2)
  • Data races detected from messagbus unit test #488 (#489) (#c0b07c9)
  • Fix unit tests that fail when using Go 1.15 (#485) (#dd68bd8)
  • Add locking around MQTT client setup and around connecting to avoid race conditions. (#474) (#b0f6186)
  • Request DTO's RequestId is not required. Can be blank or a valid UUID (#475) (#3e706d9)
  • Data races detected from Batch function #448 (#449) (#337bfa7)
  • Rename swagger file to use yaml extension. (#465) (#a75dd35)
  • Trigger API schema type of text for errors is invalid, should be string (#453) (#6b45ea7)
  • V2 Secrets return proper 201, 400 or 500 status codes, not 207. (#443) (#fc2196f)
  • Allow startup duration/interval to be overridden via environement vars (#426) (#5d4b522)
  • InsecureSecrets change processing should update SecretProvider.LastUpdated (#420) (#a9fe1e5)
  • app-service-configurable issue 74 (#383) (#f08b8d6)
  • sdk: Fix version check to handle new core-data dev versions. (#416) (#4847189)
  • triggers: MQTT subscribe via onConnect handler so re-subscribe on reconnects (#537) (#c8e7ff0)

Code Refactoring ♻

  • Replace calling NewBaseResponseWithoutMessage with NewBaseResponse (#557) (#10e68ac)
  • Change all unit tests to use logger.NewMockCient() (#555) (#02b6e43)
  • Refactor V2 API to use new errors mechanism for go-mo-core-contracts (#494) (#e35ffeb)
  • Remove Client monitoring. (#386) (#0aa127b)

Documentation 📖

  • addition of version and LTS refs to README per arch's meeting (#7a11604)
  • update pr template to include dependencies question (#382) (#b5e0c58)

Build 👷

  • Switch to use Go 1.15 (#478) (#6f19a0c)
  • Enable DependaBot via YML file, rather than external BOT (#030bce6)

Continuous Integration 🔄

  • update scopes and types for conventional commits (#561) (#07f5e21)

[v1.2.0] Geneva - 2020-06-11 (Compatible with all V1 Releases)

Fix

  • fixed log message formatting (#378)

Feat

  • Add ability to Filter functions to reverse the logic to filter out specified names (#375)

Fix

  • Allow overrides that have empty/blank value (#374)

Docs

  • update changelog

[v1.1.0] Fuji - 2020-05-12 (Compatible with all V1 Releases)

CI

Docs

  • update links to point to v1.2 #d3c62bb
  • move docs to edgex-docs #76095f3
  • pr-template: remove contribution guidelines from PR checklist since commitlint checks this #4321bad
  • adding batch to TOC #9695d7b
  • batch documentation created #2d51189
  • Update PR Template based on feedback #b1a1b0b
  • Add webserver usage to ToC #7ea3b5e
  • swagger: add swagger annotations to generate spec from code #8e83cab
  • PR Template #ec47f61
  • changelog information #75cbd94

Refactor

  • Change serviceName override to be ServiceKey (#365) #85cb718
  • CBOR: Replace ugorji/go with fixmacker/cbor #93f855c
  • tests: Fix order of expected vs actual and other clean up #c0ff507
  • sdk: Add MQTT MessageBus Support #9cc961e
  • Updated to use latest core-contracts changes #7c6633a
  • examples: Move examples out of SDK into new app-service-examples repo #ed9e796
  • formatted code #c6dcc18
  • sdk: Update usage of NewSecretClient to use the latest go-mod-secrets #8b11b1f

Build

  • Updated to latest go-mod-core-contract for bug fix (#364) #aceb24c
  • go.mod: update dependencies #2da5c5e
  • update go version to 1.13 #b26dc8a
  • Update relevant files in app-functions-sdk-go for Go 1.13. Close #280 #0123828
  • Jenkinsfile: Pipeline changes for Geneva release #5de66a3
  • Attribution: Add missing Attribution.txt file and update makefile test target #6f1a755
  • go.mod: Add running go mod tidy to make test #d24fbcd
  • makefile: allow building in gopath by setting GO111MODULE=on #d11277d

Fix

  • Add more sleep time to Batch and Send unit test to fix ARM CI failures (#361) #2c4cbff
  • Use correct parameter key name for MQTTSecretSend AuthMode in configurable pipeline (#358) #b47159d
  • Implement smarter configuration update processing (#354) #678d12a
  • Added longer sleep to fix intermittent unit test failure on ARM (#352) #65b44ef
  • JSONLogic now runs rules everytime insted of 1st time [#e83dc16](https://github.com/edgexfoundry/app-functions-sdk-go/commits/e83dc16c714ff806052072b14cc5f609f337ef7a
  • retry loop: Wrap version check and DB connection is a retry loop instead of sending an error (#345) #1bfa060
  • Use credentials from Database config if not found in InsecureSecrets #5c97927
  • Remove code that returns empty credentials for Redis #bd9dac5
  • Handle deprecated edgex_service env variable #9e68ba5
  • profile: Set profile properly in service's service key when env override used #f6dd20a
  • SecretClient: Initialization of secret client retry logic #ba62973
  • SecurityProvider: Make initialization of secret clients optional #4b86353
  • batch: 2nd batch hanging in count mode #3879fbb
  • go.mod: Removed wrong version of ZMQ package used. #4bd3797
  • trigger: invoke connect on initialization #b5a07d6
  • StoreForward: Add missing retrieval of DB credentials from Vault #e2e81ce
  • urlclient: Update contracts version to fix bug in URLClient. #a8ba403
  • README: Fix example code in README to not panic if LoggingClient not initialized #a7f6acd

Test

  • fix race condition in batch tests #87f21c6
  • fix timing issue with Batch transform test #701e960

Feat

  • Add ability for command-line and environment override of service name (#356) #dcb01ac
  • Integrate with new redis streams message bus implementation #6fcbfc4
  • bootstrap: Integrate go-mod-bootstrap for common bootstraping #1034e84
  • configurable: add mqtt secret support #d9433ed
  • mqtt: add security provider support for mqtt connection #9695290
  • configurable: support secrets for http export #3358642
  • configurable: add JSONLogic #e05bd13
  • configurable: add batch functions [#3ef7d39](https://github.com/edgexfoundry/app-functions-sdk-go/commits/3ef7d39f8f6b264ec371b2a4968901b46d76af58
  • security: Add second SecurityStore client for service specific secrets #204e3ef
  • http-export: add support for auth token in header #311414e
  • jsonlogic: add filter feature of jsonlogic #9637eb0
  • core contracts: Upgrade to latest Core Contracts for Reading enhancements #a93dbb5
  • sdk: Add full path to secrets api route #9f72141
  • sdk: Implement StoreSecrets in app functions SDK #1f7dc12
  • sdk: Add support for insecure secrets for when running non secure mode #ad238fe
  • sdk: Add helper function to SDK to get string slice from App Settings. #f83b325
  • appsdk: Add support for HTTPs on REST trigger #b594893
  • appsdk: Add support for HTTPs on REST trigger #b9ccbab
  • configuration: Add overwrite option for force local settings into Registry #7b6318d
  • version: Validate that SDK's major version matches Core Service's major version #d91fdf1
  • appsdk: Change configuration intervals to duration strings #e80ce9a
  • MqttSend: Add SkipCertVerify setting and refactor MqttSend #2c25a52
  • appsdk: Appsdk changes for Store and Forward. #211efe4
  • batch and send #1a44398

BREAKING CHANGE

Inserting preceding "-" when replacing <profile> in the service key has been removed so the use is more flexible. The only service using the replacement text is app-service-configurable which will be updated to add the "-" in the initial service key.

[v1.0.0] Edinburgh - 2019-11-12

Build

  • go.mod: Add running go mod tidy to make test
  • makefile: allow building in gopath by setting GO111MODULE=on

Docs

  • readme: Address unknown type issue from getting started section #a6b9976
  • readme: Updated sample code in readme #2fbe312
  • contributing: Document suggested format for commits #b264877
  • fix typo "rigistry" -> "registry" in README #0cce673
  • toc: Adding a Table of Contents #08620d2

Feat

  • Context: Add useful edgex clients to expose them for pipeline functions and internal use. #29978f0
  • Filter: Pass all events/reading through if no filter values are set #ad8e2ed
  • configurable: Expose MarkAsPushed #d86d0a0
  • contracts: Update to latest Core Contracts for new Command APIs
  • coredata: Provide API to push to core-data #d18e9d2
  • coredata: MarkAsPushed is now available as a standalone function #fdc4f0e
  • examples: Add example to demonstrate using TargetType #1b9758f
  • mqtt: Support to pass MQTT key/pair as byte array #985c91b
  • profile: Add environment override for profile command line argument #c75d2ca
  • runtime: Support types other than Event to be sent to function pipeline #ee6cf0e
  • runtime: Store and Forward core implementation in runtime package. #1d28cc9
  • store: Redid Mongo integration tests. #132f2fc
  • store: Added error test cases. #52e7605
  • store: add abstraction for StoredObject. #b8d7b6a
  • store: Explicitly return values, fix missing imports on test. #93fbaa2
  • store: Address PR feedback. #8ab3aba
  • store: add mongo driver #48f9171
  • store: Updated to remove all indexing by ObjectID. #01c114b
  • store: Added contract validation and tests. #354adfb
  • store: Added Redis driver. #4f8ef02
  • store: Refactored validateContract(). #50b0712
  • store: Add mock implementation for unit testing. #5cd4eaf
  • transforms: Add ability to persist data for later retry to export functions #351bbc2
  • webserver: Expose webserver to enable developer to add routes. #e48170e
  • webserver: Docs and tests for webserver use #3d5ac67
  • version: Add /api/version endpoint to SDK #d9fdfd0
  • contracts: Update to latest Core Contracts for new Command APIs #e818c23

Fix

  • TargetType: Make copy of target type before using it. #069304b
  • configuration: Utilize protocol from [Service] configuration #c6bec4a
  • configuration: Check Interval is now respected #06a310f
  • logging: When trace is enabled, log message for topic subscription is correct #ebe38a9
  • pushtocore: error not returned to pipeline #61a3c1b
  • trigger: Return error to HTTP trigger response #af60e79
  • webserver: Timeout wasn't be used #df39230
  • CommandClient: Use proper API Route for Command Client #b76f85c
  • log-filename: filename specified in configuration.toml was not being respected #9007019

Perf

  • db.redis: Denormalize AppServiceKey out of store object to optimize update #d065621

Refactor

  • Ensure test names are consistent with function names #b1e3b13
  • sdk: Refactor to use New func pattern instead of helper functions #105f120

BREAKING CHANGE

Pipeline functions used in the SetPipeline() now need to be created with the provided New…() functions. /trigger endpoint now follows standard edgex convention. It is now /api/v1/trigger HTTPPost and MQTTSend no longer automatically call MarkAsPushed upon success. It is upon the developer to ensure the method is called appropriately. Pipeline functions used in the SetPipeline() now need to be created with the provided New…() functions.