## 0.7 (Unreleased) __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: 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 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: Fix lock contention that could cause a node to miss a heartbeat and be marked as down [GH-3195] * 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}__