Release Notes (4.7.x and below)¶
5.5.1 & 4.7.3 (2014/04/21)¶
This release is a bug fix release. Due to the nature of the bug, both the main branch as well as the 4.7.x branch (for java 1.6) have been updated.
The bug is rare but can happen while upgrading glu: it manifests itself by bad data being written to ZooKeeper (only when the agent cannot instantiate a previously deployed glu script) and the console does not handle it properly. The fix is 2 fold:
- fixed the agent to not write bad data in ZooKeeper
- fixed the console to handle improper data in ZooKeeper
- Fixed glu-262: A bad agent should not bring the console down
4.7.2 (2013/05/09)¶
This release is a bug fix release.
- Fixed glu-223: jdk1.7 workaround does not “persist” in 4.7.1
4.7.1 (2013/04/16)¶
This release is a bug fix release.
Warning
this version should be used instead of 4.7.0 due to the critical bug
- Implemented glu-205: Make zookeeperRoot configurable in console
- Implemented glu-206: Allow agent to bind to a specified network interface
- Fixed glu-207: Agent fails to restart if cannot reload scripts
- Implemented glu-210: Agent not recreating ephemeral node after ZK outage
- Fixed glu-211: Add Support to Users for Default Fabric
- Fixed glu-212: agent returns a 405 when Accept header with a value of ‘application/json’ is specified
- Fixed glu-213: Glu console does more absolute url redirects with 4.7.0
- Fixed glu-214: Upgrading from 4.6.2 to 4.7.0 breaks all user roles
Note
Due to the fact that glu-210 is (most likely) a race condition, a monitor has been added to the agent in order to detect (and correct) the situation. This will hopefully provide more insight into the problem. In order to disable the monitor, set the property glu.agent.zkMonitor.enabled to false.
4.7.0 (2013/04/02)¶
Warning
- 2013/04/15 update: a critical bug has been found in this release if you are using the console.datasource.table.user.mapping configuration option (which allows you to rename the user table). If you are, do not upgrade to this version.
- 2013/04/16 update: the bug has been resolved in version 4.7.1
This release contains a major upgrade of all the libraries used by glu. The purpose of this release is to allow glu to finally be able to run under any java VM including java 1.7 (as java 1.6 is now no longer supported by Oracle). Here are the requirements in terms of VM version(s):
glu version | java version(s) |
---|---|
5.0.0+ | java 1.7 |
4.7.x | java 1.6 (any VM) or java 1.7 |
4.6.x and below | java 1.6 (with Sun/Oracle VM only!) |
The next major release of glu (5.0.0) will support java 1.7 only. As a result, the 4.7.x line is also the recommended upgrade path from any prior version of glu since it will be the only line that will support both 1.6 and 1.7 java VMs!
The code in glu has not changed much in this release, but it contains a whole set of new libraries. Although glu has been tested thoroughly (including longevity tests which uncovered some memory leak in the latest version of groovy!), you should use caution when upgrading to this version and make sure you test it on a small set of nodes prior to making a big push.
Note
One notable change is the use of the latest version of ZooKeeper (3.4.5). Although the ZooKeeper servers do not need to be upgraded (backward compatible), it is advised to upgrade them and you should follow the procedure described on the ZooKeeper web site.
- Fixed glu-74: NPE when opening the Dashboard in the tutorial
- Implemented glu-109: Make build compatible with Gradle version 1.0-milestone-3
- Fixed glu-123: Hammering console with several simple REST requests in parallel leads to strange groovy error
- Implemented glu-135: Migrate to latest grails/groovy
- Fixed glu-143: Removal of hardcoded ‘java’ command from zk.sh
- Implemented glu-148: Upgrade to gradle 1.0
- Fixed glu-193: Add support for nesting /console/ in a sub url in console-cli.py and PEP-8 Python style compliance
- Fixed glu-199: Cannot resolve reference to bean LightUserCustomDeltaDefinitionDomainClass
- Fixed glu-201: Incorrect plan generated from console-cli
- Fixed glu-208: When no (console) plugins available, getting a warning message from jetty (8)
Thanks to JProfiler for providing a free license key in order to troubleshoot (and very quickly identify!) the memory leak in groovy.
4.6.2 (2013/01/21)¶
This release is a bug fix release only.
- Fixed glu-195: Very long lines in an application log are loaded surprisingly slow when browsing from Console
- Fixed glu-196: DisabledFeatureProxy should proceed hashCode and equals methods to avoid breaking Spring ApplicationContext
- Fixed glu-197: Once a fabric is deleted cannot create a new fabric with the same name
- Fixed glu-198: Child not able to generate Parent Plan
4.6.1 (2012/12/21)¶
This release is essentially a bug fix release with a couple of minor enhancements to the agent api.
- Fixed glu-134: Race condition between agent.waitForState and ZooKeeper state
- Fixed glu-177: No plan generated when mountpoint not deployed with REST api
- Fixed glu-178: Install script agent REST api not handling path correctly
- Fixed glu-181: Using an unknown fabric in console REST call works
- Fixed glu-182: Delta engine reports success when agents are missing
- Implemented glu-185: Add “pwd” to generic shell.exec command
- Implemented glu-191: Add rootShell to GluScript
- Implemented glu-192: Add “env” to generic shell command
- Implemented glu-193: Add support for nesting /console/ in a sub url in console-cli.py and PEP-8 Python style compliance (Thanks to Stéphane)
- Implemented glu-194: Find a new “Downloads” space
Note
Due to github deprecating the Download/Upload feature, the binary release has been moved to a new location.
4.6.0 (2012/11/18)¶
This release contains the new feature commands which extends glu capabilities in order to execute an arbitrary (unix/shell) command on any node. One way to think about it is executing a remote command using a REST api rather than ssh. It provides the added benefit that all commands executed this way are following the standard authentication and auditing path followed by deployments. The All commands view shows you instantly what is (or has been) executing on various agents, thus allowing you to immediately get a sense of what other actions (besides deployments) have been performed on an agent for tracking and/or diagnosing purposes.
Note
This feature may be disabled entirely. If you are using your own configuration file it will have to be enabled explicitely. If you use the configuration files coming with the distribution, it is enabled by default.
4.5.2 (2012/10/31)¶
Warning
This release contains a critical bug fix and is highly recommended.
Only the agent needs to be upgraded. The issue fixed is the ability to talk to the agent over ssl without any certificate (the agent is not honoring the needClientAuth flag).
Note
In order to know if you are affected by this issue and you should upgrade, follow the simple steps:
if you are running your agent with sslEnabled set to false then you are not affected
otherwise run the following command:
curl -v -k https://<agentIP>:<agentPort>/agent
- if you receive an error message then you are not affected by the issue
- if you do not receive an error message and simply an OK (200) response from the agent (which should be a json document with the list of all mount points), then you are affected and it is highly recommended to upgrade
- Fixed glu-175: client auth not working for agent with ssl enabled
4.5.1 (2012/09/23)¶
This release essentially contains some minor fixes. The deployment view has a subtle change: all (leaf) steps are now links: when you hover your mouse over one of them you can click on it and it is a shortcut to the agent view page (fix for glu-163).
4.5.0 (2012/08/15)¶
This release contains a refactoring of the authorization framework in order to be able to change the authorization levels via configuration as well as being entirely customizable via plugins.
Warning
The property console.authFilters.rest.write.roleName has been removed from the configuration file. Instead you can define your own level per REST call.
Note
The prefixes /release and /admin which used to determine the level of authorization in the various URLs, have been removed since they do not serve this purpose anymore and as a result could be very confusing.
4.4.2 (2012/07/26)¶
This release contains mostly bug fixes and minor improvements
- Fixed glu-111: Console server initialization fails with Oracle 11g (Thanks to Chris for the tip)
- Implemented glu-141: Add documentation about mysql configuration
- Fixed glu-144: Addition of pre-setup Java version check (Thanks to Stuart)
- Implemented glu-147: Allow to limit (optionally) massive parallel deployment
- Fixed glu-151: Allow ‘_’ in mountPoint
4.4.0 (2012/04/28)¶
This release further improves the performance of the previous one.
Warning
Unlike the previous release, for performance reasons, the default is now to compute the checksum system model using jackson output. As a result, the same model loaded prior to 4.4.0 will have a different checksum. If this turns out to be an issue in your case (which should be extremely unlikely if you usually “move forward”), then you can disable this behavior and revert back to the previous computation using the following configuration property in your (console) configuration file:
console.systemModelRenderer.maintainBackwardCompatibilityInSystemId=true
List of tickets:
4.3.1 (2012/03/31)¶
Mostly a performance improvement release: use of the jackson library to enhance memory consumption and speed particularly visible on large system models.
Note
Some (json) pretty printed output may look slightly different due to the change in serialization library.
Note
For backward compatibility reasons, the computation of the checksum for the system model has not been modified and still uses the org.json library.
Tip
As an added benefit for using a more powerful json parsing library, you can now:
- use comments (java style // or /* */) in your json model (note that the comments are not preserved, but it won’t generate an error when parsing!)
- use single quotes
- don’t quote keys
List of tickets:
4.3.0 (2012/03/18)¶
4.3.0 introduces:
the ability to define your own system wide state machine (check the glu script chapter in the documentation for details):
defaultTransitions = [ NONE: [[to: 's1', action: 'noneTOs1']], s1: [[to: 'NONE', action: 's1TOnone'], [to: 's2', action: 's1TOs2']], s2: [[to: 's1', action: 's2TOs1']] ] defaultEntryState = 's2'
customize the actions for a given mountPoint on the agents page
customize the plans available on the Plans subtab
define your own set of custom plan type (or redefine one, like the meaning of “Bounce”) (check the plugin hook documentation):
def PlannerService_pre_computePlans = { args -> switch(args.params.planType) { case "customPlan": args.params.state = "installed" return plannerService.computeTransitionPlans(args.params, args.metadata) break default: return null } }
List of tickets:
4.2.0 (2012/02/16)¶
4.2.0 introduces the ability to package a glu script as a precompiled class (or set of classes) inside one (or more) jar file(s). As a result, a glu script can inherit from another class as well as have external (to glu) dependencies! Check Packaging a glu script for more info.
- Implemented glu-118: Add classpath / compiled glu script capability
- Fixed glu-120: Release user can’t load model via the cli
- Fixed glu-121: Admin user can’t load model via the cli
- Fixed glu-124: REST api should not use current logged in user session
- Implemented glu-125: add extra link shortcut in the dashboard
- Implemented glu-126: Add REST api for manipulating fabrics
4.1.1 (2012/01/27)¶
Note
Issue 116 introduces a change in the default handling of delta vs error (requested by both LinkedIn and Orbitz): when an application is not running and there is a delta, it is better to treat it as an error instead of a simple delta because it represents the fact that something is wrong. You can revert to the previous behavior (delta is never treated as an error) by adding the configuration parameter to your (console) configuration file:
console.deltaService.stateDeltaOverridesDelta = false
4.1.0 (2011/12/29)¶
Warning
The following configuration parameters have changed in the console configuration file. If you are using the feature restricting file access on an agent then you need to rename them prior to starting the new console when upgrading:
console.authorizationService.unrestrictedLocation -> plugins.StreamFileContentPlugin.unrestrictedLocation
plugins.StreamFileContentPlugin.unrestrictedRole (new and optional value)
This version of glu adds the concept of plugins to the orchestration engine/console which allows you to enhance and/or tweak the behavior of glu. Typical uses cases are the ability to entirely change the authentication mechanism used by glu, send a notification when a deployment ends, prevent a deployment by the wrong user or at the wrong time, etc... Check the orchestration engine documentation for more information about plugins. This new version sets up the infrastructure for plugins and adds a handful of hooks. Future versions will contain more hooks (depending on user needs).
4.0.0 (2011/11/17)¶
What is new in 4.0.0 ?¶
Warning
2 configuration parameters have changed in the console configuration file and you need to rename them prior to starting the new console when upgrading (see the configuration section for more details on the values):
model -> shortcutFilters
system -> model
4.0.0 contains a major redesign of the console with an easier to use interface and ability to create custom dashboards.
- Top navigation changes:
- added Agents tab which lists all the agents (nodes) with direct access to individual agents
- renamed Plans into Deployments
- System tab is gone and has been replaced with a combination of the Model tab and the Plans subtab in the dashboard
- Model tab is now used to view the models previously loaded as well as load a new one
- Fabric selection is now a drop down (same for filter shortcuts (All [product]))
- Dashboard is now customizable and a user can create different dashboards (see the dashboard section for details). The dashboard represents a table view of the delta. Both columns and rows can be customized:
- columns can be customized: ability to add/remove/move any column. Clicking on a column name does a ‘group by’ on the column and make it the first column (same functionality as the ‘group by checkbox’ from the previous version). What is rendered in the column is customizable, from the sort order to the grouping functionality (when using summary view)
- rows can be customized: you can add a filter to the model which essentially filters which row is displayed. Clicking on a value in a cell now adds a filter (this functionality existed with the difference that it was replacing instead of adding). You can of course remove a filter.
- to customize the dashboard, there is a new subtab for it: Customize (this gives you access to the raw json representation of the dashboard which you can then tweak, like moving columns around or adding/removing new ones)
- the first subtab on the dashboard allows you to quickly switch between your saved dashboards and also contains a very useful Save as New entry which allows you to save what you see as a new dashboard (so instead of tweaking the json, you can add filters and move columns around and then save it as a new dashboard which you can then tweak)
- Dashboard selection is now sticky which means if you move around and come back to the dashboard it will be in the same state. This is used for the Plans subtab of the dashboard which allows you to act on the delta: actions will be based on the filter currently set. If you want to act on the full system (old System tab), simply clear all filters.
- You can now give a name to your model and it will be displayed in addition to the SHA-1 (metadata.name)
- Downgraded security level for model manipulation (load/save) from ADMIN to RELEASE
- Clicking on the name of an agent in the dashboard table used to link to the agent. By default it now behaves like any other value: adding a filter. You can now access an agent using the Agents tab. If you want to revert to the previous behavior, use this configuration property: dashboardAgentLinksToAgent: true in console.defaults.
- Renamed console.defaults.model into console.defaults.shortcutFilters: this functionality is now a simple shortcut that allows to switch between various predefined filters (example of usage: changing zones, changing products, changing teams, etc...)
- Renamed console.defaults.system into console.defaults.model: to be consistent with the UI where you are looking at models
List of tickets¶
- Implemented glu-17: Feature Request: make console views navigation friendly (bookmarkable)
- Implemented glu-28: Feature Request: Add dates to the table at /console
- Implemented glu-44: handle dashboard.model properly
- Implemented glu-104: Make dashboard customizable by user
- Fixed glu-105: Error count incorrect in glu dashboard
- Fixed glu-107: CSS and some js become inaccessible after a while
- Fixed glu-108: Key mistake in the summary section in the documentation
3.4.0 (2011/10/10)¶
A few changes to the agent (requires upgrade):
- Now the agent saves its fabric in ZooKeeper on boot (since it can be overriden on the command line, it ensures that the console sees the same value!)
- The agent offers a /config REST api after full boot (which allows to change the fabric after the agent has booted (but it still requires a manual agent reboot... will be implemented later))
- Fixed timing issue on auto upgrade
- Fixed the order in which properties are read to make sure that properties assigned in a previous run are used as default values and never override new values!
Several new REST apis:
- GET /-/: list all fabrics
- GET /-/agents: list agent -> fabric association
- PUT /<fabric>/agent/<agent>/fabric: assign a fabric to an agent
- DELETE /<fabric>/agent/<agent>/fabric: clear the fabric for an agent (also added to the UI Admin/View agents fabric)
- DELETE /<fabric>/agent/<agent>: decommission and agent (clear ZooKeeper of all agent information) (also added to the UI Admin/View agents fabric)
Upgraded to linkedin-utils-1.7.1 and linkedin-zookeeper-1.4.0 to fix #95
List of tickets:
- Implemented glu-35: Add ‘decommission’ a node/agent to the console
- Fixed glu-69: Agent auto upgrade process relies on timing
- Fixed glu-95: shell.fetch delivers files to an incorrect location
- Fixed glu-99: add assign to fabric to REST API
- Fixed glu-100: agent persistent property issues: override new values
- Fixed glu-101: console fails to start when changing keys
- Fixed glu-103: 3.4.0dev Agent REST Call doesn’t return unassociated agents.
3.3.0 (2011/09/16)¶
This release features the following:
- Performance tuning (minimizing GC) based on LinkedIn feedback
- UI change: text area for modifying the model can be (optionally) made non editable (see documentation)
- UI change: selecting the current system/model is done through a radio group selection under the System tab
- UI change: selecting a plan is no longer a drop down selection (this was discussed in the forum)
- UI change: on the dashboard, there is now a different color for DELTA vs ERROR
- UI customization: added powerful ability to provide your own custom stylesheet (see documentation) allowing you to easily tweak the rendering (colors, layout, etc...)
- Added documentation example on how to use a different database with glu (MySql in this example)
List of tickets:
- Implemented glu-76: Allow database configuration for the console
- Implemented glu-77: Do not fetch full json model on System page
- Implemented glu-78: Make System Text Area optionally read only
- Implemented glu-79: keeping completed plans in unarchived state causes memory pressure
- Implemented glu-89: make delta distinct from error in console
- Implemented glu-93: Issue #89: make delta distinct from error in console (thanks Richard)
- Implemented glu-94: fix typo in hello-world sample (thanks Vincent)
- Implemented glu-96: Make plan selection easier
Thanks to Richard and Vincent for the contributions to this release.
3.2.0 (2011/07/31)¶
Enhanced REST API by exposing more functionalities (agent upgrade, deployments, plans). Note that the REST call HEAD /plan/<planId>/execution/<executionId> now returns a header called X-glu-completion (the old one X-LinkedIn-GLU-completion is still returned for backward compatibility).
3.1.0 (2011/07/26)¶
Added unit test framework for glu script and created sibling project glu-script-contribs
- Implemented glu-80: Add ability to write unit tests for glu script
- Added Shell.httpPost method
3.0.0 (2011/06/25)¶
What is new in 3.0.0 ?¶
3.0.0 adds the following features:
- parent/child relationship which adds the capability of decoupling the lifecycle of a parent and a child (typical examples being deploying a webapp inside a webapp container or deploying a bundle in an OSGi container)
- define the desired state of an entry in the model (entryState) which, for example, allows you to deploy an application without starting it
- The console is no longer precomputing the various plans (deploy, bounce, undeploy and redeploy) and they are now computed on demand only
- The delta is now a first class citizen and a new rest API allows to access it
- The core of the orchestration engine (delta, planner and deployer) has been fully rewritten to offer those new capabilities (now in java which should provide some performance improvements over groovy).
List of tickets¶
- Fixed glu-18: Grails Runtime Exception (500) when viewing a deployment status (thanks to Ran!)
- Fixed glu-21: The model should allow for expressing which state is desired
- Fixed glu-33: Mountpoint disappears from agent view when not in model
- Implemented glu-63: Handle parent/child relationship in the orchestration engine/console
- Fixed glu-71: Fix plan when bouncing parent/child
- Fixed glu-72: Console times out while talking to agent
- Fixed glu-73: Agent upgrade broken due to pid file invalid
2.4.2 (2011/05/27)¶
- Fixed glu-64: Concurrent deployment of ivy artifacts causes wrong artifact to be downloaded
2.4.1 (2011/05/24)¶
2.4.0 (2011/05/20)¶
- Added instrumentation for glu-18: Grails Runtime Exception (500) when viewing a deployment status
- Implemented glu-42: Support ‘transient’ declaration in glu script (thanks to Andras!)
- Implemented glu-37: Console should support ETags
- Fixed glu-43: IllegalMonitorException thrown by glu script
- Fixed glu-45: password.sh requires absolute path
- Misc.: better handling of logs in the console, improved documentation
2.3.0 (2011/05/13)¶
- Implemented glu-56: Finalize refactoring (#34)
- fixed some issues with tagging
- fixed GString as a key in map issue
- made some classes more configurable
- when an entry had only 1 tag, it was being excluded
- console no longer generates a delta when tags are different!
- Refactor AgentCli to allow custom configuration
2.2.1 (2011/04/30)¶
Also tweaked a couple of parameters for the agent (starting VM now 128M).
2.2.0 (2011/04/22)¶
Implemented glu-34: Refactor code out of the console
The business logic layer of the console has been moved to the orchestration engine area so it is now more easily shareable.
Massive documentation rewrite which covers the tickets glu-5, glu-36 and glu-14
Check out the new documentation
2.1.0 (2011/03/01)¶
This version is highly recommended for glu-27 specifically which may prevent the agent to recover properly. It affects all previous versions of the agent.
2.0.0 (2011/02/14)¶
1.7.1 (2011/01/20)¶
1.7.0 (2011/01/17)¶
- Implemented glu-12: better packaging
- fixed glu-1: Agent name and fabric are not preserved upon restart
- fixed glu-9: Using http://name:pass@host:port is broken when uploading a model to /system/model
- Implemented glu-16: Use ip address instead of canonical name for Console->Agent communication
- Updated Copyright
1.6.0 (2011/01/11)¶
- changed the tutorial to deploy jetty and the sample webapps to better demonstrate the capabilities of glu
- added jetty glu script which demonstrates a ‘real’ glu script and allows to deploy a webapp container with webapps and monitor them
- added sample webapp with built in monitoring capabilities
- added replaceTokens and httpHead to shell (for use in glu script)
- added Help tab in the console with embedded forum
- Implemented glu-12 (partially): better packaging
- fixed glu-13: missing connection string in setup-zookeeper.sh
1.5.1 (2010/12/28)¶
1.5.0 (2010/12/24)¶
- fixed glu-8: added support for urls with basic authentication (thanks to Ran)
- added console cli (org.linkedin.glu.console-cli) which talks to the REST api of the console
- changed tutorial to add a section which demonstrates the use of the new cli
- added the glu logo (thanks to Markus for the logos)
1.4.0 (2010/12/20)¶
- use of gradle-plugins 1.5.0 which now uses gradle 0.9
- added packaging for all clis
- added org.linkedin.glu.packaging-all which contains all binaries + quick tutorial
- added org.linkedin.glu.console-server for a standalone console (using jetty under the cover)
- moved keys to a top-level folder (dev-keys)
- minor change in the console to handle the case where there is no fabric better
- new tutorial based on pre-built binaries (org.linkedin.glu.packaging-all)
1.3.2 (2010/12/07)¶
- use of linkedin-utils 1.2.1 which fixes the issue of password not being masked properly
- use of linkedin-zookeeper 1.2.1
1.3.1 (2010/12/02)¶
- use of gradle-plugins 1.3.1
- fixes issue in agent cli (exception when parsing configuration)
1.0.0 (2010/11/07)¶
- First release