github.com/diptanu/nomad@v0.5.7-0.20170516172507-d72e86cbe3d9/CHANGELOG.md (about)

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