Remove list conversion for cluster extension handler

Gets rid of unnecessary conversion to list for accepted
data as a set for DELETE handler and then passing it straight
to validator without extra ordinary conversion back to set.

Change-Id: Ie24d20f68b96feba4443214de47603c5802be613
Related-Bug: #1614526
This commit is contained in:
Alexander Gordeev 2016-09-13 11:15:23 +03:00
parent b775fdcf20
commit f72dd0967d
3 changed files with 6 additions and 10 deletions

View File

@ -596,14 +596,10 @@ class ClusterExtensionsHandler(BaseHandler):
cluster = self._get_cluster_obj(cluster_id) cluster = self._get_cluster_obj(cluster_id)
# TODO(agordeev): web.py does not support parsing of array arguments # TODO(agordeev): web.py does not support parsing of array arguments
# in the queryset so we specify the input as comma-separated list # in the queryset so we specify the input as comma-separated list
extension_names = list(self.get_param_as_set('extension_names', extension_names = self.get_param_as_set('extension_names', default=[])
default=[]))
try: data = self.checked_data(self.validator.validate_delete,
data = self.validator.validate_delete(extension_names, data=extension_names, cluster=cluster)
cluster)
except errors.CannotFindExtension as exc:
raise self.http(400, exc.message)
remove_extensions_from_object(cluster, data) remove_extensions_from_object(cluster, data)
raise self.http(204) raise self.http(204)

View File

@ -39,7 +39,7 @@ class ExtensionValidator(BasicValidator):
@classmethod @classmethod
def validate_delete(cls, extension_names, cluster): 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: if not_found_extensions:
raise errors.CannotFindExtension( raise errors.CannotFindExtension(
"No such extensions to disable: {0}".format( "No such extensions to disable: {0}".format(

View File

@ -298,7 +298,7 @@ class TestExtensionValidator(BaseTestCase):
cluster = mock.Mock() cluster = mock.Mock()
cluster.extensions = global_exts 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): def test_invalid_delete_extensions(self):
global_exts = 'volume_manager', 'bareon', 'ultralogger' global_exts = 'volume_manager', 'bareon', 'ultralogger'
@ -308,7 +308,7 @@ class TestExtensionValidator(BaseTestCase):
with self.assertRaisesRegexp(errors.CannotFindExtension, with self.assertRaisesRegexp(errors.CannotFindExtension,
'No such extensions to disable: invalid'): 'No such extensions to disable: invalid'):
ExtensionValidator.validate_delete(data, cluster) ExtensionValidator.validate_delete(set(data), cluster)
def test_validate_extensions(self): def test_validate_extensions(self):
global_exts = 'volume_manager', 'bareon', 'ultralogger' global_exts = 'volume_manager', 'bareon', 'ultralogger'