@diego-edge-ci diego-edge-ci released this Jan 8, 2016 · 2 commits to master since this release



  • Guest VM vCPU/memory configured based on Host resources for VMware and Windows [#105930268]
  • #162: vagrant up on Lattice accepts VM_MEMORY & VM_CORES environment variable [#100872484]
  • Cluster proxy can be specified using uppercase environment variables [#107541742]
  • #226: Lattice downloads lattice.tgz via proxy on Windows [#106711812]



@davidwadden davidwadden released this Oct 22, 2015 · 86 commits to master since this release

Help us help you, we'd love to hear your thoughts and suggestions on our survey!
Your answers will help us understand how you use Lattice and inform upcoming feature work.

Breaking Changes

Complete retooling of Lattice build and cluster deployment [##2124074]

The Lattice build process has been completely retooled to create images that are fully configured with all Lattice + Diego microservices at build time. We use packer-bosh to bake the Diego, Loggregator, and Routing BOSH releases into the Lattice base image. This ensures the configurations never get out of sync with the mainline CF versions. Thus, we greatly improve cluster stability. Users do not and will not need to understand or use BOSH to deploy Lattice.

New Features

Δ indicates a breaking change.



  • ltc should be downloadable from the Lattice cluster [#102877664]
  • ltc sync updates itself from the cluster [#102877664] [#105668046] [#102482290]
  • Vendor ltc dependencies with submodules instead of Godeps [#101770536]
  • ltc launch-droplet no longer accepts --working-dir [#104935318] (Δ)
  • ltc build-droplet and ltc launch-droplet no longer use privileged containers [#104921458]
  • ltc create --privileged starts a docker image with a privileged container [#105355654]
  • ltc supports improved user namespacing [#105324808] [#105328688]
    • ltc create --user specifies the user context of a docker app [#104917574]
    • Next, uses the USER directive from docker metadata [#104917678]
    • Lastly, defaults to "root" [#104918540]
  • Routing enhancements for ltc
    • The below changes apply to ltc create, ltc launch-droplet, and ltc update
    • Define multple routes by passing the --http-route or --tcp-route flag multiple times [#105631892] (Δ)
    • HTTP/TCP routes determine default container port for single port apps [#105635660]
    • #104, #137: Custom domains in routes [#93628052] [#96562554]
    • #217: Use of context path routes with Lattice [#105301140]
    • Retire ltc update-routes [#104177142] (Δ)

Bug Fixes

  • Modify docker image examples to app(s) start properly [#105069548] [#105881880]
  • Postgres docker image requires ltc create --privileged to start [#105071050]


  • Configure local.lattice.cf to replace [#102582770] (Δ)
  • Default timeout on ltc test increased to 5m [#105622190]
    • Longer timeout to adjust for AWS EBS volume no longer being pre-warmed
  • vagrant up works on Windows host with AWS provider [#98709384]

CI / Packaging


Known Issues

  • TCP routes are not deleted when route is removed / app(s) are stopped #208 [##1940024]
  • Two apps with same TCP route defined will round-robin between two separate apps [#105929084]


@davidwadden davidwadden released this Oct 10, 2015

New Features

Bug Fixes


Known Issues

  • Subsequent definitions of the same TCP route may not function properly #208
  • Two apps with same TCP route defined will round-robin between two separate apps


@davidwadden davidwadden released this Sep 22, 2015

Users not developing on Lattice itself should download Lattice bundles now.
The git checkout <tag> vagrant up flow is no longer supported.

New Features

Bug Fixes

  • Pre-warm the EBS volume to help with sluggish performance on AWS following terraform apply [#103277682]
  • ltc status --rate refreshes the terminal properly when lines are word-wrapped [#103102128]
  • Supports docker images with non-standard library locations
    • #200: Statically linked in-container go binaries [#103511980]
    • Addresses issue running tutum/hello-world docker image [#95412750] #125
  • ltc target no longer prints DAV droplet store when S3 droplet store is targeted [#102104924]
  • ltc target --s3 can save config when config.json not present [#103416450]



@davidwadden davidwadden released this Sep 12, 2015

Hotfix for SpringOne

long uploads on ltc build-droplet are aborting with closed connection [#103237890]


@davidwadden davidwadden released this Sep 11, 2015

SSH to Containers

Preventing direct access to Lattice cells was not implemented in this release to maintain compatibility. Please ignore the previous notice regarding this issue.

SSH access is now available into the containers using the ltc ssh command. Please see ltc ssh documentation for more details about the syntax.

  • App containers now run the diego-ssh daemon and can be routed to via the ssh-proxy running on the brain [#101709514]
  • ltc ssh opens an SSH session with the app container [#101707864]
  • ltc ssh app -i instance allows a specific app instance to be specified [#103102808]
  • ltc ssh app [--] command to run runs the provided command. [#101708864]

SSH in v0.4.2 has not reached feature parity with the CF CLI (includes port forwarding and support for piping). Please see the SSH epic for more details on future functionality.


  • #189: Unzip and rezip artifacts passed to ltc build-droplet -p [#102183230]
    • Workaround for issues with .jars created by certain Java build tools.
  • VCAP_SERVICES is set to {} by default for all apps (docker and droplets) [#102216852]
    • This can be set to custom values using the --env flag.
  • Direct users to download a bundle when attempting to vagrant up from the Git repository. [#102909512]


@menicosia menicosia released this Sep 4, 2015

Beginning with v0.4.1, direct access to Lattice cells will be restricted to private addresses within the cluster.

Introducing TCP Router

TCP Router is a collection of components that balances traffic across one or more instances of an application. Unlike gorouter, tcp-router balances traffic other than HTTP, such as mysql, redis, or mongodb. Using ltc, a user defines a route from an external port on the Lattice brain to an exposed port on the application container. Under the hood, tcp-emitter regularly updates HAProxy with the TCP routes defined on the Lattice cluster.

  • #172 #182 #191: Merge TCP Router functionality [#101089176] [#101699282] [#102296358]
  • --routes no longer works on ltc create and ltc launch-droplet.
  • Use the --http-routes flag to define HTTP routes for an app. [#100758692] [#100436212]
    • --http-routes takes a comma-delimited set of ROUTE:CONTAINER_PORT
    • This is reversed from --routes (breaking change)
  • New --tcp-routes flag takes comma-delimited set of EXTERNAL_PORT:CONTAINER_PORT
  • Multiple TCP routes can route to same container port. [#101697408]
  • ltc update changes HTTP and/or TCP routes for a running application. [#98240702]
    • Replaces ltc update-routes (will be removed in a future release).
  • ltc status and ltc list show TCP routes [#100258924] [#100258722]

New Distribution Bundles

With the recent conversion to Concourse as our CI platform, we took the opportunity to change the way we distribute Lattice -- no more git checkout; vagrant up. Starting with v0.4.0, we distribute a bundle (links below) that contains ltc along with the vagrant/terraform files needed to launch Lattice.

New Features

  • ltc target --s3 uses an S3 bucket as the droplet store [#100236758] [#100237448]
    • Allows multiple developers to share droplets
    • Persists droplets across subsequent Lattice deployments
  • ltc create --monitor-command uses a custom healthcheck command [#91461922]

Usability Fixes

  • ltc target times out when a connection to the blob store hangs [#101164182]
  • No longer downloads RootFS at provision-time on Vagrant and AWS [#101844068] [#101844098]
  • Upgraded base Ubuntu image to 14.04.3 [#102162900]
  • Document how to diagnose and resolve multiple vagrant instances running [#101992188]

For Developers

  • ci.lattice.cf shows the current build status [#101284204]
  • As part of our migration to Concourse, we now track master. Moving forward, please submit any PRs against the master branch. [#101834808]


@menicosia menicosia released this Aug 26, 2015 · 195 commits to master since this release

Spring Cleaning!

This is a follow-on to Lattice v0.3.0. Please pardon our dust, we skipped releases v0.3.1 and v0.3.2.

Thank you very much for reporting issues and offering contributions on GitHub. We've turned them around as quickly as possible. Lattice v0.3.3 should be considered the most stable release that includes Buildpacks support.

New Features

  • Breaking change: Terraform users should be required to specify credentials for lattice [#100651666]
    • terraform apply now exits with an error if lattice_username and lattice_password are not configured.
  • Lattice v0.3.3 works on and is tested against Terraform 0.6.3 [#101087224]
  • ltc build-droplet allows resources to be specified [#100701142]
    • new options: --cpu-weight, --memory-mb and --disk-mb
  • ltc create merges Docker ENV directives into app environment variables [#99521864]
  • Track versions of material dependencies for lattice [#98881188]
    • vagrant ssh -c "cat /var/lattice/LATTICE_VERSION" checks the cluster version.
    • The brain and cells store dependency versions in DIEGO_VERSION, CF_VERSION and ROUTING_VERSION under the directory /var/lattice.

Interestings and Bug Fixes

  • GitHub Issues #147 & #181: build-droplet should not access the blobstore via the http_proxy [#99515656]
  • GitHub Issue #161: Unable to Create Droplet from Java Main Application [#100854344]
  • GitHub Issue #170: Cannot build droplet if it contains a symlink [#101080914]
  • GitHub Issue #173: php droplet based on cf buildpack fails to launch due to missing apache user [#101175234]
  • Update rootfs to v1.4.0 [#101281706]
  • Droplets should be aware they are running on the cloud [#101066740]
  • Garden-linux bump optimizations [#99147068]
  • Bugfix: ltc status --rate outputs first line repeatedly on droplets [#100659664]

New Documentation

  • Documentation for Buildpack support [#98824900]

Note: Some components of the Lattice brain need a little bit of time to spin up. You can use ltc test -v to validate that your cluster has been initialized successfully. You may need to give it some time before all of the tests pass.


And we cleared out a tiny horde of fit and finish tasks.

  • ltc create without --run-as-root should not use a privileged container [#100033946]
  • ltc target and ltc test should fail when no droplet store available [#100700136]
  • Lattice should delete uploaded bits.zip files when build-droplet fails [#99939534]
  • ltc build-droplet appears to fail if a droplet of the same name has already been stored [#100762030]
  • ltc remove-droplet doesn't fail if the droplet isn't found [#101135194]
  • ltc logs reports tasks as "Application not found" [#99187016]
  • ltc test -v should not fail when ltc is renamed or not in the PATH or invoked with a relative path [#100053278]
  • Remove logic to print newline at end of each command [#98037256]
  • No-arg ltc target output is formatted incorrectly [#100971858]

... ah! Doesn't that feel nice?

Download Links

ltc CLI

Terraform Files


@menicosia menicosia released this Aug 8, 2015 · 195 commits to master since this release

Generating Droplets using Buildpacks

Since launch, Lattice has been limited to deploying only Docker containers. Starting with version 0.3.0, we've taught Lattice another trick for using Diego: Droplets. This is made possible by leveraging another Cloud Foundry technology, Buildpacks.

In just a few commands, ltc uploads your code, runs a CF Buildpack on it, saves the compiled artifact (the Droplet), and launches it alongside your Docker containers. The apps are then managed like any other app on Lattice. The droplets are only kept as long as the Lattice cluster runs, re-build your Droplets when deploying a fresh Lattice cluster.

The provisioner now installs a droplet store alongside Diego. ltc us automatically configured to use it when you target the Lattice cluster. You will see, Blob store is targeted, when Buildpack functionality is enabled.

Buildpacks are available on both Vagrant [#95876346] and Terraform [#96611016].

New Features

  • ltc target discovers the droplet store and stores its configuration. [#100303730]
    • ltc does not complain if it cannot find a droplet store; droplet functionality is left disabled.
    • ltc will attempt to use same credentials as API endpoint for droplet store.
    • vagrant up provisioner defaults to no-auth configuration
    • terraform apply provisioner uses lattice_username and lattice_password values from lattice.tf to configure droplet store.
  • ltc build-droplet uploads the contents of the working directory and builds a droplet using the specified buildpack [#92186444], [#92186448] [#92186462] [#92186464] [#98559752] [#98554024]
    • writes logs to build-droplet-DROPLET-NAME [#98292720]
    • accepts a --path argument to allow user to specify a file or directory to upload. [#92186456]
    • prints a failure message if staging fails, and returns a non-zero exit code. [#92186450] [#98818480]
    • does not upload files that match entries in .cfignore. [#92186460]
  • ltc launch-droplet launches a container running the specified droplet [#92186446] [#98321746] [#98847942]
  • ltc list-droplets lists the droplets stored in droplet store [#92186452] [#98201982]
  • ltc remove-droplet deletes a droplet from the droplet store [#92186454] [#98290714]
  • ltc export-droplet downloads the droplet tarball and metadata [#92186466]
  • ltc import-droplet uploads a droplet and its metadata [#92186470]
  • Upgraded to Diego 0.1398.0 & a major upgrade of garden-linux with btrfs [#100301008] [#98882812]


  • ltc docs updated to reflect droplet syntax [#98824900]
  • Totally re-vamped development-readme and scripts to set up a dev environment [#98769190]
  • Now includes CF_VERSION in addition to DIEGO_VERSION [#99906506]

Interestings and Bugfixes

  • AWS images cannot deploy in international regions #158 [#100481868]
  • ltc submit-lrp launches a container running the specified droplet [#97202034]

    Once you've run build-droplet, you can manually submit it as an LRP using a JSON file that you write yourself. For those who want Total Control, this is a low-level way to do the same thing that launch-droplet does in a more user-friendly way.

Known Issues

ltc build-droplet in v0.3.0 is limited to only 128MB of RAM. Larger applications may struggle to build properly. Please download the latest unstable ltc if you run into this issue. This will be configurable in the next Lattice release. [#100701142]

Download Links

ltc CLI

Terraform Files