Merge "Update plugs Contrail methods to work with privsep" into stable/queens
This commit is contained in:
commit
cc23edc15f
|
@ -223,22 +223,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
|
||||
|
|
|
@ -1057,7 +1057,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):
|
||||
|
@ -1076,7 +1076,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')
|
||||
|
@ -1095,8 +1098,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