tsurud 0.13.0 release notes

Welcome to tsurud 0.13.0!

These release notes cover the new features, bug fixes, general improvements and backward incompatible changes you’ll want to be aware of when upgrading from tsurud 0.12.x or older versions.

Main new features

  • New IaaS: tsuru now supports DigitalOcean, along with Amazon EC2 and CloudStack. Admins are able to spawn droplets on DigitalOcean and use them as managed nodes with tsuru. See IaaS configuration for instructions on how to configure DigitalOcean integration (thanks Hugo Seixas Antunes).
  • New router: support new version of Galeb, which is now full open source. Galeb is a very fast router, written in Java, with WebSocket support. It was also born at Globo.com. Users from the community can now choose to use Galeb, along with Vulcand and Hipache.
  • New authorization system: tsuru now supports more granular authorization system, with roles and permissions. Roles group permissions, and are associated with users. For more details, see permissions management documentation. See issues #1220 and #1278).
  • Add the ability to enabling and disabling platforms. Disabled platforms can be used and updated by admin users, but no new apps can be created with a disable platform. It’s useful for testing new platforms, as well as disabling deprecated platforms (issue #1284).
  • Change the service instance management flow: the name of the instance is no longer unique across all services, but it’s now unique only inside the server, which mean that it’s now possible to have different instances of different services using the same name (issue #1299).
  • Handlers for adding and updating platforms now accept uploading a Dockerfile, which means that users can provide local Dockerfiles or use prebuilt images in platform-add/platform-update (issues #781 and #1252).

Bug fixes

  • Fix OAuth authentication: the library used by tsuru used to blindly trust the token_type returned by the OAuth provider, but some providers provide mismatching types in the authorization request and the token. See https://github.com/golang/oauth2/issues/113 for more details.
  • Admin users can now manage all teams (issue #1084).
  • Fix the behavior of app-restart when the app is stopped: now it actually starts the app (issue #1281).
  • Fix bug that disabled usage tracking for quota management when quota was unlimited (issue #1279).
  • Deploy info now returns 404 when the provided id is not a valid MongoDB ObjectId.
  • Deploy now increments unit usage (issue #1279).
  • Service info now displays the plan associated to each service instance if it exists (issue #1142).

Other improvements

  • Simplified the interface for listing and rolling back deployments: tsuru now takes just the version of the app, instead of the whole Docker image (issue #1288).
  • CloudStack IaaS now supports tagging, so admins can tag managed nodes when creating them (issue #1172).
  • Prevent timeouts in all streaming handlers by keeping the wire busy while the connection is open.
  • Add a parameter in the service-remove endpoint for unbinding all apps bound to the service instance.
  • Add a parameter in the env-set, env-unset, service-bind and service-unbind to prevent the application restart when inject an environment variable (issue #1271).
  • Add a parameter in the token-show and token-regenerate to display/regenerate token for third users. Only admins can perform this operations (issue #1316).
  • Add a new filter in the app listing API endpoint: now it’s possible to filter applications by pool (issue #1311).
  • Improve installing documentation format to better accommodate information about tsuru-now and tsuru-bootstrap.
  • Improvements in the installing and management docs, reflecting the daemon rename (thanks Giuseppe Ciotta).
  • Fix instructions on the Hipache installing page so it doesn’t use a deprecated configuration flag (thanks Giuseppe Ciotta).
  • Improve database connection management in the application locking procedure, avoiding database connections leakage.
  • Improve documentation for the Java platform (thanks Manoel Domingues Junior).
  • Improved the docker-node-remove command to disable the node, rebalance and then unregister or remove the node (issue #1319).
  • Supports differences between the new and old code on app-deploy. The differences is generated ignoring the patterns listed in .gitignore file. Obs. The .gitignore file must be in the root directory application (issue #1315).

Backward incompatible changes (action needed)

  • The post-receive hook is no longer supported, please update to one of the available pre-receive hooks. You may stick to a post-receive hook that invokes git-archive and uploads it to tsuru, but we recommend using a pre-receive hook.
  • tsuru introduced a new authorization system, so after update your servers, users will lost access to everything. You can check the Migrating section in the new permission documentation page to get details on how to proceed.