Refactor Parameter into separate Tuskar class
Change-Id: Iab3c155f2a5f67a0f8ffd4e932bab5ac789d7326
This commit is contained in:
parent
ebdc734094
commit
b0de2922cf
@ -259,17 +259,17 @@ class Plan(base.APIResourceWrapper):
|
||||
role.image_id_parameter_name,
|
||||
role.flavor_parameter_name])
|
||||
params = [p for p in params if p['name'] not in key_params]
|
||||
return params
|
||||
return [Parameter(p, plan=self) for p in params]
|
||||
|
||||
def parameter(self, param_name):
|
||||
for parameter in self.parameters:
|
||||
if parameter['name'] == param_name:
|
||||
return parameter
|
||||
return Parameter(parameter, plan=self)
|
||||
|
||||
def parameter_value(self, param_name, default=None):
|
||||
parameter = self.parameter(param_name)
|
||||
if parameter is not None:
|
||||
return parameter['value']
|
||||
return parameter.value
|
||||
return default
|
||||
|
||||
def list_generated_parameters(self, with_prefix=True):
|
||||
@ -458,3 +458,27 @@ class Role(base.APIResourceWrapper):
|
||||
@property
|
||||
def id(self):
|
||||
return self.uuid
|
||||
|
||||
|
||||
class Parameter(base.APIDictWrapper):
|
||||
|
||||
_attrs = ['name', 'value', 'default', 'description', 'hidden', 'label']
|
||||
|
||||
def __init__(self, apidict, plan=None):
|
||||
super(Parameter, self).__init__(apidict)
|
||||
self._plan = plan
|
||||
|
||||
@property
|
||||
def stripped_name(self):
|
||||
return strip_prefix(self.name)
|
||||
|
||||
@property
|
||||
def plan(self):
|
||||
return self._plan
|
||||
|
||||
@property
|
||||
def role(self):
|
||||
if self.plan:
|
||||
for role in self.plan.role_list:
|
||||
if self.name.startswith(role.parameter_prefix):
|
||||
return role
|
||||
|
@ -17,12 +17,18 @@ from horizon import tables
|
||||
|
||||
|
||||
class ParametersTable(tables.DataTable):
|
||||
label = tables.Column('label',
|
||||
verbose_name=_("Parameter Name"))
|
||||
role = tables.Column(lambda param:
|
||||
param.role.name if param.role else _('General'),
|
||||
verbose_name=_("Role"))
|
||||
name = tables.Column('stripped_name',
|
||||
verbose_name=_("Parameter Name"))
|
||||
value = tables.Column('value',
|
||||
verbose_name=_("Value"))
|
||||
description = tables.Column('description',
|
||||
verbose_name=("Detailed Description"))
|
||||
verbose_name=_("Detailed Description"))
|
||||
|
||||
def get_object_id(self, datum):
|
||||
return datum.name
|
||||
|
||||
class Meta:
|
||||
name = "parameters"
|
||||
|
@ -19,7 +19,6 @@ from mock import patch, call # noqa
|
||||
from openstack_dashboard.test.test_data import utils
|
||||
|
||||
from tuskar_ui import api
|
||||
from tuskar_ui.infrastructure.parameters import views
|
||||
from tuskar_ui.test import helpers as test
|
||||
from tuskar_ui.test.test_data import tuskar_data
|
||||
|
||||
@ -51,16 +50,6 @@ class ParametersTest(test.BaseAdminViewTests):
|
||||
|
||||
self.assertTemplateUsed(res, 'infrastructure/parameters/index.html')
|
||||
|
||||
def test_param_object(self):
|
||||
param_dict = {'parameter_group': 'Neutron',
|
||||
'value': '1.2.3.4',
|
||||
'name': 'Ip Address',
|
||||
'description': 'This is an IP Address'}
|
||||
|
||||
p = views.ServiceParameter(param_dict, 5)
|
||||
self.assertEqual(p.id, 5)
|
||||
self.assertEqual(p.value, '1.2.3.4')
|
||||
|
||||
def test_service_config_get(self):
|
||||
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
|
||||
role = api.tuskar.Role(self.tuskarclient_roles.first())
|
||||
|
@ -21,15 +21,6 @@ from tuskar_ui.infrastructure.parameters import forms
|
||||
from tuskar_ui.infrastructure.parameters import tables
|
||||
|
||||
|
||||
class ServiceParameter:
|
||||
def __init__(self, params_dict, id):
|
||||
self.id = id
|
||||
self.label = params_dict.get('name')
|
||||
self.value = params_dict.get('value')
|
||||
self.category = params_dict.get('parameter_group')
|
||||
self.description = params_dict.get('description')
|
||||
|
||||
|
||||
class ServiceConfigView(horizon.forms.ModalFormView):
|
||||
template_name = "infrastructure/parameters/service_config.html"
|
||||
form_class = forms.EditServiceConfig
|
||||
@ -55,8 +46,4 @@ class IndexView(horizon_tables.DataTableView):
|
||||
|
||||
def get_data(self):
|
||||
plan = api.tuskar.Plan.get_the_plan(self.request)
|
||||
base_parameters = plan.parameter_list(
|
||||
include_key_parameters=False)
|
||||
params = [ServiceParameter(param, ind)
|
||||
for ind, param in enumerate(base_parameters)]
|
||||
return params
|
||||
return plan.parameter_list(include_key_parameters=False)
|
||||
|
@ -109,3 +109,22 @@ class TuskarAPITests(test.APITestCase):
|
||||
self.request, plan, image)
|
||||
self.assertIsInstance(ret_val, api.tuskar.Role)
|
||||
self.assertEqual(ret_val.name, 'Controller')
|
||||
|
||||
def test_parameter_stripped_name(self):
|
||||
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
|
||||
param = plan.parameter('Controller-1::count')
|
||||
|
||||
ret_val = param.stripped_name
|
||||
self.assertEqual(ret_val, 'count')
|
||||
|
||||
def test_parameter_role(self):
|
||||
plan = api.tuskar.Plan(self.tuskarclient_plans.first(),
|
||||
request=self.request)
|
||||
param = plan.parameter('Controller-1::count')
|
||||
roles = self.tuskarclient_roles.list()
|
||||
|
||||
with patch('tuskarclient.v2.roles.RoleManager.list',
|
||||
return_value=roles):
|
||||
ret_val = param.role
|
||||
self.assertIsInstance(ret_val, api.tuskar.Role)
|
||||
self.assertEqual(ret_val.name, 'Controller')
|
||||
|
Loading…
x
Reference in New Issue
Block a user