User Tools

Site Tools


Release Notes


Minor version numbers (0.0.x) are used for changes that are fully compatible. You should be able to upgrade between minor point releases straight with python upgradecontroller.

Medium version numbers (0.x.0) may include changes that are not upgrade straight forward, you might need to perform additional operations in order to get it working properly. You should read the release notes carefully before upgrading between medium point releases.

Major version numbers (x.0.0) are reserved for substantial project milestones.

How to upgrade

Future releases


1.0.x Series


Release date: 14th Setember 2015

  • Debian Jessie compatibility:
    • Debian Jessie has no libjpeg8 and libjpeg62-dev #688.
    • Pip version relased by Debian (1.5.6) is incompatible with requests 2.4.0+ #689.
  • Other minor bugfixes (#687, #691)


Release date: 28th July 2015

  • Debian Jessie compatibility:
    • Support Apache 2.4 autoconfig #684.
    • Fix firmware generation #685.


Release date: 14th July 2015

  • API v1 specifications (dropped non-standard backwards compatibility members) #620.
  • Support custom sliver interfaces numbers #633.
  • Implement memory resource limits in slivers #602.
  • Show only master and testing branches on firmware version summary report.

0.11.x Series


Release date: 18th June 2015

  • (backport) Implement memory resource limits in slivers #602.
  • (backport) Show only master and testing branches on firmware version summary report.
  • Upgrade dependencies gevent==1.0.2 (drop compatibility with insecure SSLv3)


Release date: 27th May 2015

  • CN feedback: Create a journal system to keep information about experiments and services run in a node.
  • Accept VLAN tagged names on sliver interfaces.
  • UI: allow filter slices and slivers by group.
  • Fix SSH Pubkey validator (accept keys without comments).
  • Increase Slice name max_length to 128 chars (SFA Wrapper compatibility).


Release date: 2nd March 2015

Important release:this release fixes a problem with node certificates generation that affects the SSL certificate used to serve node API via secure connection.

  • Fix firmware password plugin.
  • Fix node certificate generation #625 (see hotfix procedure for existing testbeds).
  • Allow customize state fetch timeouts (connect, read). #629.


Release date: 5th February 2015

  • Fix firmware API validation.
  • Fix invalid OFFLINE state: Malformed JSON in node response #629.
  • Update controller requirements (use newer versions).
  • Only notify to users with specific roles. #587.

Troubleshooting: After upgrading, all node states show: OFFLINE: “exception”: “Timeout value connect was (30, 20), but it must be an int or float.”

Probably you have upgraded your controller installation without running postupgrade operations. requests 2.4+ is required:

python postupgradecontroller


Release date: 26th January 2015

  • Add firmware plugin functionality to REST API #470.
  • Fixed regression: firmware missconfigured on clean installations #626.


Release date: 16th January 2015

  • Include management address in sliver description #450.
  • Check node API certificate if using HTTPS #585.
  • Normalize resource-detail API URL #617.


Release date: 22nd December 2014

  • Multi-server support #236.
  • Configurable API links in REST API #245.
  • Bugfixes:
    • Generate binary versions of certificate files #410.
    • Permissions of ticket actions (allow involved user to update ticket state).
    • Resources permissions (C-Lab ticket #44).
  • Support disable pagination on REST API (fix backwards compatibility with SFA-Wrapper).
  • Allow user-provided overlay for sliver #200.
  • Refactor: replace controller fixtures with datamigrations. Load fixtures manually is not longer required during installation process, data will be automatically created by South data migrations.

Important changes which affect backwards incompatibilites:

  • Sliver overlay field has been merged into data field. SliverDefaults and Sliver have only data field that acts stores both overlay and sliver data (#200).
  • Gateways have been removed (#236).


Release date: 2nd October 2014

  • Add support for proxy when calling pip #302.
  • Add time zone name (UTC) as a suffix to all timestamps #533.
  • Enable USB Image plugin by default #226.
  • Log sliver history on the node #523.
  • Implement REST API pagination #409.
  • Fix resources permissions #558.
  • Configure CELERYD_GROUP via command option #306.
  • Document restarting services after changing tinc #388.
  • Implement disk available based on resources member #559.
  • Add pyflakes to PIP_DEVEL requirements (required by staticcheck django admin command).


Release date: 15th September 2014

  • Fix SliverDefaults permissions.
  • Fix migration problems on clean installations #560.


Release date: 4th September 2014

  • Provide resource management via API #46.
  • Rearrange tinc and management network attributes #157.
  • Factor sliver defaults out of Slice class #234.
  • Fixed “Undeleted orphan pings objects” #448.

    Due to an upstream issue on Django (see 22594), some related objects are not removed on cascade and fills the database. You can get practical information on how handle that if you have a previous version installed (<0.11) on the issue report #448.

  • Support uploading new base image over Controller API #434.
  • Include /id members in resource refs and resource lists #479.
  • Fix invalid Sliver public IPv4 option #391.
  • Add sliver disk space information to node overview #339.
  • Provide REST API for gis app #382.
  • Add name attribute to hosts #510.
  • Fix regression introduced at 0.10.6 (simplejson to json migration) #532.
  • Improved dashboard: created new module MyThings that shows a summary of user staff #47.
  • Backwards compatibility notes:
    • Removed unused setting SLICES_SLICE_EXP_DATA_EXTENSIONS (see #446).

0.10.x Series


Release date: (18th June 2014)

  • Add ntp package and configure controller as ntp server (stratum 3) for having RD clocks synchronized #404.
  • Deprecate SLICE_{SLICE|SLIVER}_EXP_DATA_EXTENSIONS (will be removed eventually) #446.
  • Add admin support for Slice and Sliver {exp_data|overlay}_uri #45.
  • Notify operators on user approval (only applies on RESTRICTED registration mode) #449.
  • Expose current state of nodes and slivers on controller API #460 (see State on REST API Controller for more information).
  • Include management address in sliver description #450.
  • Several bugfixes:
    • Include djcelery.css (unsolved upstream bug) #390.
    • Add object_id validation for overrided change_views.
    • Fix sliver changelist when exists a sliver with multiple management interfaces.
    • Validate sliver private interfaces #482.
    • Show in dashboard user's hosts connectivity to management network #47.


Release date: (29th May 2014)

  • Keep node keys when regenerating firmware #383 and update password plugin default behaviour (FIRMWARE_PLUGINS_PASSWORD_DEFAULT setting has been removed).
  • Make migrations timezone aware.
  • Random fixes on notifications.
  • Improvements in node registration (awareness and promotion) #177
  • UI improvements:
    • Improve firmware installation instructions #365
    • Warn the user if slice cannot be renewed #445
    • Allow download outdated firmware builds #447
  • Remove old code #452
  • Update (minor) controller dependencies to last releases.
    • Django 1.6.1 –> 1.6.5
    • paramiko 1.11.0 –> 1.13.0
    • markdown 2.3.1 –> 2.4
    • requests 1.2.0 –> 2.2.1 (related issue: CaseInsensitiveDict json serialization #468)
    • django-google-maps 0.2.2 –> 0.2.3
    • django-fluent-dashboard 0.3.5 –> 0.3.6
    • django-celery-email 1.0.3 –> 1.0.4
    • django-extensions 1.1.1 –> 1.3.3
    • django-filter 0.6 –> 0.7
    • simplejson (replaced by python json included since 2.6)
    • djangorestframework==2.3.13


Release date: 30th April 2014

  • Drop groupregistration app (unused application) #393
  • Fix migration problem on clean installations: tincs depends on users.
  • API fixes
    • Show error if firmware fails.
  • UI fixes
    • Fix order node list by number of slivers.
    • Maintenance Execution model unicode representation.
  • Rename group roles for non-research #414
    • Deprecated API members .is_admin, .is_technician, .is_researcher for user_roles and group_roles
  • Fix NumProcessesMonitor #323
  • Fix memory leak while generating SHA256 for big files (template, overlay and experiment data) #428
  • Fix gis and maintenance permissions #432.
  • Fix pings periodic_tasks generation #376


Release date: 26th March 2014

  • Fixed small bugs and typos on web interface
    • Fix firmware download commands #365
    • Escape error messages when displaying node status #369
    • Show node name in page tile #362
    • Add server entry in menu #389
    • Load state data on state history popup (regresion) #408
  • Added node software version overview #338
  • Move “TincClient.island” to “Node.island” and “Host.island” #264
  • Improve firmware functions on controller API #330

Upgrading to this version requires updating the firmware configuration due to #264. If the automatic procedure fails, you need to perform it manually:

  1. Go to the section /administration/firmware/configuration via the web admin interface (e.g. http://localhost/admin/firmware/config/)
  2. On the Config Files section, find the one that has some reference to node.tinc.island in the content field and replace it with node.island.
# Old configuration
[ server.get_host(island=node.tinc.island) for server in node.tinc.connect_to ]
# New configuration
[ server.get_host(island=node.island) for server in node.tinc.connect_to ]

Known issue: there is a bug on south migrations while moving island instances from table tinc_island to nodes_islands. Migration 0008 copy tinc island to nodes island doesn't update the auto increment sequence number, so creating a new island will raise a IntegrationError duplicate key value.

Solution: update manually the related id sequence.

SELECT setval('nodes_island_id_seq', (SELECT MAX(id) FROM nodes_island));

Next releases will include this patch (fixed on commit d9aa44f)

0.10.3 (Security vulnerability release)

Release date: 12th March 2014

  • Fix security bug: everybody can access URL to update user passwords.


Release date: 13th February 2014

  • Provided input data validation to server REST API #304
  • Fixed regression: API node-list anonymous access #321
  • Added disk usage monitor (prevent block producers on RabbitMQ) #337
  • Several bugfix: state history permissions, tuned number of people notificated on ticket update.


Release date: 17th January 2014

  • Updated dependencies: South v0.8.4 (fix #305 problems with fixtures and TimeZones)


Release date: 15th January 2014 (2014-01-15)

  • Added testbed status report:
    • Nodes map and summary overview.
    • Slices and slivers stats by groups based on d3js library.
  • Improved Controller API: implemented change-password
  • Improved REST API: several fixes on group, user, template, firmware…
  • Updated reference platform to django 1.6
  • Bugfix: force monitor subprocess terminal to use a wide number of lines and columns
  • Bugfix: node priv_ipv4_prefix validation
  • Bugfix: 500 tracebacks are now sent to admins
  • Bugfix: updated broken user reset password URLs
  • Removed CNDB caching from server API #266
  • Updated to django-rest-framework 2.3.9

Updated dependencies: django1.6 and python 2.7 required. Updating to this version may require some extra steps or dependencies updates.

0.9.x series


Release date: 28th October 2013

  • Added monitor app which collects server local monitoring data of processes and resources as well as sending alerts
  • Added ping downsampling periodic task based on sample based statistics
  • Added initial implementation of firmware generation via REST API
  • Added nohup setuptincd option
  • Improved REST API link relation customization
  • Improved REST API support for POST and PUT methods in nodes, slices and slivers
  • Improved REST API by refactoring writable nested resources using serializers rather than fields
  • Improved pings view performance by using multi-column indexes
  • Improved gis app: encapsulated javascript as clousure, exposed map as settings, applied clustering to map markers (based on animated markers), different marker icons based on node state.
  • Bugfix: correctly parse ping output in all possible cases
  • Bugfix: make apache ignore controller backup files under conf.d
  • Regression: create isolated SliverIfaces using the REST API is now broken
  • Updated to django-rest-framework 2.3.8


Release date: 5th October 2013

  • Added user roles management functionality for testbed administrators
  • Added state flapping detection
  • Added staticcheck management command and cleaned unused imports
  • Added slivers inline to the node admin page
  • Added set_state to sliver inlines
  • Added slice and sliver properties
  • Improved state history by displaying state data and metadata in an overlay box
  • Improved node change list search by adding node ip lookups
  • Improved add/remove apps system (now managed based on dependencies)
  • Improved node soft_version list filter
  • Improved performance of state and ping related views by adding db indexes
  • Improved node, slice and sliver change forms adding collapsible and sortable inlines and hide more fields under advanced form
  • Bugfix: node contact reporting UNKNOWN state after OFFLINE
  • Bugfix: route state.node and state.sliver to gevent worker and deprecate old nodestate and sliverstate periodic tasks
  • Bugfix: group join requests not being logged on group history
  • Bugfix: always close subprocess.Popen pipes
  • Bugfix: sliver/slice state color being always black
  • Bugfix: state monitoring mistakenly reporting NODATA state
  • Bugfix: celery memory leak under development setup


Release date: 18th September 2013

  • Added history record and percentil graph on state monitoring
  • Added field ordering on admin tabular inlines
  • Added Sliver and Slice overlay_uri and overlay_sha256 fields
  • Added periodic task for cleanup orphan files (node firmwares, slice templates…)
  • Added controllerversion and getuserbysessionid management commands
  • Added javascript warn user to confirm dangerous actions
  • Improved sliver interface managemente, now unallowed ifaces are disabled
  • Improved sliver changelist by displaying effective set_state
  • Improved state app by adding contextual help when current state is failure
  • Bugfix: notifications models wrongly assuming connection to db is always available
  • Bugfix: order by sliver in node and slice changelist is now fixed
  • Bugfix: fixed order nodes/slivers by state
  • Bugfix: upload slivers exp_data files
  • Bugfix: upgradecontroller management command now does not mess stdout


Release date: 2nd September 2013

  • Added issues setting enabling to send ticket notifications to superusers
  • Improved Group and Tickets admin pages.
  • Bugfix: sending issues email alerts to an arbitrary number of users
  • Bugfix: not possible for non admins to save their own user settings
  • Bugfix: registration failing on duplicate email or username
  • Bugfix: USB version of the firmware generation


Release date: 6th August 2013

  • Added template image and experiment data file extension validation
  • Added Django 1.6 compatibility (experimental)
  • Added new modeladmin feature which allows to hide objects on the delete confirmation view. Used for hiding large set of related objects like pings
  • Added custom 500 and 404 templates
  • Improved issues ticket system user interface, functionality and codebase
  • Improved pings graph, now based on HighStock library
  • Improved user interface by removing redundant information on some inline forms
  • Improved Nginx support, now (start/restart/stop)services management commands are awear of it
  • Improved maintenance app user interface adding instance management capabilities
  • Improved code styling following PEP8 recommendations
  • Bugfix: Nodes get stucked on DEBUG state


Release date: 30th July 2013

  • Added notifications app which enables easy creating condition-based notifications (i.e. slice expiration warning, node down notification …)
  • Added Nginx + uWSGI deployment command (experimental)
  • Added REST API filtering
  • Added ETag header enabling conditional requests
  • Added generic action confirmation view based on decorators
  • Upgraded user registration backend, now depends on django-registration 1.0
  • Improved memory footprint (-10x) under development environments (i.e. VCT)
  • Improved maintenance app, fixing bugs and adding new features (i.e. async stdout, one-shot operations …)
  • Improved state app now requests are etag conditional, response data and metadata are better rendered and a pings link is included on change view
  • Improved style by adding monospace font family to auth keys, auth tokens, certs, code, command outputs and public keys
  • Improved user interface by simplifying and cleaning irrelevant information
  • Bugfix: Lots of random bug fixes as usual :)


Release date: 4th July 2013

  • Added support for multiple base images on firmware generation
  • Added support for firmware generation plugins, currently USBImage, Password and AuthToken
  • Added pings application which performs pings to nodes, tinc hosts and management type sliver interfaces in a massive concurrency fashion and represents the results using charts
  • Added support for sending emails to selected users
  • Added tool-tips on change form actions (reboot, req cert, download firmware…)
  • Added support for change form actions that always are visible no matter the user has change permissions or not
  • Improved state application with more states, debug information and changelist filtering
  • Bugfix: Sliver isolated ifaces can now be created using the REST API
  • Bugfix: Lots of random bugfixes


Release date: 11th June 2013

  • Added markdown syntax support for ticket messages
  • Added captcha support on the registration form
  • Added authentication support for CNDB API
  • Added support for gzip compressed REST API responses
  • Improved dependency handling, now version dependent
  • Updated reference platform to Debian 7.0 Wheezy and Python 2.7
  • Updated to django-rest-framework 2.3.5
  • Updated Apache conf file, now placed under /etc/apache2/conf.d/<project_name>.conf,
    Any existing controller related directive under /etc/apache2/httpd.conf should be removed
  • Removed messages warning about testbed not ready for allocating slices
  • Removed –minimal dependency level, replaced by: –development, –local and –production
  • Bugfix: Properly escape HTML for read only permissions on ticket messages
  • Bugfix: REST API singleton link relations are now represented correctly (i.e server)
  • Bugfix: Admin breaking after login with unprivileged user, when issues app is not installed
  • Regression: Read only permissions on slice/sliver.exp_data_uri until fully implemented

0.8.x series


Release date: 16th May 2013

  • Added Basic and Token authentication methods for firmware downloads, enabling downloads using curl, wget and other tools
  • Added 'save and continue' and 'save and add another' into sliver add and change forms
  • Added Confine logo favicon
  • Added node do-cache-cndb, enabling geolocation retrieval from CNDB [experimental]
  • Added settings for branding customization SITE_URL, SITE_NAME, SITE_VERBOSE_NAME
  • Improved roles management on group add and change views
  • Improved code by refactoring exceptions and sliver interface registration api
  • Improved issues app: email notifications on update, filter actions based on ticket state.
  • Bugfix: OpenLayers library not working due a unsecure js import (now included locally).
  • Bugfix: Lots of random bugfixes


Release date: 15th April 2013

  • Added API functions on nodes (reboot, request-cert, cache-cndb), slices (renew, reset, upload-exp-data) and slivers (update, upload-exp-data)
  • Added reverse admin UI link on the browsable REST API
  • Improved branding on admin and in browsable REST API, now generated with css, it is hyperlinked and includes controller's version number
  • Bugfix: tricky firmware generation bug related with gevent polluting WSGI processes
  • Bugfix: setupceleryd bug, now log directories are being created with its correct owner


Release date: 11th April 2013

  • Added traceback report on maintenance operations that fail on server-side
  • Added manually refreshing nodes and sliver state
  • Bugfix: lots of fixes on firmware generation and also on the REST API
  • Bugfix: execute get_state isolated on a thread because gevent is only usable from a single thread
soft/server-release-notes.txt · Last modified: 2015/09/14 17:50 by santiago