Merge "Update node status on progress page with ajax"
This commit is contained in:
commit
a0c2251fb4
@ -12,6 +12,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import django.utils.text
|
||||||
|
|
||||||
from tuskar_ui import api
|
from tuskar_ui import api
|
||||||
from tuskar_ui.infrastructure.overview import views
|
from tuskar_ui.infrastructure.overview import views
|
||||||
from tuskar_boxes.overview import forms
|
from tuskar_boxes.overview import forms
|
||||||
@ -86,11 +88,24 @@ class IndexView(views.IndexView):
|
|||||||
for role in context['roles']:
|
for role in context['roles']:
|
||||||
role['flavor_field'] = context['form'][role['id'] + '-flavor']
|
role['flavor_field'] = context['form'][role['id'] + '-flavor']
|
||||||
else:
|
else:
|
||||||
context['nodes'] = [{
|
nodes = []
|
||||||
'uuid': node.uuid,
|
for node in api.node.Node.list(self.request, maintenance=False):
|
||||||
'role': node_role(self.request, node),
|
role = node_role(self.request, node)
|
||||||
'state': node.state,
|
nodes.append({
|
||||||
'state_icon': NODE_STATE_ICON.get(node.state,
|
'uuid': node.uuid,
|
||||||
NODE_STATE_ICON[None]),
|
'role_name': role.name if role else '',
|
||||||
} for node in api.node.Node.list(self.request, maintenance=False)]
|
'role_slug': django.utils.text.slugify(role.name)
|
||||||
|
if role else '',
|
||||||
|
'state': node.state,
|
||||||
|
'state_slug': django.utils.text.slugify(
|
||||||
|
unicode(node.state)),
|
||||||
|
'state_icon': NODE_STATE_ICON.get(node.state,
|
||||||
|
NODE_STATE_ICON[None]),
|
||||||
|
})
|
||||||
|
context['nodes'] = nodes
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
def get_progress_update(self, request, data):
|
||||||
|
out = super(IndexView, self).get_progress_update(request, data)
|
||||||
|
out['nodes'] = data.get('nodes', [])
|
||||||
|
return out
|
||||||
|
22
tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes_progress.js
Normal file
22
tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes_progress.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
tuskar.boxes_progress = function () {
|
||||||
|
'use static';
|
||||||
|
var module = {};
|
||||||
|
|
||||||
|
module.init = function () {
|
||||||
|
module.nodes_template = Hogan.compile($('#nodes-template').html() || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
module.update_progress = function (data) {
|
||||||
|
$('div.boxes-nodes').html(module.nodes_template.render(data));
|
||||||
|
};
|
||||||
|
|
||||||
|
// Attach to the original update procedure.
|
||||||
|
var orig_update_progress = tuskar.deployment_progress.update_progress;
|
||||||
|
tuskar.deployment_progress.update_progress = function () {
|
||||||
|
orig_update_progress.apply(tuskar.deployment_progress, arguments);
|
||||||
|
module.update_progress.apply(module, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
horizon.addInitFunction(module.init);
|
||||||
|
return module;
|
||||||
|
} ();
|
@ -14,6 +14,7 @@
|
|||||||
{% block js %}
|
{% block js %}
|
||||||
{{ block.super }}
|
{{ block.super }}
|
||||||
<script src='{{ STATIC_URL }}tuskar_boxes/js/tuskar.boxes.js' type='text/javascript' charset='utf-8'></script>
|
<script src='{{ STATIC_URL }}tuskar_boxes/js/tuskar.boxes.js' type='text/javascript' charset='utf-8'></script>
|
||||||
|
<script src='{{ STATIC_URL }}tuskar_boxes/js/tuskar.boxes_progress.js' type='text/javascript' charset='utf-8'></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-xs-7 boxes-nodes">
|
<div class="col-xs-7 boxes-nodes">
|
||||||
{% for node in nodes %}{% spaceless %}
|
{% for node in nodes %}{% spaceless %}
|
||||||
<div class="boxes-node boxes-role-{{ node.role.name|slugify }} status-{{ node.status|slugify }}" title="{{ node.uuid }}">
|
<div class="boxes-node boxes-role-{{ node.role_slug }} status-{{ node.state_slug }}" title="{{ node.uuid }}">
|
||||||
<i class="fa fa-lg {{ node.state_icon }}"></i>
|
<i class="fa fa-lg {{ node.state_icon }}"></i>
|
||||||
</div>
|
</div>
|
||||||
{% endspaceless %}{% endfor %}
|
{% endspaceless %}{% endfor %}
|
||||||
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
<script type="text/html" id="roles-template">{% spaceless %}{% jstemplate %}
|
<script type="text/html" id="roles-template">{% spaceless %}{% jstemplate %}
|
||||||
[[#roles]]
|
[[#roles]]
|
||||||
<div class="boxes-role boxes-role boxes-role[[ slug ]] clearfix">
|
<div class="boxes-role boxes-role boxes-role-[[ slug ]] clearfix">
|
||||||
<div class="col-xs-2 deploy-role-count">
|
<div class="col-xs-2 deploy-role-count">
|
||||||
[[#finished]]
|
[[#finished]]
|
||||||
[[ deployed_node_count ]]
|
[[ deployed_node_count ]]
|
||||||
@ -46,3 +46,10 @@
|
|||||||
</div>
|
</div>
|
||||||
[[/roles]]
|
[[/roles]]
|
||||||
{% endjstemplate %}{% endspaceless %}</script>
|
{% endjstemplate %}{% endspaceless %}</script>
|
||||||
|
<script type="text/html" id="nodes-template">{% spaceless %}{% jstemplate %}
|
||||||
|
[[#nodes]]
|
||||||
|
<div class="boxes-node boxes-role-[[ role_slug ]] status-[[ state_slug ]]" title="[[ uuid ]]">
|
||||||
|
<i class="fa fa-lg [[ state_icon ]]"></i>
|
||||||
|
</div>
|
||||||
|
[[/nodes]]
|
||||||
|
{% endjstemplate %}{% endspaceless %}</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user