open-nomad/client/allocrunner/upstream_allocs_hook.go
Michael Schurter 0ba1a5251b client: cleanup and document context uses
Some of the context uses in TR hooks are useless (Killed during Stop
never seems meaningful).

None of the hooks are interruptable for graceful shutdown which is
unfortunate and probably needs fixing.
2019-03-12 15:03:54 -07:00

33 lines
801 B
Go

package allocrunner
import (
"context"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/nomad/client/allocwatcher"
)
// upstreamAllocsHook waits for a PrevAllocWatcher to exit before allowing
// an allocation to be executed
type upstreamAllocsHook struct {
allocWatcher allocwatcher.PrevAllocWatcher
logger log.Logger
}
func newUpstreamAllocsHook(logger log.Logger, allocWatcher allocwatcher.PrevAllocWatcher) *upstreamAllocsHook {
h := &upstreamAllocsHook{
allocWatcher: allocWatcher,
}
h.logger = logger.Named(h.Name())
return h
}
func (h *upstreamAllocsHook) Name() string {
return "await_previous_allocations"
}
func (h *upstreamAllocsHook) Prerun() error {
// Wait for a previous alloc - if any - to terminate
return h.allocWatcher.Wait(context.Background())
}