Add role column to image table
Change-Id: If53a1fd8c679cb8b2c5794cd19b3016968d1401e
This commit is contained in:
parent
e725723143
commit
6140b025d4
@ -218,6 +218,31 @@ class OvercloudRole(base.APIDictWrapper):
|
||||
if role.id == role_id:
|
||||
return role
|
||||
|
||||
@classmethod
|
||||
@handle_errors(_("Unable to retrieve overcloud role"))
|
||||
def get_by_image(cls, request, plan, image):
|
||||
"""Return the Tuskar OvercloudRole whose ImageID
|
||||
parameter matches the passed in image
|
||||
|
||||
:param request: request object
|
||||
:type request: django.http.HttpRequest
|
||||
|
||||
:param plan: associated plan to check against
|
||||
:type plan: OvercloudPlan
|
||||
|
||||
:param image: image to be matched
|
||||
:type image: Image
|
||||
|
||||
:return: matching OvercloudRole, or None if no matching
|
||||
OvercloudRole can be found
|
||||
:rtype: tuskar_ui.api.tuskar.OvercloudRole
|
||||
"""
|
||||
for role in OvercloudRole.list(request):
|
||||
image_id_from_plan = plan.parameter_value(
|
||||
role.image_id_parameter_name)
|
||||
if image_id_from_plan == image.id:
|
||||
return role
|
||||
|
||||
# TODO(tzumainn): fix this once we know how a role corresponds to
|
||||
# its provider resource type
|
||||
@property
|
||||
|
@ -23,6 +23,9 @@ class ImagesTable(tables.DataTable):
|
||||
verbose_name=_("Image Name"))
|
||||
disk_format = tables.Column('disk_format',
|
||||
verbose_name=_("Format"))
|
||||
role = tables.Column(lambda image:
|
||||
image.role.name if image.role else '-',
|
||||
verbose_name=_("Deployment Role"))
|
||||
|
||||
class Meta:
|
||||
name = "images"
|
||||
|
@ -15,6 +15,8 @@
|
||||
from horizon import tables as horizon_tables
|
||||
|
||||
from openstack_dashboard.api import glance
|
||||
|
||||
from tuskar_ui import api
|
||||
from tuskar_ui.infrastructure.images import tables
|
||||
|
||||
|
||||
@ -23,4 +25,10 @@ class IndexView(horizon_tables.DataTableView):
|
||||
template_name = "infrastructure/images/index.html"
|
||||
|
||||
def get_data(self):
|
||||
return glance.image_list_detailed(self.request)[0]
|
||||
plan = api.tuskar.OvercloudPlan.get_the_plan(self.request)
|
||||
images = glance.image_list_detailed(self.request)[0]
|
||||
# TODO(tzumainn): re-architect a bit to avoid inefficiency
|
||||
for image in images:
|
||||
image.role = api.tuskar.OvercloudRole.get_by_image(
|
||||
self.request, plan, image)
|
||||
return images
|
||||
|
@ -82,3 +82,16 @@ class TuskarAPITests(test.APITestCase):
|
||||
ret_val = api.tuskar.OvercloudRole.get(self.request, role['id'])
|
||||
|
||||
self.assertIsInstance(ret_val, api.tuskar.OvercloudRole)
|
||||
|
||||
def test_role_get_by_image(self):
|
||||
plan = api.tuskar.OvercloudPlan(self.tuskarclient_plans.first())
|
||||
image = self.glanceclient_images.first()
|
||||
roles = [api.tuskar.OvercloudRole(role) for role in
|
||||
self.tuskarclient_roles.list()]
|
||||
|
||||
with patch('tuskar_ui.api.tuskar.OvercloudRole.list',
|
||||
return_value=roles):
|
||||
ret_val = api.tuskar.OvercloudRole.get_by_image(
|
||||
self.request, plan, image)
|
||||
self.assertIsInstance(ret_val, api.tuskar.OvercloudRole)
|
||||
self.assertEqual(ret_val.name, 'Controller')
|
||||
|
Loading…
x
Reference in New Issue
Block a user