mirror of
https://github.com/kemko/nomad.git
synced 2026-01-06 18:35:44 +03:00
move reattach config
This commit is contained in:
committed by
Michael Schurter
parent
c19cd2e5cf
commit
2d23f4a038
@@ -15,7 +15,7 @@ import (
|
||||
"github.com/hashicorp/nomad/nomad/structs"
|
||||
"github.com/hashicorp/nomad/plugins/base"
|
||||
"github.com/hashicorp/nomad/plugins/device"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
)
|
||||
|
||||
@@ -103,7 +103,7 @@ type manager struct {
|
||||
instances map[loader.PluginID]*instanceManager
|
||||
|
||||
// reattachConfigs stores the plugin reattach configs
|
||||
reattachConfigs map[loader.PluginID]*shared.ReattachConfig
|
||||
reattachConfigs map[loader.PluginID]*pstructs.ReattachConfig
|
||||
reattachConfigLock sync.Mutex
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ func New(c *Config) *manager {
|
||||
pluginConfig: c.PluginConfig,
|
||||
updater: c.Updater,
|
||||
instances: make(map[loader.PluginID]*instanceManager),
|
||||
reattachConfigs: make(map[loader.PluginID]*shared.ReattachConfig),
|
||||
reattachConfigs: make(map[loader.PluginID]*pstructs.ReattachConfig),
|
||||
fingerprintResCh: make(chan struct{}, 1),
|
||||
}
|
||||
}
|
||||
@@ -280,7 +280,7 @@ func (m *manager) cleanupStalePlugins() error {
|
||||
// For each plugin go through and try to shut it down
|
||||
var mErr multierror.Error
|
||||
for name, c := range s.ReattachConfigs {
|
||||
rc, err := shared.ReattachConfigToGoPlugin(c)
|
||||
rc, err := pstructs.ReattachConfigToGoPlugin(c)
|
||||
if err != nil {
|
||||
multierror.Append(&mErr, fmt.Errorf("failed to convert reattach config: %v", err))
|
||||
continue
|
||||
@@ -306,11 +306,11 @@ func (m *manager) storePluginReattachConfig(id loader.PluginID, c *plugin.Reatta
|
||||
defer m.reattachConfigLock.Unlock()
|
||||
|
||||
// Store the new reattach config
|
||||
m.reattachConfigs[id] = shared.ReattachConfigFromGoPlugin(c)
|
||||
m.reattachConfigs[id] = pstructs.ReattachConfigFromGoPlugin(c)
|
||||
|
||||
// Persist the state
|
||||
s := &state.PluginState{
|
||||
ReattachConfigs: make(map[string]*shared.ReattachConfig, len(m.reattachConfigs)),
|
||||
ReattachConfigs: make(map[string]*pstructs.ReattachConfig, len(m.reattachConfigs)),
|
||||
}
|
||||
|
||||
for id, c := range m.reattachConfigs {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package state
|
||||
|
||||
import "github.com/hashicorp/nomad/plugins/shared"
|
||||
import pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
|
||||
// PluginState is used to store the device managers state across restarts of the
|
||||
// agent
|
||||
type PluginState struct {
|
||||
// ReattachConfigs are the set of reattach configs for plugin's launched by
|
||||
// the device manager
|
||||
ReattachConfigs map[string]*shared.ReattachConfig
|
||||
ReattachConfigs map[string]*pstructs.ReattachConfig
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import (
|
||||
"github.com/hashicorp/nomad/nomad/structs"
|
||||
"github.com/hashicorp/nomad/plugins/base"
|
||||
"github.com/hashicorp/nomad/plugins/drivers"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
)
|
||||
|
||||
@@ -117,7 +117,7 @@ type manager struct {
|
||||
instancesMu sync.RWMutex
|
||||
|
||||
// reattachConfigs stores the plugin reattach configs
|
||||
reattachConfigs map[loader.PluginID]*shared.ReattachConfig
|
||||
reattachConfigs map[loader.PluginID]*pstructs.ReattachConfig
|
||||
reattachConfigLock sync.Mutex
|
||||
|
||||
// allows/block lists
|
||||
@@ -141,7 +141,7 @@ func New(c *Config) *manager {
|
||||
updater: c.Updater,
|
||||
eventHandlerFactory: c.EventHandlerFactory,
|
||||
instances: make(map[string]*instanceManager),
|
||||
reattachConfigs: make(map[loader.PluginID]*shared.ReattachConfig),
|
||||
reattachConfigs: make(map[loader.PluginID]*pstructs.ReattachConfig),
|
||||
allowedDrivers: c.AllowedDrivers,
|
||||
blockedDrivers: c.BlockedDrivers,
|
||||
readyCh: make(chan struct{}),
|
||||
@@ -296,8 +296,8 @@ func (m *manager) loadReattachConfigs() error {
|
||||
|
||||
// shutdownBlockedDriver is used to forcefully shutdown a running driver plugin
|
||||
// when it has been blocked due to allow/block lists
|
||||
func (m *manager) shutdownBlockedDriver(name string, reattach *shared.ReattachConfig) {
|
||||
c, err := shared.ReattachConfigToGoPlugin(reattach)
|
||||
func (m *manager) shutdownBlockedDriver(name string, reattach *pstructs.ReattachConfig) {
|
||||
c, err := pstructs.ReattachConfigToGoPlugin(reattach)
|
||||
if err != nil {
|
||||
m.logger.Warn("failed to reattach and kill blocked driver plugin",
|
||||
"driver", name, "error", err)
|
||||
@@ -323,11 +323,11 @@ func (m *manager) storePluginReattachConfig(id loader.PluginID, c *plugin.Reatta
|
||||
defer m.reattachConfigLock.Unlock()
|
||||
|
||||
// Store the new reattach config
|
||||
m.reattachConfigs[id] = shared.ReattachConfigFromGoPlugin(c)
|
||||
m.reattachConfigs[id] = pstructs.ReattachConfigFromGoPlugin(c)
|
||||
|
||||
// Persist the state
|
||||
s := &state.PluginState{
|
||||
ReattachConfigs: make(map[string]*shared.ReattachConfig, len(m.reattachConfigs)),
|
||||
ReattachConfigs: make(map[string]*pstructs.ReattachConfig, len(m.reattachConfigs)),
|
||||
}
|
||||
|
||||
for id, c := range m.reattachConfigs {
|
||||
@@ -345,7 +345,7 @@ func (m *manager) fetchPluginReattachConfig(id loader.PluginID) (*plugin.Reattac
|
||||
defer m.reattachConfigLock.Unlock()
|
||||
|
||||
if cfg, ok := m.reattachConfigs[id]; ok {
|
||||
c, err := shared.ReattachConfigToGoPlugin(cfg)
|
||||
c, err := pstructs.ReattachConfigToGoPlugin(cfg)
|
||||
if err != nil {
|
||||
m.logger.Warn("failed to read plugin reattach config", "config", cfg, "error", err)
|
||||
delete(m.reattachConfigs, id)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package state
|
||||
|
||||
import "github.com/hashicorp/nomad/plugins/shared"
|
||||
import pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
|
||||
// PluginState is used to store the driver managers state across restarts of the
|
||||
// agent
|
||||
type PluginState struct {
|
||||
// ReattachConfigs are the set of reattach configs for plugin's launched by
|
||||
// the driver manager
|
||||
ReattachConfigs map[string]*shared.ReattachConfig
|
||||
ReattachConfigs map[string]*pstructs.ReattachConfig
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import (
|
||||
"github.com/hashicorp/nomad/helper/boltdd"
|
||||
"github.com/hashicorp/nomad/helper/testlog"
|
||||
"github.com/hashicorp/nomad/nomad/structs"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
@@ -103,7 +103,7 @@ func TestBoltStateDB_UpgradeOld_Ok(t *testing.T) {
|
||||
require.Nil(t, ps)
|
||||
|
||||
ps = &dmstate.PluginState{
|
||||
ReattachConfigs: map[string]*shared.ReattachConfig{
|
||||
ReattachConfigs: map[string]*pstructs.ReattachConfig{
|
||||
"test": {Pid: 1},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
nstructs "github.com/hashicorp/nomad/nomad/structs"
|
||||
"github.com/hashicorp/nomad/plugins/base"
|
||||
"github.com/hashicorp/nomad/plugins/drivers"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -133,7 +133,7 @@ func (d *Driver) RecoverTask(handle *drivers.TaskHandle) error {
|
||||
return fmt.Errorf("failed to inspect container for id %q: %v", handleState.ContainerID, err)
|
||||
}
|
||||
|
||||
reattach, err := shared.ReattachConfigToGoPlugin(handleState.ReattachConfig)
|
||||
reattach, err := pstructs.ReattachConfigToGoPlugin(handleState.ReattachConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
plugin "github.com/hashicorp/go-plugin"
|
||||
"github.com/hashicorp/nomad/drivers/docker/docklog"
|
||||
"github.com/hashicorp/nomad/plugins/drivers"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
@@ -44,7 +44,7 @@ func (h *taskHandle) ExitResult() *drivers.ExitResult {
|
||||
|
||||
type taskHandleState struct {
|
||||
// ReattachConfig for the docker logger plugin
|
||||
ReattachConfig *shared.ReattachConfig
|
||||
ReattachConfig *pstructs.ReattachConfig
|
||||
|
||||
ContainerID string
|
||||
DriverNetwork *drivers.DriverNetwork
|
||||
@@ -52,7 +52,7 @@ type taskHandleState struct {
|
||||
|
||||
func (h *taskHandle) buildState() *taskHandleState {
|
||||
return &taskHandleState{
|
||||
ReattachConfig: shared.ReattachConfigFromGoPlugin(h.dloggerPluginClient.ReattachConfig()),
|
||||
ReattachConfig: pstructs.ReattachConfigFromGoPlugin(h.dloggerPluginClient.ReattachConfig()),
|
||||
ContainerID: h.containerID,
|
||||
DriverNetwork: h.net,
|
||||
}
|
||||
|
||||
@@ -19,10 +19,9 @@ import (
|
||||
"github.com/hashicorp/nomad/plugins/base"
|
||||
"github.com/hashicorp/nomad/plugins/drivers"
|
||||
"github.com/hashicorp/nomad/plugins/drivers/utils"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
"github.com/hashicorp/nomad/plugins/shared/hclspec"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -119,7 +118,7 @@ type TaskConfig struct {
|
||||
// StartTask. This information is needed to rebuild the task state and handler
|
||||
// during recovery.
|
||||
type TaskState struct {
|
||||
ReattachConfig *shared.ReattachConfig
|
||||
ReattachConfig *pstructs.ReattachConfig
|
||||
TaskConfig *drivers.TaskConfig
|
||||
Pid int
|
||||
StartedAt time.Time
|
||||
@@ -291,7 +290,7 @@ func (d *Driver) RecoverTask(handle *drivers.TaskHandle) error {
|
||||
}
|
||||
|
||||
// Create client for reattached executor
|
||||
plugRC, err := shared.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
plugRC, err := pstructs.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
if err != nil {
|
||||
d.logger.Error("failed to build ReattachConfig from task state", "error", err, "task_id", handle.Config.ID)
|
||||
return fmt.Errorf("failed to build ReattachConfig from task state: %v", err)
|
||||
@@ -384,7 +383,7 @@ func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *drive
|
||||
}
|
||||
|
||||
driverState := TaskState{
|
||||
ReattachConfig: shared.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
ReattachConfig: pstructs.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
Pid: ps.Pid,
|
||||
TaskConfig: cfg,
|
||||
StartedAt: h.startedAt,
|
||||
|
||||
@@ -18,10 +18,9 @@ import (
|
||||
"github.com/hashicorp/nomad/plugins/base"
|
||||
"github.com/hashicorp/nomad/plugins/drivers"
|
||||
"github.com/hashicorp/nomad/plugins/drivers/utils"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
"github.com/hashicorp/nomad/plugins/shared/hclspec"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -109,7 +108,7 @@ type TaskConfig struct {
|
||||
// StartTask. This information is needed to rebuild the taskConfig state and handler
|
||||
// during recovery.
|
||||
type TaskState struct {
|
||||
ReattachConfig *shared.ReattachConfig
|
||||
ReattachConfig *pstructs.ReattachConfig
|
||||
TaskConfig *drivers.TaskConfig
|
||||
Pid int
|
||||
StartedAt time.Time
|
||||
@@ -277,7 +276,7 @@ func (d *Driver) RecoverTask(handle *drivers.TaskHandle) error {
|
||||
return fmt.Errorf("failed to decode taskConfig state from handle: %v", err)
|
||||
}
|
||||
|
||||
plugRC, err := shared.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
plugRC, err := pstructs.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
if err != nil {
|
||||
d.logger.Error("failed to build ReattachConfig from taskConfig state", "error", err, "task_id", handle.Config.ID)
|
||||
return fmt.Errorf("failed to build ReattachConfig from taskConfig state: %v", err)
|
||||
@@ -382,7 +381,7 @@ func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *drive
|
||||
}
|
||||
|
||||
driverState := TaskState{
|
||||
ReattachConfig: shared.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
ReattachConfig: pstructs.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
Pid: ps.Pid,
|
||||
TaskConfig: cfg,
|
||||
StartedAt: h.startedAt,
|
||||
|
||||
@@ -19,10 +19,9 @@ import (
|
||||
"github.com/hashicorp/nomad/drivers/shared/executor"
|
||||
"github.com/hashicorp/nomad/plugins/base"
|
||||
"github.com/hashicorp/nomad/plugins/drivers"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
"github.com/hashicorp/nomad/plugins/shared/hclspec"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -119,7 +118,7 @@ type TaskConfig struct {
|
||||
// This information is needed to rebuild the taskConfig state and handler
|
||||
// during recovery.
|
||||
type TaskState struct {
|
||||
ReattachConfig *shared.ReattachConfig
|
||||
ReattachConfig *pstructs.ReattachConfig
|
||||
TaskConfig *drivers.TaskConfig
|
||||
Pid int
|
||||
StartedAt time.Time
|
||||
@@ -275,7 +274,7 @@ func (d *Driver) RecoverTask(handle *drivers.TaskHandle) error {
|
||||
return fmt.Errorf("failed to decode taskConfig state from handle: %v", err)
|
||||
}
|
||||
|
||||
plugRC, err := shared.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
plugRC, err := pstructs.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
if err != nil {
|
||||
d.logger.Error("failed to build ReattachConfig from taskConfig state", "error", err, "task_id", handle.Config.ID)
|
||||
return fmt.Errorf("failed to build ReattachConfig from taskConfig state: %v", err)
|
||||
@@ -467,7 +466,7 @@ func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *drive
|
||||
}
|
||||
|
||||
qemuDriverState := TaskState{
|
||||
ReattachConfig: shared.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
ReattachConfig: pstructs.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
Pid: ps.Pid,
|
||||
TaskConfig: cfg,
|
||||
StartedAt: h.startedAt,
|
||||
|
||||
@@ -17,10 +17,9 @@ import (
|
||||
"github.com/hashicorp/nomad/drivers/shared/executor"
|
||||
"github.com/hashicorp/nomad/plugins/base"
|
||||
"github.com/hashicorp/nomad/plugins/drivers"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
"github.com/hashicorp/nomad/plugins/shared/hclspec"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -149,7 +148,7 @@ type TaskConfig struct {
|
||||
// StartTask. This information is needed to rebuild the task state and handler
|
||||
// during recovery.
|
||||
type TaskState struct {
|
||||
ReattachConfig *shared.ReattachConfig
|
||||
ReattachConfig *pstructs.ReattachConfig
|
||||
TaskConfig *drivers.TaskConfig
|
||||
Pid int
|
||||
StartedAt time.Time
|
||||
@@ -282,7 +281,7 @@ func (d *Driver) RecoverTask(handle *drivers.TaskHandle) error {
|
||||
return fmt.Errorf("failed to decode task state from handle: %v", err)
|
||||
}
|
||||
|
||||
plugRC, err := shared.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
plugRC, err := pstructs.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
if err != nil {
|
||||
d.logger.Error("failed to build ReattachConfig from task state", "error", err, "task_id", handle.Config.ID)
|
||||
return fmt.Errorf("failed to build ReattachConfig from task state: %v", err)
|
||||
@@ -371,7 +370,7 @@ func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *drive
|
||||
}
|
||||
|
||||
driverState := TaskState{
|
||||
ReattachConfig: shared.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
ReattachConfig: pstructs.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
Pid: ps.Pid,
|
||||
TaskConfig: cfg,
|
||||
StartedAt: h.startedAt,
|
||||
|
||||
@@ -31,10 +31,9 @@ import (
|
||||
"github.com/hashicorp/nomad/helper"
|
||||
"github.com/hashicorp/nomad/plugins/base"
|
||||
"github.com/hashicorp/nomad/plugins/drivers"
|
||||
"github.com/hashicorp/nomad/plugins/shared"
|
||||
"github.com/hashicorp/nomad/plugins/shared/hclspec"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
|
||||
"github.com/hashicorp/nomad/pluginutils/loader"
|
||||
rktv1 "github.com/rkt/rkt/api/v1"
|
||||
)
|
||||
|
||||
@@ -164,7 +163,7 @@ type TaskConfig struct {
|
||||
// StartTask. This information is needed to rebuild the taskConfig state and handler
|
||||
// during recovery.
|
||||
type TaskState struct {
|
||||
ReattachConfig *shared.ReattachConfig
|
||||
ReattachConfig *pstructs.ReattachConfig
|
||||
TaskConfig *drivers.TaskConfig
|
||||
Pid int
|
||||
StartedAt time.Time
|
||||
@@ -388,7 +387,7 @@ func (d *Driver) RecoverTask(handle *drivers.TaskHandle) error {
|
||||
return fmt.Errorf("failed to decode taskConfig state from handle: %v", err)
|
||||
}
|
||||
|
||||
plugRC, err := shared.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
plugRC, err := pstructs.ReattachConfigToGoPlugin(taskState.ReattachConfig)
|
||||
if err != nil {
|
||||
d.logger.Error("failed to build ReattachConfig from taskConfig state", "error", err, "task_id", handle.Config.ID)
|
||||
return fmt.Errorf("failed to build ReattachConfig from taskConfig state: %v", err)
|
||||
@@ -744,7 +743,7 @@ func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *drive
|
||||
}
|
||||
|
||||
rktDriverState := TaskState{
|
||||
ReattachConfig: shared.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
ReattachConfig: pstructs.ReattachConfigFromGoPlugin(pluginClient.ReattachConfig()),
|
||||
Pid: ps.Pid,
|
||||
TaskConfig: cfg,
|
||||
StartedAt: h.startedAt,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package shared
|
||||
package structs
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
Reference in New Issue
Block a user