Add module priority management

This patch binds the python client to the module priority REST api.
It also adds a CLI setter command and updates the module list CLI
output to show current priority value.

Change-Id: I06ab6611452cdc6e875b5534cd955a0a3092ed0d
Implements: blueprint module-priority-cli-command
This commit is contained in:
Maxime Cottret
2016-11-28 14:36:18 +01:00
committed by Pierre-Alexandre Bardina
parent 70cef21224
commit b6f7a7831f
3 changed files with 53 additions and 8 deletions

View File

@@ -26,10 +26,12 @@ fixtures = {
{
'module_id': 'hashmap',
'enabled': True,
'priority': 1,
},
{
'module_id': 'noop',
'enabled': False,
'priority': 1,
},
]},
),
@@ -40,6 +42,7 @@ fixtures = {
{
'module_id': 'hashmap',
'enabled': True,
'priority': 1,
}
),
'PUT': (
@@ -47,6 +50,7 @@ fixtures = {
{
'module_id': 'hashmap',
'enabled': False,
'priority': 1,
}
),
},
@@ -56,6 +60,7 @@ fixtures = {
{
'module_id': 'noop',
'enabled': False,
'priority': 1,
}
),
'PUT': (
@@ -63,6 +68,7 @@ fixtures = {
{
'module_id': 'noop',
'enabled': True,
'priority': 1,
}
),
},
@@ -123,7 +129,8 @@ class CloudkittyModuleTest(utils.BaseTestCase):
# body : {'enabled': True}
expect = [
'PUT', '/v1/rating/modules/noop', {'module_id': 'noop',
'enabled': True},
'enabled': True,
'priority': 1},
]
self.http_client.assert_called(*expect)
@@ -134,6 +141,19 @@ class CloudkittyModuleTest(utils.BaseTestCase):
# body : {'enabled': False}
expect = [
'PUT', '/v1/rating/modules/hashmap', {'module_id': 'hashmap',
'enabled': False},
'enabled': False,
'priority': 1},
]
self.http_client.assert_called(*expect)
def test_set_priority(self):
self.ck_module = self.mgr.get(module_id='hashmap')
self.ck_module.set_priority(100)
# PUT /v1/rating/modules/hashmap
# body : {'priority': 100}
expect = [
'PUT', '/v1/rating/modules/hashmap', {'module_id': 'hashmap',
'enabled': True,
'priority': 100},
]
self.http_client.assert_called(*expect)

View File

@@ -30,6 +30,10 @@ class CloudkittyModule(base.Resource):
self.enabled = False
self.update()
def set_priority(self, value):
self.priority = value
self.update()
class CloudkittyModuleManager(base.CrudManager):
resource_class = CloudkittyModule

View File

@@ -25,8 +25,8 @@ def do_module_list(cc, args):
except exceptions.NotFound:
raise exc.CommandError('Modules not found')
else:
field_labels = ['Module', 'Enabled']
fields = ['module_id', 'enabled']
field_labels = ['Module', 'Enabled', 'Priority']
fields = ['module_id', 'enabled', 'priority']
utils.print_list(modules, fields, field_labels,
sortby=0)
@@ -42,8 +42,8 @@ def do_module_enable(cc, args):
except exceptions.NotFound:
raise exc.CommandError('Module not found: %s' % args.name)
else:
field_labels = ['Module', 'Enabled']
fields = ['module_id', 'enabled']
field_labels = ['Module', 'Enabled', 'Priority']
fields = ['module_id', 'enabled', 'priority']
modules = [cc.modules.get(module_id=args.name)]
utils.print_list(modules, fields, field_labels,
sortby=0)
@@ -60,8 +60,29 @@ def do_module_disable(cc, args):
except exceptions.NotFound:
raise exc.CommandError('Module not found: %s' % args.name)
else:
field_labels = ['Module', 'Enabled']
fields = ['module_id', 'enabled']
field_labels = ['Module', 'Enabled', 'Priority']
fields = ['module_id', 'enabled', 'priority']
modules = [cc.modules.get(module_id=args.name)]
utils.print_list(modules, fields, field_labels,
sortby=0)
@utils.arg('-n', '--name',
help='Module name',
required=True)
@utils.arg('-p', '--priority',
help='Module priority',
required=True)
def do_module_set_priority(cc, args):
'''Set module priority.'''
try:
module = cc.modules.get(module_id=args.name)
module.set_priority(args.priority)
except exceptions.NotFound:
raise exc.CommandError('Module not found: %s' % args.name)
else:
field_labels = ['Module', 'Enabled', 'Priority']
fields = ['module_id', 'enabled', 'priority']
modules = [cc.modules.get(module_id=args.name)]
utils.print_list(modules, fields, field_labels,
sortby=0)