pypi i trireme


Migration tool providing support for Apache Cassandra, DataStax Enterprise Cassandra, & DataStax Enterprise Solr.

by o19s

1.3.1 (see all)License:BSD
pypi i trireme


Trireme is a tool providing migration support for Apache Cassandra, DataStax Enterprise Cassandra & Solr. Commands are run using the Python Invoke CLI tool.

Update: March 2019 - We are no longer maintaining this Gem. Please contact if you would like to take over this project.

System Dependencies

  • cqlsh must be on the PATH. Some tasks utilize the cqlsh tool for running scripts and dumping schemas to disk.


To use this tool within the scope of your project follow these steps.

  1. Install trireme with pip install trireme

  2. Create a file with the following content:

    from invoke import Collection
    from trireme import trireme
    namespace = Collection(trireme)
  3. Create a file with your Cassandra and Solr information.

    # Cassandra Configuration
    # Contact points for your cluster, currently only the first is used
    contact_points = ['']
    # Keyspace to work with, this doesn't have to exist yet.
    keyspace = 'foo'
    # Replication options. Defined as a map just as you would in CQL.
    replication = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }
    # replication = {'class' : 'NetworkTopologyStrategy', 'dc1' : 3, 'dc2' : 2}
    # Authentication Information
    username = None
    password = None
    # Flag indicating whether this host is the migration master. Migrations are only run on the migration master
    migration_master = True

Solr Configuration

solr_url = ''

4. Run the trireme setup task to create the basic directories

inv trireme.setup


Migrators contain logic to run migrations. This project contains a migrator for simple CQL scripts and Solr core configuration files. Not every migrator supports all actions. For example Solr included in DSE 4.6 does not include the ability to delete cores. In this case we do not have a task named drop.

List all commands:

inv -l

To list optional parameters for a command:

inv --help

Example: inv --help cassandra.add_migration


Note: This feature works with both Apache Cassandra and DataStax Enterprise

Actions supported:

  • cassandra.create - Creates the keyspace along with a table to track migrations. Note: The default replication strategy is SimpleStrategy with a Replication Factor of 3.
  • cassandra.drop - Drops the keyspace.
  • cassandra.migrate - Runs all missing migrations against the keyspace.
  • cassandra.add_migration --name migration_name - Generates a migration file under db/migrations with the current timestamp prepended to the provided --name value.
  • cassandra.dump_schema - Dumps the current schmea to `db/schema.cql. Be careful when using this feature when Solr is enabled.
  • cassandra.load_schema - Loads the schema from db/schema.cql. This may be faster than running all migrations in a project.


  • inv cassandra.create cassandra.migrate - Creates the keyspaces and runs all migrations
  • inv cassandra.load_schema - Creates the keyspace and loads the schema from db/schema.cql


Note: This feature only works with DataStax Enterprise

Actions supported:

  • solr.create [--core] - Uploads the core configuration files and calls the CREATE API endpoint
  • solr.migrate [--core] - Uploads the core configuration files and calls the RELOAD API endpoint
  • solr.add_core --name - Creates a core configuration directory and files. Use the format keyspace.table_name when naming your cores.

Example: inv solr.create - Uploads all core configuration files and calls the create core API endpoint.

solr.create and solr.migrate support the --core flag. This will run the task against only one core instead of all cores. Remember the core name in DSE Solr is keyspace.table_name.

Directory Layout


CQL migration files generated by the cassandra.add_migration command will be placed in this directory with a timestamp prepended.

Example directory layout:



Folder containing all the Solr core configuration files. With DataStax Enterprise the core name is comprised of the keyspace and table name in the format keyspace.table_name. Within this directory we house sub-directories for each core. These directories in turn have the schema.xml and solrconfig.xml files needed for configuring the core.

Example directory layout:


Trireme Project Layout



The code that powers the migration engine. Each migrator receives its own file and provides invoke tasks.

Collects all of the Invoke tasks into a common namespace along with a simple setup task

Python Dependencies

All required items have been specified in requirements.txt and Select items are outlined below.

  • cassandra-driver - DataStax driver for connecting with Cassandra, used when creating and dropping keyspaces
  • requests - HTTP Client, used when communicating with the Solr APIs
  • invoke - Task execution tool & library. This is used to run the exposed migration tasks

Extending Trireme

Adding a new migrator involves placing the code to invoke annotations in a file within the migrators directory. Next add your migrator to the Collection entry in If you create a new migrator and would like to share it with the community, please fork the repo, add your migrator, and then open a pull request.

6yrs ago
7yrs ago
8yrs ago
8yrs ago
No alternatives found
No tutorials found
Add a tutorial
No dependencies found

Rate & Review

No reviews found
Be the first to rate