Skip to content
Simple Python program for managing Cassandra schema migrations
Python
Branch: master
Clone or download
#34 Compare This branch is 53 commits ahead, 1 commit behind dmchoull:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cdeploy
.gitignore
.travis.yml
Changelog.md
LICENSE.txt
README.md
pylintrc
setup.cfg
setup.py
test-requirements-2.txt
tox.ini

README.md

cdeploy Build Status

cdeploy is a simple tool to manage your Cassandra schema migrations in the style of dbdeploy

Installation

pip install cdeploy

Command Line Usage

By default, cdeploy will look for migrations in './migrations'. This can be overridden by passing the path to your migrations directory as the first argument:

cdeploy db/migrations

The migrations directory should contain CQL scripts using the following naming convention: [version]_migration_description.cql

For example:

migrations/
    001_create_orders_table.cql
    002_create_customers_table.cql

Version numbers should begin from 1. Migration scripts may contain multiple semicolon terminated CQL statements. Comment lines can begin with either "--" or "//".

Migrations can also specify how to revert the changes by including additional statements following a line containing "--//@UNDO". For example:

CREATE TABLE orders(
    order_id uuid PRIMARY KEY,
    price text
);

--//@UNDO

DROP TABLE orders;

To undo the most recently applied migration, run:

cdeploy --undo

Python Library Usage

    from cdeploy import migrator

    schema_migrator = migrator.Migrator('/path/to/migrations/directory', cassandra_session)
    schema_migrator.run_migrations()

Configuration

cdeploy will look in your migrations directory for a configuration file named cassandra.yml, in a subdirectory named config:

migrations/
   config/
       cassandra.yml

The configuration file specifies the hosts to connect to and the keyspace name, and supports multiple environments. For example:

development:
    hosts: [host1]
    keyspace: keyspace_name

production:
    hosts: [host1, host2, host3]
    keyspace: keyspace_name

The environment can be set via the ENV shell variable, and defaults to development if not specified:

ENV=production cdeploy

Additional configuration parameters for Cassandra are available:

development:
    hosts: [host1]
    keyspace: keyspace_name
    auth_enabled: true
    auth_username: username
    auth_password: password
    port: 9042
    ssl_enabled: true
    ssl_ca_certs: /path/to/ca/certs
    consistency_level: ALL
    timeout: 10
You can’t perform that action at this time.