Release Notes


Upgrading

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

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

You can determine your currently installed version using rexray version:

$ rexray version
Binary: /usr/local/bin/rexray
SemVer: 0.2.1
OsArch: Linux-x86_64
Branch: master
Commit: 36ccc425faeab49d792eda4851e3d72a85744874
Formed: Tue, 27 Oct 2015 12:54:19 CDT

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.