Repository URL to install this package:
|
Version:
5.0.5 ▾
|
# Copyright (c) 2014 TrilioData, Inc.
# All Rights Reserved.
import logging
import netaddr
from datetime import date, timedelta, datetime, time
try:
from django.core.urlresolvers import reverse
except ImportError:
from django.urls import reverse
try:
from django.core.urlresolvers import reverse_lazy
except ImportError:
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django.core.exceptions import ValidationError
from horizon import exceptions
from horizon import forms
from horizon import messages
from horizon import workflows
try:
from horizon.utils import fields
except Exception as ex:
from horizon.forms import fields
pass
from openstack_dashboard import api
from dashboards import workloadmgr
from openstack_dashboard.api import nova
from openstack_dashboard.usage import quotas
LOG = logging.getLogger(__name__)
INDEX_URL = "horizon:admin:workloads_admin:index"
class SetEmailAction(workflows.Action):
smtp_server_name = forms.CharField(max_length=80,
min_length=4,
required=True,
widget=forms.TextInput(
attrs={'placeholder': 'SMTP server name'}),
label=_("SMTP server"),
help_text=_("Enter the SMTP server name "
),
initial='')
smtp_server_username = forms.CharField(max_length=80,
min_length=2,
required=False,
widget=forms.TextInput(
attrs={'placeholder': 'SMTP server username'}),
label=_("SMTP username"),
help_text=_("Enter the SMTP server username "
"if your server requires "),
initial='')
smtp_server_password = forms.CharField(max_length=80,
required=False,
min_length=2,
widget=forms.PasswordInput(
attrs={'placeholder': 'SMTP server password'}),
label=_("SMTP password"),
help_text=_("Enter the SMTP server password "
"if your server requires "),
initial='')
smtp_port = forms.IntegerField(
required=True,
widget=forms.TextInput(
attrs={'placeholder': 'SMTP server port'}),
label=_("SMTP port"),
help_text=_("Enter the SMTP server port "
),
initial='')
smtp_timeout = forms.IntegerField(
required=False,
widget=forms.TextInput(
attrs={'placeholder': 'SMTP server connection timeout'}),
label=_("SMTP timeout"),
help_text=_("Enter the SMTP server timeout "
"default is 10 seconds"),
initial=10)
smtp_default_sender = forms.EmailField(max_length=80,
required=True,
widget=forms.TextInput(
attrs={'placeholder': 'Default sender email address'}),
label=_("Sender"),
help_text=_("Enter the default sender email address "
),
initial='')
class Meta:
name = _("Email Settings")
help_text_template = ("admin/workloads_admin/"
"_email_settings_help.html")
def __init__(self, request, *args, **kwargs):
super(SetEmailAction, self).__init__(request,
*args, **kwargs)
user = api.keystone.user_get(request, request.user.id)
settings = workloadmgr.settings_list(request)
for key in settings[1]['settings']:
if key in self.fields:
self.fields[key].initial = settings[1]['settings'][key]
class SetEmail(workflows.Step):
action_class = SetEmailAction
def contribute(self, data, context):
if data:
context = data
return context
class ChangeSettings(workflows.Workflow):
slug = "change_settings"
name = _("Change Settings")
finalize_button_name = _("Change")
success_message = _('Changed Settings')
default_steps = (SetEmail,)
failure_message = _('Unable to change settings')
def get_success_url(self):
return reverse("horizon:admin:workloads_admin:index")+"?tab=settings"
def get_failure_url(self):
return reverse("horizon:admin:workloads_admin:index")+"?tab=settings"
def handle(self, request, data):
try:
user = api.keystone.user_get(request, request.user.id)
if not hasattr(user, 'email') or user.email == '':
raise Exception(_('Please set admin email address to enable & modify email alerts'))
data['smtp_default_recipient'] = user.email
workloadmgr.settings_create(request, context = data)
return True
except Exception as ex:
messages.error(request, str(ex))
return False
class JobSchedulerAction(workflows.Action):
enabled = forms.BooleanField(
required=False,
label=_("Job Scheduler Enabled"),
help_text=_("Toggle the state of job scheduler"))
class Meta:
name = _("Job Scheduler Settings")
help_text_template = ("admin/workloads_admin/"
"_job_scheduler_help.html")
def __init__(self, request, *args, **kwargs):
super(JobSchedulerAction, self).__init__(request,
*args, **kwargs)
enabled = workloadmgr.get_global_job_scheduler(request)
self.fields['enabled'].initial = enabled
class JobScheduler(workflows.Step):
action_class = JobSchedulerAction
def contribute(self, data, context):
if data:
context = data
return context
class SetJobScheduler(workflows.Workflow):
slug = "jobscheduler"
name = _("Job Scheduler")
finalize_button_name = _("Change")
success_message = _('Changed Job Scheduler')
default_steps = (JobScheduler,)
failure_message = _('Unable to change job scheduler')
def get_success_url(self):
return reverse("horizon:admin:workloads_admin:index")+"?tab=settings"
def get_failure_url(self):
return reverse("horizon:admin:workloads_admin:index")+"?tab=settings"
def handle(self, request, data):
try:
enabled = workloadmgr.get_global_job_scheduler(request)
if data['enabled'] == enabled:
return True
if enabled is True:
workloadmgr.disable_global_job_scheduler(request)
else:
workloadmgr.enable_global_job_scheduler(request)
return True
except Exception as ex:
messages.error(request, str(ex))
return False