Merge "Supporting existing node group templates in guide"
This commit is contained in:
commit
001729b53f
@ -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
|
||||
|
@ -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 %}
|
@ -0,0 +1,5 @@
|
||||
{% load i18n horizon %}
|
||||
<p class="well">
|
||||
{% blocktrans %}Select an existing node group template.
|
||||
{% endblocktrans %}
|
||||
</p>
|
@ -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 %}
|
||||
|
@ -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 %}
|
@ -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'),
|
||||
)
|
||||
|
@ -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")
|
||||
|
Loading…
x
Reference in New Issue
Block a user