79 lines
2.7 KiB
Python
Executable File
79 lines
2.7 KiB
Python
Executable File
#
|
|
# Copyright (c) 2014-2015 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 UpdateDevice(forms.SelfHandlingForm):
|
|
|
|
host_id = forms.CharField(label=_("host_id"),
|
|
required=False,
|
|
widget=forms.widgets.HiddenInput)
|
|
|
|
uuid = forms.CharField(label=_("uuid"),
|
|
required=False,
|
|
widget=forms.widgets.HiddenInput)
|
|
|
|
device_name = forms.CharField(label=_("Device Name"),
|
|
required=False,
|
|
widget=forms.TextInput(
|
|
attrs={'readonly': 'readonly'}))
|
|
|
|
pciaddr = forms.CharField(label=_("Device Address"),
|
|
required=False,
|
|
widget=forms.TextInput(
|
|
attrs={'readonly': 'readonly'}))
|
|
|
|
name = forms.CharField(label=_("Name"),
|
|
required=False,
|
|
widget=forms.TextInput())
|
|
|
|
enabled = forms.BooleanField(label=_("Enabled"),
|
|
required=False,
|
|
widget=forms.CheckboxInput())
|
|
|
|
failure_url = 'horizon:admin:inventory:detail'
|
|
|
|
def clean(self):
|
|
data = super(UpdateDevice, self).clean()
|
|
if isinstance(data['enabled'], bool):
|
|
data['enabled'] = 'True' if data['enabled'] else 'False'
|
|
return data
|
|
|
|
def handle(self, request, data):
|
|
name = data['name']
|
|
uuid = data['uuid']
|
|
|
|
try:
|
|
p = {}
|
|
p['name'] = name
|
|
p['enabled'] = str(data['enabled'])
|
|
device = api.sysinv.host_device_update(request, uuid, **p)
|
|
msg = _('device "%s" was successfully updated.') % name
|
|
LOG.debug(msg)
|
|
messages.success(request, msg)
|
|
return device
|
|
except Exception as exc:
|
|
msg = _('Failed to update device "%(n)s" (%(e)s).') % ({'n': name,
|
|
'e': exc})
|
|
LOG.info(msg)
|
|
redirect = reverse(self.failure_url, args=[data['host_id']])
|
|
exceptions.handle(request, msg, redirect=redirect)
|