Merge "Add Gateway_Chassis support"
This commit is contained in:
commit
3bf07d8826
|
@ -739,6 +739,13 @@ class LrpAddCommand(cmd.BaseCommand):
|
|||
if self.peer:
|
||||
lrp.peer = self.peer
|
||||
lr.addvalue('ports', lrp)
|
||||
gwcs = self.columns.pop('gateway_chassis', [])
|
||||
for n, chassis in enumerate(gwcs):
|
||||
gwc_name = '%s_%s' % (lrp.name, chassis)
|
||||
cmd = GatewayChassisAddCommand(self.api, gwc_name, chassis,
|
||||
len(gwcs) - n, may_exist=True)
|
||||
cmd.run_idl(txn)
|
||||
lrp.addvalue('gateway_chassis', cmd.result)
|
||||
self.set_columns(lrp, **self.columns)
|
||||
self.result = lrp.uuid
|
||||
|
||||
|
@ -1291,3 +1298,30 @@ class PgDelPortCommand(_PgUpdatePortsHelper):
|
|||
|
||||
class PgGetCommand(cmd.BaseGetRowCommand):
|
||||
table = 'Port_Group'
|
||||
|
||||
|
||||
class GatewayChassisAddCommand(cmd.AddCommand):
|
||||
table_name = 'Gateway_Chassis'
|
||||
|
||||
def __init__(self, api, name, chassis_name, priority=0, may_exist=False,
|
||||
**columns):
|
||||
super(GatewayChassisAddCommand, self).__init__(api)
|
||||
self.name = name
|
||||
self.chassis_name = chassis_name
|
||||
self.priority = priority
|
||||
self.may_exist = may_exist
|
||||
self.columns = columns
|
||||
|
||||
def run_idl(self, txn):
|
||||
if self.may_exist:
|
||||
gwc = self.api.lookup(self.table_name, self.name, None)
|
||||
else:
|
||||
gwc = None
|
||||
if not gwc:
|
||||
# If gwc exists with name, this will properly fail if not may_exist
|
||||
# since 'name' is indexed
|
||||
gwc = txn.insert(self.api.tables[self.table_name])
|
||||
gwc.name = self.name
|
||||
gwc.priority = self.priority
|
||||
self.set_columns(gwc, **self.columns)
|
||||
self.result = gwc
|
||||
|
|
|
@ -940,6 +940,15 @@ class TestLogicalRouterPortOps(OvnNorthboundTest):
|
|||
self.assertEqual(options, lrp.options)
|
||||
self.assertEqual(external_ids, lrp.external_ids)
|
||||
|
||||
def test_lrp_add_gw_chassis(self):
|
||||
name, c1, c2 = [utils.get_rand_device_name() for _ in range(3)]
|
||||
args = (name, 'de:ad:be:ef:4d:ad')
|
||||
lrp = self._lrp_add(*args, gateway_chassis=(c1, c2))
|
||||
c1 = self.api.lookup('Gateway_Chassis', "%s_%s" % (lrp.name, c1))
|
||||
c2 = self.api.lookup('Gateway_Chassis', "%s_%s" % (lrp.name, c2))
|
||||
self.assertIn(c1, lrp.gateway_chassis)
|
||||
self.assertIn(c2, lrp.gateway_chassis)
|
||||
|
||||
def test_lrp_del_uuid(self):
|
||||
lrp = self._lrp_add(None)
|
||||
self.api.lrp_del(lrp.uuid).execute(check_error=True)
|
||||
|
|
Loading…
Reference in New Issue