Merge "Nodes boxes did not display in ajax updates on progress"

This commit is contained in:
Jenkins 2015-01-08 11:21:02 +00:00 committed by Gerrit Code Review
commit 8984296e4c
1 changed files with 15 additions and 16 deletions

View File

@ -98,54 +98,53 @@ class IndexView(views.IndexView):
template_name = "tuskar_boxes/overview/index.html" template_name = "tuskar_boxes/overview/index.html"
form_class = forms.EditPlan form_class = forms.EditPlan
def get_context_data(self, *args, **kwargs): def get_data(self, request, context, *args, **kwargs):
context = super(IndexView, self).get_context_data(*args, **kwargs) data = super(IndexView, self).get_data(request, context,
if not context['stack']: *args, **kwargs)
roles = context['roles'] if not data['stack']:
roles = data['roles']
free_roles = [] free_roles = []
flavor_roles = {} flavor_roles = {}
for role in roles: for role in roles:
role['flavor_field'] = context['form'][role['id'] + '-flavor'] role['flavor_field'] = data['form'][role['id'] + '-flavor']
flavor = role['role'].flavor(context['plan']) flavor = role['role'].flavor(data['plan'])
if flavor: if flavor:
role['flavor_name'] = flavor.name role['flavor_name'] = flavor.name
flavor_roles.setdefault(flavor.name, []).append(role) flavor_roles.setdefault(flavor.name, []).append(role)
else: else:
role['flavor_name'] = '' role['flavor_name'] = ''
free_roles.append(role) free_roles.append(role)
context['free_roles'] = free_roles data['free_roles'] = free_roles
flavors = api.flavor.Flavor.list(self.request) flavors = api.flavor.Flavor.list(self.request)
flavors.sort(key=lambda np: (np.vcpus, np.ram, np.disk)) flavors.sort(key=lambda np: (np.vcpus, np.ram, np.disk))
context['flavors'] = list( data['flavors'] = list(
_flavor_data(self.request, flavors, flavor_roles)) _flavor_data(self.request, flavors, flavor_roles))
else: else:
nodes = list(_node_data( nodes = list(_node_data(
self.request, request, api.node.Node.list(request, maintenance=False),
api.node.Node.list(self.request, maintenance=False),
)) ))
nodes.sort(key=lambda node: node.get('role_name')) nodes.sort(key=lambda node: node.get('role_name'))
nodes.reverse() nodes.reverse()
data['nodes'] = nodes
context['nodes'] = nodes
distribution = collections.Counter() distribution = collections.Counter()
for node in nodes: for node in nodes:
distribution[node['role_name']] += 1 distribution[node['role_name']] += 1
for role in context['roles']: for role in data['roles']:
role['distribution'] = int(float(distribution[role['name']]) / role['distribution'] = int(float(distribution[role['name']]) /
len(nodes) * 100) len(nodes) * 100)
if api_base.is_service_enabled(self.request, 'metering'): if api_base.is_service_enabled(request, 'metering'):
for role in context['roles']: for role in data['roles']:
role['graph_url'] = ( role['graph_url'] = (
reverse('horizon:infrastructure:roles:performance', reverse('horizon:infrastructure:roles:performance',
args=[role['id']]) + '?' + args=[role['id']]) + '?' +
metering.url_part('hardware.cpu.load.1min', False) + metering.url_part('hardware.cpu.load.1min', False) +
'&date_options=0.041666' '&date_options=0.041666'
) )
return context return data
def get_progress_update(self, request, data): def get_progress_update(self, request, data):
out = super(IndexView, self).get_progress_update(request, data) out = super(IndexView, self).get_progress_update(request, data)