Add unitests for VMware vif, and fix code logical error.
Fix code logical error that cause variable referenced before assignment. Add unittests for vmwareapi vif. Fix bug #1177635 Change-Id: I6656e8b77417061eca2a56d50820f5385c0ae987
This commit is contained in:
parent
7bd267d5ad
commit
b7f9940769
87
nova/tests/test_vmwareapi_vif.py
Normal file
87
nova/tests/test_vmwareapi_vif.py
Normal file
@ -0,0 +1,87 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
#
|
||||
# Copyright 2013 Canonical Corp.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from nova.network import model as network_model
|
||||
from nova import test
|
||||
from nova.virt.vmwareapi import network_util
|
||||
from nova.virt.vmwareapi import vif
|
||||
|
||||
|
||||
class VMwareVifTestCase(test.TestCase):
|
||||
def setUp(self):
|
||||
super(VMwareVifTestCase, self).setUp()
|
||||
self.flags(vmwareapi_vlan_interface='vmnet0')
|
||||
network = network_model.Network(id=0,
|
||||
bridge='fa0',
|
||||
label='fake',
|
||||
vlan=3,
|
||||
bridge_interface='eth0',
|
||||
injected=True)
|
||||
|
||||
self.vif = network_model.NetworkInfo([
|
||||
network_model.VIF(id=None,
|
||||
address='DE:AD:BE:EF:00:00',
|
||||
network=network,
|
||||
type=None,
|
||||
devname=None,
|
||||
ovs_interfaceid=None,
|
||||
rxtx_cap=3)
|
||||
])[0]
|
||||
self.session = "fake"
|
||||
self.cluster = None
|
||||
|
||||
def tearDown(self):
|
||||
super(VMwareVifTestCase, self).tearDown()
|
||||
|
||||
def test_ensure_vlan_bridge(self):
|
||||
self.mox.StubOutWithMock(network_util, 'get_network_with_the_name')
|
||||
self.mox.StubOutWithMock(network_util,
|
||||
'get_vswitch_for_vlan_interface')
|
||||
self.mox.StubOutWithMock(network_util,
|
||||
'check_if_vlan_interface_exists')
|
||||
self.mox.StubOutWithMock(network_util, 'create_port_group')
|
||||
network_util.get_network_with_the_name(self.session, 'fa0',
|
||||
self.cluster).AndReturn(None)
|
||||
network_util.get_vswitch_for_vlan_interface(self.session, 'vmnet0',
|
||||
self.cluster).AndReturn('vmnet0')
|
||||
network_util.check_if_vlan_interface_exists(self.session, 'vmnet0',
|
||||
self.cluster).AndReturn(True)
|
||||
network_util.create_port_group(self.session, 'fa0', 'vmnet0', 3,
|
||||
self.cluster)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
vif.ensure_vlan_bridge(self.session, self.vif, create_vlan=True)
|
||||
|
||||
# FlatDHCP network mode without vlan
|
||||
def test_ensure_vlan_bridge_without_vlan(self):
|
||||
self.mox.StubOutWithMock(network_util, 'get_network_with_the_name')
|
||||
self.mox.StubOutWithMock(network_util,
|
||||
'get_vswitch_for_vlan_interface')
|
||||
self.mox.StubOutWithMock(network_util,
|
||||
'check_if_vlan_interface_exists')
|
||||
self.mox.StubOutWithMock(network_util, 'create_port_group')
|
||||
|
||||
network_util.get_network_with_the_name(self.session, 'fa0',
|
||||
self.cluster).AndReturn(None)
|
||||
network_util.get_vswitch_for_vlan_interface(self.session, 'vmnet0',
|
||||
self.cluster).AndReturn('vmnet0')
|
||||
network_util.check_if_vlan_interface_exists(self.session, 'vmnet0',
|
||||
self.cluster).AndReturn(True)
|
||||
network_util.create_port_group(self.session, 'fa0', 'vmnet0', 0,
|
||||
self.cluster)
|
||||
self.mox.ReplayAll()
|
||||
vif.ensure_vlan_bridge(self.session, self.vif, create_vlan=False)
|
@ -308,7 +308,13 @@ class HostSystem(ManagedObject):
|
||||
config.product = product
|
||||
summary.config = config
|
||||
|
||||
pnic_do = DataObject()
|
||||
pnic_do.device = "vmnic0"
|
||||
net_info_pnic = DataObject()
|
||||
net_info_pnic.PhysicalNic = [pnic_do]
|
||||
|
||||
self.set("summary", summary)
|
||||
self.set("config.network.pnic", net_info_pnic)
|
||||
|
||||
if _db_content.get("Network", None) is None:
|
||||
create_network()
|
||||
|
@ -45,17 +45,15 @@ def ensure_vlan_bridge(session, vif, cluster=None, create_vlan=True):
|
||||
# Get the vSwitch associated with the Physical Adapter
|
||||
vswitch_associated = network_util.get_vswitch_for_vlan_interface(
|
||||
session, vlan_interface, cluster)
|
||||
if create_vlan:
|
||||
# Check if the vlan_interface physical network adapter exists on the
|
||||
# host.
|
||||
if not network_util.check_if_vlan_interface_exists(session,
|
||||
vlan_interface,
|
||||
cluster):
|
||||
raise exception.NetworkAdapterNotFound(adapter=vlan_interface)
|
||||
|
||||
if vswitch_associated is None:
|
||||
raise exception.SwitchNotFoundForNetworkAdapter(
|
||||
adapter=vlan_interface)
|
||||
# Check if the vlan_interface physical network adapter exists on the
|
||||
# host.
|
||||
if not network_util.check_if_vlan_interface_exists(session,
|
||||
vlan_interface, cluster):
|
||||
raise exception.NetworkAdapterNotFound(adapter=vlan_interface)
|
||||
if create_vlan:
|
||||
|
||||
if network_ref is None:
|
||||
# Create a port group on the vSwitch associated with the
|
||||
|
Loading…
Reference in New Issue
Block a user