diff options
Diffstat (limited to 'trove/common/strategies/cluster/experimental/galera_common/api.py')
-rw-r--r-- | trove/common/strategies/cluster/experimental/galera_common/api.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/trove/common/strategies/cluster/experimental/galera_common/api.py b/trove/common/strategies/cluster/experimental/galera_common/api.py index 9b47291f..5083df73 100644 --- a/trove/common/strategies/cluster/experimental/galera_common/api.py +++ b/trove/common/strategies/cluster/experimental/galera_common/api.py @@ -97,7 +97,8 @@ class GaleraCommonCluster(cluster_models.Cluster): @staticmethod def _create_instances(context, db_info, datastore, datastore_version, - instances, extended_properties, locality): + instances, extended_properties, locality, + configuration_id): member_config = {"id": db_info.id, "instance_type": "member"} name_index = 1 @@ -118,7 +119,7 @@ class GaleraCommonCluster(cluster_models.Cluster): availability_zone=instance.get( 'availability_zone', None), nics=instance.get('nics', None), - configuration_id=None, + configuration_id=configuration_id, cluster_config=member_config, modules=instance.get('modules'), locality=locality, @@ -128,7 +129,7 @@ class GaleraCommonCluster(cluster_models.Cluster): @classmethod def create(cls, context, name, datastore, datastore_version, - instances, extended_properties, locality): + instances, extended_properties, locality, configuration): LOG.debug("Initiating Galera cluster creation.") cls._validate_cluster_instances(context, instances, datastore, datastore_version) @@ -136,10 +137,12 @@ class GaleraCommonCluster(cluster_models.Cluster): db_info = cluster_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_instances(context, db_info, datastore, datastore_version, - instances, extended_properties, locality) + instances, extended_properties, locality, + configuration) # Calling taskmanager to further proceed for cluster-configuration task_api.load(context, datastore_version.manager).create_cluster( @@ -160,9 +163,10 @@ class GaleraCommonCluster(cluster_models.Cluster): db_info.update(task_status=ClusterTasks.GROWING_CLUSTER) try: locality = srv_grp.ServerGroup.convert_to_hint(self.server_group) + configuration_id = self.db_info.configuration_id new_instances = self._create_instances( context, db_info, datastore, datastore_version, instances, - None, locality) + None, locality, configuration_id) task_api.load(context, datastore_version.manager).grow_cluster( db_info.id, [instance.id for instance in new_instances]) @@ -203,6 +207,12 @@ class GaleraCommonCluster(cluster_models.Cluster): def upgrade(self, datastore_version): self.rolling_upgrade(datastore_version) + def configuration_attach(self, configuration_id): + self.rolling_configuration_update(configuration_id) + + def configuration_detach(self): + self.rolling_configuration_remove() + class GaleraCommonClusterView(ClusterView): |