Can work as a standalone service, but may be replaced by a facade to an existing eventbus/mq manager.
This module has a configuration file (
eventbus.yaml by default) that
describes the host, port, ssl_context, trusted_authorities, and
logfile to use. It can also enable insecure logins.
If no configuration file is found it will default to the following values:
apiVersion: opentestfactory.org/v1alpha1 kind: EventBusConfig current-context: default contexts: - context: port: 38368 host: 127.0.0.1 ssl_context: adhoc name: default
ssl_context is either
adhoc, a list of two items (certificate file
path and private key file path), or
disabled (not recommended, will
switch to plain HTTP).
A context can also contain a
trusted_authorities, which is a list of
public key files, used for token validation.
A context can also allow for insecure (token-less) logins, if
enable_insecure_login is set to
true (by default, insecure logins are
Insecure logins, if enabled, are only allowed from a given address (
by default). This can be overridden by specifying
python3 -m opentf.core.eventbus [--context context] [--config configfile]
This module exposes three endpoints:
Whenever calling those endpoints, a signed token must be specified
This header will be of form:
Authorization: Bearer xxxxxxxx
It must be signed with one of the trusted authorities specified in the current context.
On successful subscription a subscription ID is returned (in
On successful publication, the publication is dispatched to all corresponding subscriptions, asynchronously.
If there is no corresponding subscription, the response code will be
200, but its
message part will be:
'Publication received, but no matching subscription'
If there are corresponding subscriptions, the publication will be
posted to their endpoints. There will be a
header containing the subscription ID:
There will also be a
X-Publication-ID header containing the
publication ID, to help disambiguate duplicates:
No attempt is made to resubmit a publication to a given subscription if the first attempt failed. A failure to submit a publication to a given subscription has no effect on other subscriptions: they will receive the publication.