Delivery: ~ Apr 2020
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