Michael Schurter
d2c81c375c
Merge pull request #5038 from hashicorp/b-drivermanager-tests
...
WIP: fix failing tests caused by async driver manager
2019-01-03 12:32:18 -08:00
Danielle Tomlinson
1209d03a5c
Merge pull request #5142 from hashicorp/dani/cleanup-allocrunner-logs
...
allocrunner: Standardised discard logs
2019-01-03 18:40:48 +01:00
Preetha
5673a2c33d
Merge pull request #5140 from hashicorp/dani/b-taskrunner
...
taskrunner: Persist environment from hooks
2019-01-03 09:30:52 -06:00
Danielle Tomlinson
acf2c524f3
allocrunner: Standardised discard logs
...
Follow up from https://github.com/hashicorp/nomad/pull/5007#pullrequestreview-186739124
2019-01-03 14:04:31 +01:00
Danielle Tomlinson
5dadb6cc7e
chore: Fix environement->environment typo
2019-01-03 13:31:30 +01:00
Danielle Tomlinson
54dde24bcb
taskrunner: Persist environment from hooks
...
https://github.com/hashicorp/nomad/pull/5032 introduced a regression
where the origHookState was used in place of the response from the hook.
2019-01-03 13:13:57 +01:00
Alex Dadgar
c54aad6231
Merge pull request #5032 from hashicorp/f-driver-env
...
Store device envs separately and pass to drivers
2018-12-20 13:38:27 -08:00
Nick Ethier
145827d8b7
fix tests that fail as a result of async client startup
2018-12-20 00:53:44 -05:00
Nick Ethier
848554ba61
client: add proper build flag to allocrunner testing.go
2018-12-19 20:22:07 -05:00
Michael Schurter
60522ac457
Merge pull request #5030 from hashicorp/test-client-statusupdate
...
client: assert alloc status updates work
2018-12-19 14:55:34 -08:00
Alex Dadgar
99df4c98c7
Store device envs separately and pass to drivers
2018-12-19 14:23:09 -08:00
Michael Schurter
d5f4de38f8
client: assert alloc status updates work
...
Re-enabling and updating an old test. Able to cut out a ton of extra
work by using WaitForRunning which does almost everything this test
needs.
2018-12-19 11:41:53 -08:00
Michael Schurter
f07fe3459a
client/state: missing deploy status isn't an error
...
Fixes TestClient_SaveRestoreState
2018-12-19 10:39:27 -08:00
Michael Schurter
75a889244e
tests: implement HasHealth for mock health
2018-12-19 10:39:27 -08:00
Michael Schurter
ab34578740
gofmt -s -w upgrade_int_test.go
2018-12-19 10:39:27 -08:00
Michael Schurter
fc7be6b7f0
client/state: improve upgradeTaskBucket error handling
...
And add a test
2018-12-19 10:39:27 -08:00
Michael Schurter
11e923e508
client/state: add context to errors
...
Unfortunately I don't know how to test these errors. As far as I can
tell they should only happen if there was a programming error in the
upgrade code or the underlying boltdb was corrupted somehow.
2018-12-19 10:39:27 -08:00
Michael Schurter
cba472485b
client/state: use 2 as version; test error path
2018-12-19 10:39:27 -08:00
Michael Schurter
784706a1e5
client/state: support upgrading from 0.8->0.9
...
Also persist and load DeploymentStatus to avoid rechecking health after
client restarts.
2018-12-19 10:39:27 -08:00
Michael Schurter
bd53ccf548
client/state: reorg state buckets to ease transition
...
* Prefix task bucket with task- to prevent name conflicts
* Shorten device manager bucket name
* Remove commented out outdated var
* Update layout comment
2018-12-19 10:22:28 -08:00
Michael Schurter
3a41fd7b31
tr: fix HookState Copy() and Equal() methods
...
They did not take into account the Env field.
2018-12-19 09:58:06 -08:00
Danielle Tomlinson
b63095db60
allocrunner: Close updates routine correctly
2018-12-19 18:32:51 +01:00
Nick Ethier
c98aaad342
devicemanager: fix devicemanager tests
2018-12-19 00:35:12 -05:00
Nick Ethier
1ff3b681da
drivermanager: use correct plugin config types
2018-12-18 23:07:01 -05:00
Nick Ethier
12528cadda
drivermanager: attempt to reattach and shutdown driver plugin if blocked by allow/block lists
2018-12-18 23:01:57 -05:00
Nick Ethier
6951ca487d
drivermanager: use allocID and task name to route task events
2018-12-18 23:01:51 -05:00
Nick Ethier
3100f7bd64
client/pluginmanager: add plugin manager interface to device/driver managers
2018-12-18 22:56:23 -05:00
Nick Ethier
331793e283
client: batch initial fingerprinting in plugin manangers
...
drivermanager: fix pr comments/feedback
2018-12-18 22:56:19 -05:00
Nick Ethier
2f010a2f25
client/drivermananger: fixup issues from rebase and address PR comments
2018-12-18 22:55:38 -05:00
Nick Ethier
32aaedd6b7
tr: deregister task handler on cleanup
2018-12-18 22:55:38 -05:00
Nick Ethier
39ca1b00dd
client/drivermananger: add driver manager
...
The driver manager is modeled after the device manager and is started by the client.
It's responsible for handling driver lifecycle and reattachment state, as well as
processing the incomming fingerprint and task events from each driver. The mananger
exposes a method for registering event handlers for task events that is used by the
task runner to update the server when a task has been updated with an event.
Since driver fingerprinting has been implemented by the driver manager, it is no
longer needed in the fingerprint mananger and has been removed.
2018-12-18 22:55:18 -05:00
Alex Dadgar
07a7555acd
lint
2018-12-18 16:48:00 -08:00
Alex Dadgar
ed4f8eac6e
Add plugin API versioning to plugin loader and plugins
2018-12-18 16:48:00 -08:00
Alex Dadgar
296141bb58
Merge pull request #5002 from hashicorp/b-task-config-resources
...
Convert driver resource to AllocatedTaskResource
2018-12-18 16:46:34 -08:00
Danielle Tomlinson
5d3e27e691
Merge pull request #5007 from hashicorp/dani/f-allocrunner-async
...
allocrunner: Async api for shutdown/destroy/update
2018-12-19 01:26:41 +01:00
Alex Dadgar
517bf1c35f
Fix unit tests + upgrade pathing resources
2018-12-18 15:50:44 -08:00
Alex Dadgar
d5512c39f0
Lint
2018-12-18 15:50:44 -08:00
Alex Dadgar
7a0b73341a
LinuxResources doesn't use task.Resources
2018-12-18 15:50:44 -08:00
Alex Dadgar
cd6879409c
Drivers
2018-12-18 15:50:11 -08:00
Alex Dadgar
da6925bfc1
utilities
2018-12-18 15:48:52 -08:00
Danielle Tomlinson
b92bc1178d
taskrunner: Use a random suffix for Task Config
...
The RestartCount is not really suitable for use as a source of
uniqueness within task invocations as it is not monotonic, and interacts
with the restart stanza in a users config, so conflates restarts due to
task failures, with restarts due to enviromental changes, such as consul
template or vault secrets changing.
Here we instead use a substring from a uuid, which is more random than
we strictly need, but is nicer than rolling our own random string
generator here.
2018-12-19 00:38:54 +01:00
Danielle Tomlinson
f619db297f
client: Update tests for async destroy
2018-12-18 23:38:34 +01:00
Danielle Tomlinson
502f36335e
allocrunner: Drop and log updates after closing waitCh
2018-12-18 23:38:34 +01:00
Danielle Tomlinson
5464a9565a
allocrunner: Documentation for ShutdownCh/DestroyCh
2018-12-18 23:38:34 +01:00
Danielle Tomlinson
9f1b53f2a8
fixup: Log when we detect out of order updates
2018-12-18 23:38:33 +01:00
Danielle Tomlinson
69fc73767a
allocrunner: Handle updates asynchronously
...
This creates a new buffered channel and goroutine on the allocrunner for
serializing updates to allocations. This allows us to take updates off
the routine that is used from processing updates from the server,
without having complicated machinery for tracking update lifetimes, or
other external synchronization.
This results in a nice performance improvement and signficantly better
throughput on batch changes such as preempting a large number of jobs
for a larger placement.
2018-12-18 23:38:33 +01:00
Danielle Tomlinson
6f636ea15a
gc: Wait for allocrunners to be destroyed
2018-12-18 23:38:33 +01:00
Danielle Tomlinson
934d2e6bf6
client: Async API for shutdown/destroy allocrunners
2018-12-18 23:38:33 +01:00
Danielle Tomlinson
800bd57333
allocrunner: Async shutdown and destroy
...
This commit reduces the locking required to shutdown or destroy
allocrunners, and allows parallel shutdown and destroy of allocrunners during
shutdown.
2018-12-18 23:38:33 +01:00
Danielle Tomlinson
bba8b4ef4f
Merge pull request #4989 from hashicorp/dani/b-client-update-race-condition
...
client: Give a copy of clientconfig to allocrunner
2018-12-17 10:49:46 +01:00