summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad P. Crochet <brad@redhat.com>2015-08-06 15:48:34 -0400
committerAna Krivokapic <akrivoka@redhat.com>2015-08-07 11:50:15 +0200
commitb3a0d54a617026cc317141d36afb7d7989269e51 (patch)
treec169a9cf8825373fd169f17a973fb0d5ac87ad80
parent943d726a069640bc988c83379516ab8caa940691 (diff)
downloadtuskar-ui-b3a0d54a617026cc317141d36afb7d7989269e51.tar.gz
Add a display and download of overcloudrc
No overcloudrc was created when deployed via the UI. This adds the ability to view the values and to download an appropriate rc file. Change-Id: I2ee7cc4b10559a3542a6d22b01179b764c857d6b
-rw-r--r--tuskar_ui/infrastructure/overview/urls.py3
-rw-r--r--tuskar_ui/infrastructure/overview/views.py44
-rw-r--r--tuskar_ui/infrastructure/static/infrastructure/js/tuskar.deployment_live.js17
-rw-r--r--tuskar_ui/infrastructure/templates/infrastructure/_scripts.html1
-rw-r--r--tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_base.html2
-rw-r--r--tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_live.html55
-rw-r--r--tuskar_ui/infrastructure/templates/infrastructure/overview/overcloudrc.sh.template9
7 files changed, 131 insertions, 0 deletions
diff --git a/tuskar_ui/infrastructure/overview/urls.py b/tuskar_ui/infrastructure/overview/urls.py
index 6e409a6b..35410d5d 100644
--- a/tuskar_ui/infrastructure/overview/urls.py
+++ b/tuskar_ui/infrastructure/overview/urls.py
@@ -32,4 +32,7 @@ urlpatterns = urls.patterns(
urls.url(r'^scale-out$',
views.ScaleOutView.as_view(),
name='scale_out'),
+ urls.url(r'^download-overcloudrc$',
+ views.download_overcloudrc_file,
+ name='download_overcloudrc'),
)
diff --git a/tuskar_ui/infrastructure/overview/views.py b/tuskar_ui/infrastructure/overview/views.py
index 970725c8..90f9fa37 100644
--- a/tuskar_ui/infrastructure/overview/views.py
+++ b/tuskar_ui/infrastructure/overview/views.py
@@ -13,14 +13,18 @@
# under the License.
import json
+import logging
+import urlparse
from django.core.urlresolvers import reverse
from django.core.urlresolvers import reverse_lazy
from django import http
+from django import shortcuts
import django.utils.text
from django.utils.translation import ugettext_lazy as _
import heatclient
import horizon.forms
+from horizon import messages
from tuskar_ui import api
from tuskar_ui.infrastructure.overview import forms
@@ -29,6 +33,8 @@ from tuskar_ui.infrastructure import views
INDEX_URL = 'horizon:infrastructure:overview:index'
+LOG = logging.getLogger(__name__)
+
def _steps_message(messages):
total_steps = len(messages)
@@ -218,6 +224,10 @@ class IndexView(horizon.forms.ModalFormView, views.StackMixin):
controller_role.parameter_prefix + 'AdminPassword')
context['dashboard_urls'] = stack.dashboard_urls
+ no_proxy = [urlparse.urlparse(url).hostname
+ for url in stack.dashboard_urls]
+ context['no_proxy'] = ",".join(no_proxy)
+ context['auth_url'] = stack.keystone_auth_url
else:
messages = forms.validate_plan(request, plan)
context['plan_messages'] = messages
@@ -344,3 +354,37 @@ class ScaleOutView(horizon.forms.ModalFormView, views.StackMixin):
'plan': plan,
})
return context
+
+
+def _get_openrc_credentials(request):
+ plan = api.tuskar.Plan.get_the_plan(request)
+ stack = api.heat.Stack.get_by_plan(request, plan)
+ no_proxy = [urlparse.urlparse(url).hostname
+ for url in stack.dashboard_urls]
+ controller_role = plan.get_role_by_name("Controller")
+ credentials = dict(tenant_name='admin',
+ auth_url=stack.keystone_auth_url,
+ admin_password=plan.parameter_value(
+ controller_role.parameter_prefix + 'AdminPassword'),
+ no_proxy=",".join(no_proxy))
+ return credentials
+
+
+def download_overcloudrc_file(request):
+ template = 'infrastructure/overview/overcloudrc.sh.template'
+ try:
+ context = _get_openrc_credentials(request)
+
+ response = shortcuts.render(request,
+ template,
+ context,
+ content_type="text/plain")
+ response['Content-Disposition'] = ('attachment; '
+ 'filename="overcloudrc"')
+ response['Content-Length'] = str(len(response.content))
+ return response
+
+ except Exception as e:
+ LOG.exception("Exception in DownloadOvercloudrcForm.")
+ messages.error(request, _('Error Downloading RC File: %s') % e)
+ return shortcuts.redirect(request.build_absolute_uri())
diff --git a/tuskar_ui/infrastructure/static/infrastructure/js/tuskar.deployment_live.js b/tuskar_ui/infrastructure/static/infrastructure/js/tuskar.deployment_live.js
new file mode 100644
index 00000000..22e4f2f5
--- /dev/null
+++ b/tuskar_ui/infrastructure/static/infrastructure/js/tuskar.deployment_live.js
@@ -0,0 +1,17 @@
+tuskar.deployment_live = (function () {
+ 'use strict';
+
+ var module = {};
+
+ module.init = function () {
+ $("#overcloudrc").on("hide.bs.collapse", function(){
+ $("span.overcloudrc").html('Show <i class="fa fa-angle-down"></i>');
+ });
+ $("#overcloudrc").on("show.bs.collapse", function(){
+ $("span.overcloudrc").html('Hide <i class="fa fa-angle-up"></i>');
+ });
+ };
+
+ horizon.addInitFunction(module.init);
+ return module;
+} ());
diff --git a/tuskar_ui/infrastructure/templates/infrastructure/_scripts.html b/tuskar_ui/infrastructure/templates/infrastructure/_scripts.html
index 61d91811..ff190f01 100644
--- a/tuskar_ui/infrastructure/templates/infrastructure/_scripts.html
+++ b/tuskar_ui/infrastructure/templates/infrastructure/_scripts.html
@@ -10,6 +10,7 @@
<script src='{{ STATIC_URL }}infrastructure/js/tuskar.edit_plan.js' type='text/javascript' charset='utf-8'></script>
<script src='{{ STATIC_URL }}infrastructure/js/tuskar.deployment_progress.js' type='text/javascript' charset='utf-8'></script>
<script src='{{ STATIC_URL }}infrastructure/js/tuskar.performance.js' type='text/javascript' charset='utf-8'></script>
+ <script src='{{ STATIC_URL }}infrastructure/js/tuskar.deployment_live.js' type='text/javascript' charset='utf-8'></script>
{% endblock %}
{% comment %} Tuskar-UI Client-side Templates (These should *not* be inside the "compress" tag.) {% endcomment %}
diff --git a/tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_base.html b/tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_base.html
index b8065a6d..04bf8eef 100644
--- a/tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_base.html
+++ b/tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_base.html
@@ -22,4 +22,6 @@
</div>
</div>
+{% block deployment-overcloudrc %}{% endblock %}
+
{% block templates %}{% endblock %}
diff --git a/tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_live.html b/tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_live.html
index 9d371641..af6dfa81 100644
--- a/tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_live.html
+++ b/tuskar_ui/infrastructure/templates/infrastructure/overview/deployment_live.html
@@ -56,3 +56,58 @@
</a>
{% endblock %}
+
+{% block deployment-overcloudrc %}
+ <div class="clear"></div>
+ <div class="deployment-icon">
+ <i class="fa fa-key fa-3x fa-fw"></i>
+ </div>
+ <div class="deployment-box clearfix">
+ <h4>{% trans "Overcloudrc Information" %}</h4><a data-toggle="collapse" href="#overcloudrc" aria-expanded="false" aria-controls="overcloudrc" id="collapse-rc"><span class='overcloudrc'>{% trans "Show" %}<i class="fa fa-angle-down"></i></span></a>
+ <div class="collapse" id="overcloudrc">
+ <div class="row">
+ <div class="col-xs-4">NOVA_VERSION:</div>
+ <div class="col-xs-8">1.1</div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">OS_USERNAME:</div>
+ <div class="col-xs-8">admin</div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">OS_PASSWORD:</div>
+ <div class="col-xs-8">{{ admin_password }}</div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">OS_AUTH_URL:</div>
+ <div class="col-xs-8">{{ auth_url }}</div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">OS_TENANT_NAME:</div>
+ <div class="col-xs-8">admin</div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">COMPUTE_API_VERSION:</div>
+ <div class="col-xs-8">1.1</div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">OS_NO_CACHE:</div>
+ <div class="col-xs-8">True</div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">no_proxy:</div>
+ <div class="col-xs-8">{{ no_proxy }}</div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">{% trans "Download" %}</div>
+ <div class="col-xs-8">
+ <a
+ href="{% url 'horizon:infrastructure:overview:download_overcloudrc' %}"
+ class="btn btn-default"
+ >
+ <i class="fa fa-lg fa-download"></i> {% trans "Download" %}
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+{% endblock %}
diff --git a/tuskar_ui/infrastructure/templates/infrastructure/overview/overcloudrc.sh.template b/tuskar_ui/infrastructure/templates/infrastructure/overview/overcloudrc.sh.template
new file mode 100644
index 00000000..5977bb37
--- /dev/null
+++ b/tuskar_ui/infrastructure/templates/infrastructure/overview/overcloudrc.sh.template
@@ -0,0 +1,9 @@
+#!/bin/bash
+export NOVA_VERSION=1.1
+export OS_AUTH_URL={{ auth_url }}
+export OS_TENANT_NAME="admin"
+export OS_USERNAME="admin"
+export OS_PASSWORD={{ admin_password }}
+export COMPUTE_API_VERSION=1.1
+export OS_NO_CACHE=True
+export no_proxy={{ no_proxy }}