* Remove the server_id from session table, change it to worker_id on session_connection This is step 1 in updating the worker table. The worker is becoming a public resource so it must have a public id. We drop the server_id column on the session_connection table and add the worker_id column so we can use the wt_public_key type. Since db migrations are applied while the controller is offline, it should be safe to assume all session connections are not in a running state, thus allowing us to null out all the worker ids in the session_connection table. For now we don't have very good enforcement of the wt_public_id contraints, since the id is currently defined in the worker config, but this will soon change and the worker's id will be generated by the controller. * Updating server_id references to controller_id. * Adding worker tag db writing test. * Move the server table back to the top. * Update comment for the worker object. * Update comment for the worker table. * Update the newWorkerId call to take a context and fix its error. * Correct comment for the wt_network_address domain.
96 lines
2.2 KiB
Go
96 lines
2.2 KiB
Go
package servers
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// getOpts - iterate the inbound Options and return a struct
|
|
func getOpts(opt ...Option) options {
|
|
opts := getDefaultOptions()
|
|
for _, o := range opt {
|
|
o(&opts)
|
|
}
|
|
return opts
|
|
}
|
|
|
|
// Option - how Options are passed as arguments
|
|
type Option func(*options)
|
|
|
|
// options = how options are represented
|
|
type options struct {
|
|
withName string
|
|
withDescription string
|
|
withAddress string
|
|
withPublicId string
|
|
withLimit int
|
|
withLiveness time.Duration
|
|
withUpdateTags bool
|
|
withWorkerTags []*Tag
|
|
}
|
|
|
|
func getDefaultOptions() options {
|
|
return options{}
|
|
}
|
|
|
|
// WithDescription provides an optional description.
|
|
func WithDescription(desc string) Option {
|
|
return func(o *options) {
|
|
o.withDescription = desc
|
|
}
|
|
}
|
|
|
|
// WithName provides an optional name.
|
|
func WithName(name string) Option {
|
|
return func(o *options) {
|
|
o.withName = name
|
|
}
|
|
}
|
|
|
|
// WithAddress provides an optional address.
|
|
func WithAddress(address string) Option {
|
|
return func(o *options) {
|
|
o.withAddress = address
|
|
}
|
|
}
|
|
|
|
// WithPublicId provides an optional public id
|
|
func WithPublicId(id string) Option {
|
|
return func(o *options) {
|
|
o.withPublicId = id
|
|
}
|
|
}
|
|
|
|
// WithLimit provides an option to provide a limit. Intentionally allowing
|
|
// negative integers. If WithLimit < 0, then unlimited results are returned.
|
|
// If WithLimit == 0, then default limits are used for results.
|
|
func WithLimit(limit int) Option {
|
|
return func(o *options) {
|
|
o.withLimit = limit
|
|
}
|
|
}
|
|
|
|
// WithLiveness indicates how far back we want to search for server entries.
|
|
// Use 0 for the default liveness (15 seconds). A liveness value of -1 removes
|
|
// the liveliness condition.
|
|
func WithLiveness(liveness time.Duration) Option {
|
|
return func(o *options) {
|
|
o.withLiveness = liveness
|
|
}
|
|
}
|
|
|
|
// WithUpdateTags indicates that we should perform tag updates in the DB.
|
|
// This would happen on first sync from a worker after startup or (eventually,
|
|
// perhaps), after a SIGHUP.
|
|
func WithUpdateTags(updateTags bool) Option {
|
|
return func(o *options) {
|
|
o.withUpdateTags = updateTags
|
|
}
|
|
}
|
|
|
|
// WithWorkerTags provides worker tags.
|
|
func WithWorkerTags(tags ...*Tag) Option {
|
|
return func(o *options) {
|
|
o.withWorkerTags = tags
|
|
}
|
|
}
|