Finished Task: KEERO-117. Added new UI wizard for Create Services Action.
This commit is contained in:
@@ -36,12 +36,62 @@ LOG = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class WizardFormServiceType(forms.Form):
|
class WizardFormServiceType(forms.Form):
|
||||||
_type = forms.ChoiceField(label=_("Service Type"))
|
service = forms.ChoiceField(label=_("Service Type"),
|
||||||
|
choices=[
|
||||||
|
('active directory', 'Active Directory'),
|
||||||
|
('iis', 'Internet Information Services')
|
||||||
|
],
|
||||||
|
initial = 'Please, select the type of service...')
|
||||||
|
|
||||||
|
|
||||||
class WizardFormConfiguration(forms.Form):
|
class WizardFormConfiguration(forms.Form):
|
||||||
subject = forms.CharField(max_length=100)
|
"The functions for this class will dynamically create in views.py"
|
||||||
sender = forms.CharField(max_length=1)
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class WizardFormADConfiguration(forms.Form):
|
||||||
|
dc_name = forms.CharField(label=_("Domain Name"),
|
||||||
|
required=False)
|
||||||
|
|
||||||
|
dc_count = forms.IntegerField(label=_("Instances Count"),
|
||||||
|
required=True,
|
||||||
|
min_value=1,
|
||||||
|
max_value=100,
|
||||||
|
initial=1)
|
||||||
|
|
||||||
|
adm_password = forms.CharField(widget=forms.PasswordInput,
|
||||||
|
label=_("Administrator password"), required=False)
|
||||||
|
|
||||||
|
recovery_password = forms.CharField(widget=forms.PasswordInput,
|
||||||
|
label=_("Recovery password"), required=False)
|
||||||
|
|
||||||
|
def handle(self, request, data):
|
||||||
|
message = "Test"
|
||||||
|
messages.success(request, message)
|
||||||
|
LOG.critical('^^^^^^^^^^^^^^^^^^^^^')
|
||||||
|
|
||||||
|
|
||||||
|
class WizardFormIISConfiguration(forms.Form):
|
||||||
|
iis_name = forms.CharField(label=_("IIS Server Name"),
|
||||||
|
required=False)
|
||||||
|
|
||||||
|
adm_password = forms.CharField(widget=forms.PasswordInput,
|
||||||
|
label=_("Administrator password"), required=False)
|
||||||
|
|
||||||
|
iis_count = forms.IntegerField(label=_("IIS Servers Count"),
|
||||||
|
required=True,
|
||||||
|
min_value=1,
|
||||||
|
max_value=100,
|
||||||
|
initial=1)
|
||||||
|
|
||||||
|
iis_domain = forms.CharField(label=_("Member of the Domain"),
|
||||||
|
required=False)
|
||||||
|
|
||||||
|
domain_user_name = forms.CharField(label=_("Domain User Name"),
|
||||||
|
required=False)
|
||||||
|
|
||||||
|
domain_user_password = forms.CharField(widget=forms.PasswordInput,
|
||||||
|
label=_("Domain User Password"), required=False)
|
||||||
|
|
||||||
|
|
||||||
class UpdateWinDC(forms.SelfHandlingForm):
|
class UpdateWinDC(forms.SelfHandlingForm):
|
||||||
|
@@ -1,10 +1,12 @@
|
|||||||
{% extends "horizon/common/_modal_form.html" %}
|
{% extends "horizon/common/_modal_form.html" %}
|
||||||
{% load i18n %}
|
{% load i18n horizon humanize %}
|
||||||
|
|
||||||
|
{% block form_action %}{% url horizon:project:windc:create %}?{{ request.POST.urlencode }}{% endblock %}
|
||||||
|
|
||||||
|
{% block modal_id %}create_service{% endblock %}
|
||||||
{% block modal-header %}{% trans "Create Service" %}{% endblock %}
|
{% block modal-header %}{% trans "Create Service" %}{% endblock %}
|
||||||
|
|
||||||
{% block modal-body %}
|
{% block modal-body %}
|
||||||
<p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
|
|
||||||
<form action="" method="post">{% csrf_token %}
|
|
||||||
<table>
|
<table>
|
||||||
{{ wizard.management_form }}
|
{{ wizard.management_form }}
|
||||||
{% if wizard.form.forms %}
|
{% if wizard.form.forms %}
|
||||||
@@ -17,12 +19,13 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{{ wizard.form.forms }}
|
{{ wizard.form.forms }}
|
||||||
</table>
|
</table>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block modal-footer %}
|
||||||
{% if wizard.steps.prev %}
|
{% if wizard.steps.prev %}
|
||||||
<button name="wizard_goto_step" class="btn btn-small" type="submit" value="{{ wizard.steps.prev }}">{% trans "Back" %}</button>
|
<button name="wizard_goto_step" class="btn btn-small" type="submit" value="{{ wizard.steps.prev }}">{% trans "Back" %}</button>
|
||||||
<input type="submit" class="btn btn-primary pull-right" value="{% trans 'Deploy' %}"/>
|
<input type="submit" class="btn btn-primary pull-right" value="{% trans 'Deploy' %}"/>
|
||||||
{% else %}
|
{% else %}
|
||||||
<button name="wizard_goto_step" class="btn btn-small" type="submit" value="{{ wizard.steps.next }}">{% trans "Next" %}</button>
|
<button name="wizard_goto_step" class="btn btn-small" type="submit" value="{{ wizard.steps.next }}">{% trans "Next" %}</button>
|
||||||
<input type="submit" class="btn btn-primary pull-right" value="{% trans 'Deploy' %}"/>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</form>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@@ -1,15 +0,0 @@
|
|||||||
{% extends 'base.html' %}
|
|
||||||
{% load i18n sizeformat %}
|
|
||||||
{% block title %}{% trans "Services" %}{% endblock %}
|
|
||||||
|
|
||||||
{% block page_header %}
|
|
||||||
{% include "horizon/common/_page_header.html" with title="Domain Controller Services" %}
|
|
||||||
{% endblock page_header %}
|
|
||||||
|
|
||||||
{% block main %}
|
|
||||||
<div class="row-fluid">
|
|
||||||
<div class="span12">
|
|
||||||
{{ tab_group.render }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
@@ -29,13 +29,12 @@ VIEW_MOD = 'openstack_dashboard.dashboards.project.windc.views'
|
|||||||
|
|
||||||
urlpatterns = patterns(VIEW_MOD,
|
urlpatterns = patterns(VIEW_MOD,
|
||||||
url(r'^$', IndexView.as_view(), name='index'),
|
url(r'^$', IndexView.as_view(), name='index'),
|
||||||
url(r'^create$', CreateWinServiceView.as_view(), name='create'),
|
url(r'^create$',
|
||||||
|
Wizard.as_view([WizardFormServiceType, WizardFormConfiguration]),
|
||||||
|
name='create'),
|
||||||
url(r'^create_dc$', CreateWinDCView.as_view(), name='create_dc'),
|
url(r'^create_dc$', CreateWinDCView.as_view(), name='create_dc'),
|
||||||
url(r'^(?P<data_center_id>[^/]+)/$', WinServices.as_view(),
|
url(r'^(?P<data_center_id>[^/]+)/$', WinServices.as_view(),
|
||||||
name='services'),
|
name='services'),
|
||||||
url(r'^update$',
|
|
||||||
Wizard.as_view([WizardFormServiceType, WizardFormConfiguration]),
|
|
||||||
name='update'),
|
|
||||||
url(r'^(?P<service_id>[^/]+)/$', WinServices.as_view(),
|
url(r'^(?P<service_id>[^/]+)/$', WinServices.as_view(),
|
||||||
name='service_details')
|
name='service_details')
|
||||||
)
|
)
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
Views for managing instances.
|
Views for managing instances.
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
|
|
||||||
from django import http
|
from django import http
|
||||||
from django import shortcuts
|
from django import shortcuts
|
||||||
@@ -41,9 +42,12 @@ from horizon.forms.views import ModalFormMixin
|
|||||||
from openstack_dashboard import api
|
from openstack_dashboard import api
|
||||||
from .tables import WinDCTable, WinServicesTable
|
from .tables import WinDCTable, WinServicesTable
|
||||||
from .workflows import CreateWinService, CreateWinDC
|
from .workflows import CreateWinService, CreateWinDC
|
||||||
from .forms import WizardFormServiceType, WizardFormConfiguration
|
from .forms import (WizardFormServiceType, WizardFormConfiguration,
|
||||||
|
WizardFormADConfiguration, WizardFormIISConfiguration)
|
||||||
|
|
||||||
import pdb
|
from horizon import messages
|
||||||
|
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@@ -51,15 +55,51 @@ class Wizard(ModalFormMixin, SessionWizardView, generic.FormView):
|
|||||||
template_name = 'project/windc/services_tabs.html'
|
template_name = 'project/windc/services_tabs.html'
|
||||||
|
|
||||||
def done(self, form_list, **kwargs):
|
def done(self, form_list, **kwargs):
|
||||||
#do_something_with_the_form_data(form_list)
|
link = self.request.__dict__['META']['HTTP_REFERER']
|
||||||
return HttpResponseRedirect('/')
|
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||||
|
url = "/project/windc/%s/" % datacenter_id
|
||||||
|
|
||||||
|
service_type = form_list[0].data.get('0-service', '')
|
||||||
|
parameters = {}
|
||||||
|
|
||||||
|
if service_type == 'active directory':
|
||||||
|
parameters['dc_name'] = str(form_list[1].data.get('1-dc_name', 'noname'))
|
||||||
|
parameters['adm_password'] = str(form_list[1].data.get('1-adm_password', ''))
|
||||||
|
parameters['dc_count'] = int(form_list[1].data.get('1-dc_count', 1))
|
||||||
|
parameters['recovery_password'] = str(form_list[1].data.get('1-recovery_password', ''))
|
||||||
|
elif service_type == 'iis':
|
||||||
|
parameters['iis_name'] = str(form_list[1].data.get('1-iis_name', 'noname'))
|
||||||
|
parameters['adm_password'] = str(form_list[1].data.get('1-adm_password', ''))
|
||||||
|
parameters['iis_count'] = int(form_list[1].data.get('1-iis_count', 1))
|
||||||
|
parameters['iis_domain'] = str(form_list[1].data.get('1-iis_domain', ''))
|
||||||
|
parameters['domain_user_name'] = str(form_list[1].data.get('1-domain_user_name', ''))
|
||||||
|
parameters['domain_user_password'] = str(form_list[1].data.get('1-domain_user_password', ''))
|
||||||
|
|
||||||
|
service = api.windc.services_create(self.request,
|
||||||
|
datacenter_id,
|
||||||
|
parameters)
|
||||||
|
|
||||||
|
message = "The %s service successfully created." % service_type
|
||||||
|
messages.success(self.request, message)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
def get_form(self, step=None, data=None, files=None):
|
def get_form(self, step=None, data=None, files=None):
|
||||||
form = super(Wizard, self).get_form(step, data, files)
|
form = super(Wizard, self).get_form(step, data, files)
|
||||||
print step
|
LOG.debug("********" + str(self.form_list))
|
||||||
print data
|
if data:
|
||||||
|
service_type = data.get('0-service', '')
|
||||||
|
|
||||||
|
if service_type == 'active directory':
|
||||||
|
self.form_list['1'] = WizardFormADConfiguration
|
||||||
|
elif service_type == 'iis':
|
||||||
|
self.form_list['1'] = WizardFormIISConfiguration
|
||||||
|
|
||||||
return form
|
return form
|
||||||
|
|
||||||
|
def get_form_step_data(self, form):
|
||||||
|
LOG.debug(form.data)
|
||||||
|
return form.data
|
||||||
|
|
||||||
|
|
||||||
class IndexView(tables.DataTableView):
|
class IndexView(tables.DataTableView):
|
||||||
table_class = WinDCTable
|
table_class = WinDCTable
|
||||||
|
@@ -172,10 +172,8 @@ class CreateWinService(workflows.Workflow):
|
|||||||
|
|
||||||
def handle(self, request, context):
|
def handle(self, request, context):
|
||||||
try:
|
try:
|
||||||
############## FIX ME:
|
|
||||||
link = request.__dict__['META']['HTTP_REFERER']
|
link = request.__dict__['META']['HTTP_REFERER']
|
||||||
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||||
##############
|
|
||||||
|
|
||||||
self.success_url = "/project/windc/%s/" % datacenter_id
|
self.success_url = "/project/windc/%s/" % datacenter_id
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user