Merge "Supporting existing node group templates in guide"

This commit is contained in:
Jenkins 2015-12-23 20:13:03 +00:00 committed by Gerrit Code Review
commit 001729b53f
7 changed files with 146 additions and 0 deletions

View File

@ -119,3 +119,66 @@ class ChooseJobTypeForm(forms.SelfHandlingForm):
exceptions.handle(request,
_("Unable to set job type"))
return False
class ChooseTemplateForm(forms.SelfHandlingForm):
guide_ngt = forms.ChoiceField(
label=_("Node Group Template"),
widget=forms.Select())
def __init__(self, request, *args, **kwargs):
super(ChooseTemplateForm, self).__init__(request, *args, **kwargs)
self.help_text_template = ("project/data_processing.wizard/"
"_ngt_select_help.html")
self.fields["guide_ngt"].choices = \
self.populate_guide_ngt_choices()
template_type = getattr(
self.request, self.request.method).get("guide_template_type")
if template_type:
self.fields["guide_template_type"] = forms.CharField(
required=False,
widget=forms.HiddenInput(),
initial=template_type)
plugin_name = getattr(
self.request, self.request.method).get("plugin_name")
if plugin_name:
self.fields["plugin_name"] = forms.CharField(
required=False,
widget=forms.HiddenInput(),
initial=plugin_name)
plugin_version = getattr(
self.request, self.request.method).get("hadoop_version")
if plugin_version:
self.fields["hadoop_version"] = forms.CharField(
required=False,
widget=forms.HiddenInput(),
initial=plugin_version)
def populate_guide_ngt_choices(self):
plugin = getattr(self.request, self.request.method).get("plugin_name")
version = getattr(
self.request, self.request.method).get("hadoop_version")
data = saharaclient.nodegroup_template_find(self.request,
plugin_name=plugin,
hadoop_version=version)
choices = [("{0}|{1}".format(ngt.name, ngt.id), ngt.name)
for ngt in data]
return choices
def handle(self, request, context):
try:
name_key = context["guide_template_type"] + "_name"
id_key = context["guide_template_type"] + "_id"
(name, id) = context["guide_ngt"].split("|")
request.session[name_key] = name
request.session[id_key] = id
messages.success(request, _("Job type chosen"))
return True
except Exception:
exceptions.handle(request,
_("Unable to set node group template"))
return False

View File

@ -0,0 +1,30 @@
{% extends "horizon/common/_modal_form.html" %}
{% load i18n %}
{% block form_id %}create-job-binary{% endblock %}
{% block form_action %}
{% url 'horizon:project:data_processing.wizard:ngt_select' %}
{% endblock %}
{% block form_attrs %}enctype="multipart/form-data"{% endblock %}
{% block modal-header %}{% trans "Choose node group template" %}{% endblock %}
{% block modal-body %}
<div class="left">
<fieldset>
{% include "horizon/common/_form_fields.html" %}
</fieldset>
</div>
<div class="form-help-block right">
{{ form.get_help_text }}
</div>
{% endblock %}
{% block modal-footer %}
<input class="btn btn-primary pull-right" id="ngt_select_btn"
type="submit" value="{% trans "Select" %}"/>
<a href="{% url 'horizon:project:data_processing.wizard:cluster_guide' %}"
class="btn btn-default secondary cancel close">{% trans "Cancel" %}</a>
{% endblock %}

View File

@ -0,0 +1,5 @@
{% load i18n horizon %}
<p class="well">
{% blocktrans %}Select an existing node group template.
{% endblocktrans %}
</p>

View File

@ -55,6 +55,14 @@
{% if not request.session.plugin_name or not request.session.plugin_version %} disabled {% endif %}"
href="{% if request.session.plugin_name and request.session.plugin_version %}{% url 'horizon:project:data_processing.nodegroup_templates:configure-nodegroup-template'%}?plugin_name={{ request.session.plugin_name }}&hadoop_version={{ request.session.plugin_version }}&guide_template_type=master{% endif %}">
<span class="fa fa-plus"></span> {% trans "Create a Master Node Group Template" %}</a>
{% if view.show_existing_templates %}
{% trans " or " %}
<a class="btn btn-default btn-small btn-create btn-inline ajax-modal
{% if not request.session.plugin_name or not request.session.plugin_version %} disabled {% endif %}"
href="{% if request.session.plugin_name and request.session.plugin_version %}{% url 'horizon:project:data_processing.wizard:ngt_select'%}?plugin_name={{ request.session.plugin_name }}&hadoop_version={{ request.session.plugin_version }}&guide_template_type=master{% endif %}">
{% trans "Choose an existing Master Node Group Template" %}</a>
{% endif %}
</div>
<div>{% trans "Current choice:" %}
{% if request.session.master_name %}
@ -82,6 +90,14 @@
{% if not request.session.master_name %} disabled{% endif %}"
href="{% if request.session.plugin_name and request.session.plugin_version %}{% url 'horizon:project:data_processing.nodegroup_templates:configure-nodegroup-template'%}?plugin_name={{ request.session.plugin_name }}&hadoop_version={{ request.session.plugin_version }}&guide_template_type=worker{% endif %}">
<span class="fa fa-plus"></span> {% trans "Create a Worker Node Group Template" %}</a>
{% if view.show_existing_templates %}
{% trans " or " %}
<a class="btn btn-default btn-small btn-create btn-inline ajax-modal
{% if not request.session.master_name %} disabled{% endif %}"
href="{% if request.session.plugin_name and request.session.plugin_version %}{% url 'horizon:project:data_processing.wizard:ngt_select'%}?plugin_name={{ request.session.plugin_name }}&hadoop_version={{ request.session.plugin_version }}&guide_template_type=worker{% endif %}">
{% trans "Choose an existing Worker Node Group Template" %}</a>
{% endif %}
</div>
<div>{% trans "Current choice:" %}
{% if request.session.worker_name %}

View File

@ -0,0 +1,7 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Choose node group template" %}{% endblock %}
{% block main %}
{% include 'project/data_processing.wizard/_ngt_select.html' %}
{% endblock %}

View File

@ -38,4 +38,7 @@ urlpatterns = patterns('',
url(r'^job_type_select$',
views.JobTypeSelectView.as_view(),
name='job_type_select'),
url(r'^ngt_select$',
views.NodeGroupSelectView.as_view(),
name='ngt_select'),
)

View File

@ -21,6 +21,7 @@ from horizon import exceptions
from horizon import forms
from horizon import views as horizon_views
from sahara_dashboard.api import sahara as saharaclient
from sahara_dashboard.content.data_processing.utils \
import helpers
import sahara_dashboard.content.data_processing.wizard \
@ -47,6 +48,18 @@ class ClusterGuideView(horizon_views.APIView):
template_name = 'project/data_processing.wizard/cluster_guide.html'
page_title = _("Guided Cluster Creation")
def show_existing_templates(self):
try:
plugin = self.request.session.get("plugin_name", None)
version = self.request.session.get("plugin_version", None)
data = saharaclient.nodegroup_template_find(
self.request, plugin_name=plugin, hadoop_version=version)
if len(data) < 1:
return False
return True
except Exception:
return True
class ResetClusterGuideView(generic.RedirectView):
pattern_name = 'horizon:project:data_processing.wizard:cluster_guide'
@ -100,3 +113,12 @@ class JobTypeSelectView(forms.ModalFormView):
classes = ("ajax-modal")
template_name = "project/data_processing.wizard/job_type_select.html"
page_title = _("Choose job type")
class NodeGroupSelectView(forms.ModalFormView):
form_class = wizforms.ChooseTemplateForm
success_url = reverse_lazy(
'horizon:project:data_processing.wizard:cluster_guide')
classes = ("ajax-modal")
template_name = "project/data_processing.wizard/ngt_select.html"
page_title = _("Choose node group template")