Trivial openvswitch plugin cleanup.
Part of provider-networks phase 3 development, but merging separately to avoid confusion later. - eliminate target_v2_api config variable - eliminate old V1 version of Port - remove unused import Change-Id: I913def752ec537a7e74a6173f2b6f82372a4dce8
This commit is contained in:
parent
cf73cc615c
commit
1daa50cc63
@ -41,8 +41,6 @@ polling_interval = 2
|
|||||||
# Change to "sudo quantum-rootwrap" to limit commands that can be run
|
# Change to "sudo quantum-rootwrap" to limit commands that can be run
|
||||||
# as root.
|
# as root.
|
||||||
root_helper = sudo
|
root_helper = sudo
|
||||||
# Use Quantumv2 API
|
|
||||||
target_v2_api = False
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Sample Configurations.
|
# Sample Configurations.
|
||||||
@ -58,8 +56,6 @@ target_v2_api = False
|
|||||||
# root_helper = sudo
|
# root_helper = sudo
|
||||||
# Add the following setting, if you want to log to a file
|
# Add the following setting, if you want to log to a file
|
||||||
# log_file = /var/log/quantum/ovs_quantum_agent.log
|
# log_file = /var/log/quantum/ovs_quantum_agent.log
|
||||||
# Use Quantumv2 API
|
|
||||||
# target_v2_api = False
|
|
||||||
#
|
#
|
||||||
# 2. With tunneling.
|
# 2. With tunneling.
|
||||||
# [DATABASE]
|
# [DATABASE]
|
||||||
|
@ -74,36 +74,6 @@ class Port(object):
|
|||||||
still available even if a row has been deleted.
|
still available even if a row has been deleted.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, p):
|
|
||||||
self.uuid = p.uuid
|
|
||||||
self.network_id = p.network_id
|
|
||||||
self.interface_id = p.interface_id
|
|
||||||
self.state = p.state
|
|
||||||
self.status = p.op_status
|
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
'''Compare only fields that will cause us to re-wire.'''
|
|
||||||
try:
|
|
||||||
return (self and other
|
|
||||||
and self.interface_id == other.interface_id
|
|
||||||
and self.state == other.state)
|
|
||||||
except:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def __ne__(self, other):
|
|
||||||
return not self.__eq__(other)
|
|
||||||
|
|
||||||
def __hash__(self):
|
|
||||||
return hash(self.uuid)
|
|
||||||
|
|
||||||
|
|
||||||
class Portv2(object):
|
|
||||||
"""Represents a quantumv2 port.
|
|
||||||
|
|
||||||
Class stores port data in a ORM-free way, so attributres are
|
|
||||||
still available even if a row has been deleted.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, p):
|
def __init__(self, p):
|
||||||
self.id = p.id
|
self.id = p.id
|
||||||
self.network_id = p.network_id
|
self.network_id = p.network_id
|
||||||
@ -180,12 +150,11 @@ class OVSRpcCallbacks():
|
|||||||
class OVSQuantumAgent(object):
|
class OVSQuantumAgent(object):
|
||||||
|
|
||||||
def __init__(self, integ_br, root_helper, polling_interval,
|
def __init__(self, integ_br, root_helper, polling_interval,
|
||||||
reconnect_interval, target_v2_api, rpc):
|
reconnect_interval, rpc):
|
||||||
self.root_helper = root_helper
|
self.root_helper = root_helper
|
||||||
self.setup_integration_br(integ_br)
|
self.setup_integration_br(integ_br)
|
||||||
self.polling_interval = polling_interval
|
self.polling_interval = polling_interval
|
||||||
self.reconnect_interval = reconnect_interval
|
self.reconnect_interval = reconnect_interval
|
||||||
self.target_v2_api = target_v2_api
|
|
||||||
self.rpc = rpc
|
self.rpc = rpc
|
||||||
if rpc:
|
if rpc:
|
||||||
self.setup_rpc(integ_br)
|
self.setup_rpc(integ_br)
|
||||||
@ -251,10 +220,7 @@ class OVSQuantumAgent(object):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
for port in ports:
|
for port in ports:
|
||||||
if self.target_v2_api:
|
all_bindings[port.id] = port
|
||||||
all_bindings[port.id] = port
|
|
||||||
else:
|
|
||||||
all_bindings[port.interface_id] = port
|
|
||||||
|
|
||||||
vlan_bindings = {}
|
vlan_bindings = {}
|
||||||
try:
|
try:
|
||||||
@ -448,8 +414,7 @@ class OVSQuantumTunnelAgent(object):
|
|||||||
MAX_VLAN_TAG = 4094
|
MAX_VLAN_TAG = 4094
|
||||||
|
|
||||||
def __init__(self, integ_br, tun_br, local_ip, root_helper,
|
def __init__(self, integ_br, tun_br, local_ip, root_helper,
|
||||||
polling_interval, reconnect_interval, target_v2_api,
|
polling_interval, reconnect_interval, rpc):
|
||||||
rpc):
|
|
||||||
'''Constructor.
|
'''Constructor.
|
||||||
|
|
||||||
:param integ_br: name of the integration bridge.
|
:param integ_br: name of the integration bridge.
|
||||||
@ -458,7 +423,6 @@ class OVSQuantumTunnelAgent(object):
|
|||||||
:param root_helper: utility to use when running shell cmds.
|
:param root_helper: utility to use when running shell cmds.
|
||||||
:param polling_interval: interval (secs) to poll DB.
|
:param polling_interval: interval (secs) to poll DB.
|
||||||
:param reconnect_internal: retry interval (secs) on DB error.
|
:param reconnect_internal: retry interval (secs) on DB error.
|
||||||
:param target_v2_api: if True use v2 api.
|
|
||||||
:param rpc: if True use RPC interface to interface with plugin.
|
:param rpc: if True use RPC interface to interface with plugin.
|
||||||
'''
|
'''
|
||||||
self.root_helper = root_helper
|
self.root_helper = root_helper
|
||||||
@ -474,7 +438,6 @@ class OVSQuantumTunnelAgent(object):
|
|||||||
self.local_ip = local_ip
|
self.local_ip = local_ip
|
||||||
self.tunnel_count = 0
|
self.tunnel_count = 0
|
||||||
self.setup_tunnel_br(tun_br)
|
self.setup_tunnel_br(tun_br)
|
||||||
self.target_v2_api = target_v2_api
|
|
||||||
self.rpc = rpc
|
self.rpc = rpc
|
||||||
if rpc:
|
if rpc:
|
||||||
self.setup_rpc(integ_br)
|
self.setup_rpc(integ_br)
|
||||||
@ -647,12 +610,8 @@ class OVSQuantumTunnelAgent(object):
|
|||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
if self.target_v2_api:
|
all_bindings = dict((p.id, Port(p))
|
||||||
all_bindings = dict((p.id, Portv2(p))
|
for p in db.ports.all())
|
||||||
for p in db.ports.all())
|
|
||||||
else:
|
|
||||||
all_bindings = dict((p.interface_id, Port(p))
|
|
||||||
for p in db.ports.all())
|
|
||||||
all_bindings_vif_port_ids = set(all_bindings)
|
all_bindings_vif_port_ids = set(all_bindings)
|
||||||
lsw_id_bindings = dict((bind.network_id, bind.vlan_id)
|
lsw_id_bindings = dict((bind.network_id, bind.vlan_id)
|
||||||
for bind in db.vlan_bindings.all())
|
for bind in db.vlan_bindings.all())
|
||||||
@ -881,13 +840,6 @@ def main():
|
|||||||
root_helper = cfg.CONF.AGENT.root_helper
|
root_helper = cfg.CONF.AGENT.root_helper
|
||||||
rpc = cfg.CONF.AGENT.rpc
|
rpc = cfg.CONF.AGENT.rpc
|
||||||
|
|
||||||
# Determine API Version to use
|
|
||||||
target_v2_api = cfg.CONF.AGENT.target_v2_api
|
|
||||||
|
|
||||||
# RPC only works with v2
|
|
||||||
if rpc and not target_v2_api:
|
|
||||||
rpc = False
|
|
||||||
|
|
||||||
if enable_tunneling:
|
if enable_tunneling:
|
||||||
# Get parameters for OVSQuantumTunnelAgent
|
# Get parameters for OVSQuantumTunnelAgent
|
||||||
tun_br = cfg.CONF.OVS.tunnel_bridge
|
tun_br = cfg.CONF.OVS.tunnel_bridge
|
||||||
@ -895,11 +847,11 @@ def main():
|
|||||||
local_ip = cfg.CONF.OVS.local_ip
|
local_ip = cfg.CONF.OVS.local_ip
|
||||||
plugin = OVSQuantumTunnelAgent(integ_br, tun_br, local_ip, root_helper,
|
plugin = OVSQuantumTunnelAgent(integ_br, tun_br, local_ip, root_helper,
|
||||||
polling_interval, reconnect_interval,
|
polling_interval, reconnect_interval,
|
||||||
target_v2_api, rpc)
|
rpc)
|
||||||
else:
|
else:
|
||||||
# Get parameters for OVSQuantumAgent.
|
# Get parameters for OVSQuantumAgent.
|
||||||
plugin = OVSQuantumAgent(integ_br, root_helper, polling_interval,
|
plugin = OVSQuantumAgent(integ_br, root_helper, polling_interval,
|
||||||
reconnect_interval, target_v2_api, rpc)
|
reconnect_interval, rpc)
|
||||||
|
|
||||||
# Start everything.
|
# Start everything.
|
||||||
plugin.daemon_loop(db_connection_url)
|
plugin.daemon_loop(db_connection_url)
|
||||||
|
@ -36,7 +36,6 @@ ovs_opts = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
agent_opts = [
|
agent_opts = [
|
||||||
cfg.BoolOpt('target_v2_api', default=True),
|
|
||||||
cfg.IntOpt('polling_interval', default=2),
|
cfg.IntOpt('polling_interval', default=2),
|
||||||
cfg.StrOpt('root_helper', default='sudo'),
|
cfg.StrOpt('root_helper', default='sudo'),
|
||||||
cfg.StrOpt('log_file', default=None),
|
cfg.StrOpt('log_file', default=None),
|
||||||
|
@ -27,7 +27,6 @@ from quantum.api import api_common
|
|||||||
from quantum.api.v2 import attributes
|
from quantum.api.v2 import attributes
|
||||||
from quantum.common import exceptions as q_exc
|
from quantum.common import exceptions as q_exc
|
||||||
from quantum.common import topics
|
from quantum.common import topics
|
||||||
from quantum.common.utils import find_config_file
|
|
||||||
from quantum.db import api as db
|
from quantum.db import api as db
|
||||||
from quantum.db import db_base_plugin_v2
|
from quantum.db import db_base_plugin_v2
|
||||||
from quantum.db import models_v2
|
from quantum.db import models_v2
|
||||||
@ -196,10 +195,8 @@ class OVSQuantumPluginV2(db_base_plugin_v2.QuantumDbPluginV2):
|
|||||||
# update the vlan_id table based on current configuration
|
# update the vlan_id table based on current configuration
|
||||||
ovs_db_v2.update_vlan_id_pool()
|
ovs_db_v2.update_vlan_id_pool()
|
||||||
self.rpc = cfg.CONF.AGENT.rpc
|
self.rpc = cfg.CONF.AGENT.rpc
|
||||||
if cfg.CONF.AGENT.rpc and cfg.CONF.AGENT.target_v2_api:
|
if cfg.CONF.AGENT.rpc:
|
||||||
self.setup_rpc()
|
self.setup_rpc()
|
||||||
if not cfg.CONF.AGENT.target_v2_api:
|
|
||||||
self.rpc = False
|
|
||||||
|
|
||||||
def setup_rpc(self):
|
def setup_rpc(self):
|
||||||
# RPC support
|
# RPC support
|
||||||
|
@ -81,7 +81,7 @@ class TunnelTest(unittest.TestCase):
|
|||||||
b = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
b = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
||||||
self.TUN_BRIDGE,
|
self.TUN_BRIDGE,
|
||||||
'10.0.0.1',
|
'10.0.0.1',
|
||||||
'sudo', 2, 2, False, False)
|
'sudo', 2, 2, False)
|
||||||
self.mox.VerifyAll()
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
def testProvisionLocalVlan(self):
|
def testProvisionLocalVlan(self):
|
||||||
@ -98,7 +98,7 @@ class TunnelTest(unittest.TestCase):
|
|||||||
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
||||||
self.TUN_BRIDGE,
|
self.TUN_BRIDGE,
|
||||||
'10.0.0.1',
|
'10.0.0.1',
|
||||||
'sudo', 2, 2, False, False)
|
'sudo', 2, 2, False)
|
||||||
a.available_local_vlans = set([LV_ID])
|
a.available_local_vlans = set([LV_ID])
|
||||||
a.provision_local_vlan(NET_UUID, LS_ID)
|
a.provision_local_vlan(NET_UUID, LS_ID)
|
||||||
self.mox.VerifyAll()
|
self.mox.VerifyAll()
|
||||||
@ -112,7 +112,7 @@ class TunnelTest(unittest.TestCase):
|
|||||||
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
||||||
self.TUN_BRIDGE,
|
self.TUN_BRIDGE,
|
||||||
'10.0.0.1',
|
'10.0.0.1',
|
||||||
'sudo', 2, 2, False, False)
|
'sudo', 2, 2, False)
|
||||||
a.available_local_vlans = set()
|
a.available_local_vlans = set()
|
||||||
a.local_vlan_map[NET_UUID] = LVM
|
a.local_vlan_map[NET_UUID] = LVM
|
||||||
a.reclaim_local_vlan(NET_UUID, LVM)
|
a.reclaim_local_vlan(NET_UUID, LVM)
|
||||||
@ -128,7 +128,7 @@ class TunnelTest(unittest.TestCase):
|
|||||||
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
||||||
self.TUN_BRIDGE,
|
self.TUN_BRIDGE,
|
||||||
'10.0.0.1',
|
'10.0.0.1',
|
||||||
'sudo', 2, 2, False, False)
|
'sudo', 2, 2, False)
|
||||||
a.local_vlan_map[NET_UUID] = LVM
|
a.local_vlan_map[NET_UUID] = LVM
|
||||||
a.port_bound(VIF_PORT, NET_UUID, LS_ID)
|
a.port_bound(VIF_PORT, NET_UUID, LS_ID)
|
||||||
self.mox.VerifyAll()
|
self.mox.VerifyAll()
|
||||||
@ -138,7 +138,7 @@ class TunnelTest(unittest.TestCase):
|
|||||||
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
||||||
self.TUN_BRIDGE,
|
self.TUN_BRIDGE,
|
||||||
'10.0.0.1',
|
'10.0.0.1',
|
||||||
'sudo', 2, 2, False, False)
|
'sudo', 2, 2, False)
|
||||||
a.available_local_vlans = set([LV_ID])
|
a.available_local_vlans = set([LV_ID])
|
||||||
a.local_vlan_map[NET_UUID] = LVM
|
a.local_vlan_map[NET_UUID] = LVM
|
||||||
a.port_unbound(VIF_PORT, NET_UUID)
|
a.port_unbound(VIF_PORT, NET_UUID)
|
||||||
@ -155,7 +155,7 @@ class TunnelTest(unittest.TestCase):
|
|||||||
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
a = ovs_quantum_agent.OVSQuantumTunnelAgent(self.INT_BRIDGE,
|
||||||
self.TUN_BRIDGE,
|
self.TUN_BRIDGE,
|
||||||
'10.0.0.1',
|
'10.0.0.1',
|
||||||
'sudo', 2, 2, False, False)
|
'sudo', 2, 2, False)
|
||||||
a.available_local_vlans = set([LV_ID])
|
a.available_local_vlans = set([LV_ID])
|
||||||
a.local_vlan_map[NET_UUID] = LVM
|
a.local_vlan_map[NET_UUID] = LVM
|
||||||
a.port_dead(VIF_PORT)
|
a.port_dead(VIF_PORT)
|
||||||
|
Loading…
Reference in New Issue
Block a user