Update plugs Contrail methods to work with privsep
As privsep uses the msgpack to send method arguments to the privsep daemon, we could not use anymore custom data type like nova.objects.instance.Instance. Change-Id: I09f04d5b2f1cb39339ad7c4569186db5d361797a Closes-Bug: #1742963
This commit is contained in:
parent
459353eec2
commit
1f5fe3190b
|
@ -222,22 +222,35 @@ def unplug_plumgrid_vif(dev):
|
|||
|
||||
|
||||
@nova.privsep.sys_admin_pctxt.entrypoint
|
||||
def plug_contrail_vif(instance, vif, ip_addr, ip6_addr, ptype):
|
||||
cmd_args = ('--oper=add --uuid=%s --instance_uuid=%s --vn_uuid=%s '
|
||||
'--vm_project_uuid=%s --ip_address=%s --ipv6_address=%s'
|
||||
' --vm_name=%s --mac=%s --tap_name=%s --port_type=%s '
|
||||
'--tx_vlan_id=%d --rx_vlan_id=%d'
|
||||
% (vif['id'], instance.uuid, vif['network']['id'],
|
||||
instance.project_id, ip_addr, ip6_addr,
|
||||
instance.display_name, vif['address'],
|
||||
vif['devname'], ptype, -1, -1))
|
||||
processutils.execute('vrouter-port-control', cmd_args)
|
||||
def plug_contrail_vif(project_id, vm_id, vm_name, vif_id, net_id, port_type,
|
||||
dev_name, mac, ip_addr, ip6_addr):
|
||||
cmd = (
|
||||
'vrouter-port-control',
|
||||
'--oper=add',
|
||||
'--vm_project_uuid=%s' % project_id,
|
||||
'--instance_uuid=%s' % vm_id,
|
||||
' --vm_name=%s' % vm_name,
|
||||
'--uuid=%s' % vif_id,
|
||||
'--vn_uuid=%s' % net_id,
|
||||
'--port_type=%s' % port_type,
|
||||
'--tap_name=%s' % dev_name,
|
||||
'--mac=%s' % mac,
|
||||
'--ip_address=%s' % ip_addr,
|
||||
'--ipv6_address=%s' % ip6_addr,
|
||||
'--tx_vlan_id=-1',
|
||||
'--rx_vlan_id=-1',
|
||||
)
|
||||
processutils.execute(*cmd)
|
||||
|
||||
|
||||
@nova.privsep.sys_admin_pctxt.entrypoint
|
||||
def unplug_contrail_vif(vif):
|
||||
cmd_args = ('--oper=delete --uuid=%s' % (vif['id']))
|
||||
processutils.execute('vrouter-port-control', cmd_args)
|
||||
def unplug_contrail_vif(port_id):
|
||||
cmd = (
|
||||
'vrouter-port-control',
|
||||
'--oper=delete',
|
||||
'--uuid=%s' % port_id,
|
||||
)
|
||||
processutils.execute(*cmd)
|
||||
|
||||
|
||||
@nova.privsep.sys_admin_pctxt.entrypoint
|
||||
|
|
|
@ -1043,7 +1043,7 @@ class LibvirtVifTestCase(test.NoDBTestCase):
|
|||
def test_unplug_vrouter_with_details(self, mock_unplug_contrail):
|
||||
d = vif.LibvirtGenericVIFDriver()
|
||||
d.unplug(self.instance, self.vif_vrouter)
|
||||
mock_unplug_contrail.assert_called_once_with(self.vif_vrouter)
|
||||
mock_unplug_contrail.assert_called_once_with(self.vif_vrouter['id'])
|
||||
|
||||
@mock.patch('nova.privsep.libvirt.plug_contrail_vif')
|
||||
def test_plug_vrouter_with_details(self, mock_plug_contrail):
|
||||
|
@ -1062,7 +1062,10 @@ class LibvirtVifTestCase(test.NoDBTestCase):
|
|||
mock.call('ip', 'link', 'set', 'tap-xxx-yyy-zzz', 'up',
|
||||
run_as_root=True, check_exit_code=[0, 2, 254])])
|
||||
mock_plug_contrail.called_once_with(
|
||||
instance, self.vif_vrouter, '0.0.0.0', None, 'NovaVMPort')
|
||||
instance.project_id, instance.uuid, instance.display_name,
|
||||
self.vif_vrouter['id'], self.vif_vrouter['network']['id'],
|
||||
'NovaVMPort', self.vif_vrouter['devname'],
|
||||
self.vif_vrouter['address'], '0.0.0.0', None)
|
||||
|
||||
@mock.patch('nova.network.linux_net.create_tap_dev')
|
||||
@mock.patch('nova.privsep.libvirt.plug_contrail_vif')
|
||||
|
@ -1081,8 +1084,11 @@ class LibvirtVifTestCase(test.NoDBTestCase):
|
|||
mock_create_tap_dev.assert_called_once_with('tap-xxx-yyy-zzz',
|
||||
multiqueue=True)
|
||||
|
||||
mock_plug_contrail.assert_called_once_with(
|
||||
instance, self.vif_vrouter, '0.0.0.0', None, 'NovaVMPort')
|
||||
mock_plug_contrail.called_once_with(
|
||||
instance.project_id, instance.uuid, instance.display_name,
|
||||
self.vif_vrouter['id'], self.vif_vrouter['network']['id'],
|
||||
'NovaVMPort', self.vif_vrouter['devname'],
|
||||
self.vif_vrouter['address'], '0.0.0.0', None)
|
||||
|
||||
def test_ivs_ethernet_driver(self):
|
||||
d = vif.LibvirtGenericVIFDriver()
|
||||
|
|
|
@ -724,7 +724,17 @@ class LibvirtGenericVIFDriver(object):
|
|||
instance.flavor)
|
||||
linux_net.create_tap_dev(dev, multiqueue=multiqueue)
|
||||
nova.privsep.libvirt.plug_contrail_vif(
|
||||
instance, vif, ip_addr, ip6_addr, ptype)
|
||||
instance.project_id,
|
||||
instance.uuid,
|
||||
instance.display_name,
|
||||
vif['id'],
|
||||
vif['network']['id'],
|
||||
ptype,
|
||||
dev,
|
||||
vif['address'],
|
||||
ip_addr,
|
||||
ip6_addr,
|
||||
)
|
||||
except processutils.ProcessExecutionError:
|
||||
LOG.exception(_("Failed while plugging vif"), instance=instance)
|
||||
|
||||
|
@ -875,8 +885,9 @@ class LibvirtGenericVIFDriver(object):
|
|||
Unbind the vif from a Contrail virtual port.
|
||||
"""
|
||||
dev = self.get_vif_devname(vif)
|
||||
port_id = vif['id']
|
||||
try:
|
||||
nova.privsep.libvirt.unplug_contrail_vif(vif)
|
||||
nova.privsep.libvirt.unplug_contrail_vif(port_id)
|
||||
linux_net.delete_net_dev(dev)
|
||||
except processutils.ProcessExecutionError:
|
||||
LOG.exception(_("Failed while unplugging vif"), instance=instance)
|
||||
|
|
Loading…
Reference in New Issue