Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
# 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