Release Notes


Upgrading

To upgrade REX-Ray to the latest version, use curl install:

curl -sSL https://dl.bintray.com/emccode/rexray/install | sh

Use rexray version to determine the currently installed version of REX-Ray:

$ rexray version
REX-Ray
-------
Binary: /Users/akutz/Projects/go/bin/rexray
SemVer: 0.4.0
OsArch: Linux-x86_64
Branch: v0.4.0
Commit: c83f0237e60792cfe89c4255d7149b5670965539
Formed: Mon, 20 Jun 2016 20:56:48 CDT

libStorage
----------
SemVer: 0.1.3
OsArch: Linux-x86_64
Branch: v0.1.3
Commit: 182a626937677a081b89651598ee2eac839308e7
Formed: Wed, 15 Jun 2016 16:27:36 CDT

Version 0.7.0 (TBD)

This feature release includes support for libStorage 0.4.0 and the Ceph RBD storage platform.

Enhancements

Version 0.6.4 (2017/01/05)

This release includes the new script manager and FlexVol REX-Ray plug-in.

Enhancements

Bug Fixes

Version 0.6.3 (2016/12/07)

This release includes the ability to specify a custom encryption key when creating volumes and makes the volume attach command idempotent.

Enhancements

Bug Fixes

Version 0.6.2 (2016/12/05)

While a patch release, this new version includes some much-requested features and updates.

Enhancements

Bug Fixes

Version 0.6.1 (2016/12/01)

This release includes some minor fixes as well as a new and improved version of the volume ls command.

Enhancements

Bug Fixes

Version 0.6.0 (2016/10/20)

This release reintroduces the Elastic Block Storage (EBS) driver, formerly known as the EC2 driver. All vestigial EC2 configuration properties are still supported.

Enhancements

Bug Fixes

Version 0.5.1 (2016/09/14)

This is a minor release, but includes a few important patches.

Enhancements

Bug Fixes

Version 0.5.0 (2016/09/07)

Beginning with this release, REX-Ray's versions will increment the MINOR component with the introduction of a new storage driver via libStorage in concert with the guidelines set forth by semantic versioning.

New Features

Enhancements

Thank You

Name Blame
Chris Duchesne Chris not only took on the role of project manager for libStorage and REX-Ray, he still provides ongoing test plan execution and release validation. Thank you Chris!
Kenny Cole Kenny's tireless effort to support users and triage submitted issues is such a cornerstone to libStorage and REX-Ray that I'm not sure what this project would do without him!
Martin Hrabovcin Martin, along with Kasisnu, definitely win the "Community Members of the Month" award! Their hard work and dedication resulted in the introduction of the Amazon EFS storage driver. Thank you Martin & Kasisnu!
Kasisnu Singh Have I mentioned we have the best community around? Seriously, thank you again Kasisnu! Your work, along with Martin's, is a milestone in the growth of libStorage and REX-Ray.

Version 0.4.2 (2016/07/12)

This minor update represents a major performance boost for REX-Ray. Operations that use to take up to minutes now take seconds or less. The memory footprint has been reduced from the magnitude of phenomenal cosmic powers to the size of an itty bitty living space!

Enhancements

Version 0.4.1 (2016/07/08)

Although a minor release, 0.4.1 provides some meaningful and useful enhancements and fixes, further strengthening the foundation of the REX-Ray platform.

Enhancements

Bug Fixes

Version 0.4.0 (2016/06/20)

REX-Ray 0.4.0 introduces centralized configuration and control along with a new client/server architecture -- features made possible by libStorage. Users are no longer required to configure storage drivers or store privileged information on all systems running the REX-Ray client. The new client delegates storage-platform related operations to a remote, libStorage-compatible server such as REX-Ray or Poly.

Please note that the initial release of REX-Ray 0.4 includes support for only the following storage platforms:

Support for the full compliment of drivers present in earlier versions of REX-Ray will be reintroduced over the course of several, incremental updates, beginning with 0.4.1.

New Features

Enhancements

Bug Fixes

Thank You

Yes, the author is so lazy as to blatantly copy this section. So sue me :)

Name Blame
Clint Kitson His vision come to fruition. That's his vision, thus please assign all bugs to Clint :)
Vladimir Vivien A nascent player, Vlad had to hit the ground running and has been a key contributor
Kenny Coleman While some come close, none are comparable to Kenny's handlebar
Jonas Rosland Always good for a sanity check and keeping things on the straight and narrow
Steph Carlson Steph keeps the convention train chugging along...
Amanda Katona And Amanda is the one keeping the locomotive from going off the rails
Drew Smith Drew is always ready to lend a hand, no matter the problem
Chris Duchesne His short time with the team is in complete opposition to the value he has added to this project
David vonThenen David has been a go-to guy for debugging the most difficult of issues
Steve Wong Steve stays on top of the things and keeps use cases in sync with industry needs
Travis Rhoden Another keen mind, Travis is also a great font of technical know-how
Peter Blum Absent Peter, the EMC World demo would not have been ready
Megan Hyland And absent Megan, Peter's work would only have taken things halfway there
Eugene Chupriyanov For helping with the EC2 planning
Matt Farina Without Glide, it all comes crashing down
Josh Bernstein The shadowy figure behind the curtain...

Version 0.3.3 (2016/04/21)

New Features

Enhancements

Bug Fixes

Thank You

Version 0.3.2 (2016-03-04)

New Features

Enhancements

Bug Fixes

Updates

Thank You

Version 0.3.1 (2015-12-30)

New Features

Enhancements

Milestone Issues

This release also includes many other small enhancements and bug fixes. For a complete list click here.

Downloads

Click here for the 0.3.1 binaries.

Version 0.3.0 (2015-12-08)

New Features

Enhancements

Tweaks

Pre-Emption Support

Pre-Emption is an important feature when using persistent volumes and container schedulers. Without pre-emption, the default behavior of the storage drivers is to deny the attaching operation if the volume is already mounted elsewhere.
If it is desired that a host should be able to pre-empt from other hosts, then this feature can be used to enable any host to pre-empt from another.

Milestone Issues

This release also includes many other small enhancements and bug fixes. For a complete list click here.

Downloads

Click here for the 0.3.0 binaries.

Version 0.2.1 (2015-10-27)

REX-Ray release 0.2.1 includes OpenStack support, vastly improved documentation, and continued foundation changes for future features.

New Features

Enhancements

Tweaks

Version 0.2.0 (2015-09-30)

Installation, SysV, SystemD Support

REX-Ray now includes built-in support for installing itself as a service on Linux distributions that support either SystemV or SystemD initialization systems. This feature has been tested successfully on both CentOS 7 Minimal (SystemD) and Ubuntu 14.04 Server (SystemV) distributions.

To install REX-Ray on a supported Linux distribution, all that is required now is to download the binary and execute:

sudo ./rexray service install

What does that do? In short the above command will determine if the Linux distribution uses systemctl, update-rc.d, or chkconfig to manage system services. After that the following steps occur:

  1. The path /opt/rexray is created and chowned to root:root with permissions set to 0755.
  2. The binary is copied to /opt/rexray/rexray and chowned to root:root with permissions set to 4755. This is important, because this means that any non-privileged user can execute the rexray binary as root without requiring sudo privileges. For more information on this feature, please read about the Linux kernel's super-user ID (SUID) bit.

Because the REX-Ray binary can now be executed with root privileges by non-root users, the binary can be used by non-root users to easily attach and mount external storage.

  1. The directory /etc/rexray is created and chowned to root:root.

The next steps depends on the type of Linux distribution. However, it's important to know that the new version of the REX-Ray binary now supports managing its own PID (at /var/run/rexray.pid) when run as a service as well as supports the standard SysV control commands such as start, stop, status, and restart.

For SysV Linux distributions that use chkconfig or update-rc.d, a symlink of the REX-Ray binary is created in /etc/init.d and then either chkconfig rexray on or update-rc.d rexray defaults is executed.

Modern Linux distributions have moved to SystemD for controlling services. If the systemctl command is detected when installing REX-Ray then a unit file is written to /etc/systemd/system/rexray.service with the following contents:

[Unit]
Description=rexray
Before=docker.service

[Service]
EnvironmentFile=/etc/rexray/rexray.env
ExecStart=/usr/local/bin/rexray start -f
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=docker.service

The REX-Ray service is not started immediately upon installation. The install command completes by informing the users that they should visit the REX-Ray website for information on how to configure REX-Ray's storage drivers. The text to the users also explains how to start the REX-Ray service once it's configured using the service command particular to the Linux distribution.

Single Service

This release also removes the need for REX-Ray to be configured as multiple service instances in order to provide multiple end-points to such consumers such as Docker. REX-Ray's backend now supports an internal, modular design which enables it to host multiple module instances of any module, such as the DockerVolumeDriverModule. In fact, one of the default, included modules is...

Admin Module & HTTP JSON API

The AdminModule enables an HTTP JSON API for managing REX-Ray's module system as well as provides a UI to view the currently running modules. Simply start the REX-Ray server and then visit the URL http://localhost:7979 in your favorite browser to see what's loaded. Or you can access either of the currently supported REST URLs:

http://localhost:7979/r/module/types

and

http://localhost:7979/r/module/instances

Actually, those aren't the only two URLs, but the others are for internal users as of this point. However, the source is open, so... :)

If you want to know what modules are available by using the CLI, after starting the REX-Ray service simply type:

[0]akutz@poppy:rexray$ rexray service module types
[
  {
    "id": 2,
    "name": "DockerVolumeDriverModule",
    "addresses": [
      "unix:///run/docker/plugins/rexray.sock",
      "tcp://:7980"
    ]
  },
  {
    "id": 1,
    "name": "AdminModule",
    "addresses": [
      "tcp://:7979"
    ]
  }
]
[0]akutz@poppy:rexray$

To get a list of the running modules you would type:

[0]akutz@poppy:rexray$ rexray service module instance get
[
  {
    "id": 1,
    "typeId": 1,
    "name": "AdminModule",
    "address": "tcp://:7979",
    "description": "The REX-Ray admin module",
    "started": true
  },
  {
    "id": 2,
    "typeId": 2,
    "name": "DockerVolumeDriverModule",
    "address": "unix:///run/docker/plugins/rexray.sock",
    "description": "The REX-Ray Docker VolumeDriver module",
    "started": true
  },
  {
    "id": 3,
    "typeId": 2,
    "name": "DockerVolumeDriverModule",
    "address": "tcp://:7980",
    "description": "The REX-Ray Docker VolumeDriver module",
    "started": true
  }
]
[0]akutz@poppy:rexray$

Hmmm, you know, the REX-Ray CLI looks a little different in the above examples, doesn't it? About that...

Command Line Interface

The CLI has also been enhanced to present a more simplified view up front to users. The commands are now categorized into logical groups:

[0]akutz@pax:~$ rexray
REX-Ray:
  A guest-based storage introspection tool that enables local
  visibility and management from cloud and storage platforms.

Usage:
  rexray [flags]
  rexray [command]

Available Commands:
  volume      The volume manager
  snapshot    The snapshot manager
  device      The device manager
  adapter     The adapter manager
  service     The service controller
  version     Print the version
  help        Help about any command

Global Flags:
  -c, --config="/Users/akutz/.rexray/config.yaml": The REX-Ray configuration file
  -?, --help[=false]: Help for rexray
  -h, --host="tcp://:7979": The REX-Ray service address
  -l, --logLevel="info": The log level (panic, fatal, error, warn, info, debug)
  -v, --verbose[=false]: Print verbose help information

Use "rexray [command] --help" for more information about a command.

Travis-CI Support

REX-Ray now supports Travis-CI builds either from the primary REX-Ray repository or via a fork. All builds should be executed through the Makefile, which is a Travis-CI default. For the Travis-CI settings please be sure to set the environment variable GO15VENDOREXPERIMENT to 1.