## 0.7.1 (Unreleased) __BACKWARDS INCOMPATIBILITIES:__ * config: Nomad no longer parses Atlas configuration stanzas. Atlas has been deprecated since earlier this year. If you have an Atlas stanza in your config file it will have to be removed. IMPROVEMENTS: * core: Allow agents to be run in `rpc_upgrade_mode` when migrating a cluster to TLS rather than changing `heartbeat_grace` * api: Allocations now track and return modify time in addition to create time [GH-3446] * api: Introduced new fields to track details and display message for task events, and deprecated redundant existing fields [GH-3399] * cli: Allocation create and modify times are displayed in a human readable relative format like `6 h ago` [GH-3449] * client: Added metrics to track state transitions of allocations [GH-3061] * driver/docker: Detect OOM kill event [GH-3459] * driver/docker: Adds support for adding host device to container via `--device` [GH-2938] * driver/qemu: Support graceful shutdowns on unix platforms [GH-3411] BUG FIXES: * core: Fixed an issue where the leader server could get into a state where it was no longer performing the periodic leader loop duties after a barrier timeout error [GH-3402] * api: Apply correct memory default when task's do not specify memory explicitly [GH-3520] * cli: Fix passing Consul address via flags [GH-3504] * cli: Fix panic when running `keyring` commands [GH-3509] * client: Fix allocation accounting in GC and trigger GCs on allocation updates [GH-3445] * core: Fixes an issue with jobs that have `auto_revert` set to true, where reverting to a previously stable job that fails to start up causes an infinite cycle of reverts [GH-3496] * template: Fix issue where multiple environment variable templates would be parsed incorrectly when contents of one have changed after the initial rendering [GH-3529] * sentinel: (Nomad Enterprise) Fix an issue that could cause an import error when multiple Sentinel policies are applied ## 0.7.0 (November 1, 2017) __BACKWARDS INCOMPATIBILITIES:__ * driver/rkt: Nomad now requires at least rkt version `1.27.0` for the rkt driver to function. Please update your version of rkt to at least this version. IMPROVEMENTS: * core: Capability based ACL system with authoratative region, providing federated ACLs. * core/enterprise: Sentinel integration for fine grain policy enforcement. * core/enterprise: Namespace support allowing jobs and their associated objects to be isolated from each other and other users of the cluster. * api: Allow force deregistration of a node [GH-3447] * api: New `/v1/agent/health` endpoint for health checks. * api: Metrics endpoint exposes Prometheus formatted metrics [GH-3171] * cli: Consul config option flags for nomad agent command [GH-3327] * discovery: Allow restarting unhealthy tasks with `check_restart` [GH-3105] * driver/rkt: Enable rkt driver to use address_mode = 'driver' [GH-3256] * telemetry: Add support for tagged metrics for Nomad clients [GH-3147] * telemetry: Add basic Prometheus configuration for a Nomad cluster [GH-3186] BUG FIXES: * core: Fix restoration of stopped periodic jobs [GH-3201] * core: Run deployment garbage collector on an interval [GH-3267] * core: Fix paramterized jobs occasionally showing status dead incorrectly [GH-3460] * core: Fix issue in which job versions above a threshold potentially wouldn't be stored [GH-3372] * core: Fix issue where node-drain with complete batch allocation would create replacement [GH-3217] * core: Allow batch jobs that have been purged to be rerun without a job specification change [GH-3375] * core: Fix issue in which batch allocations from previous job versions may not have been stopped properly. [GH-3217] * core: Fix issue in which allocations with the same name during a scale down/stop event wouldn't be properly stopped [GH-3217] * core: Fix a race condition in which scheduling results from one invocation of the scheduler wouldn't be considered by the next for the same job [GH-3206] * api: Sort /v1/agent/servers output so that output of Consul checks does not change [GH-3214] * api: Fix search handling of jobs with more than four hyphens and case were length could cause lookup error [GH-3203] * client: Improve the speed at which clients detect garbage collection events [GH_-3452] * client: Fix lock contention that could cause a node to miss a heartbeat and be marked as down [GH-3195] * client: Fix data race that could lead to concurrent map read/writes during hearbeating and fingerprinting [GH-3461] * driver/docker: Fix docker user specified syslogging [GH-3184] * driver/docker: Fix issue where CPU usage statistics were artificially high [GH-3229] * client/template: Fix issue in which secrets would be renewed too aggressively [GH-3360] ## 0.6.3 (September 11, 2017) BUG FIXES: * api: Search handles prefix longer than allowed UUIDs [GH-3138] * api: Search endpoint handles even UUID prefixes with hyphens [GH-3120] * api: Don't merge empty update stanza from job into task groups [GH-3139] * cli: Sort task groups when displaying a deployment [GH-3137] * cli: Handle reading files that are in a symlinked directory [GH-3164] * cli: All status commands handle even UUID prefixes with hyphens [GH-3122] * cli: Fix autocompletion of paths that include directories on zsh [GH-3129] * cli: Fix job deployment -latest handling of jobs without deployments [GH-3166] * cli: Hide CLI commands not expected to be run by user from autocomplete suggestions [GH-3177] * cli: Status command honors exact job match even when it is the prefix of another job [GH-3120] * cli: Fix setting of TLSServerName for node API Client. This fixes an issue of contacting nodes that are using TLS [GH-3127] * client/template: Fix issue in which the template block could cause high load on Vault when secret lease duration was less than the Vault grace [GH-3153] * driver/docker: Always purge stopped containers [GH-3148] * driver/docker: Fix MemorySwappiness on Windows [GH-3187] * driver/docker: Fix issue in which mounts could parse incorrectly [GH-3163] * driver/docker: Fix issue where potentially incorrect syslog server address is used [GH-3135] * driver/docker: Fix server url passed to credential helpers and properly capture error output [GH-3165] * jobspec: Allow distinct_host constraint to have L/RTarget set [GH-3136] ## 0.6.2 (August 28, 2017) BUG FIXES: * api/cli: Fix logs and fs api and command [GH-3116] ## 0.6.1 (August 28, 2017) __BACKWARDS INCOMPATIBILITIES:__ * deployment: Specifying an update stanza with a max_parallel of zero is now a validation error. Please update the stanza to be greater than zero or remove the stanza as a zero parallelism update is not valid. IMPROVEMENTS: * core: Lost allocations replaced even if part of failed deployment [GH-2961] * core: Add autocomplete functionality for resources: allocations, evaluations, jobs, deployments and nodes [GH-2964] * core: `distinct_property` constraint can set the number of allocations that are allowed to share a property value [GH-2942] * core: Placing allocation counts towards placement limit fixing issue where rolling update could remove an unnecessary amount of allocations [GH-3070] * api: Redact Vault.Token from AgentSelf response [GH-2988] * cli: node-status displays node version [GH-3002] * cli: Disable color output when STDOUT is not a TTY [GH-3057] * cli: Add autocomplete functionality for flags for all CLI command [GH 3087] * cli: Add status command which takes any identifier and routes to the appropriate status command. * client: Unmount task directories when alloc is terminal [GH-3006] * client/template: Allow template to set Vault grace [GH-2947] * client/template: Template emits events explaining why it is blocked [GH-3001] * deployment: Disallow max_parallel of zero [GH-3081] * deployment: Emit task events explaining unhealthy allocations [GH-3025] * deployment: Better description when a deployment should auto-revert but there is no target [GH-3024] * discovery: Add HTTP header and method support to checks [GH-3031] * driver/docker: Added DNS options [GH-2992] * driver/docker: Add mount options for volumes [GH-3021] * driver/docker: Allow retry of 500 API errors to be handled by restart policies when starting a container [GH-3073] * driver/rkt: support read-only volume mounts [GH-2883] * jobspec: Add `shutdown_delay` so tasks can delay shutdown after deregistering from Consul [GH-3043] BUG FIXES: * core: Fix purging of job versions [GH-3056] * core: Fix race creating EvalFuture [GH-3051] * core: Fix panic occuring from improper bitmap size [GH-3023] * core: Fix restoration of parameterized, periodic jobs [GH-2959] * core: Fix incorrect destructive update with `distinct_property` constraint [GH-2939] * cli: Fix autocmpleting global flags [GH-2928] * cli: Fix panic when using 0.6.0 cli with an older cluster [GH-2929] * cli: Fix TLS handling for alloc stats API calls [GH-3108] * client: Fix `LC_ALL=C` being set on subprocesses [GH-3041] * client/networking: Handle interfaces that only have link-local addresses while prefering globally routable addresses [GH-3089] * deployment: Fix alloc health with services/checks using interpolation [GH-2984] * discovery: Fix timeout validation for script checks [GH-3022] * driver/docker: Fix leaking plugin file used by syslog server [GH-2937] ## 0.6.0 (July 26, 2017) __BACKWARDS INCOMPATIBILITIES:__ * cli: When given a prefix that does not resolve to a particular object, commands now return exit code 1 rather than 0. IMPROVEMENTS: * core: Rolling updates based on allocation health [GH-2621, GH-2634, GH-2799] * core: New deployment object to track job updates [GH-2621, GH-2634, GH-2799] * core: Default advertise to private IP address if bind is 0.0.0.0 [GH-2399] * core: Track multiple job versions and add a stopped state for jobs [GH-2566] * core: Job updates can create canaries before beginning rolling update [GH-2621, GH-2634, GH-2799] * core: Back-pressure when evaluations are nacked and ensure scheduling progress on evaluation failures [GH-2555] * agent/config: Late binding to IP addresses using go-sockaddr/template syntax [GH-2399] * api: Add `verify_https_client` to require certificates from HTTP clients [GH-2587] * api/job: Ability to revert job to older versions [GH-2575] * cli: Autocomplete for CLI commands [GH-2848] * client: Use a random host UUID by default [GH-2735] * client: Add `NOMAD_GROUP_NAME` environment variable [GH-2877] * client: Environment variables for client DC and Region [GH-2507] * client: Hash host ID so its stable and well distributed [GH-2541] * client: GC dead allocs if total allocs > `gc_max_allocs` tunable [GH-2636] * client: Persist state using bolt-db and more efficient write patterns [GH-2610] * client: Fingerprint all routable addresses on an interface including IPv6 addresses [GH-2536] * client/artifact: Support .xz archives [GH-2836] * client/artifact: Allow specifying a go-getter mode [GH-2781] * client/artifact: Support non-Amazon S3-compatible sources [GH-2781] * client/template: Support reading env vars from templates [GH-2654] * config: Support Unix socket addresses for Consul [GH-2622] * discovery: Advertise driver-specified IP address and port [GH-2709] * discovery: Support `tls_skip_verify` for Consul HTTPS checks [GH-2467] * driver/docker: Allow specifying extra hosts [GH-2547] * driver/docker: Allow setting seccomp profiles [GH-2658] * driver/docker: Support Docker credential helpers [GH-2651] * driver/docker: Auth failures can optionally be ignored [GH-2786] * driver/docker: Add `driver.docker.bridge_ip` node attribute [GH-2797] * driver/docker: Allow setting container IP with user defined networks [GH-2535] * driver/rkt: Support `no_overlay` [GH-2702] * driver/rkt: Support `insecure_options` list [GH-2695] * server: Allow tuning of node heartbeat TTLs [GH-2859] * server/networking: Shrink dynamic port range to not overlap with majority of operating system's ephemeral port ranges to avoid port conflicts [GH-2856] BUG FIXES: * core: Protect against nil job in new allocation, avoiding panic [GH-2592] * core: System jobs should be running until explicitly stopped [GH-2750] * core: Prevent invalid job updates (eg service -> batch) [GH-2746] * client: Lookup `ip` utility on `$PATH` [GH-2729] * client: Add sticky bit to temp directory [GH-2519] * client: Shutdown task group leader before other tasks [GH-2753] * client: Include symlinks in snapshots when migrating disks [GH-2687] * client: Regression for allocation directory unix perms introduced in v0.5.6 fixed [GH-2675] * client: Client syncs allocation state with server before waiting for allocation destroy fixing a corner case in which an allocation may be blocked till destroy [GH-2563] * client: Improved state file handling and reduced write volume [GH-2878] * client/artifact: Honor netrc [GH-2524] * client/artifact: Handle tars where file in directory is listed before directory [GH-2524] * client/config: Use `cpu_total_compute` whenever it is set [GH-2745] * client/config: Respect `vault.tls_server_name` setting in consul-template [GH-2793] * driver/exec: Properly set file/dir ownership in chroots [GH-2552] * driver/docker: Fix panic in Docker driver on Windows [GH-2614] * driver/rkt: Fix env var interpolation [GH-2777] * jobspec/validation: Prevent static port conflicts [GH-2807] * server: Reject non-TLS clients when TLS enabled [GH-2525] * server: Fix a panic in plan evaluation with partial failures and all_at_once set [GH-2544] * server/periodic: Restoring periodic jobs takes launch time zone into consideration [GH-2808] * server/vault: Fix Vault Client panic when given nonexistant role [GH-2648] * telemetry: Fix merging of use node name [GH-2762] ## 0.5.6 (March 31, 2017) IMPROVEMENTS: * api: Improve log API error when task doesn't exist or hasn't started [GH-2512] * client: Improve error message when artifact downloading fails [GH-2289] * client: Track task start/finish time [GH-2512] * client/template: Access Node meta and attributes in template [GH-2488] BUG FIXES: * core: Fix periodic job state switching to dead incorrectly [GH-2486] * core: Fix dispatch of periodic job launching allocations immediately [GH-2489] * api: Fix TLS in logs and fs commands/APIs [GH-2290] * cli/plan: Fix diff alignment and remove no change DC output [GH-2465] * client: Fix panic when restarting non-running tasks [GH-2480] * client: Fix env vars when multiple tasks and ports present [GH-2491] * client: Fix `user` attribute disregarding membership of non-main group [GH-2461] * client/vault: Stop Vault token renewal on task exit [GH-2495] * driver/docker: Proper reference counting through task restarts [GH-2484] ## 0.5.5 (March 14, 2017) __BACKWARDS INCOMPATIBILITIES:__ * api: The api package definition of a Job has changed from exposing primitives to pointers to primitives to allow defaulting of unset fields. * driver/docker: The `load` configuration took an array of paths to images prior to this release. A single image is expected by the driver so this behavior has been changed to take a single path as a string. Jobs using the `load` command should update the syntax to a single string. [GH-2361] IMPROVEMENTS: * core: Handle Serf Reap event [GH-2310] * core: Update Serf and Memberlist for more reliable gossip [GH-2255] * api: API defaults missing values [GH-2300] * api: Validate the restart policy interval [GH-2311] * api: New task event for task environment setup [GH-2302] * api/cli: Add nomad operator command and API for interacting with Raft configuration [GH-2305] * cli: node-status displays enabled drivers on the node [GH-2349] * client: Apply GC related configurations properly [GH-2273] * client: Don't force uppercase meta keys in env vars [GH-2338] * client: Limit parallelism during garbage collection [GH-2427] * client: Don't exec `uname -r` for node attribute kernel.version [GH-2380] * client: Artifact support for git and hg as well as netrc support [GH-2386] * client: Add metrics to show number of allocations on in each state [GH-2425] * client: Add `NOMAD_{IP,PORT}__