Volume scheduling for container schedulers
Go CSS Makefile Shell API Blueprint HTML JavaScript
Latest commit b14719a Aug 19, 2016 @cantbewong cantbewong committed on GitHub Merge pull request #130 from dvonthenen/feature/gotestbenchmark
Key/Value Store Benchmarks
Failed to load latest commit information.
.build Updated for most recent libstorage May 5, 2016
.docs Update release notes and glide to reference libstorage 0.1.5 proper r… Jul 13, 2016
api Workaround to getting the error for the polly CLI Jul 1, 2016
client Update the documentation to break out libstorage configuration to fla… Jun 27, 2016
core Added the following: Aug 19, 2016
daemon Refactored including new CLI and admin interface Apr 29, 2016
docker_resources Existing Dockerfile updated to build new version of Polly. Includes d… Jun 28, 2016
polly Add more panic logging Jun 29, 2016
test Refactored to include API and build process Apr 26, 2016
util Update libstorage dependency Jun 2, 2016
.gitignore Fix rexray on node0 to start in service mode Jun 28, 2016
.hound.yml This should add bintray download support, coveralls support, hound (s… May 1, 2016
.travis.yml Merge pull request #86 from dvonthenen/bug/fixgopkgdep Jun 14, 2016
Dockerfile Existing Dockerfile updated to build new version of Polly. Includes d… Jun 28, 2016
LICENSE Initial commit Apr 5, 2016
Makefile Merge pull request #84 from cduchesne/bugfix/makefile_uname_flag Jun 14, 2016
README.md Updated documentation May 17, 2016
VERSION Update the VERSION file for 0.1.2-dev work Jul 13, 2016
Vagrantfile Adds multiple "state" support for vagrant up Jul 1, 2016
build-linux.sh Added the following: Aug 19, 2016
glide.yaml Added the following: Aug 19, 2016
mkdocs.yml Updated docs May 10, 2016
polly.apib Update polly to use port 7978 for the admin interface May 3, 2016
polly.go Updated for latest libstorage changes May 17, 2016


polly - Polymorphic Volume Scheduling

Build Status Go Report Card codecov.io Download Download Docs


Storage scheduling for container schedulers

Polly implements a centralized storage scheduling service that integrates with popular container schedulers of different application platforms for containerized workloads. It is an open source framework that supports use of external storage, with scheduled containerized workloads, at scale. It can be used to centralize the control of creating, mapping, snapshotting and deleting persistent data volumes on a multitude of storage platforms.

Full Docuemntation

Continue reading the full documentation at ReadTheDocs.

Key Features

  • Configure services to interface with schedulers and groups of container runtimes
  • Restrict existing volumes and new volumes to services
  • Centralized control and distribution of storage resources
  • Offer based mechanism for advertising storage to container schedulers
  • Framework supporting direct integration to any container scheduler, storage orchestrator, and storage platform
  • Basic Volume Management capabilities

What it does

Container runtime schedulers need to be integrated with every aspect of available hardware resources, including persistent storage. When requesting resources for an application the scheduler gets offers for CPU, RAM and disk.

To be able to offer persistent storage in a scalable way, the application and container scheduler needs awareness of the available resources from the underlying storage infrastructure.

Example intended workflow

The following is an intended workflow for Polly. Today the requests for volumes come through the container runtimes or libStorage compatible clients directly.

  1. An application requires highly available storage with a specific set of policies applied.
  2. The scheduler receives a request to start the application.
  3. The scheduler checks with Polly or already is aware of outstanding offers for storage resources.
  4. Scheduler send request to container runtimes to start the container with persistent storage.
  5. Container runtime requests volume access from Polly.
  6. Container runtime orchestrates process of starting container and attaching persistent storage with help from a libStorage storage orchestrator.

Framework to support the following platforms

Polly provides an open framework to enable integration to any container, cloud, or storage platform.

Container runtime schedulers:

  • Docker Swarm
  • Mesos
  • Kubernetes
  • Cloud Foundry

Supported cloud and storage platforms directly comes from the libStorage project. REX-Ray is a compatible libStoage client instance that can be ran alongside the container runtimes and remotely talk with Polly.

Cloud platforms:

  • AWS EC2 (EBS)
  • Google Compute Engine
  • OpenStack
    • Private Cloud
    • Public Cloud (RackSpace, and others)

Planned supported storage platforms:

  • EMC ScaleIO
    • XtremIO
    • VMAX
    • Isilon
  • Others
  • VirtualBox


The following command will install Polly. If using CentOS, RedHat, Ubuntu, or Debian the necessary service manager is used to bootstrap the process on startup.

curl -sSL https://dl.bintray.com/emccode/polly/install | sh -s stable

You can also install the latest staged release with the following command.

curl -sSL https://dl.bintray.com/emccode/polly/install | sh -s staged

Make sure to create an /etc/polly/config.yml following this to configure Polly properly.


Polly makes use of the open source storage plugin framework libStorage to enable storage orchestrator tools and container runtimes to make requests of storage. Any storage platform that has a driver implementation for the libStorage framework will work with Polly.