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 :ref:`glu-script-packaging` 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
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
- Fixed glu-115: NPE when creating undeploy/redeploy plan for a model with child/parent relationship
- Fixed glu-116: DELTA takes priority over ERROR in the UI
- Fixed glu-117: shell.fetch generates Authorization header when not required
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).
- Fixed glu-113: Exception with customized dashboard
- Implemented glu-114: Adding concept of plugin to glu
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 :ref:`configuration section <console-configuration>` 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
intoDeployments
System
tab is gone and has been replaced with a combination of theModel
tab and thePlans
subtab in the dashboardModel
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]
))
- added
- Dashboard is now customizable and a user can create different dashboards (see the :ref:`dashboard section<console-dashboard>` 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 (oldSystem
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
toRELEASE
- 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
inconsole.defaults
. - Renamed
console.defaults.model
intoconsole.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
intoconsole.defaults.model
: to be consistent with the UI where you are looking at models
- 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
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 fabricsGET /-/agents
: list agent -> fabric associationPUT /<fabric>/agent/<agent>/fabric
: assign a fabric to an agentDELETE /<fabric>/agent/<agent>/fabric
: clear the fabric for an agent (also added to the UIAdmin/View agents fabric
)DELETE /<fabric>/agent/<agent>
: decommission and agent (clear ZooKeeper of all agent information) (also added to the UIAdmin/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.
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 :ref:`documentation <console-configuration-non-editable-model>`)
- 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
vsERROR
- UI customization: added powerful ability to provide your own custom stylesheet (see :ref:`documentation <console-configuration-custom-css>`) allowing you to easily tweak the rendering (colors, layout, etc...)
- Added documentation example on how to use a :ref:`different database <console-configuration-database-mysql>` 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.
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).
- Implemented glu-66: implement rest call GET /plans
- Fixed glu-81: Sometimes ste.message is null. It is null when the exception is java.util
- Fixed glu-82: Add some spacing around the pagination items.
- Fixed glu-83: NPE at http://glu/console/plan/deployments/XXX
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 adds the following features:
- :ref:`parent/child relationship <static-model-entries-parent>` 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 (:ref:`entryState <static-model-entries-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 :ref:`access it <goe-rest-api-get-model-delta>`
- 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).
- 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
- Fixed glu-64: Concurrent deployment of ivy artifacts causes wrong artifact to be downloaded
- Fixed glu-61: ClassCastException when error is a String
- Fixed glu-62: "View Full Stack Trace" fails if agent disappears
- 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
- 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
- Fixed glu-52: deadlock on agent shutdown
- Fixed glu-51: agent does not recover properly when safeOverwrite fails
Also tweaked a couple of parameters for the agent (starting VM now 128M).
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
- fixed glu-31: Agent exception when no persistent properties files
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.
- fixed glu-26: agent cli fails when using spaces
- fixed glu-27: Unexpected exception can disable the agent
fixed glu-22: jetty glu script (1.6.0) does not handle restart properly
Implemented glu-25: add tagging capability
Dashboard View:
Agent View:
Configurable:
- workaround for glu-19: New users aren't displayed at
/console/admin/user/list
- fixed glu-20: Race condition while upgrading the agent
- 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
- 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
andhttpHead
toshell
(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
- fixed glu-10: missing -s $GLU_ZK_CONNECT_STRING in setup-agent.sh (thanks to Ran)
- fixed glu-11: missing glu.agent.port when not using default value
- 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)
- 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
)
- use of linkedin-utils 1.2.1 which fixes the issue of password not being masked properly
- use of linkedin-zookeeper 1.2.1
- use of gradle-plugins 1.3.1
- fixes issue in agent cli (exception when parsing configuration)
- First release