tuskar-ui/tuskar_ui/infrastructure/overcloud/templates/overcloud/_detail_overview.html

204 lines
7.6 KiB
HTML

{% load i18n %}
{% load url from future%}
{% if overcloud.is_deploying or overcloud.is_failed or overcloud.is_deleting %}
{% if overcloud.is_deploying %}
<div class="alert alert-info">
<div class="row-fluid">
<div class="span2">
<strong>Deploying...</strong>
<div class="progress progress-striped active progress-info">
<div class="bar bar-info" style="width:{{ progress }}%"></div>
</div>
</div>
{% elif overcloud.is_deleting %}
<div class="alert alert-error">
<div class="row-fluid">
<div class="span2">
<strong>Undeploying...</strong>
<div class="progress progress-striped progress-danger">
<div class="bar bar-info" style="width:{{ progress }}%"></div>
</div>
</div>
{% else %}
<div class="alert alert-error">
<div class="row-fluid">
<div class="span2">
<strong>Deployment failed</strong>
<div class="progress progress-striped progress-danger">
<div class="bar bar-info" style="width:{{ progress }}%"></div>
</div>
</div>
{% endif %}
<div class="span10">
{% if last_failed_events %}
<strong>{% trans "Last failed events:" %}</strong>
{% for event in last_failed_events %}
<div>
<dl>
<dt>{% trans "Timestamp" %}</dt>
<dd><time datetime="{{ event.event_time }}">{{ event.event_time }}</time></dd>
<dt>{% trans "Resource Name" %}</dt>
<dd>{{ event.resource_name }}</dd>
<dt>{% trans "Status" %}</dt>
<dd>{{ event.resource_status }}</dd>
<dt>{% trans "Reason" %}</dt>
<dd>{{ event.resource_status_reason }}</dd>
</dl>
</div>
{% endfor %}
{% endif %}
<a href="?tab=detail__log" data-toggle="tab" data-target="#detail__log" class="pull-right">See full log</a>
</div>
</div>
</div>
{% endif %}
{% if not dashboard_urls and not overcloud.is_deploying and not overcloud.is_failed and not overcloud.is_deleting %}
<div class="row-fluid">
<div class="span8">
<p>Your OpenStack Deployment has been successfully deployed. It needs to be initialized before you will be able to use it.
<p/>
<button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#demo">
Initialize
</button>
<div id="demo" class="collapse">
<p>You need to run the below commands on the machine where you have tripleo source code and
direct access through ssh to control node ({{overcloud.keystone_ip}}).
</p>
<pre>
export TRIPLEO_ROOT=~/tripleo
cd $TRIPLEO_ROOT
# Be careful to source tripleorc here, some variables are rewritten below
source $TRIPLEO_ROOT/tripleorc
export OVERCLOUD_IP={{overcloud.keystone_ip}}
export OVERCLOUD_ADMIN_TOKEN={{overcloud.attributes.AdminToken}}
export OVERCLOUD_ADMIN_PASSWORD={{overcloud.attributes.AdminPassword}}
export OVERCLOUD_CEILOMETER_PASSWORD={{overcloud.attributes.CeilometerPassword}}
export OVERCLOUD_CINDER_PASSWORD={{overcloud.attributes.CinderPassword}}
export OVERCLOUD_GLANCE_PASSWORD={{overcloud.attributes.GlancePassword}}
export OVERCLOUD_HEAT_PASSWORD={{overcloud.attributes.HeatPassword}}
export OVERCLOUD_NEUTRON_PASSWORD={{overcloud.attributes.NeutronPassword}}
export OVERCLOUD_NOVA_PASSWORD={{overcloud.attributes.NovaPassword}}
export OVERCLOUD_SWIFT_PASSWORD={{overcloud.attributes.SwiftPassword}}
export OVERCLOUD_SWIFT_HASH={{overcloud.attributes.SwiftHashSuffix}}
OVERCLOUD_ENDPOINT="http://$OVERCLOUD_IP:5000/v2.0"
NEW_JSON=$(jq '.overcloud.password="'${OVERCLOUD_ADMIN_PASSWORD}'" | .overcloud.endpoint="'${OVERCLOUD_ENDPOINT}'" | .overcloud.endpointhost="'${OVERCLOUD_IP}'"' $TE_DATAFILE)
echo $NEW_JSON > $TE_DATAFILE
source ./tripleo-incubator/overcloudrc
init-keystone -p $OVERCLOUD_ADMIN_PASSWORD $OVERCLOUD_ADMIN_TOKEN \
$OVERCLOUD_IP admin@example.com heat-admin@$OVERCLOUD_IP \
${SSLBASE:+--ssl $PUBLIC_API_URL}
setup-endpoints $OVERCLOUD_IP --cinder-password $OVERCLOUD_CINDER_PASSWORD \
--glance-password $OVERCLOUD_GLANCE_PASSWORD \
--heat-password $OVERCLOUD_HEAT_PASSWORD \
--neutron-password $OVERCLOUD_NEUTRON_PASSWORD \
--nova-password $OVERCLOUD_NOVA_PASSWORD \
--swift-password $OVERCLOUD_SWIFT_PASSWORD \
--enable-horizon \
${SSLBASE:+--ssl $PUBLIC_API_URL}
keystone role-create --name heat_stack_user
</pre>
</div>
</div>
</div>
{% endif %}
<div class="row-fluid">
<div class="span8">
<h2>{% trans "Deployment Roles" %}</h2>
<div class="widget">
<table class="table">
{% for role in roles %}
<tr>
<td><a
href="{% url 'horizon:infrastructure:overcloud:role' overcloud.id role.role.id %}"
>{{ role.name }} <span class="badge">({{ role.total_node_count }})</span></a>
</td>
<td>
{% if not role.total_node_count %}
<div class="muted">
<i class="icon-minus"></i>
{% trans "No node" %}
</div>
{% else %}
{% if role.error_node_count %}
<div class="text-error">
<i class="icon-exclamation-sign"></i>
{% elif role.deploying_node_count or role.waiting_node_count %}
<div class="text-warning">
<i class="icon-cog"></i>
{% else %}
<div class="text-success">
<i class="icon-ok"></i>
{% endif %}
{% if role.total_node_count == role.deployed_node_count %}
{% trans "All nodes are running" %}
{% else %}
{{ role.deployed_node_count }} {% trans "deployed" %} /
{{ role.deploying_node_count }} {% trans "deploying" %} /
{{ role.waiting_node_count }} {% trans "waiting" %}
{% if role.error_node_count %}
<span style="color: red">
/ {{ role.error_node_count }} {% trans "error" %}
</span>
{% endif %}
{% endif %}
</div>
{% endif %}
</td>
<td>
{% if role.capacity %}
<div class="row-fluid">
<div class="span6"><p>{{ role.capacity }}%</p></div>
<div class="span6">
<div class="progress active progress-info">
<div class="bar bar-info" style="width:{{ role.capacity }}%"></div>
</div>
</div>
</div>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div>
</div>
<div class="span4">
<div class="widget">
<h2>{% trans "Deployment Role Distribution" %}</h2>
<div class="d3_pie_chart_distribution pull-left" data-used='{% for role in roles %}{{ role.name }}={{ role.deployed_node_count|default:"0" }}{% if not forloop.last %}|{% endif %}{% endfor %}'></div>
</div>
<div class="clear"></div>
<div class="widget">
<h2>{% trans "Horizon UI Connection" %}</h2>
{% if dashboard_urls %}
{% for dashboard_url in dashboard_urls %}
<p>
<a href="{{ dashboard_url }}">
{% trans "Horizon UI" %} ({{ dashboard_url }}).
</a>
</p>
{% endfor %}
{% else %}
You need to initialize your OpenStack Deployment first.
{% endif %}
</div>
</div>
</div>
<script type="text/javascript">
(window.$ || window.addHorizonLoadEvent)(function () {
$('div > a[data-target="#detail__log"]').click(function () {
$('li > a[data-target="#detail__log"]').tab('show');
});
});
</script>