The cass-config-builder can be consumed as either a jar artifact or inside of a Docker image.
./gradlew test
This task, without additional parameters, will test the cass-config-definitions submodule. However, this can be inconvenient if you want to make changes in your own fork of the cass-config-definitions repo. The following -P option allows you to point to a different directory for the definition files to test with:
./gradlew test -Pdefinitions.location=~/cass-config-definitions/resources
./gradlew assemble
./gradlew publishToMavenLocal
./gradlew publish
This task uses the following gradle settings:
| Setting | Description |
|---|---|
| mavenRepositoryUrl | Maven repository to publish to |
| mavenRepositoryUsername | Username for publishing |
| mavenRepositoryPassword | Password for publishing |
Docker images are built automatically and pushed to GitHub packages for pushes to master and PRs against master. When creating a release tag (e.g. v1.2.0) an image is produced and pushed to DockerHub.
The cass-config-builder receives input via the following environment variables:
| Variable | Description |
|---|---|
| CONFIG_FILE_DATA | See below for explanation |
| CONFIG_OUTPUT_DIRECTORY | Filesystem location to place rendered files. Defaults to /config |
| DEFINITIONS_LOCATION | Filesystem location of the Definition Files. Defaults to /definitions |
| POD_IP | The IP of the Kubernetes Pod |
| HOST_IP | The IP of the Kubernetes worker hosting the Pod |
| PRODUCT_NAME | Either "cassandra" or "dse" |
| PRODUCT_VERSION | The version number for Cassandra or DSE |
| RACK_NAME | The Cassandra rack name for this Pod |
This is a JSON-encoded string representation of a nested dictionary. At the top-level of this data structure there are three special keys and an optional number of additional keys.
The three required top-level keys are "cluster-info", "datacenter-info", and "node-info".
The value for cluster-info key is a dictionary with two required fields:
| Key | Description |
|---|---|
| name:Cluster name | |
| seeds:A comma separated list of IP addresses of Cassandra seed nodes |
The value for datacenter-info key is a dictionary with four required fields:
| Key | Description |
|---|---|
| name:Datacenter name | |
| graph-enabled:Enable DSE graph workload | |
| solr-enabled:Enable DSE Solr workload | |
| spark-enabled:Enable DSE Spark workload |
Note: Graph, Solr, and Spark workloads are not currently supported in the Cass-Operator.
The value for node-info key is a dictionary with eight required fields:
| Key | Description |
|---|---|
| name:Node name | |
| rack:Rack name | |
| listen_address:IP for listen address | |
| native_transport_address:IP for native_transport address | |
| native_transport_broadcast_address:IP for native_transport broadcast address | |
| initial_token:The initial token | |
| auto_bootstrap:The auto_bootstrap value | |
| agent_version:The version of Datastax Agent to support |
The POD_IP will be used as the default value for the listen_address and native_transport_broadcast_address if they are not specified.
Cassandra refers to native_transport address as rpc_address and native_transport_broadcast_address as broadcast_rpc_address.
native_transport_address will be defaulted to "0.0.0.0".
The list of supported additional fields is dependent upon the exact version of DSE or Cassandra that is being targetted. Each key is called a "config-file-id" and corresponds to a specific configuration file in that version of DSE or Cassandra. The exact details of the config-file-ids and their supported values are defined in the cass-config-builder Definition Files.
For more details on the Definition Files, see the Github repository: