summaryrefslogtreecommitdiff
path: root/trove/common/strategies/cluster/experimental/cassandra/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'trove/common/strategies/cluster/experimental/cassandra/api.py')
-rw-r--r--trove/common/strategies/cluster/experimental/cassandra/api.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/trove/common/strategies/cluster/experimental/cassandra/api.py b/trove/common/strategies/cluster/experimental/cassandra/api.py
index ab680b34..084b716b 100644
--- a/trove/common/strategies/cluster/experimental/cassandra/api.py
+++ b/trove/common/strategies/cluster/experimental/cassandra/api.py
@@ -82,19 +82,20 @@ class CassandraCluster(models.Cluster):
@classmethod
def create(cls, context, name, datastore, datastore_version,
- instances, extended_properties, locality):
+ instances, extended_properties, locality, configuration):
LOG.debug("Processing a request for creating a new cluster.")
# Updating Cluster Task.
db_info = models.DBCluster.create(
name=name, tenant_id=context.tenant,
datastore_version_id=datastore_version.id,
- task_status=ClusterTasks.BUILDING_INITIAL)
+ task_status=ClusterTasks.BUILDING_INITIAL,
+ configuration_id=configuration)
cls._create_cluster_instances(
context, db_info.id, db_info.name,
datastore, datastore_version, instances, extended_properties,
- locality)
+ locality, configuration)
# Calling taskmanager to further proceed for cluster-configuration.
task_api.load(context, datastore_version.manager).create_cluster(
@@ -106,7 +107,7 @@ class CassandraCluster(models.Cluster):
def _create_cluster_instances(
cls, context, cluster_id, cluster_name,
datastore, datastore_version, instances, extended_properties,
- locality):
+ locality, configuration_id):
LOG.debug("Processing a request for new cluster instances.")
cassandra_conf = CONF.get(datastore_version.manager)
@@ -153,7 +154,7 @@ class CassandraCluster(models.Cluster):
instance['volume_size'], None,
nics=instance.get('nics', None),
availability_zone=instance_az,
- configuration_id=None,
+ configuration_id=configuration_id,
cluster_config=member_config,
modules=instance.get('modules'),
locality=locality,
@@ -180,9 +181,11 @@ class CassandraCluster(models.Cluster):
db_info.update(task_status=ClusterTasks.GROWING_CLUSTER)
locality = srv_grp.ServerGroup.convert_to_hint(self.server_group)
+ configuration_id = self.db_info.configuration_id
+
new_instances = self._create_cluster_instances(
context, db_info.id, db_info.name, datastore, datastore_version,
- instances, None, locality)
+ instances, None, locality, configuration_id)
task_api.load(context, datastore_version.manager).grow_cluster(
db_info.id, [instance.id for instance in new_instances])
@@ -212,6 +215,12 @@ class CassandraCluster(models.Cluster):
def upgrade(self, datastore_version):
self.rolling_upgrade(datastore_version)
+ def configuration_attach(self, configuration_id):
+ self.rolling_configuration_update(configuration_id, apply_on_all=False)
+
+ def configuration_detach(self):
+ self.rolling_configuration_remove(apply_on_all=False)
+
class CassandraClusterView(ClusterView):