Refactor Parameter into separate Tuskar class
Change-Id: Iab3c155f2a5f67a0f8ffd4e932bab5ac789d7326
This commit is contained in:
@@ -259,17 +259,17 @@ class Plan(base.APIResourceWrapper):
|
|||||||
role.image_id_parameter_name,
|
role.image_id_parameter_name,
|
||||||
role.flavor_parameter_name])
|
role.flavor_parameter_name])
|
||||||
params = [p for p in params if p['name'] not in key_params]
|
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):
|
def parameter(self, param_name):
|
||||||
for parameter in self.parameters:
|
for parameter in self.parameters:
|
||||||
if parameter['name'] == param_name:
|
if parameter['name'] == param_name:
|
||||||
return parameter
|
return Parameter(parameter, plan=self)
|
||||||
|
|
||||||
def parameter_value(self, param_name, default=None):
|
def parameter_value(self, param_name, default=None):
|
||||||
parameter = self.parameter(param_name)
|
parameter = self.parameter(param_name)
|
||||||
if parameter is not None:
|
if parameter is not None:
|
||||||
return parameter['value']
|
return parameter.value
|
||||||
return default
|
return default
|
||||||
|
|
||||||
def list_generated_parameters(self, with_prefix=True):
|
def list_generated_parameters(self, with_prefix=True):
|
||||||
@@ -458,3 +458,27 @@ class Role(base.APIResourceWrapper):
|
|||||||
@property
|
@property
|
||||||
def id(self):
|
def id(self):
|
||||||
return self.uuid
|
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):
|
class ParametersTable(tables.DataTable):
|
||||||
label = tables.Column('label',
|
role = tables.Column(lambda param:
|
||||||
verbose_name=_("Parameter Name"))
|
param.role.name if param.role else _('General'),
|
||||||
|
verbose_name=_("Role"))
|
||||||
|
name = tables.Column('stripped_name',
|
||||||
|
verbose_name=_("Parameter Name"))
|
||||||
value = tables.Column('value',
|
value = tables.Column('value',
|
||||||
verbose_name=_("Value"))
|
verbose_name=_("Value"))
|
||||||
description = tables.Column('description',
|
description = tables.Column('description',
|
||||||
verbose_name=("Detailed Description"))
|
verbose_name=_("Detailed Description"))
|
||||||
|
|
||||||
|
def get_object_id(self, datum):
|
||||||
|
return datum.name
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
name = "parameters"
|
name = "parameters"
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ from mock import patch, call # noqa
|
|||||||
from openstack_dashboard.test.test_data import utils
|
from openstack_dashboard.test.test_data import utils
|
||||||
|
|
||||||
from tuskar_ui import api
|
from tuskar_ui import api
|
||||||
from tuskar_ui.infrastructure.parameters import views
|
|
||||||
from tuskar_ui.test import helpers as test
|
from tuskar_ui.test import helpers as test
|
||||||
from tuskar_ui.test.test_data import tuskar_data
|
from tuskar_ui.test.test_data import tuskar_data
|
||||||
|
|
||||||
@@ -51,16 +50,6 @@ class ParametersTest(test.BaseAdminViewTests):
|
|||||||
|
|
||||||
self.assertTemplateUsed(res, 'infrastructure/parameters/index.html')
|
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):
|
def test_service_config_get(self):
|
||||||
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
|
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
|
||||||
role = api.tuskar.Role(self.tuskarclient_roles.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
|
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):
|
class ServiceConfigView(horizon.forms.ModalFormView):
|
||||||
template_name = "infrastructure/parameters/service_config.html"
|
template_name = "infrastructure/parameters/service_config.html"
|
||||||
form_class = forms.EditServiceConfig
|
form_class = forms.EditServiceConfig
|
||||||
@@ -55,8 +46,4 @@ class IndexView(horizon_tables.DataTableView):
|
|||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
plan = api.tuskar.Plan.get_the_plan(self.request)
|
plan = api.tuskar.Plan.get_the_plan(self.request)
|
||||||
base_parameters = plan.parameter_list(
|
return plan.parameter_list(include_key_parameters=False)
|
||||||
include_key_parameters=False)
|
|
||||||
params = [ServiceParameter(param, ind)
|
|
||||||
for ind, param in enumerate(base_parameters)]
|
|
||||||
return params
|
|
||||||
|
|||||||
@@ -109,3 +109,22 @@ class TuskarAPITests(test.APITestCase):
|
|||||||
self.request, plan, image)
|
self.request, plan, image)
|
||||||
self.assertIsInstance(ret_val, api.tuskar.Role)
|
self.assertIsInstance(ret_val, api.tuskar.Role)
|
||||||
self.assertEqual(ret_val.name, 'Controller')
|
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')
|
||||||
|
|||||||
Reference in New Issue
Block a user