diff --git a/nailgun/nailgun/api/v1/handlers/cluster.py b/nailgun/nailgun/api/v1/handlers/cluster.py index 7ceefa99e4..bd24089a15 100644 --- a/nailgun/nailgun/api/v1/handlers/cluster.py +++ b/nailgun/nailgun/api/v1/handlers/cluster.py @@ -570,14 +570,10 @@ class ClusterExtensionsHandler(BaseHandler): cluster = self._get_cluster_obj(cluster_id) # TODO(agordeev): web.py does not support parsing of array arguments # in the queryset so we specify the input as comma-separated list - extension_names = list(self.get_param_as_set('extension_names', - default=[])) + extension_names = self.get_param_as_set('extension_names', default=[]) - try: - data = self.validator.validate_delete(extension_names, - cluster) - except errors.CannotFindExtension as exc: - raise self.http(400, exc.message) + data = self.checked_data(self.validator.validate_delete, + data=extension_names, cluster=cluster) remove_extensions_from_object(cluster, data) raise self.http(204) diff --git a/nailgun/nailgun/api/v1/validators/extension.py b/nailgun/nailgun/api/v1/validators/extension.py index 6209f1ec61..40f3724235 100644 --- a/nailgun/nailgun/api/v1/validators/extension.py +++ b/nailgun/nailgun/api/v1/validators/extension.py @@ -39,7 +39,7 @@ class ExtensionValidator(BasicValidator): @classmethod def validate_delete(cls, extension_names, cluster): - not_found_extensions = set(extension_names) - set(cluster.extensions) + not_found_extensions = extension_names - set(cluster.extensions) if not_found_extensions: raise errors.CannotFindExtension( "No such extensions to disable: {0}".format( diff --git a/nailgun/nailgun/test/unit/test_extensions.py b/nailgun/nailgun/test/unit/test_extensions.py index 84ee7841db..cafe74d1e4 100644 --- a/nailgun/nailgun/test/unit/test_extensions.py +++ b/nailgun/nailgun/test/unit/test_extensions.py @@ -247,7 +247,7 @@ class TestExtensionValidator(BaseTestCase): cluster = mock.Mock() cluster.extensions = global_exts - ExtensionValidator.validate_delete(global_exts[:2], cluster) + ExtensionValidator.validate_delete(set(global_exts[:2]), cluster) def test_invalid_delete_extensions(self): global_exts = 'volume_manager', 'bareon', 'ultralogger' @@ -257,7 +257,7 @@ class TestExtensionValidator(BaseTestCase): with self.assertRaisesRegexp(errors.CannotFindExtension, 'No such extensions to disable: invalid'): - ExtensionValidator.validate_delete(data, cluster) + ExtensionValidator.validate_delete(set(data), cluster) def test_validate_extensions(self): global_exts = 'volume_manager', 'bareon', 'ultralogger'