Trying to run the docker image built with `make docker-build-dev` would
result in an error at startup:
standard_init_linux.go:228: exec user process caused: no such file or directory
This was due to the dev docker image lacking `dumb-init` which is used
by `docker-entrypoint.sh`.
This commit updates the dev dockerfile to add dumb-init. It also adds
additional packages so that the dev image aligns with the release image.
* Add plugin-based host entry to CHANGELOG.md
* Amend to de-emphasize domain language
This should hopefully make it more obvious that the plugin system is
currently internal and one cannot yet write 3rd party plugins for
Boundary.
Currently host does not use a version, which means it's not protected
against race conditions of either itself or its value objects. This adds
and plumbs through version to ensure that if a host or its value objects
change that they are not going to be affected by a race condition.
* Update sync interval seconds field.
* If the sync interval was updated, schedule the next sync job wakeup immediately.
* Calculate the next sync time for the scheduler should wake up if we only updated the sync interval.
* Reference PreferredEndpoints by top level struct name instead of embedded proto GetPreferredEndpoint method.
Reorganize the sql files a little.
* Make PreferredEndpoints replayable. Test refactoring to remove variables that persist across test calls. DeleteItems instead of trying to use WithWhere.
This adds a parameter to host sets allowing the sync interval to be
user-specified on a per-host-set basis. A value of -1 disables syncing;
a value of null uses the current default.
* internal/host/plugin: add UpdateSet
This adds the UpdateSet repository function.
UpdateSet runs the OnUpdateSet plugin call within the transaction as per
the changes in #1683.
The plugin call returns the updated set, the hosts in the set, the rows
updated, and any error.
* Ensure that attributes can be cleared by supplying a full null
* move version increment to the end and track perferred endpoint update separately
* move plugin call to end of transaction
* only clone returned set once, and move host fetch call out of transaction
* Request a sync when attributes are updated
* Add test to assert that old preferred endpoints are being removed correctly
* Only call the Plugin at create/update time after the db has been partially updated. This allows more constraints to be checked prior to calling the plugin.
* Create catalog service handler for updating plugin. Add tests for handler and run make fmt. Silently drop attributes where the value is nil when creating the catalog or set.