github.com/jrxfive/nomad@v0.6.1-0.20170802162750-1fef470e89bf/CHANGELOG.md (about) 1 ## 0.6.1 (Unreleased) 2 3 IMPROVEMENTS: 4 * core: `distinct_property` constraint can set the number of allocations that 5 are allowed to share a property value [GH-2942] 6 * driver/rkt: support read-only volume mounts [GH-2883] 7 8 BUG FIXES: 9 * core: Fix incorrect destructive update with `distinct_property` constraint 10 [GH-2939] 11 * cli: Fix autocmpleting global flags [GH-2928] 12 * cli: Fix panic when using 0.6.0 cli with an older cluster [GH-2929] 13 * driver/docker: Fix leaking plugin file used by syslog server [GH-2937] 14 15 ## 0.6.0 (July 26, 2017) 16 17 __BACKWARDS INCOMPATIBILITIES:__ 18 * cli: When given a prefix that does not resolve to a particular object, 19 commands now return exit code 1 rather than 0. 20 21 IMPROVEMENTS: 22 * core: Rolling updates based on allocation health [GH-2621, GH-2634, GH-2799] 23 * core: New deployment object to track job updates [GH-2621, GH-2634, GH-2799] 24 * core: Default advertise to private IP address if bind is 0.0.0.0 [GH-2399] 25 * core: Track multiple job versions and add a stopped state for jobs [GH-2566] 26 * core: Job updates can create canaries before beginning rolling update 27 [GH-2621, GH-2634, GH-2799] 28 * core: Back-pressure when evaluations are nacked and ensure scheduling 29 progress on evaluation failures [GH-2555] 30 * agent/config: Late binding to IP addresses using go-sockaddr/template syntax 31 [GH-2399] 32 * api: Add `verify_https_client` to require certificates from HTTP clients 33 [GH-2587] 34 * api/job: Ability to revert job to older versions [GH-2575] 35 * cli: Autocomplete for CLI commands [GH-2848] 36 * client: Use a random host UUID by default [GH-2735] 37 * client: Add `NOMAD_GROUP_NAME` environment variable [GH-2877] 38 * client: Environment variables for client DC and Region [GH-2507] 39 * client: Hash host ID so its stable and well distributed [GH-2541] 40 * client: GC dead allocs if total allocs > `gc_max_allocs` tunable [GH-2636] 41 * client: Persist state using bolt-db and more efficient write patterns 42 [GH-2610] 43 * client: Fingerprint all routable addresses on an interface including IPv6 44 addresses [GH-2536] 45 * client/artifact: Support .xz archives [GH-2836] 46 * client/artifact: Allow specifying a go-getter mode [GH-2781] 47 * client/artifact: Support non-Amazon S3-compatible sources [GH-2781] 48 * client/template: Support reading env vars from templates [GH-2654] 49 * config: Support Unix socket addresses for Consul [GH-2622] 50 * discovery: Advertise driver-specified IP address and port [GH-2709] 51 * discovery: Support `tls_skip_verify` for Consul HTTPS checks [GH-2467] 52 * driver/docker: Allow specifying extra hosts [GH-2547] 53 * driver/docker: Allow setting seccomp profiles [GH-2658] 54 * driver/docker: Support Docker credential helpers [GH-2651] 55 * driver/docker: Auth failures can optionally be ignored [GH-2786] 56 * driver/docker: Add `driver.docker.bridge_ip` node attribute [GH-2797] 57 * driver/docker: Allow setting container IP with user defined networks 58 [GH-2535] 59 * driver/rkt: Support `no_overlay` [GH-2702] 60 * driver/rkt: Support `insecure_options` list [GH-2695] 61 * server: Allow tuning of node heartbeat TTLs [GH-2859] 62 * server/networking: Shrink dynamic port range to not overlap with majority of 63 operating system's ephemeral port ranges to avoid port conflicts [GH-2856] 64 65 BUG FIXES: 66 * core: Protect against nil job in new allocation, avoiding panic [GH-2592] 67 * core: System jobs should be running until explicitly stopped [GH-2750] 68 * core: Prevent invalid job updates (eg service -> batch) [GH-2746] 69 * client: Lookup `ip` utility on `$PATH` [GH-2729] 70 * client: Add sticky bit to temp directory [GH-2519] 71 * client: Shutdown task group leader before other tasks [GH-2753] 72 * client: Include symlinks in snapshots when migrating disks [GH-2687] 73 * client: Regression for allocation directory unix perms introduced in v0.5.6 74 fixed [GH-2675] 75 * client: Client syncs allocation state with server before waiting for 76 allocation destroy fixing a corner case in which an allocation may be blocked 77 till destroy [GH-2563] 78 * client: Improved state file handling and reduced write volume [GH-2878] 79 * client/artifact: Honor netrc [GH-2524] 80 * client/artifact: Handle tars where file in directory is listed before 81 directory [GH-2524] 82 * client/config: Use `cpu_total_compute` whenever it is set [GH-2745] 83 * client/config: Respect `vault.tls_server_name` setting in consul-template 84 [GH-2793] 85 * driver/exec: Properly set file/dir ownership in chroots [GH-2552] 86 * driver/docker: Fix panic in Docker driver on Windows [GH-2614] 87 * driver/rkt: Fix env var interpolation [GH-2777] 88 * jobspec/validation: Prevent static port conflicts [GH-2807] 89 * server: Reject non-TLS clients when TLS enabled [GH-2525] 90 * server: Fix a panic in plan evaluation with partial failures and all_at_once 91 set [GH-2544] 92 * server/periodic: Restoring periodic jobs takes launch time zone into 93 consideration [GH-2808] 94 * server/vault: Fix Vault Client panic when given nonexistant role [GH-2648] 95 * telemetry: Fix merging of use node name [GH-2762] 96 97 ## 0.5.6 (March 31, 2017) 98 99 IMPROVEMENTS: 100 * api: Improve log API error when task doesn't exist or hasn't started 101 [GH-2512] 102 * client: Improve error message when artifact downloading fails [GH-2289] 103 * client: Track task start/finish time [GH-2512] 104 * client/template: Access Node meta and attributes in template [GH-2488] 105 106 BUG FIXES: 107 * core: Fix periodic job state switching to dead incorrectly [GH-2486] 108 * core: Fix dispatch of periodic job launching allocations immediately 109 [GH-2489] 110 * api: Fix TLS in logs and fs commands/APIs [GH-2290] 111 * cli/plan: Fix diff alignment and remove no change DC output [GH-2465] 112 * client: Fix panic when restarting non-running tasks [GH-2480] 113 * client: Fix env vars when multiple tasks and ports present [GH-2491] 114 * client: Fix `user` attribute disregarding membership of non-main group 115 [GH-2461] 116 * client/vault: Stop Vault token renewal on task exit [GH-2495] 117 * driver/docker: Proper reference counting through task restarts [GH-2484] 118 119 ## 0.5.5 (March 14, 2017) 120 121 __BACKWARDS INCOMPATIBILITIES:__ 122 * api: The api package definition of a Job has changed from exposing 123 primitives to pointers to primitives to allow defaulting of unset fields. 124 * driver/docker: The `load` configuration took an array of paths to images 125 prior to this release. A single image is expected by the driver so this 126 behavior has been changed to take a single path as a string. Jobs using the 127 `load` command should update the syntax to a single string. [GH-2361] 128 129 IMPROVEMENTS: 130 * core: Handle Serf Reap event [GH-2310] 131 * core: Update Serf and Memberlist for more reliable gossip [GH-2255] 132 * api: API defaults missing values [GH-2300] 133 * api: Validate the restart policy interval [GH-2311] 134 * api: New task event for task environment setup [GH-2302] 135 * api/cli: Add nomad operator command and API for interacting with Raft 136 configuration [GH-2305] 137 * cli: node-status displays enabled drivers on the node [GH-2349] 138 * client: Apply GC related configurations properly [GH-2273] 139 * client: Don't force uppercase meta keys in env vars [GH-2338] 140 * client: Limit parallelism during garbage collection [GH-2427] 141 * client: Don't exec `uname -r` for node attribute kernel.version [GH-2380] 142 * client: Artifact support for git and hg as well as netrc support [GH-2386] 143 * client: Add metrics to show number of allocations on in each state [GH-2425] 144 * client: Add `NOMAD_{IP,PORT}_<task>_<label>` environment variables [GH-2426] 145 * client: Allow specification of `cpu_total_compute` to override fingerprinter 146 [GH-2447] 147 * client: Reproducible Node ID on OSes that provide system-level UUID 148 [GH-2277] 149 * driver/docker: Add support for volume drivers [GH-2351] 150 * driver/docker: Docker image coordinator and caching [GH-2361] 151 * jobspec: Add leader task to allow graceful shutdown of other tasks within 152 the task group [GH-2308] 153 * periodic: Allow specification of timezones in Periodic Jobs [GH-2321] 154 * scheduler: New `distinct_property` constraint [GH-2418] 155 * server: Allow specification of eval/job gc threshold [GH-2370] 156 * server/vault: Vault Client on Server handles SIGHUP to reload configs 157 [GH-2270] 158 * telemetry: Clients report allocated/unallocated resources [GH-2327] 159 * template: Allow specification of template delimiters [GH-2315] 160 * template: Permissions can be set on template destination file [GH-2262] 161 * vault: Server side Vault telemetry [GH-2318] 162 * vault: Disallow root policy from being specified [GH-2309] 163 164 BUG FIXES: 165 * core: Handle periodic paramaterized jobs [GH-2385] 166 * core: Improve garbage collection of stopped batch jobs [GH-2432] 167 * api: Fix escaping of HTML characters [GH-2322] 168 * cli: Display disk resources in alloc-status [GH-2404] 169 * client: Drivers log during fingerprinting [GH-2337] 170 * client: Fix race condition with deriving vault tokens [GH-2275] 171 * client: Fix remounting alloc dirs after reboots [GH-2391] [GH-2394] 172 * client: Replace `-` with `_` in environment variable names [GH-2406] 173 * client: Fix panic and deadlock during client restore state when prestart 174 fails [GH-2376] 175 * config: Fix Consul Config Merging/Copying [GH-2278] 176 * config: Fix Client reserved resource merging panic [GH-2281] 177 * server: Fix panic when forwarding Vault derivation requests from non-leader 178 servers [GH-2267] 179 180 ## 0.5.4 (January 31, 2017) 181 182 IMPROVEMENTS: 183 * client: Made the GC related tunables configurable via client configuration 184 [GH-2261] 185 186 BUG FIXES: 187 * client: Fix panic when upgrading to 0.5.3 [GH-2256] 188 189 ## 0.5.3 (January 30, 2017) 190 191 IMPROVEMENTS: 192 * core: Introduce parameterized jobs and dispatch command/API [GH-2128] 193 * core: Cancel blocked evals upon successful one for job [GH-2155] 194 * api: Added APIs for requesting GC of allocations [GH-2192] 195 * api: Job summary endpoint includes summary status for child jobs [GH-2128] 196 * api/client: Plain text log streaming suitable for viewing logs in a browser 197 [GH-2235] 198 * cli: Defaulting to showing allocations which belong to currently registered 199 job [GH-2032] 200 * client: Garbage collect Allocation Runners to free up disk resouces 201 [GH-2081] 202 * client: Don't retrieve Driver Stats if unsupported [GH-2173] 203 * client: Filter log lines in the executor based on client's log level 204 [GH-2172] 205 * client: Added environment variables to discover addresses of sibling tasks 206 in an allocation [GH-2223] 207 * discovery: Register service with duplicate names on different ports [GH-2208] 208 * driver/docker: Add support for network aliases [GH-1980] 209 * driver/docker: Add `force_pull` option to force downloading an image [GH-2147] 210 * driver/docker: Retry when image is not found while creating a container 211 [GH-2222] 212 * driver/java: Support setting class_path and class name. [GH-2199] 213 * telemetry: Prefix gauge values with node name instead of hostname [GH-2098] 214 * template: The template block supports keyOrDefault [GH-2209] 215 * template: The template block can now interpolate Nomad environment variables 216 [GH-2209] 217 * vault: Improve validation of the Vault token given to Nomad servers 218 [GH-2226] 219 * vault: Support setting the Vault role to derive tokens from with 220 `create_from_role` setting [GH-2226] 221 222 BUG FIXES: 223 * client: Fixed namespacing for the cpu arch attribute [GH-2161] 224 * client: Fix issue where allocations weren't pulled for several minutes. This 225 manifested as slow starts, delayed kills, etc [GH-2177] 226 * client: Fix a panic that would occur with a racy alloc migration 227 cancellation [GH-2231] 228 * config: Fix merging of Consul options which caused auto_adverise to be 229 ignored [GH-2159] 230 * driver: Fix image based drivers (eg docker) having host env vars set [GH-2211] 231 * driver/docker: Fix Docker auth/logging interprelation [GH-2063, GH-2130] 232 * driver/docker: Fix parsing of Docker Auth Configurations. New parsing is 233 in-line with Docker itself. Also log debug message if auth lookup failed 234 [GH-2190] 235 * template: Fix splay being used as a wait and instead randomize the delay 236 from 0 seconds to splay duration [GH-2227] 237 238 ## 0.5.2 (December 23, 2016) 239 240 BUG FIXES: 241 * client: Fixed a race condition and remove panic when handling duplicate 242 allocations [GH-2096] 243 * client: Cancel wait for remote allocation if migration is no longer required 244 [GH-2097] 245 * client: Failure to stat a single mountpoint does not cause all of host 246 resource usage collection to fail [GH-2090] 247 248 ## 0.5.1 (December 12, 2016) 249 250 IMPROVEMENTS: 251 * driver/rkt: Support rkt's `--dns=host` and `--dns=none` options [GH-2028] 252 253 BUG FIXES: 254 * agent/config: Fix use of IPv6 addresses [GH-2036] 255 * api: Fix file descriptor leak and high CPU usage when using the logs 256 endpoint [GH-2079] 257 * cli: Improve parsing error when a job without a name is specified [GH-2030] 258 * client: Fixed permissions of migrated allocation directory [GH-2061] 259 * client: Ensuring allocations are not blocked more than once [GH-2040] 260 * client: Fix race on StreamFramer Destroy which would cause a panic [GH-2007] 261 * client: Not migrating allocation directories on the same client if sticky is 262 turned off [GH-2017] 263 * client/vault: Fix issue in which deriving a Vault token would fail with 264 allocation does not exist due to stale queries [GH-2050] 265 * driver/docker: Make container exist errors non-retriable by task runner 266 [GH-2033] 267 * driver/docker: Fixed an issue related to purging containers with same name 268 as Nomad is trying to start [GH-2037] 269 * driver/rkt: Fix validation of rkt volumes [GH-2027] 270 271 ## 0.5.0 (November 16, 2016) 272 273 __BACKWARDS INCOMPATIBILITIES:__ 274 * jobspec: Extracted the disk resources from the task to the task group. The 275 new block is name `ephemeral_disk`. Nomad will automatically convert 276 existing jobs but newly submitted jobs should refactor the disk resource 277 [GH-1710, GH-1679] 278 * agent/config: `network_speed` is now an override and not a default value. If 279 the network link speed is not detected a default value is applied. 280 281 IMPROVEMENTS: 282 * core: Support for gossip encryption [GH-1791] 283 * core: Vault integration to handle secure introduction of tasks [GH-1583, 284 GH-1713] 285 * core: New `set_contains` constraint to determine if a set contains all 286 specified values [GH-1839] 287 * core: Scheduler version enforcement disallows different scheduler version 288 from making decisions simultaneously [GH-1872] 289 * core: Introduce node SecretID which can be used to minimize the available 290 surface area of RPCs to malicious Nomad Clients [GH-1597] 291 * core: Add `sticky` volumes which inform the scheduler to prefer placing 292 updated allocations on the same node and to reuse the `local/` and 293 `alloc/data` directory from previous allocation allowing semi-persistent 294 data and allow those folders to be synced from a remote node [GH-1654, 295 GH-1741] 296 * agent: Add DataDog telemetry sync [GH-1816] 297 * agent: Allow Consul health checks to use bind address rather than advertise 298 [GH-1866] 299 * agent/config: Advertise addresses do not need to specify a port [GH-1902] 300 * agent/config: Bind address defaults to 0.0.0.0 and Advertise defaults to 301 hostname [GH-1955] 302 * api: Support TLS for encrypting Raft, RPC and HTTP APIs [GH-1853] 303 * api: Implement blocking queries for querying a job's evaluations [GH-1892] 304 * cli: `nomad alloc-status` shows allocation creation time [GH-1623] 305 * cli: `nomad node-status` shows node metadata in verbose mode [GH-1841] 306 * client: Failed RPCs are retried on all servers [GH-1735] 307 * client: Fingerprint and driver blacklist support [GH-1949] 308 * client: Introduce a `secrets/` directory to tasks where sensitive data can 309 be written [GH-1681] 310 * client/jobspec: Add support for templates that can render static files, 311 dynamic content from Consul and secrets from Vault [GH-1783] 312 * driver: Export `NOMAD_JOB_NAME` environment variable [GH-1804] 313 * driver/docker: Docker For Mac support [GH-1806] 314 * driver/docker: Support Docker volumes [GH-1767] 315 * driver/docker: Allow Docker logging to be configured [GH-1767] 316 * driver/docker: Add `userns_mode` (`--userns`) support [GH-1940] 317 * driver/lxc: Support for LXC containers [GH-1699] 318 * driver/rkt: Support network configurations [GH-1862] 319 * driver/rkt: Support rkt volumes (rkt >= 1.0.0 required) [GH-1812] 320 * server/rpc: Added an RPC endpoint for retreiving server members [GH-1947] 321 322 BUG FIXES: 323 * core: Fix case where dead nodes were not properly handled by System 324 scheduler [GH-1715] 325 * agent: Handle the SIGPIPE signal preventing panics on journalctl restarts 326 [GH-1802] 327 * api: Disallow filesystem APIs to read paths that escape the allocation 328 directory [GH-1786] 329 * cli: `nomad run` failed to run on Windows [GH-1690] 330 * cli: `alloc-status` and `node-status` work without access to task stats 331 [GH-1660] 332 * cli: `alloc-status` does not query for allocation statistics if node is down 333 [GH-1844] 334 * client: Prevent race when persisting state file [GH-1682] 335 * client: Retry recoverable errors when starting a driver [GH-1891] 336 * client: Do not validate the command does not contain spaces [GH-1974] 337 * client: Fix old services not getting removed from consul on update [GH-1668] 338 * client: Preserve permissions of nested directories while chrooting [GH-1960] 339 * client: Folder permissions are dropped even when not running as root [GH-1888] 340 * client: Artifact download failures will be retried before failing tasks 341 [GH-1558] 342 * client: Fix a memory leak in the executor that caused failed allocations 343 [GH-1762] 344 * client: Fix a crash related to stats publishing when driver hasn't started 345 yet [GH-1723] 346 * client: Chroot environment is only created once, avoid potential filesystem 347 errors [GH-1753] 348 * client: Failures to download an artifact are retried according to restart 349 policy before failing the allocation [GH-1653] 350 * client/executor: Prevent race when updating a job configuration with the 351 logger [GH-1886] 352 * client/fingerprint: Fix inconsistent CPU MHz fingerprinting [GH-1366] 353 * env/aws: Fix an issue with reserved ports causing placement failures 354 [GH-1617] 355 * discovery: Interpolate all service and check fields [GH-1966] 356 * discovery: Fix old services not getting removed from Consul on update 357 [GH-1668] 358 * discovery: Fix HTTP timeout with Server HTTP health check when there is no 359 leader [GH-1656] 360 * discovery: Fix client flapping when server is in a different datacenter as 361 the client [GH-1641] 362 * discovery/jobspec: Validate service name after interpolation [GH-1852] 363 * driver/docker: Fix `local/` directory mount into container [GH-1830] 364 * driver/docker: Interpolate all string configuration variables [GH-1965] 365 * jobspec: Tasks without a resource block no longer fail to validate [GH-1864] 366 * jobspec: Update HCL to fix panic in JSON parsing [GH-1754] 367 368 ## 0.4.1 (August 18, 2016) 369 370 __BACKWARDS INCOMPATIBILITIES:__ 371 * telemetry: Operators will have to explicitly opt-in for Nomad client to 372 publish allocation and node metrics 373 374 IMPROVEMENTS: 375 * core: Allow count 0 on system jobs [GH-1421] 376 * core: Summarize the current status of registered jobs. [GH-1383, GH-1517] 377 * core: Gracefully handle short lived outages by holding RPC calls [GH-1403] 378 * core: Introduce a lost state for allocations that were on Nodes that died 379 [GH-1516] 380 * api: client Logs endpoint for streaming task logs [GH-1444] 381 * api/cli: Support for tailing/streaming files [GH-1404, GH-1420] 382 * api/server: Support for querying job summaries [GH-1455] 383 * cli: `nomad logs` command for streaming task logs [GH-1444] 384 * cli: `nomad status` shows the create time of allocations [GH-1540] 385 * cli: `nomad plan` exit code indicates if changes will occur [GH-1502] 386 * cli: status commands support JSON output and go template formating [GH-1503] 387 * cli: Validate and plan command supports reading from stdin [GH-1460, 388 GH-1458] 389 * cli: Allow basic authentication through address and environment variable 390 [GH-1610] 391 * cli: `nomad node-status` shows volume name for non-physical volumes instead 392 of showing 0B used [GH-1538] 393 * cli: Support retrieving job files using go-getter in the `run`, `plan` and 394 `validate` command [GH-1511] 395 * client: Add killing event to task state [GH-1457] 396 * client: Fingerprint network speed on Windows [GH-1443] 397 * discovery: Support for initial check status [GH-1599] 398 * discovery: Support for query params in health check urls [GH-1562] 399 * driver/docker: Allow working directory to be configured [GH-1513] 400 * driver/docker: Remove docker volumes when removing container [GH-1519] 401 * driver/docker: Set windows containers network mode to nat by default 402 [GH-1521] 403 * driver/exec: Allow chroot environment to be configurable [GH-1518] 404 * driver/qemu: Allows users to pass extra args to the qemu driver [GH-1596] 405 * telemetry: Circonus integration for telemetry metrics [GH-1459] 406 * telemetry: Allow operators to opt-in for publishing metrics [GH-1501] 407 408 BUG FIXES: 409 * agent: Reload agent configuration on SIGHUP [GH-1566] 410 * core: Sanitize empty slices/maps in jobs to avoid incorrect create/destroy 411 updates [GH-1434] 412 * core: Fix race in which a Node registers and doesn't receive system jobs 413 [GH-1456] 414 * core: Fix issue in which Nodes with large amount of reserved ports would 415 casue dynamic port allocations to fail [GH-1526] 416 * core: Fix a condition in which old batch allocations could get updated even 417 after terminal. In a rare case this could cause a server panic [GH-1471] 418 * core: Do not update the Job attached to Allocations that have been marked 419 terminal [GH-1508] 420 * agent: Fix advertise address when using IPv6 [GH-1465] 421 * cli: Fix node-status when using IPv6 advertise address [GH-1465] 422 * client: Merging telemetry configuration properly [GH-1670] 423 * client: Task start errors adhere to restart policy mode [GH-1405] 424 * client: Reregister with servers if node is unregistered [GH-1593] 425 * client: Killing an allocation doesn't cause allocation stats to block 426 [GH-1454] 427 * driver/docker: Disable swap on docker driver [GH-1480] 428 * driver/docker: Fix improper gating on priviledged mode [GH-1506] 429 * driver/docker: Default network type is "nat" on Windows [GH-1521] 430 * driver/docker: Cleanup created volume when destroying container [GH-1519] 431 * driver/rkt: Set host environment variables [GH-1581] 432 * driver/rkt: Validate the command and trust_prefix configs [GH-1493] 433 * plan: Plan on system jobs discounts nodes that do not meet required 434 constraints [GH-1568] 435 436 ## 0.4.0 (June 28, 2016) 437 438 __BACKWARDS INCOMPATIBILITIES:__ 439 * api: Tasks are no longer allowed to have slashes in their name [GH-1210] 440 * cli: Remove the eval-monitor command. Users should switch to `nomad 441 eval-status -monitor`. 442 * config: Consul configuration has been moved from client options map to 443 consul block under client configuration 444 * driver/docker: Enabled SSL by default for pulling images from docker 445 registries. [GH-1336] 446 447 IMPROVEMENTS: 448 * core: Scheduler reuses blocked evaluations to avoid unbounded creation of 449 evaluations under high contention [GH-1199] 450 * core: Scheduler stores placement failures in evaluations, no longer 451 generating failed allocations for debug information [GH-1188] 452 * api: Faster JSON response encoding [GH-1182] 453 * api: Gzip compress HTTP API requests [GH-1203] 454 * api: Plan api introduced for the Job endpoint [GH-1168] 455 * api: Job endpoint can enforce Job Modify Index to ensure job is being 456 modified from a known state [GH-1243] 457 * api/client: Add resource usage APIs for retrieving tasks/allocations/host 458 resource usage [GH-1189] 459 * cli: Faster when displaying large amounts ouptuts [GH-1362] 460 * cli: Deprecate `eval-monitor` and introduce `eval-status` [GH-1206] 461 * cli: Unify the `fs` family of commands to be a single command [GH-1150] 462 * cli: Introduce `nomad plan` to dry-run a job through the scheduler and 463 determine its effects [GH-1181] 464 * cli: node-status command displays host resource usage and allocation 465 resources [GH-1261] 466 * cli: Region flag and environment variable introduced to set region 467 forwarding. Automatic region forwarding for run and plan [GH-1237] 468 * client: If Consul is available, automatically bootstrap Nomad Client 469 using the `_nomad` service in Consul. Nomad Servers now register 470 themselves with Consul to make this possible. [GH-1201] 471 * drivers: Qemu and Java can be run without an artifact being download. Useful 472 if the artifact exists inside a chrooted directory [GH-1262] 473 * driver/docker: Added a client options to set SELinux labels for container 474 bind mounts. [GH-788] 475 * driver/docker: Enabled SSL by default for pulling images from docker 476 registries. [GH-1336] 477 * server: If Consul is available, automatically bootstrap Nomad Servers 478 using the `_nomad` service in Consul. [GH-1276] 479 480 BUG FIXES: 481 * core: Improve garbage collection of allocations and nodes [GH-1256] 482 * core: Fix a potential deadlock if establishing leadership fails and is 483 retried [GH-1231] 484 * core: Do not restart successful batch jobs when the node is removed/drained 485 [GH-1205] 486 * core: Fix an issue in which the scheduler could be invoked with insufficient 487 state [GH-1339] 488 * core: Updated User, Meta or Resources in a task cause create/destroy updates 489 [GH-1128, GH-1153] 490 * core: Fix blocked evaluations being run without properly accounting for 491 priority [GH-1183] 492 * api: Tasks are no longer allowed to have slashes in their name [GH-1210] 493 * client: Delete tmp files used to communicate with execcutor [GH-1241] 494 * client: Prevent the client from restoring with incorrect task state [GH-1294] 495 * discovery: Ensure service and check names are unique [GH-1143, GH-1144] 496 * driver/docker: Ensure docker client doesn't time out after a minute. 497 [GH-1184] 498 * driver/java: Fix issue in which Java on darwin attempted to chroot [GH-1262] 499 * driver/docker: Fix issue in which logs could be spliced [GH-1322] 500 501 ## 0.3.2 (April 22, 2016) 502 503 IMPROVEMENTS: 504 * core: Garbage collection partitioned to avoid system delays [GH-1012] 505 * core: Allow count zero task groups to enable blue/green deploys [GH-931] 506 * core: Validate driver configurations when submitting jobs [GH-1062, GH-1089] 507 * core: Job Deregister forces an evaluation for the job even if it doesn't 508 exist [GH-981] 509 * core: Rename successfully finished allocations to "Complete" rather than 510 "Dead" for clarity [GH-975] 511 * cli: `alloc-status` explains restart decisions [GH-984] 512 * cli: `node-drain -self` drains the local node [GH-1068] 513 * cli: `node-status -self` queries the local node [GH-1004] 514 * cli: Destructive commands now require confirmation [GH-983] 515 * cli: `alloc-status` display is less verbose by default [GH-946] 516 * cli: `server-members` displays the current leader in each region [GH-935] 517 * cli: `run` has an `-output` flag to emit a JSON version of the job [GH-990] 518 * cli: New `inspect` command to display a submitted job's specification 519 [GH-952] 520 * cli: `node-status` display is less verbose by default and shows a node's 521 total resources [GH-946] 522 * client: `artifact` source can be interpreted [GH-1070] 523 * client: Add IP and Port environment variables [GH-1099] 524 * client: Nomad fingerprinter to detect client's version [GH-965] 525 * client: Tasks can interpret Meta set in the task group and job [GH-985] 526 * client: All tasks in a task group are killed when a task fails [GH-962] 527 * client: Pass environment variables from host to exec based tasks [GH-970] 528 * client: Allow task's to be run as particular user [GH-950, GH-978] 529 * client: `artifact` block now supports downloading paths relative to the 530 task's directory [GH-944] 531 * docker: Timeout communications with Docker Daemon to avoid deadlocks with 532 misbehaving Docker Daemon [GH-1117] 533 * discovery: Support script based health checks [GH-986] 534 * discovery: Allowing registration of services which don't expose ports 535 [GH-1092] 536 * driver/docker: Support for `tty` and `interactive` options [GH-1059] 537 * jobspec: Improved validation of services referencing port labels [GH-1097] 538 * periodic: Periodic jobs are always evaluated in UTC timezone [GH-1074] 539 540 BUG FIXES: 541 * core: Prevent garbage collection of running batch jobs [GH-989] 542 * core: Trigger System scheduler when Node drain is disabled [GH-1106] 543 * core: Fix issue where in-place updated allocation double counted resources 544 [GH-957] 545 * core: Fix drained, batched allocations from being migrated indefinitely 546 [GH-1086] 547 * client: Garbage collect Docker containers on exit [GH-1071] 548 * client: Fix common exec failures on CentOS and Amazon Linux [GH-1009] 549 * client: Fix S3 artifact downloading with IAM credentials [GH-1113] 550 * client: Fix handling of environment variables containing multiple equal 551 signs [GH-1115] 552 553 ## 0.3.1 (March 16, 2016) 554 555 __BACKWARDS INCOMPATIBILITIES:__ 556 * Service names that dont conform to RFC-1123 and RFC-2782 will fail 557 validation. To fix, change service name to conform to the RFCs before 558 running the job [GH-915] 559 * Jobs that downloaded artifacts will have to be updated to the new syntax and 560 be resubmitted. The new syntax consolidates artifacts to the `task` rather 561 than being duplicated inside each driver config [GH-921] 562 563 IMPROVEMENTS: 564 * cli: Validate job file schemas [GH-900] 565 * client: Add environment variables for task name, allocation ID/Name/Index 566 [GH-869, GH-896] 567 * client: Starting task is retried under the restart policy if the error is 568 recoverable [GH-859] 569 * client: Allow tasks to download artifacts, which can be archives, prior to 570 starting [GH-921] 571 * config: Validate Nomad configuration files [GH-910] 572 * config: Client config allows reserving resources [GH-910] 573 * driver/docker: Support for ECR [GH-858] 574 * driver/docker: Periodic Fingerprinting [GH-893] 575 * driver/docker: Preventing port reservation for log collection on Unix platforms [GH-897] 576 * driver/rkt: Pass DNS information to rkt driver [GH-892] 577 * jobspec: Require RFC-1123 and RFC-2782 valid service names [GH-915] 578 579 BUG FIXES: 580 * core: No longer cancel evaluations that are delayed in the plan queue 581 [GH-884] 582 * api: Guard client/fs/ APIs from being accessed on a non-client node [GH-890] 583 * client: Allow dashes in variable names during interprelation [GH-857] 584 * client: Updating kill timeout adheres to operator specified maximum value [GH-878] 585 * client: Fix a case in which clients would pull but not run allocations 586 [GH-906] 587 * consul: Remove concurrent map access [GH-874] 588 * driver/exec: Stopping tasks with more than one pid in a cgroup [GH-855] 589 * client/executor/linux: Add /run/resolvconf/ to chroot so DNS works [GH-905] 590 591 ## 0.3.0 (February 25, 2016) 592 593 __BACKWARDS INCOMPATIBILITIES:__ 594 * Stdout and Stderr log files of tasks have moved from task/local to 595 alloc/logs [GH-851] 596 * Any users of the runtime environment variable `$NOMAD_PORT_` will need to 597 update to the new `${NOMAD_ADDR_}` varriable [GH-704] 598 * Service names that include periods will fail validation. To fix, remove any 599 periods from the service name before running the job [GH-770] 600 * Task resources are now validated and enforce minimum resources. If a job 601 specifies resources below the minimum they will need to be updated [GH-739] 602 * Node ID is no longer specifiable. For users who have set a custom Node 603 ID, the node should be drained before Nomad is updated and the data_dir 604 should be deleted before starting for the first time [GH-675] 605 * Users of custom restart policies should update to the new syntax which adds 606 a `mode` field. The `mode` can be either `fail` or `delay`. The default for 607 `batch` and `service` jobs is `fail` and `delay` respectively [GH-594] 608 * All jobs that interpret variables in constraints or driver configurations 609 will need to be updated to the new syntax which wraps the interpreted 610 variable in curly braces. (`$node.class` becomes `${node.class}`) [GH-760] 611 612 IMPROVEMENTS: 613 * core: Populate job status [GH-663] 614 * core: Cgroup fingerprinter [GH-712] 615 * core: Node class constraint [GH-618] 616 * core: User specifiable kill timeout [GH-624] 617 * core: Job queueing via blocked evaluations [GH-726] 618 * core: Only reschedule failed batch allocations [GH-746] 619 * core: Add available nodes by DC to AllocMetrics [GH-619] 620 * core: Improve scheduler retry logic under contention [GH-787] 621 * core: Computed node class and stack optimization [GH-691, GH-708] 622 * core: Improved restart policy with more user configuration [GH-594] 623 * core: Periodic specification for jobs [GH-540, GH-657, GH-659, GH-668] 624 * core: Batch jobs are garbage collected from the Nomad Servers [GH-586] 625 * core: Free half the CPUs on leader node for use in plan queue and evaluation 626 broker [GH-812] 627 * core: Seed random number generator used to randomize node traversal order 628 during scheduling [GH-808] 629 * core: Performance improvements [GH-823, GH-825, GH-827, GH-830, GH-832, 630 GH-833, GH-834, GH-839] 631 * core/api: System garbage collection endpoint [GH-828] 632 * core/api: Allow users to set arbitrary headers via agent config [GH-699] 633 * core/cli: Prefix based lookups of allocs/nodes/evals/jobs [GH-575] 634 * core/cli: Print short identifiers and UX cleanup [GH-675, GH-693, GH-692] 635 * core/client: Client pulls minimum set of required allocations [GH-731] 636 * cli: Output of agent-info is sorted [GH-617] 637 * cli: Eval monitor detects zero wait condition [GH-776] 638 * cli: Ability to navigate allocation directories [GH-709, GH-798] 639 * client: Batch allocation updates to the server [GH-835] 640 * client: Log rotation for all drivers [GH-685, GH-763, GH-819] 641 * client: Only download artifacts from http, https, and S3 [GH-841] 642 * client: Create a tmp/ directory inside each task directory [GH-757] 643 * client: Store when an allocation was received by the client [GH-821] 644 * client: Heartbeating and saving state resilient under high load [GH-811] 645 * client: Handle updates to tasks Restart Policy and KillTimeout [GH-751] 646 * client: Killing a driver handle is retried with an exponential backoff 647 [GH-809] 648 * client: Send Node to server when periodic fingerprinters change Node 649 attributes/metadata [GH-749] 650 * client/api: File-system access to allocation directories [GH-669] 651 * drivers: Validate the "command" field contains a single value [GH-842] 652 * drivers: Interpret Nomad variables in environment variables/args [GH-653] 653 * driver/rkt: Add support for CPU/Memory isolation [GH-610] 654 * driver/rkt: Add support for mounting alloc/task directory [GH-645] 655 * driver/docker: Support for .dockercfg based auth for private registries 656 [GH-773] 657 658 BUG FIXES: 659 * core: Node drain could only be partially applied [GH-750] 660 * core: Fix panic when eval Ack occurs at delivery limit [GH-790] 661 * cli: Handle parsing of un-named ports [GH-604] 662 * cli: Enforce absolute paths for data directories [GH-622] 663 * client: Cleanup of the allocation directory [GH-755] 664 * client: Improved stability under high contention [GH-789] 665 * client: Handle non-200 codes when parsing AWS metadata [GH-614] 666 * client: Unmounted of shared alloc dir when client is rebooted [GH-755] 667 * client/consul: Service name changes handled properly [GH-766] 668 * driver/rkt: handle broader format of rkt version outputs [GH-745] 669 * driver/qemu: failed to load image and kvm accelerator fixes [GH-656] 670 671 ## 0.2.3 (December 17, 2015) 672 673 BUG FIXES: 674 * core: Task States not being properly updated [GH-600] 675 * client: Fixes for user lookup to support CoreOS [GH-591] 676 * discovery: Using a random prefix for nomad managed services [GH-579] 677 * discovery: De-Registering Tasks while Nomad sleeps before failed tasks are 678 restarted. 679 * discovery: Fixes for service registration when multiple allocations are bin 680 packed on a node [GH-583] 681 * configuration: Sort configuration files [GH-588] 682 * cli: RetryInterval was not being applied properly [GH-601] 683 684 ## 0.2.2 (December 11, 2015) 685 686 IMPROVEMENTS: 687 * core: Enable `raw_exec` driver in dev mode [GH-558] 688 * cli: Server join/retry-join command line and config options [GH-527] 689 * cli: Nomad reports which config files are loaded at start time, or if none 690 are loaded [GH-536], [GH-553] 691 692 BUG FIXES: 693 * core: Send syslog to `LOCAL0` by default as previously documented [GH-547] 694 * client: remove all calls to default logger [GH-570] 695 * consul: Nomad is less noisy when Consul is not running [GH-567] 696 * consul: Nomad only deregisters services that it created [GH-568] 697 * driver/exec: Shutdown a task now sends the interrupt signal first to the 698 process before forcefully killing it. [GH-543] 699 * driver/docker: Docker driver no longer leaks unix domain socket connections 700 [GH-556] 701 * fingerprint/network: Now correctly detects interfaces on Windows [GH-382] 702 703 ## 0.2.1 (November 28, 2015) 704 705 IMPROVEMENTS: 706 707 * core: Can specify a whitelist for activating drivers [GH-467] 708 * core: Can specify a whitelist for activating fingerprinters [GH-488] 709 * core/api: Can list all known regions in the cluster [GH-495] 710 * client/spawn: spawn package tests made portable (work on Windows) [GH-442] 711 * client/executor: executor package tests made portable (work on Windows) [GH-497] 712 * client/driver: driver package tests made portable (work on windows) [GH-502] 713 * client/discovery: Added more consul client api configuration options [GH-503] 714 * driver/docker: Added TLS client options to the config file [GH-480] 715 * jobspec: More flexibility in naming Services [GH-509] 716 717 BUG FIXES: 718 719 * core: Shared reference to DynamicPorts caused port conflicts when scheduling 720 count > 1 [GH-494] 721 * client/restart policy: Not restarting Batch Jobs if the exit code is 0 [GH-491] 722 * client/service discovery: Make Service IDs unique [GH-479] 723 * client/service: Fixes update to check definitions and services which are already registered [GH-498] 724 * driver/docker: Expose the container port instead of the host port [GH-466] 725 * driver/docker: Support `port_map` for static ports [GH-476] 726 * driver/docker: Pass 0.2.0-style port environment variables to the docker container [GH-476] 727 * jobspec: distinct_hosts constraint can be specified as a boolean (previously panicked) [GH-501] 728 729 ## 0.2.0 (November 18, 2015) 730 731 __BACKWARDS INCOMPATIBILITIES:__ 732 733 * core: HTTP API `/v1/node/<id>/allocations` returns full Allocation and not 734 stub [GH-402] 735 * core: Removed weight and hard/soft fields in constraints [GH-351] 736 * drivers: Qemu and Java driver configurations have been updated to both use 737 `artifact_source` as the source for external images/jars to be ran 738 * jobspec: New reserved and dynamic port specification [GH-415] 739 * jobspec/drivers: Driver configuration supports arbitrary struct to be 740 passed in jobspec [GH-415] 741 742 FEATURES: 743 744 * core: Blocking queries supported in API [GH-366] 745 * core: System Scheduler that runs tasks on every node [GH-287] 746 * core: Regexp, version and lexical ordering constraints [GH-271] 747 * core: distinctHost constraint ensures Task Groups are running on distinct 748 clients [GH-321] 749 * core: Service block definition with Consul registration [GH-463, GH-460, 750 GH-458, GH-455, GH-446, GH-425] 751 * client: GCE Fingerprinting [GH-215] 752 * client: Restart policy for task groups enforced by the client [GH-369, 753 GH-393] 754 * driver/rawexec: Raw Fork/Exec Driver [GH-237] 755 * driver/rkt: Experimental Rkt Driver [GH-165, GH-247] 756 * drivers: Add support for downloading external artifacts to execute for 757 Exec, Raw exec drivers [GH-381] 758 759 IMPROVEMENTS: 760 761 * core: Configurable Node GC threshold [GH-362] 762 * core: Overlap plan verification and plan application for increased 763 throughput [GH-272] 764 * cli: Output of `alloc-status` also displays task state [GH-424] 765 * cli: Output of `server-members` is sorted [GH-323] 766 * cli: Show node attributes in `node-status` [GH-313] 767 * client/fingerprint: Network fingerprinter detects interface suitable for 768 use, rather than defaulting to eth0 [GH-334, GH-356] 769 * client: Client Restore State properly reattaches to tasks and recreates 770 them as needed [GH-364, GH-380, GH-388, GH-392, GH-394, GH-397, GH-408] 771 * client: Periodic Fingerprinting [GH-391] 772 * client: Precise snapshotting of TaskRunner and AllocRunner [GH-403, GH-411] 773 * client: Task State is tracked by client [GH-416] 774 * client: Test Skip Detection [GH-221] 775 * driver/docker: Can now specify auth for docker pull [GH-390] 776 * driver/docker: Can now specify DNS and DNSSearch options [GH-390] 777 * driver/docker: Can now specify the container's hostname [GH-426] 778 * driver/docker: Containers now have names based on the task name. [GH-389] 779 * driver/docker: Mount task local and alloc directory to docker containers [GH-290] 780 * driver/docker: Now accepts any value for `network_mode` to support userspace networking plugins in docker 1.9 781 * driver/java: Pass JVM options in java driver [GH-293, GH-297] 782 * drivers: Use BlkioWeight rather than BlkioThrottleReadIopsDevice [GH-222] 783 * jobspec and drivers: Driver configuration supports arbitrary struct to be passed in jobspec [GH-415] 784 785 BUG FIXES: 786 787 * core: Nomad Client/Server RPC codec encodes strings properly [GH-420] 788 * core: Reset Nack timer in response to scheduler operations [GH-325] 789 * core: Scheduler checks for updates to environment variables [GH-327] 790 * cli: Fix crash when -config was given a directory or empty path [GH-119] 791 * client/fingerprint: Use correct local interface on OS X [GH-361, GH-365] 792 * client: Nomad Client doesn't restart failed containers [GH-198] 793 * client: Reap spawn-daemon process, avoiding a zombie process [GH-240] 794 * client: Resource exhausted errors because of link-speed zero [GH-146, 795 GH-205] 796 * client: Restarting Nomad Client leads to orphaned containers [GH-159] 797 * driver/docker: Apply SELinux label for mounting directories in docker 798 [GH-377] 799 * driver/docker: Docker driver exposes ports when creating container [GH-212, 800 GH-412] 801 * driver/docker: Docker driver uses docker environment variables correctly 802 [GH-407] 803 * driver/qemu: Qemu fingerprint and tests work on both windows/linux [GH-352] 804 805 ## 0.1.2 (October 6, 2015) 806 807 IMPROVEMENTS: 808 809 * client: Nomad client cleans allocations on exit when in dev mode [GH-214] 810 * drivers: Use go-getter for artifact retrieval, add artifact support to 811 Exec, Raw Exec drivers [GH-288] 812 813 ## 0.1.1 (October 5, 2015) 814 815 IMPROVEMENTS: 816 817 * cli: Nomad Client configurable from command-line [GH-191] 818 * client/fingerprint: Native IP detection and user specifiable network 819 interface for fingerprinting [GH-189] 820 * driver/docker: Docker networking mode is configurable [GH-184] 821 * drivers: Set task environment variables [GH-206] 822 823 BUG FIXES: 824 825 * client/fingerprint: Network fingerprinting failed if default network 826 interface did not exist [GH-189] 827 * client: Fixed issue where network resources throughput would be set to 0 828 MBits if the link speed could not be determined [GH-205] 829 * client: Improved detection of Nomad binary [GH-181] 830 * driver/docker: Docker dynamic port mapping were not being set properly 831 [GH-199] 832 833 ## 0.1.0 (September 28, 2015) 834 835 * Initial release 836