37
34
CONF.register_opts(vmwareapi_vif_opts)
40
def ensure_vlan_bridge(session, vif, cluster=None):
37
def ensure_vlan_bridge(session, vif, cluster=None, create_vlan=True):
41
38
"""Create a vlan and bridge unless they already exist."""
42
39
vlan_num = vif['network'].get_meta('vlan')
43
40
bridge = vif['network']['bridge']
44
41
vlan_interface = CONF.vmwareapi_vlan_interface
46
# Check if the vlan_interface physical network adapter exists on the
48
if not network_util.check_if_vlan_interface_exists(session,
51
raise exception.NetworkAdapterNotFound(adapter=vlan_interface)
43
network_ref = network_util.get_network_with_the_name(session, bridge,
53
45
# Get the vSwitch associated with the Physical Adapter
54
46
vswitch_associated = network_util.get_vswitch_for_vlan_interface(
55
session, vlan_interface, cluster)
47
session, vlan_interface, cluster)
56
48
if vswitch_associated is None:
57
49
raise exception.SwitchNotFoundForNetworkAdapter(
58
50
adapter=vlan_interface)
59
# Check whether bridge already exists and retrieve the the ref of the
60
# network whose name_label is "bridge"
61
network_ref = network_util.get_network_with_the_name(session, bridge,
63
if network_ref is None:
51
# Check if the vlan_interface physical network adapter exists on the
53
if not network_util.check_if_vlan_interface_exists(session,
54
vlan_interface, cluster):
55
raise exception.NetworkAdapterNotFound(adapter=vlan_interface)
58
if network_ref is None:
64
59
# Create a port group on the vSwitch associated with the
65
60
# vlan_interface corresponding physical network adapter on the ESX
67
network_util.create_port_group(session, bridge,
62
network_util.create_port_group(session, bridge,
68
63
vswitch_associated, vlan_num,
66
# Get the vlan id and vswitch corresponding to the port group
67
_get_pg_info = network_util.get_vlanid_and_vswitch_for_portgroup
68
pg_vlanid, pg_vswitch = _get_pg_info(session, bridge, cluster)
70
# Check if the vswitch associated is proper
71
if pg_vswitch != vswitch_associated:
72
raise exception.InvalidVLANPortGroup(
73
bridge=bridge, expected=vswitch_associated,
76
# Check if the vlan id is proper for the port group
77
if pg_vlanid != vlan_num:
78
raise exception.InvalidVLANTag(bridge=bridge, tag=vlan_num,
71
# Get the vlan id and vswitch corresponding to the port group
72
_get_pg_info = network_util.get_vlanid_and_vswitch_for_portgroup
73
pg_vlanid, pg_vswitch = _get_pg_info(session, bridge, cluster)
75
# Check if the vswitch associated is proper
76
if pg_vswitch != vswitch_associated:
77
raise exception.InvalidVLANPortGroup(
78
bridge=bridge, expected=vswitch_associated,
81
# Check if the vlan id is proper for the port group
82
if pg_vlanid != vlan_num:
83
raise exception.InvalidVLANTag(bridge=bridge, tag=vlan_num,
81
if network_ref is None:
82
network_util.create_port_group(session, bridge,
83
vswitch_associated, 0,