Merge "Fix Galera_common.grow/shrink to propogate exceptions"
This commit is contained in:
commit
36a54ed6d8
@ -25,7 +25,6 @@ pymongo!=3.1,>=3.0.2 # Apache-2.0
|
|||||||
redis>=2.10.0 # MIT
|
redis>=2.10.0 # MIT
|
||||||
psycopg2>=2.5 # LGPL/ZPL
|
psycopg2>=2.5 # LGPL/ZPL
|
||||||
cassandra-driver!=3.6.0,>=2.1.4 # Apache-2.0
|
cassandra-driver!=3.6.0,>=2.1.4 # Apache-2.0
|
||||||
pycrypto>=2.6 # Public Domain
|
|
||||||
couchdb>=0.8 # Apache-2.0
|
couchdb>=0.8 # Apache-2.0
|
||||||
os-testr>=0.8.0 # Apache-2.0
|
os-testr>=0.8.0 # Apache-2.0
|
||||||
astroid<1.4.0 # LGPLv2.1 # breaks pylint 1.4.4
|
astroid<1.4.0 # LGPLv2.1 # breaks pylint 1.4.4
|
||||||
|
@ -168,6 +168,7 @@ class GaleraCommonCluster(cluster_models.Cluster):
|
|||||||
db_info.id, [instance.id for instance in new_instances])
|
db_info.id, [instance.id for instance in new_instances])
|
||||||
except Exception:
|
except Exception:
|
||||||
db_info.update(task_status=ClusterTasks.NONE)
|
db_info.update(task_status=ClusterTasks.NONE)
|
||||||
|
raise
|
||||||
|
|
||||||
return self.__class__(context, db_info,
|
return self.__class__(context, db_info,
|
||||||
datastore, datastore_version)
|
datastore, datastore_version)
|
||||||
@ -191,6 +192,7 @@ class GaleraCommonCluster(cluster_models.Cluster):
|
|||||||
for instance in removal_instances])
|
for instance in removal_instances])
|
||||||
except Exception:
|
except Exception:
|
||||||
self.db_info.update(task_status=ClusterTasks.NONE)
|
self.db_info.update(task_status=ClusterTasks.NONE)
|
||||||
|
raise
|
||||||
|
|
||||||
return self.__class__(self.context, self.db_info,
|
return self.__class__(self.context, self.db_info,
|
||||||
self.ds, self.ds_version)
|
self.ds, self.ds_version)
|
||||||
|
@ -25,6 +25,8 @@ from trove.common import exception
|
|||||||
from trove.common import remote
|
from trove.common import remote
|
||||||
from trove.common.strategies.cluster.experimental.galera_common import (
|
from trove.common.strategies.cluster.experimental.galera_common import (
|
||||||
api as galera_api)
|
api as galera_api)
|
||||||
|
from trove.common.strategies.cluster.experimental.galera_common import (
|
||||||
|
taskmanager as galera_task)
|
||||||
from trove.instance import models as inst_models
|
from trove.instance import models as inst_models
|
||||||
from trove.quota.quota import QUOTAS
|
from trove.quota.quota import QUOTAS
|
||||||
from trove.taskmanager import api as task_api
|
from trove.taskmanager import api as task_api
|
||||||
@ -327,6 +329,20 @@ class ClusterTest(trove_testtools.TestCase):
|
|||||||
[mock_inst_create.return_value.id] * 3)
|
[mock_inst_create.return_value.id] * 3)
|
||||||
self.assertEqual(3, mock_inst_create.call_count)
|
self.assertEqual(3, mock_inst_create.call_count)
|
||||||
|
|
||||||
|
@patch.object(DBCluster, 'update')
|
||||||
|
@patch.object(galera_api, 'CONF')
|
||||||
|
@patch.object(inst_models.Instance, 'create')
|
||||||
|
@patch.object(QUOTAS, 'check_quotas')
|
||||||
|
@patch.object(remote, 'create_nova_client')
|
||||||
|
def test_grow_exception(self, mock_client, mock_check_quotas,
|
||||||
|
mock_inst_create, mock_conf, mock_update):
|
||||||
|
mock_client.return_value.flavors = Mock()
|
||||||
|
with patch.object(task_api, 'load') as mock_load:
|
||||||
|
mock_load.return_value.grow_cluster = Mock(
|
||||||
|
side_effect=exception.BadRequest)
|
||||||
|
self.assertRaises(exception.BadRequest, self.cluster.grow,
|
||||||
|
self.instances)
|
||||||
|
|
||||||
@patch.object(inst_models.DBInstance, 'find_all')
|
@patch.object(inst_models.DBInstance, 'find_all')
|
||||||
@patch.object(inst_models.Instance, 'load')
|
@patch.object(inst_models.Instance, 'load')
|
||||||
@patch.object(Cluster, 'validate_cluster_available')
|
@patch.object(Cluster, 'validate_cluster_available')
|
||||||
@ -356,3 +372,21 @@ class ClusterTest(trove_testtools.TestCase):
|
|||||||
self.db_info.id, [mock_load.return_value.id])
|
self.db_info.id, [mock_load.return_value.id])
|
||||||
mock_init.assert_called_with(self.context, self.db_info,
|
mock_init.assert_called_with(self.context, self.db_info,
|
||||||
self.datastore, self.datastore_version)
|
self.datastore, self.datastore_version)
|
||||||
|
|
||||||
|
@patch.object(galera_task.GaleraCommonClusterTasks, 'shrink_cluster')
|
||||||
|
@patch.object(galera_api.GaleraCommonCluster, '__init__')
|
||||||
|
@patch.object(DBCluster, 'update')
|
||||||
|
@patch.object(inst_models.DBInstance, 'find_all')
|
||||||
|
@patch.object(inst_models.Instance, 'load')
|
||||||
|
@patch.object(Cluster, 'validate_cluster_available')
|
||||||
|
def test_shrink_exception(self, mock_validate, mock_load, mock_find_all,
|
||||||
|
mock_update, mock_init, mock_shrink):
|
||||||
|
mock_init.return_value = None
|
||||||
|
existing_instances = [Mock(), Mock()]
|
||||||
|
mock_find_all.return_value.all.return_value = existing_instances
|
||||||
|
instance = Mock()
|
||||||
|
with patch.object(task_api, 'load') as mock_load:
|
||||||
|
mock_load.return_value.shrink_cluster = Mock(
|
||||||
|
side_effect=exception.BadRequest)
|
||||||
|
self.assertRaises(exception.BadRequest, self.cluster.shrink,
|
||||||
|
[instance])
|
||||||
|
Loading…
Reference in New Issue
Block a user