Added progress bar to Web UI. Fixed pep8 errors.
This commit is contained in:
parent
a93f6f9fbd
commit
bb7c3577dc
@ -51,43 +51,66 @@ def datacenters_get(request, datacenter_id):
|
|||||||
def datacenters_list(request):
|
def datacenters_list(request):
|
||||||
return windcclient(request).environments.list()
|
return windcclient(request).environments.list()
|
||||||
|
|
||||||
|
|
||||||
def datacenters_deploy(request, datacenter_id):
|
def datacenters_deploy(request, datacenter_id):
|
||||||
session_id = windcclient(request).sessions.list(datacenter_id)[0].id
|
sessions = windcclient(request).sessions.list(datacenter_id)
|
||||||
|
for session in sessions:
|
||||||
|
if session.state == 'open':
|
||||||
|
session_id = session.id
|
||||||
|
if not session_id:
|
||||||
|
return "Sorry, nothing to deploy."
|
||||||
return windcclient(request).sessions.deploy(datacenter_id, session_id)
|
return windcclient(request).sessions.deploy(datacenter_id, session_id)
|
||||||
|
|
||||||
def services_create(request, datacenter, parameters):
|
|
||||||
LOG.critical("////////////////////////////////")
|
def datacenters_get_status(request, datacenter_id):
|
||||||
LOG.critical(parameters)
|
sessions = windcclient(request).sessions.list(datacenter_id)
|
||||||
LOG.critical("////////////////////////////////")
|
for session in sessions:
|
||||||
session_id = windcclient(request).sessions.list(datacenter)[0].id
|
if session.state == 'deployed':
|
||||||
if parameters['service_type'] == 'active directory':
|
windcclient(request).sessions.delete(datacenter_id, session.id)
|
||||||
res = windcclient(request).activeDirectories.create(datacenter, session_id, parameters)
|
sessions = windcclient(request).sessions.list(datacenter_id)
|
||||||
|
if sessions:
|
||||||
|
session = sessions[0]
|
||||||
else:
|
else:
|
||||||
res = windcclient(request).webServers.create(datacenter, session_id, parameters)
|
session = windcclient(request).sessions.configure(datacenter_id)
|
||||||
|
|
||||||
|
return session.state
|
||||||
|
|
||||||
|
|
||||||
|
def services_create(request, datacenter, parameters):
|
||||||
|
session_id = windcclient(request).sessions.list(datacenter)[0].id
|
||||||
|
if parameters['service_type'] == 'Active Directory':
|
||||||
|
res = windcclient(request).activeDirectories.create(datacenter,
|
||||||
|
session_id,
|
||||||
|
parameters)
|
||||||
|
else:
|
||||||
|
res = windcclient(request).webServers.create(datacenter,
|
||||||
|
session_id,
|
||||||
|
parameters)
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
def services_list(request, datacenter_id):
|
def services_list(request, datacenter_id):
|
||||||
session_id = request.user.token.token['id']
|
session_id = request.user.token.token['id']
|
||||||
services = []
|
services = []
|
||||||
|
|
||||||
|
session_id = None
|
||||||
sessions = windcclient(request).sessions.list(datacenter_id)
|
sessions = windcclient(request).sessions.list(datacenter_id)
|
||||||
for s in sessions:
|
for s in sessions:
|
||||||
if s.state == 'open':
|
if s.state in ['open', 'deployed', 'deploying']:
|
||||||
windcclient(request).sessions.delete(datacenter_id, s.id)
|
session_id = s.id
|
||||||
|
|
||||||
session_id = windcclient(request).sessions.configure(datacenter_id).id
|
if session_id is None:
|
||||||
services = windcclient(request).activeDirectories.list(datacenter_id, session_id)
|
session_id = windcclient(request).sessions.configure(datacenter_id).id
|
||||||
|
|
||||||
|
services = windcclient(request).activeDirectories.list(datacenter_id,
|
||||||
|
session_id)
|
||||||
services += windcclient(request).webServers.list(datacenter_id, session_id)
|
services += windcclient(request).webServers.list(datacenter_id, session_id)
|
||||||
|
|
||||||
return services
|
return services
|
||||||
|
|
||||||
|
|
||||||
def services_get(request, datacenter, service_id):
|
def services_get(request, datacenter, service_id):
|
||||||
LOG.critical("********************************")
|
|
||||||
LOG.debug(parameters)
|
|
||||||
LOG.critical("********************************")
|
|
||||||
return windcclient(request).services.get(datacenter, service_id)
|
return windcclient(request).services.get(datacenter, service_id)
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,9 +38,9 @@ LOG = logging.getLogger(__name__)
|
|||||||
class WizardFormServiceType(forms.Form):
|
class WizardFormServiceType(forms.Form):
|
||||||
service = forms.ChoiceField(label=_("Service Type"),
|
service = forms.ChoiceField(label=_("Service Type"),
|
||||||
choices=[
|
choices=[
|
||||||
('active directory', 'Active Directory'),
|
('Active Directory', 'Active Directory'),
|
||||||
('iis', 'Internet Information Services')
|
('IIS', 'Internet Information Services')
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
class WizardFormConfiguration(forms.Form):
|
class WizardFormConfiguration(forms.Form):
|
||||||
@ -59,34 +59,32 @@ class WizardFormADConfiguration(forms.Form):
|
|||||||
initial=1)
|
initial=1)
|
||||||
|
|
||||||
adm_password = forms.CharField(widget=forms.PasswordInput,
|
adm_password = forms.CharField(widget=forms.PasswordInput,
|
||||||
label=_("Administrator password"), required=False)
|
label=_("Administrator password"),
|
||||||
|
required=False)
|
||||||
|
|
||||||
recovery_password = forms.CharField(widget=forms.PasswordInput,
|
recovery_password = forms.CharField(widget=forms.PasswordInput,
|
||||||
label=_("Recovery password"), required=False)
|
label=_("Recovery password"),
|
||||||
|
required=False)
|
||||||
|
|
||||||
|
|
||||||
class WizardFormIISConfiguration(forms.Form):
|
class WizardFormIISConfiguration(forms.Form):
|
||||||
iis_name = forms.CharField(label=_("IIS Server Name"),
|
iis_name = forms.CharField(label=_("IIS Server Name"),
|
||||||
required=False)
|
required=False)
|
||||||
|
|
||||||
adm_password = forms.CharField(widget=forms.PasswordInput,
|
|
||||||
label=_("Administrator password"), required=False)
|
|
||||||
|
|
||||||
iis_count = forms.IntegerField(label=_("IIS Servers Count"),
|
adm_password = forms.CharField(widget=forms.PasswordInput,
|
||||||
required=True,
|
label=_("Administrator password"),
|
||||||
min_value=1,
|
required=False)
|
||||||
max_value=100,
|
|
||||||
initial=1)
|
|
||||||
|
|
||||||
iis_domain = forms.CharField(label=_("Member of the Domain"),
|
iis_domain = forms.CharField(label=_("Member of the Domain"),
|
||||||
required=False)
|
required=False)
|
||||||
|
|
||||||
domain_user_name = forms.CharField(label=_("Domain User Name"),
|
domain_user_name = forms.CharField(label=_("Domain User Name"),
|
||||||
required=False)
|
required=False)
|
||||||
|
|
||||||
domain_user_password = forms.CharField(widget=forms.PasswordInput,
|
domain_user_password = forms.CharField(widget=forms.PasswordInput,
|
||||||
label=_("Domain User Password"), required=False)
|
label=_("Domain User Password"),
|
||||||
|
required=False)
|
||||||
|
|
||||||
|
|
||||||
class UpdateWinDC(forms.SelfHandlingForm):
|
class UpdateWinDC(forms.SelfHandlingForm):
|
||||||
tenant_id = forms.CharField(widget=forms.HiddenInput)
|
tenant_id = forms.CharField(widget=forms.HiddenInput)
|
||||||
|
@ -102,8 +102,8 @@ class DeleteService(tables.BatchAction):
|
|||||||
##############
|
##############
|
||||||
|
|
||||||
api.windc.services_delete(request, datacenter_id, service_id)
|
api.windc.services_delete(request, datacenter_id, service_id)
|
||||||
|
|
||||||
|
|
||||||
class DeployDataCenter(tables.BatchAction):
|
class DeployDataCenter(tables.BatchAction):
|
||||||
name = "deploy"
|
name = "deploy"
|
||||||
action_present = _("Deploy")
|
action_present = _("Deploy")
|
||||||
@ -143,53 +143,62 @@ class ShowDataCenterServices(tables.LinkAction):
|
|||||||
class UpdateRow(tables.Row):
|
class UpdateRow(tables.Row):
|
||||||
ajax = True
|
ajax = True
|
||||||
|
|
||||||
def get_data(self, request, instance_id):
|
def get_data(self, request, datacenter_id):
|
||||||
instance = api.nova.server_get(request, instance_id)
|
datacenter = api.windc.datacenters_get(request, datacenter_id)
|
||||||
instance.full_flavor = api.nova.flavor_get(request,
|
datacenter.status = api.windc.datacenters_get_status(request,
|
||||||
instance.flavor["id"])
|
datacenter_id)
|
||||||
return instance
|
return datacenter
|
||||||
|
|
||||||
|
|
||||||
|
STATUS_DISPLAY_CHOICES = (
|
||||||
|
('deploying', 'Deploy in progress'),
|
||||||
|
('open', 'Ready to deploy')
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_datacenter_status(datacenter):
|
||||||
|
return datacenter.status
|
||||||
|
|
||||||
|
|
||||||
class WinDCTable(tables.DataTable):
|
class WinDCTable(tables.DataTable):
|
||||||
|
|
||||||
|
STATUS_CHOICES = (
|
||||||
|
(None, True),
|
||||||
|
("Ready to deploy", False),
|
||||||
|
("deploying", True),
|
||||||
|
("deployed", True),
|
||||||
|
("ready", True),
|
||||||
|
("error", False),
|
||||||
|
)
|
||||||
|
|
||||||
name = tables.Column("name",
|
name = tables.Column("name",
|
||||||
link=("horizon:project:windc:services"),
|
link=("horizon:project:windc:services"),
|
||||||
verbose_name=_("Name"))
|
verbose_name=_("Name"))
|
||||||
|
|
||||||
|
status = tables.Column(get_datacenter_status, verbose_name=_('Status'),
|
||||||
|
status=True,
|
||||||
|
status_choices=STATUS_CHOICES,
|
||||||
|
display_choices=STATUS_DISPLAY_CHOICES)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
name = "windc"
|
name = "windc"
|
||||||
verbose_name = _("Windows Data Centers")
|
verbose_name = _("Windows Data Centers")
|
||||||
row_class = UpdateRow
|
row_class = UpdateRow
|
||||||
table_actions = (CreateDataCenter,)
|
table_actions = (CreateDataCenter,)
|
||||||
|
status_columns = ['status']
|
||||||
row_actions = (ShowDataCenterServices, DeleteDataCenter,
|
row_actions = (ShowDataCenterServices, DeleteDataCenter,
|
||||||
DeployDataCenter)
|
DeployDataCenter)
|
||||||
|
|
||||||
|
|
||||||
STATUS_DISPLAY_CHOICES = (
|
|
||||||
("create", "Deploy"),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class WinServicesTable(tables.DataTable):
|
class WinServicesTable(tables.DataTable):
|
||||||
|
|
||||||
STATUS_CHOICES = (
|
name = tables.Column('name', verbose_name=_('Name'),
|
||||||
(None, True),
|
|
||||||
("deployed", True),
|
|
||||||
("active", True),
|
|
||||||
("error", False),
|
|
||||||
)
|
|
||||||
|
|
||||||
name = tables.Column('dc_name', verbose_name=_('Name'),
|
|
||||||
link=("horizon:project:windc:service_details"),)
|
link=("horizon:project:windc:service_details"),)
|
||||||
_type = tables.Column('type', verbose_name=_('Type'))
|
_type = tables.Column('service_type', verbose_name=_('Type'))
|
||||||
status = tables.Column('status', verbose_name=_('Status'),
|
|
||||||
status=True,
|
|
||||||
status_choices=STATUS_CHOICES,
|
|
||||||
display_choices=STATUS_DISPLAY_CHOICES)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
name = "services"
|
name = "services"
|
||||||
verbose_name = _("Services")
|
verbose_name = _("Services")
|
||||||
row_class = UpdateRow
|
row_class = UpdateRow
|
||||||
status_columns = ['status']
|
|
||||||
table_actions = (CreateService,)
|
table_actions = (CreateService,)
|
||||||
row_actions = (EditService, DeleteService)
|
row_actions = (EditService, DeleteService)
|
||||||
|
@ -27,15 +27,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
{% if wizard.steps.prev %}
|
{% if wizard.steps.prev %}
|
||||||
{% if service_type == 'active directory' %}
|
<H3>{{ service_type }} Service</H3>
|
||||||
<H3>Active Directory Service</H3>
|
{% if service_type == 'Active Directory' %}
|
||||||
<p>{% trans "Now you can set the parameters for Active Directory Service." %}</p>
|
<p>{% trans "Now you can set the parameters for Active Directory Service." %}</p>
|
||||||
<p>{% trans "You can create few Active Directory instances, in this case will be created one Main Active Directory server and few Secondary Active Directory servers." %}</p>
|
<p>{% trans "You can create few Active Directory instances, in this case will be created one Main Active Directory server and few Secondary Active Directory servers." %}</p>
|
||||||
<p>{% trans "The DNS service will be automatically created on each Active Directory servers." %}</p>
|
<p>{% trans "The DNS service will be automatically created on each Active Directory servers." %}</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<H3>Internet Information Services</H3>
|
|
||||||
<p>{% trans "Now you can set parameters for IIS Service." %}</p>
|
<p>{% trans "Now you can set parameters for IIS Service." %}</p>
|
||||||
<p>{% trans "The IIS Service - it is the server with complex IIS infrastructure, which included to the domain infrasructure." %}</p>
|
<p>{% trans "The IIS Service - it is the server with complex Internet Information Services infrastructure, which included to the domain infrasructure." %}</p>
|
||||||
<p>{% trans "Please, set the complex password for local administrator account." %}</p>
|
<p>{% trans "Please, set the complex password for local administrator account." %}</p>
|
||||||
<p>{% trans "Also, you can add this IIS server to the existing domain and configure credentials for domain user." %}</p>
|
<p>{% trans "Also, you can add this IIS server to the existing domain and configure credentials for domain user." %}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -28,7 +28,7 @@ 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$',
|
url(r'^create$',
|
||||||
Wizard.as_view([WizardFormServiceType, WizardFormConfiguration]),
|
Wizard.as_view([WizardFormServiceType, WizardFormConfiguration]),
|
||||||
name='create'),
|
name='create'),
|
||||||
url(r'^create_dc$', CreateWinDCView.as_view(), name='create_dc'),
|
url(r'^create_dc$', CreateWinDCView.as_view(), name='create_dc'),
|
||||||
|
@ -58,35 +58,50 @@ class Wizard(ModalFormMixin, SessionWizardView, generic.FormView):
|
|||||||
link = self.request.__dict__['META']['HTTP_REFERER']
|
link = self.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]
|
||||||
url = "/project/windc/%s/" % datacenter_id
|
url = "/project/windc/%s/" % datacenter_id
|
||||||
|
|
||||||
service_type = form_list[0].data.get('0-service', '')
|
service_type = form_list[0].data.get('0-service', '')
|
||||||
parameters = {'service_type': service_type}
|
parameters = {'service_type': service_type}
|
||||||
|
|
||||||
if service_type == 'active directory':
|
if service_type == 'Active Directory':
|
||||||
parameters['configuration'] = 'standalone'
|
parameters['configuration'] = 'standalone'
|
||||||
parameters['name'] = str(form_list[1].data.get('1-dc_name', 'noname'))
|
parameters['name'] = str(form_list[1].data.get('1-dc_name',
|
||||||
parameters['adminPassword'] = str(form_list[1].data.get('1-adm_password', ''))
|
'noname'))
|
||||||
|
parameters['adminPassword'] = \
|
||||||
|
str(form_list[1].data.get('1-adm_password', ''))
|
||||||
dc_count = int(form_list[1].data.get('1-dc_count', 1))
|
dc_count = int(form_list[1].data.get('1-dc_count', 1))
|
||||||
recovery_password = str(form_list[1].data.get('1-recovery_password', ''))
|
recovery_password = \
|
||||||
|
str(form_list[1].data.get('1-recovery_password', ''))
|
||||||
parameters['units'] = []
|
parameters['units'] = []
|
||||||
parameters['units'].append({'isMaster': True, 'recoveryPassword': recovery_password,
|
parameters['units'].append({'isMaster': True,
|
||||||
|
'recoveryPassword': recovery_password,
|
||||||
'location': 'west-dc'})
|
'location': 'west-dc'})
|
||||||
for dc in range(dc_count-1):
|
for dc in range(dc_count - 1):
|
||||||
parameters['units'].append({'isMaster': False, 'recoveryPassword': recovery_password,
|
parameters['units'].append({'isMaster': False,
|
||||||
'location': 'west-dc'})
|
'recoveryPassword': recovery_password,
|
||||||
|
'location': 'west-dc'})
|
||||||
elif service_type == 'iis':
|
|
||||||
parameters['name'] = str(form_list[1].data.get('1-iis_name', 'noname'))
|
elif service_type == 'IIS':
|
||||||
|
password = form_list[1].data.get('1-adm_password', '')
|
||||||
|
domain = form_list[1].data.get('1-iis_domain', '')
|
||||||
|
dc_user = form_list[1].data.get('1-domain_user_name', '')
|
||||||
|
dc_pass = form_list[1].data.get('1-domain_user_password', '')
|
||||||
|
parameters['name'] = str(form_list[1].data.get('1-iis_name',
|
||||||
|
'noname'))
|
||||||
parameters['credentials'] = {'username': 'Administrator',
|
parameters['credentials'] = {'username': 'Administrator',
|
||||||
'password': str(form_list[1].data.get('1-adm_password', ''))}
|
'password': password}
|
||||||
parameters['domain'] = {'name': str(form_list[1].data.get('1-iis_domain', '')),
|
parameters['domain'] = {'name': str(domain),
|
||||||
'username': str(form_list[1].data.get('1-domain_user_name', '')),
|
'username': str(dc_user),
|
||||||
'password': str(form_list[1].data.get('1-domain_user_password', ''))}
|
'password': str(dc_pass)}
|
||||||
parameters['location'] = 'west-dc'
|
parameters['location'] = 'west-dc'
|
||||||
|
|
||||||
|
parameters['units'] = []
|
||||||
|
parameters['units'].append({'id': '1',
|
||||||
|
'endpoint': [{'host': '10.0.0.1'}],
|
||||||
|
'location': 'west-dc'})
|
||||||
|
|
||||||
service = api.windc.services_create(self.request,
|
service = api.windc.services_create(self.request,
|
||||||
datacenter_id,
|
datacenter_id,
|
||||||
parameters)
|
parameters)
|
||||||
|
|
||||||
message = "The %s service successfully created." % service_type
|
message = "The %s service successfully created." % service_type
|
||||||
messages.success(self.request, message)
|
messages.success(self.request, message)
|
||||||
@ -98,17 +113,17 @@ class Wizard(ModalFormMixin, SessionWizardView, generic.FormView):
|
|||||||
if data:
|
if data:
|
||||||
service_type = data.get('0-service', '')
|
service_type = data.get('0-service', '')
|
||||||
self.service_type = service_type
|
self.service_type = service_type
|
||||||
if service_type == 'active directory':
|
if service_type == 'Active Directory':
|
||||||
self.form_list['1'] = WizardFormADConfiguration
|
self.form_list['1'] = WizardFormADConfiguration
|
||||||
elif service_type == 'iis':
|
elif service_type == 'IIS':
|
||||||
self.form_list['1'] = WizardFormIISConfiguration
|
self.form_list['1'] = WizardFormIISConfiguration
|
||||||
|
|
||||||
return form
|
return form
|
||||||
|
|
||||||
def get_form_step_data(self, form):
|
def get_form_step_data(self, form):
|
||||||
LOG.debug(form.data)
|
LOG.debug(form.data)
|
||||||
return form.data
|
return form.data
|
||||||
|
|
||||||
def get_context_data(self, form, **kwargs):
|
def get_context_data(self, form, **kwargs):
|
||||||
context = super(Wizard, self).get_context_data(form=form, **kwargs)
|
context = super(Wizard, self).get_context_data(form=form, **kwargs)
|
||||||
if self.steps.index > 0:
|
if self.steps.index > 0:
|
||||||
@ -121,9 +136,12 @@ class IndexView(tables.DataTableView):
|
|||||||
template_name = 'project/windc/index.html'
|
template_name = 'project/windc/index.html'
|
||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
# Gather our datacenters
|
|
||||||
try:
|
try:
|
||||||
data_centers = api.windc.datacenters_list(self.request)
|
data_centers = api.windc.datacenters_list(self.request)
|
||||||
|
for dc in data_centers:
|
||||||
|
# get the information about session status for each dc
|
||||||
|
dc.status = api.windc.datacenters_get_status(self.request,
|
||||||
|
dc.id)
|
||||||
except:
|
except:
|
||||||
data_centers = []
|
data_centers = []
|
||||||
exceptions.handle(self.request,
|
exceptions.handle(self.request,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user