attach/detach interface command
Change-Id: I53b5d25736f0be116501a3e58bea6683d6f85414
This commit is contained in:
@@ -83,6 +83,8 @@ COMMAND_V1 = {
|
|||||||
'device-show': device.ShowDevice,
|
'device-show': device.ShowDevice,
|
||||||
'device-update': device.UpdateDevice,
|
'device-update': device.UpdateDevice,
|
||||||
'device-delete': device.DeleteDevice,
|
'device-delete': device.DeleteDevice,
|
||||||
|
'interface-attach': device.AttachInterface,
|
||||||
|
'interface-detach': device.DetachInterface,
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMANDS = {'1.0': COMMAND_V1}
|
COMMANDS = {'1.0': COMMAND_V1}
|
||||||
|
|||||||
@@ -19,6 +19,9 @@
|
|||||||
#
|
#
|
||||||
# @author: Isaku Yamahata, Intel
|
# @author: Isaku Yamahata, Intel
|
||||||
|
|
||||||
|
import abc
|
||||||
|
import six
|
||||||
|
|
||||||
from tackerclient.common import exceptions
|
from tackerclient.common import exceptions
|
||||||
from tackerclient.openstack.common.gettextutils import _
|
from tackerclient.openstack.common.gettextutils import _
|
||||||
from tackerclient.tacker import v1_0 as tackerV10
|
from tackerclient.tacker import v1_0 as tackerV10
|
||||||
@@ -135,3 +138,45 @@ class DeleteDevice(tackerV10.DeleteCommand):
|
|||||||
"""Delete a given Device."""
|
"""Delete a given Device."""
|
||||||
|
|
||||||
resource = _DEVICE
|
resource = _DEVICE
|
||||||
|
|
||||||
|
|
||||||
|
@six.add_metaclass(abc.ABCMeta)
|
||||||
|
class _XtachInterface(tackerV10.UpdateCommand):
|
||||||
|
resource = _DEVICE
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def call_api(self, tacker_client, device_id, body):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def args2body(self, parsed_args):
|
||||||
|
body = {
|
||||||
|
'port_id': parsed_args.port_id,
|
||||||
|
}
|
||||||
|
tackerV10.update_dict(parsed_args, body, [])
|
||||||
|
return body
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super(AttachInterface, self).get_parser(prog_name)
|
||||||
|
parser.add_argument('port_id', metavar='PORT',
|
||||||
|
help=_('port to attach/detach'))
|
||||||
|
self.add_known_arguments(parser)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
def run(self, parsed_args):
|
||||||
|
tacker_client = self.get_client()
|
||||||
|
tacker_client.format = parsed_args.request_format
|
||||||
|
body = self.args2body(parsed_args)
|
||||||
|
_id = tackerV10.find_resourceid_by_name_or_id(tacker_client,
|
||||||
|
self.resource,
|
||||||
|
parsed_args.id)
|
||||||
|
self.call_api(tacker_client, _id, body)
|
||||||
|
|
||||||
|
|
||||||
|
class AttachInterface(_XtachInterface):
|
||||||
|
def call_api(self, tacker_client, device_id, body):
|
||||||
|
return tacker_client.attach_interface(device_id, body)
|
||||||
|
|
||||||
|
|
||||||
|
class DetachInterface(_XtachInterface):
|
||||||
|
def call_api(self, tacker_client, device_id, body):
|
||||||
|
return tacker_client.detach_interface(device_id, body)
|
||||||
|
|||||||
@@ -150,6 +150,8 @@ class Client(object):
|
|||||||
device_template_path = '/device-templates/%s'
|
device_template_path = '/device-templates/%s'
|
||||||
devices_path = '/devices'
|
devices_path = '/devices'
|
||||||
device_path = '/devices/%s'
|
device_path = '/devices/%s'
|
||||||
|
interface_attach_path = '/devices/%s/attach_interface'
|
||||||
|
interface_detach_path = '/devices/%s/detach_interface'
|
||||||
|
|
||||||
# API has no way to report plurals, so we have to hard code them
|
# API has no way to report plurals, so we have to hard code them
|
||||||
EXTED_PLURALS = {}
|
EXTED_PLURALS = {}
|
||||||
@@ -220,6 +222,14 @@ class Client(object):
|
|||||||
def delete_device(self, device):
|
def delete_device(self, device):
|
||||||
return self.delete(self.device_path % device)
|
return self.delete(self.device_path % device)
|
||||||
|
|
||||||
|
@APIParamsCall
|
||||||
|
def attach_interface(self, device, body=None):
|
||||||
|
return self.put(self.attach_interface_path % device, body)
|
||||||
|
|
||||||
|
@APIParamsCall
|
||||||
|
def detach_interface(self, device, body=None):
|
||||||
|
return self.put(self.detach_interface_path % device, body)
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
"""Initialize a new client for the Tacker v1.0 API."""
|
"""Initialize a new client for the Tacker v1.0 API."""
|
||||||
super(Client, self).__init__()
|
super(Client, self).__init__()
|
||||||
|
|||||||
Reference in New Issue
Block a user