gui/cgcs_dashboard/dashboards/admin/inventory/ports/forms.py

124 lines
4.0 KiB
Python
Executable File

#
# Copyright (c) 2013-2014 Wind River Systems, Inc.
#
# The right to copy, distribute, modify, or otherwise make use
# of this software may be licensed only pursuant to the terms
# of an applicable Wind River license agreement.
#
# vim: tabstop=4 shiftwidth=4 softtabstop=4
import logging
from django.core.urlresolvers import reverse # noqa
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import forms
from horizon import messages
from openstack_dashboard import api
LOG = logging.getLogger(__name__)
class UpdatePort(forms.SelfHandlingForm):
SPEED_CHOICES = (
('10', _(" 10baseT")),
('100', _(" 100baseT")),
('1000', _(" 1000baseT")),
('10000', _("10000baseT")),
)
AUTO_NEG_CHOICES = (
('yes', _("yes")),
('no', _("no")),
('na', _("na")),
)
host_uuid = forms.CharField(label=_("host_uuid"),
required=False,
widget=forms.widgets.HiddenInput)
host_id = forms.CharField(label=_("host_id"),
required=False,
widget=forms.widgets.HiddenInput)
id = forms.CharField(label=_("id"),
required=False,
widget=forms.widgets.HiddenInput)
name = forms.CharField(label=_("Name"),
required=False,
widget=forms.TextInput(
attrs={'readonly': 'readonly'}))
newname = forms.CharField(label=_("Name"),
required=False)
oldname = forms.CharField(label=_("Name"),
required=False,
widget=forms.widgets.HiddenInput)
autoneg = forms.ChoiceField(label=_("Hidden Auto Neg"),
required=False,
choices=AUTO_NEG_CHOICES,
widget=forms.widgets.HiddenInput)
autonegbool = forms.BooleanField(label=_("Auto Negotiation"),
required=False)
# Configurable Speed will be added later
#
# speed = forms.ChoiceField(label=_("Speed"),
# initial='speed',
# choices=SPEED_CHOICES,
# required=False)
failure_url = 'horizon:admin:inventory:detail'
def __init__(self, *args, **kwargs):
super(UpdatePort, self).__init__(*args, **kwargs)
name = kwargs['initial']['name']
if name:
self.fields['newname'].widget = forms.widgets.HiddenInput()
else:
self.fields['name'].widget = forms.widgets.HiddenInput()
autoneg = kwargs['initial']['autoneg']
if autoneg.lower() == 'na':
self.fields['autonegbool'].widget = forms.widgets.HiddenInput()
def clean(self):
cleaned_data = super(UpdatePort, self).clean()
return cleaned_data
def handle(self, request, data):
deviceName = data['newname']
if data['name']:
deviceName = data['name']
elif data['newname'] != data['oldname']:
data['namedisplay'] = data['newname']
del data['newname']
del data['oldname']
if data['autoneg'] != 'na':
if data['autonegbool']:
data['autoneg'] = 'Yes'
else:
data['autoneg'] = 'No'
del data['autonegbool']
host_id = data['host_id']
del data['host_id']
port_id = data['id']
del data['id']
try:
port = api.sysinv.host_port_update(request, port_id, **data)
msg = _('Port "%s" was successfully updated.') % deviceName
LOG.debug(msg)
messages.success(request, msg)
return port
except Exception:
msg = _('Failed to update port "%s".') % deviceName
LOG.info(msg)
redirect = reverse(self.failure_url, args=[host_id])
exceptions.handle(request, msg, redirect=redirect)