Multiple global efficacy
This patch adds changes for python-watcherclient for multiple global efficacy indicator. Change-Id: I8a7b283f4f79dc5e412fc0addfc4302ae49425ae Implements: blueprint multiple-global-efficacy-indicator
This commit is contained in:
@@ -33,12 +33,16 @@ ACTION_PLAN_1 = {
|
||||
'unit': '%'}],
|
||||
'created_at': datetime.datetime.now().isoformat(),
|
||||
'updated_at': None,
|
||||
'global_efficacy': {
|
||||
"value": 99,
|
||||
"unit": "%",
|
||||
"name": "dummy_global_efficacy",
|
||||
"description": "Dummy Global Efficacy",
|
||||
},
|
||||
'global_efficacy': [
|
||||
{"value": 99,
|
||||
"unit": "%",
|
||||
"name": "dummy_global_efficacy",
|
||||
"description": "Dummy Global Efficacy"},
|
||||
{"value": 75,
|
||||
"unit": "%",
|
||||
"name": "dummy_global_efficacy2",
|
||||
"description": "Dummy Global Efficacy2"}
|
||||
],
|
||||
'deleted_at': None,
|
||||
}
|
||||
|
||||
@@ -52,12 +56,12 @@ ACTION_PLAN_2 = {
|
||||
'name': 'indicator2',
|
||||
'unit': '%'}],
|
||||
'updated_at': None,
|
||||
'global_efficacy': {
|
||||
'global_efficacy': [{
|
||||
"value": 87,
|
||||
"unit": "%",
|
||||
"name": "dummy_global_efficacy",
|
||||
"description": "Dummy Global Efficacy",
|
||||
},
|
||||
}],
|
||||
'deleted_at': None,
|
||||
}
|
||||
|
||||
@@ -69,6 +73,7 @@ class ActionPlanShellTest(base.CommandTestCase):
|
||||
resource_fields.ACTION_PLAN_SHORT_LIST_FIELD_LABELS)
|
||||
FIELDS = resource_fields.ACTION_PLAN_FIELDS
|
||||
FIELD_LABELS = resource_fields.ACTION_PLAN_FIELD_LABELS
|
||||
GLOBAL_EFFICACY_FIELDS = resource_fields.GLOBAL_EFFICACY_FIELDS
|
||||
|
||||
def setUp(self):
|
||||
super(self.__class__, self).setUp()
|
||||
@@ -114,6 +119,11 @@ class ActionPlanShellTest(base.CommandTestCase):
|
||||
self.SHORT_LIST_FIELD_LABELS)],
|
||||
results)
|
||||
|
||||
self.assertEqual(action_plan1.global_efficacy,
|
||||
results[0]['Global efficacy'])
|
||||
self.assertEqual(action_plan2.global_efficacy,
|
||||
results[1]['Global efficacy'])
|
||||
|
||||
self.m_action_plan_mgr.list.assert_called_once_with(detail=False)
|
||||
|
||||
def test_do_action_plan_list_detail(self):
|
||||
@@ -131,6 +141,10 @@ class ActionPlanShellTest(base.CommandTestCase):
|
||||
self.resource_as_dict(action_plan2, self.FIELDS,
|
||||
self.FIELD_LABELS)],
|
||||
results)
|
||||
self.assertEqual(action_plan1.global_efficacy,
|
||||
results[0]['Global efficacy'])
|
||||
self.assertEqual(action_plan2.global_efficacy,
|
||||
results[1]['Global efficacy'])
|
||||
|
||||
self.m_action_plan_mgr.list.assert_called_once_with(detail=True)
|
||||
|
||||
@@ -165,6 +179,8 @@ class ActionPlanShellTest(base.CommandTestCase):
|
||||
self.resource_as_dict(
|
||||
action_plan, self.FIELDS, self.FIELD_LABELS),
|
||||
result)
|
||||
self.assertEqual(action_plan.global_efficacy,
|
||||
result['Global efficacy'])
|
||||
self.m_action_plan_mgr.get.assert_called_once_with(
|
||||
'd9d9978e-6db5-4a05-8eab-1531795d7004')
|
||||
|
||||
|
||||
@@ -26,16 +26,16 @@ from watcherclient.v1 import resource_fields as res_fields
|
||||
|
||||
|
||||
def format_global_efficacy(global_efficacy):
|
||||
formatted_global_efficacy = None
|
||||
if (global_efficacy.get('value') is not None and
|
||||
global_efficacy.get('unit')):
|
||||
formatted_global_efficacy = "%(value).2f %(unit)s" % dict(
|
||||
unit=global_efficacy.get('unit'),
|
||||
value=global_efficacy.get('value'))
|
||||
elif global_efficacy.get('value') is not None:
|
||||
formatted_global_efficacy = global_efficacy.get('value')
|
||||
|
||||
return formatted_global_efficacy
|
||||
formatted_global_eff = {}
|
||||
for eff in global_efficacy:
|
||||
if (eff.get('value') is not None and eff.get('unit')):
|
||||
eff_name = eff.get('name')
|
||||
formatted_global_eff[eff_name] = "%(value).2f %(unit)s" % dict(
|
||||
unit=eff.get('unit'),
|
||||
value=eff.get('value'))
|
||||
elif eff.get('value') is not None:
|
||||
formatted_global_eff[eff_name] = eff.get('value')
|
||||
return formatted_global_eff
|
||||
|
||||
|
||||
class ShowActionPlan(command.ShowOne):
|
||||
@@ -64,6 +64,18 @@ class ShowActionPlan(command.ShowOne):
|
||||
)
|
||||
return out.getvalue() or ''
|
||||
|
||||
def _format_global_efficacy(self, global_efficacy, parsed_args):
|
||||
formatted_global_efficacy = format_global_efficacy(global_efficacy)
|
||||
out = six.StringIO()
|
||||
yaml_format.YAMLFormatter().emit_one(
|
||||
column_names=list(resource.capitalize()
|
||||
for resource in formatted_global_efficacy),
|
||||
data=[value for value in formatted_global_efficacy.itervalues()],
|
||||
stdout=out,
|
||||
parsed_args=parsed_args,
|
||||
)
|
||||
return out.getvalue() or ''
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
client = getattr(self.app.client_manager, "infra-optim")
|
||||
|
||||
@@ -83,8 +95,8 @@ class ShowActionPlan(command.ShowOne):
|
||||
self._format_indicators(action_plan, parsed_args))
|
||||
|
||||
# Update the raw global efficacy with the formatted one
|
||||
action_plan.global_efficacy = format_global_efficacy(
|
||||
action_plan.global_efficacy)
|
||||
action_plan.global_efficacy = self._format_global_efficacy(
|
||||
action_plan.global_efficacy, parsed_args)
|
||||
|
||||
columns = res_fields.ACTION_PLAN_FIELDS
|
||||
column_headers = res_fields.ACTION_PLAN_FIELD_LABELS
|
||||
@@ -139,6 +151,18 @@ class ListActionPlan(command.Lister):
|
||||
)
|
||||
return out.getvalue() or ''
|
||||
|
||||
def _format_global_efficacy(self, global_efficacy, parsed_args):
|
||||
formatted_global_efficacy = format_global_efficacy(global_efficacy)
|
||||
out = six.StringIO()
|
||||
yaml_format.YAMLFormatter().emit_one(
|
||||
column_names=list(resource.capitalize()
|
||||
for resource in formatted_global_efficacy),
|
||||
data=[value for value in formatted_global_efficacy.itervalues()],
|
||||
stdout=out,
|
||||
parsed_args=parsed_args,
|
||||
)
|
||||
return out.getvalue() or ''
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
client = getattr(self.app.client_manager, "infra-optim")
|
||||
|
||||
@@ -164,8 +188,8 @@ class ListActionPlan(command.Lister):
|
||||
self._format_indicators(action_plan, parsed_args))
|
||||
|
||||
# Update the raw global efficacy with the formatted one
|
||||
action_plan.global_efficacy = format_global_efficacy(
|
||||
action_plan.global_efficacy)
|
||||
action_plan.global_efficacy = self._format_global_efficacy(
|
||||
action_plan.global_efficacy, parsed_args)
|
||||
|
||||
return (field_labels,
|
||||
(utils.get_item_properties(item, fields) for item in data))
|
||||
|
||||
@@ -61,6 +61,8 @@ ACTION_PLAN_SHORT_LIST_FIELDS = ['uuid', 'audit_uuid', 'state',
|
||||
ACTION_PLAN_SHORT_LIST_FIELD_LABELS = ['UUID', 'Audit', 'State',
|
||||
'Updated At', 'Global efficacy']
|
||||
|
||||
GLOBAL_EFFICACY_FIELDS = ['value', 'unit', 'name', 'description']
|
||||
|
||||
# Action
|
||||
ACTION_FIELDS = ['uuid', 'created_at', 'updated_at', 'deleted_at', 'parents',
|
||||
'state', 'action_plan_uuid', 'action_type',
|
||||
|
||||
Reference in New Issue
Block a user