Ireland Release

Delivery:  ~ June 2021

Namer:  Lenny Goodell and Mike Johanson (Intel)

The Ireland release is anticipated to be a major release (2.0) with implementation of the V2 APIs started in Hanoi completed.

Release Themes and Objectives

  • Implementation of the initial Certification program (targeting Device Service certification to start)
  • Improved documentation and example code
  • Improved integration and performance testing
  • Improve consistency across all service builds

General

  • Upgrade scripts and tools for DB and configuration migration
  • V2 API for all services
    • Includes addition of clients, TAF tests, changing all services to use V2 APIs
    • Get rid of V1
    • Decision: remove as much V1 code as we can but not focus on that until Jakarta
      • Note: this will affect code coverage metrics
  • Kong on all the time (stretch)
  • Device service to appl service via message
    • Have to deal with marked as pushed & core data not there – Lenny needs update to ADR
    • Possible race condition in app service done with it before core data gets it
  • Device service to core data via message bus
  • Archive deprecated services/infrastructure
    • Mongo (some Mongo code in sdks and edgex-go)
    • Logging (still some code in bootstrap and client)
    • Drools
  • Code clean up for backwards compatibility
    • Rip out stuff that is provided for backward compatibility that won’t be necessary
  • Address max request size check

Core/Supporting Services

  • Modifying device profiles on the fly (dynamically add resources) - stretch
  • Fix Redis names/keys (add prefix to the namespace) (#2861)
    • Will be better for ACL later
  • Improve profile validation logic (#2647) – stretch
  • Address how to get device resource info (for app services and Kuiper)
  • Add profile to Event/Reading objects
  • Change name property on Reading to resourceName
  • Add formatted alternatives to log functions (#295)
  • Structure core data’s Writable area – add structure

CLI

  • V2 API support
  • TAF testing support (at least a basic start, subject to some research to know what is possible)
  • Add support for device and application services
  • Additional API coverage (exact APIs to be determined - high priority commands not covered with version 1)

UI

  • Create a device UI “wizard” that allows adding a new device much quicker.
    • Takes a user through screens to create a new device, reference or create a device profile, add addressable, provide AutoEvent schedule, etc. and associate it to a device service
  • Add some data visualization to the UI
    • Need the ability to “click and see” the data
    • See the data in the core database
  • SMA integration
  • Link UI to Endorsement page of existing profiles
  • Use new web site branding/styles to brand the UI

Application and Analytic Services

  • Fork the pipeline & have a pipeline per topic
    • Conditionalize and be able to skip functions in pipeline (“fork the pipeline”)
    • Decisions in the pipeline to determine what gets executed
  • Integrate additional analytics framework
    • Example service (likely TensorFlow)
  • V2 API Consumption
  • Output aggregator/multiplexor? stretch
    • Have an array of export endpoints
    • Issue of what happens if one export fails (and marked as pushed) – perhaps handle via configuration
  • Batch mark/push –how to push after a big batch is sent
  • Address array of types in rules engines/analytics engines – stretch
    • Kuiper (not sure if it handles)
    • JSONLogic function doesn’t handle array types
  • Remove/Archive Drools Rules Engine associated artifacts
    • Logging, Mongo too
  • Refactoring & cleanup

DevOps

  • Repo badges for EdgeX repos
  • Automated change log creation now that conventional commits have been adopted
  • Developer enablement
    • Docs (how pipelines work)
    • Tutorials
    • Help devs become self-reliant/sufficient
    • Started in Hanoi release
  • Automation around pinning image versions in developer scripts - Stretch
  • Security bench
  • Release automation streamlining
  • Docker image naming
    • Drop “go” suffix and “docker” prefix
  • Dockerfile clean up in some services
  • Clean up DevOps wiki pages
  • Tag Docker Hub images to indicate which are out of support

Security

  • Revamp of EdgeX docker bootstrapping
    • Eliminate TLS usage and private PKI
    • Eliminate hard-coded Postgres password
  • Enable BYO Kong certificate
  • Ensure that service location data is pulled from trusted source (i.e. not Consul)
  • Secure Kong admin port
  • New secret provider abstraction (non-back)
  • Utility - refactoring proxy setup to move the post installation out to separate utility
  • Support delayed services starting after vault token expired- Stretch

TestQA

  • TAF for V2 API
    • Deprecate blackbox tests
  • Complete Modbus scalability tests
  • Polish / automate how we make performance data available to allow users to make informed decision
  • Additional Integration/Functional test cases - Stretch
    • Kuiper integration test/smoke test

Device Services

  • Consume v2 API
  • Event filtering: implementation - Stretch
  • Impl of DS to AS via message bus
  • Message bus for Device Service → Core Data – Stretch
  • Obtain security credentials from secret store
  • Check of set requests on device service against device profiles (setting above, min, max, etc.)? Small (already done in C)
    • Validation of set data against what is in the profile
  • Review and acceptance of new device services (4x)
  • Device list shouldn’t be in configuration.toml - Stretch
  • support-logging removal
  • Naming scheme changes for config.Clients (key name change)
  • This is based on issue request stemming from system management and monitoring
  • Continued refactoring for global vars – in scope; small change in SDKs
  • Remove binary representation (base64) for floating point values
  • Remove OperationalState for device services
  • Rename OperationalState values for devices (currently ENABLED/DISABLED, suggest UP/DOWN) – in scope; small
  • Archive Random Device Service

Miscellaneous

  • Standardization of units of measure
  • Support getting current log level from API (#294) – (AR - Jim to follow up)
  • Replace 0MQ library (#73)
  • Add guidance on when to use what logging level in the wiki (contribution section)
  • Revisit combing core services at least at all executables in one image
  • Naming scheme changes for config.Clients (key name change)
  • Develop a checklist for edgexfoundry-holding to edgexfoundry repo moves