tsr 0.7.0 release notes¶
Welcome to tsr 0.7.0!
These release notes cover the new features, bug fixes, backward incompatible changes and general improvements you’ll want to be aware of when upgrading from tsr 0.6.0 or older versions.
What’s new in tsr 0.7.0¶
- quota management via API is back: now tsuru administrators are able to view and change the quota of a user of an application. It can be done from the remote API or using tsuru-admin (issue #869)
- deploy via upload: now it’s possible to upload a tar archive to the API. In
this case, users are able to just drop the file in the tsuru server, without
using git. This feature enables the deployment of binaries, WAR files, and
other things that may need local processing (issue #874). The tsuru client also
includes a
tsuru deploy
command - removing platforms via API: now tsuru administrators are able to remove platforms from tsuru. It can be done from the remote API or using tsuru-admin (issue #779)
- new apps now get a new environment variable:
TSURU_APPDIR
. This environment variable represents the path where the application was deployed, the root directory of the application (issue #783) - now tsuru server will reload configuration on SIGHUP. Users running the API
under upstart or other services like that are now able to call the
reload
command and get the expected behaviour (issue #898) - multiple cnames: now it’s possible to app have multiple cnames. The
tsuru set- cname
andtsuru unset-cname
commands changed totsuru add-cname
andtsuru remove-cname
respectively (issue #677). - tsuru is now able to heal failing nodes and containers automatically, this is disabled by default. Instructions can be found in the config reference
- set app’s owner team: now it’s possible to user to change app’s owner team. App’s new owner team should be one of user’s team. Admin user can change app’s owner team to any team. (issue #894).
- Now it’s possible to configure a health check request path to be called during the deployment process of an application. tsuru will make sure the health check is passing before switching the router to the newly created units. See health check docs for more details.
Bug fixes¶
- API: fix the endpoint for creating new services so it returns 409 Conflict instead of 500 when there’s already a service registered with the provided name
- PlatformAdd: returns better error when an platform is added but there’s no node to build the platform image (issue #906).
Other improvements in tsr 0.7.0¶
- API: improve the App swap endpoint, so it will refuse to swap incompatible apps. Two apps are incompatible if they don’t use the same platform or don’t have the same amount of units. Users can force the swap of incompatible apps by providing the force parameter (issue #582)
- API: admin users now see all service instances in the service instances list endpoint (issue #614)
- API: Handler that returns information about the deploy has implemented. Its included the diff attribute that returns the difference between the last commit and the preceding it.
Backward incompatible changes¶
tsr ssh-agent
has been totally removed, it’s no longe possible to use it with tsuru server- tsuru no longer accepts teams with space in the name (issue #674)
- tsuru no longer supports
docker:cluster:storage
set toredis
, the only storage available is nowmongodb
. See config reference for more details. Also, there’s a python script that can be used to migrate fromredis
tomongodb
. - Hooks semantic has changed,
restart:before-each
andrestart:after-each
no longer exist and nowrestart:before
andrestart:afer
run on every unit. Also existingapp.yaml
file should be renamed totsuru.yaml
. See hooks for more details. - Existing platform images should be updated due to changes in tsuru-circus and tsuru-unit-agent. Old platforms still work, but support will be dropped on the next version.
- router cnames should be migrate from string to list in redis. There is a script that can be used to migrate it.
- app should be migrate from string to list in mongo too. You can execute this code to do it:
db.apps.find().forEach(function(item) {
cname = item.cname;
item.cname !== "" ? item.cname = [cname]:item.cname = [];
db.apps.save(item);
})