...
Provider Responsibility
The provider makes their plugin,
Platform Responsibility
maintains their plugin in their own repository along with the build scripts to create the plugin, the EdgeX build fragments needed by the platform build, and the EdgeX Compose file fragments needed to create the EdgeX Compose file.
Repo Organization
The provider repo follows the Go standard project layout. In addition, providers can distribute prebuilt versions of their plugin. The `.so` lives in `pkg/NAME.so.VERSION` where NAME is the plugin name and VERSION follows Semantic Versioning 2.0.
Platform Responsibility
Code Block | ||
---|---|---|
| ||
[Databases]
[Databases.Primary]
Host = 'localhost'
Name = 'coredata'
Username = 'tiger'
Password = 'scott'
Port = 1234
Timeout = 5000
Type = 'some-plugin.so.1.0.1'
URL = 'https://github.com/some-provider/edgex-plugin/blob/master/pkg' |
Code Block | ||||
---|---|---|---|---|
| ||||
some-provider:
image: some-provider:alpine
ports:
- "1234:1234"
container_name: edgex-some-provider
hostname: edgex-some-provider
networks:
- edgex-network
volumes:
- data:/data
depends_on:
- volume |
Acceptance Criteria
MVP
v.Next
- Provider certification
- Provider included in platform CI/CT
Other Considerations
- Could we use Go Modules instead?
Reference Patterns
The basis of the requirements came out of looking at how others have solved this challenge. Also, note Vladimir Vivien's helpful article on "Writing Modular Go Programs with Plugins".
...