@@ -1132,6 +1132,102 @@ def test_set_with_tags(self):
11321132 def test_set_with_no_tag (self ):
11331133 self ._test_set_tags (with_tags = False )
11341134
1135+ def test_set_gateway_ip_qos (self ):
1136+ qos_policy = network_fakes .FakeNetworkQosPolicy .create_one_qos_policy ()
1137+ self .network .find_qos_policy = mock .Mock (return_value = qos_policy )
1138+ arglist = [
1139+ "--external-gateway" , self ._network .id ,
1140+ "--qos-policy" , qos_policy .id ,
1141+ self ._router .id ,
1142+ ]
1143+ verifylist = [
1144+ ('router' , self ._router .id ),
1145+ ('external_gateway' , self ._network .id ),
1146+ ('qos_policy' , qos_policy .id ),
1147+ ]
1148+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1149+
1150+ result = self .cmd .take_action (parsed_args )
1151+ self .network .update_router .assert_called_with (
1152+ self ._router , ** {'external_gateway_info' : {
1153+ 'network_id' : self ._network .id ,
1154+ 'qos_policy_id' : qos_policy .id , }})
1155+ self .assertIsNone (result )
1156+
1157+ def test_unset_gateway_ip_qos (self ):
1158+ arglist = [
1159+ "--external-gateway" , self ._network .id ,
1160+ "--no-qos-policy" ,
1161+ self ._router .id ,
1162+ ]
1163+ verifylist = [
1164+ ('router' , self ._router .id ),
1165+ ('external_gateway' , self ._network .id ),
1166+ ('no_qos_policy' , True ),
1167+ ]
1168+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1169+
1170+ result = self .cmd .take_action (parsed_args )
1171+ self .network .update_router .assert_called_with (
1172+ self ._router , ** {'external_gateway_info' : {
1173+ 'network_id' : self ._network .id ,
1174+ 'qos_policy_id' : None , }})
1175+ self .assertIsNone (result )
1176+
1177+ def test_set_unset_gateway_ip_qos (self ):
1178+ qos_policy = network_fakes .FakeNetworkQosPolicy .create_one_qos_policy ()
1179+ self .network .find_qos_policy = mock .Mock (return_value = qos_policy )
1180+ arglist = [
1181+ "--external-gateway" , self ._network .id ,
1182+ "--qos-policy" , qos_policy .id ,
1183+ "--no-qos-policy" ,
1184+ self ._router .id ,
1185+ ]
1186+ verifylist = [
1187+ ('router' , self ._router .id ),
1188+ ('external_gateway' , self ._network .id ),
1189+ ('qos_policy' , qos_policy .id ),
1190+ ('no_qos_policy' , True ),
1191+ ]
1192+
1193+ self .assertRaises (tests_utils .ParserException , self .check_parser ,
1194+ self .cmd , arglist , verifylist )
1195+
1196+ def test_set_gateway_ip_qos_no_gateway (self ):
1197+ qos_policy = network_fakes .FakeNetworkQosPolicy .create_one_qos_policy ()
1198+ self .network .find_qos_policy = mock .Mock (return_value = qos_policy )
1199+ router = network_fakes .FakeRouter .create_one_router ()
1200+ self .network .find_router = mock .Mock (return_value = router )
1201+ arglist = [
1202+ "--qos-policy" , qos_policy .id ,
1203+ router .id ,
1204+ ]
1205+ verifylist = [
1206+ ('router' , router .id ),
1207+ ('qos_policy' , qos_policy .id ),
1208+ ]
1209+
1210+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1211+ self .assertRaises (exceptions .CommandError ,
1212+ self .cmd .take_action , parsed_args )
1213+
1214+ def test_unset_gateway_ip_qos_no_gateway (self ):
1215+ qos_policy = network_fakes .FakeNetworkQosPolicy .create_one_qos_policy ()
1216+ self .network .find_qos_policy = mock .Mock (return_value = qos_policy )
1217+ router = network_fakes .FakeRouter .create_one_router ()
1218+ self .network .find_router = mock .Mock (return_value = router )
1219+ arglist = [
1220+ "--no-qos-policy" ,
1221+ router .id ,
1222+ ]
1223+ verifylist = [
1224+ ('router' , router .id ),
1225+ ]
1226+
1227+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1228+ self .assertRaises (exceptions .CommandError ,
1229+ self .cmd .take_action , parsed_args )
1230+
11351231
11361232class TestShowRouter (TestRouter ):
11371233
@@ -1240,12 +1336,19 @@ class TestUnsetRouter(TestRouter):
12401336
12411337 def setUp (self ):
12421338 super (TestUnsetRouter , self ).setUp ()
1339+ self .fake_network = network_fakes .FakeNetwork .create_one_network ()
1340+ self .fake_qos_policy = (
1341+ network_fakes .FakeNetworkQosPolicy .create_one_qos_policy ())
12431342 self ._testrouter = network_fakes .FakeRouter .create_one_router (
12441343 {'routes' : [{"destination" : "192.168.101.1/24" ,
12451344 "nexthop" : "172.24.4.3" },
12461345 {"destination" : "192.168.101.2/24" ,
12471346 "nexthop" : "172.24.4.3" }],
1248- 'tags' : ['green' , 'red' ], })
1347+ 'tags' : ['green' , 'red' ],
1348+ 'external_gateway_info' : {
1349+ 'network_id' : self .fake_network .id ,
1350+ 'qos_policy_id' : self .fake_qos_policy .id
1351+ }})
12491352 self .fake_subnet = network_fakes .FakeSubnet .create_one_subnet ()
12501353 self .network .find_router = mock .Mock (return_value = self ._testrouter )
12511354 self .network .update_router = mock .Mock (return_value = None )
@@ -1328,3 +1431,54 @@ def test_unset_with_tags(self):
13281431
13291432 def test_unset_with_all_tag (self ):
13301433 self ._test_unset_tags (with_tags = False )
1434+
1435+ def test_unset_router_qos_policy (self ):
1436+ arglist = [
1437+ '--qos-policy' ,
1438+ self ._testrouter .name ,
1439+ ]
1440+ verifylist = [
1441+ ('qos_policy' , True )
1442+ ]
1443+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1444+ result = self .cmd .take_action (parsed_args )
1445+ attrs = {'external_gateway_info' : {"network_id" : self .fake_network .id ,
1446+ "qos_policy_id" : None }}
1447+ self .network .update_router .assert_called_once_with (
1448+ self ._testrouter , ** attrs )
1449+ self .assertIsNone (result )
1450+
1451+ def test_unset_gateway_ip_qos_no_network (self ):
1452+ qos_policy = network_fakes .FakeNetworkQosPolicy .create_one_qos_policy ()
1453+ self .network .find_qos_policy = mock .Mock (return_value = qos_policy )
1454+ router = network_fakes .FakeRouter .create_one_router ()
1455+ self .network .find_router = mock .Mock (return_value = router )
1456+ arglist = [
1457+ "--qos-policy" ,
1458+ router .id ,
1459+ ]
1460+ verifylist = [
1461+ ('router' , router .id ),
1462+ ]
1463+
1464+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1465+ self .assertRaises (exceptions .CommandError ,
1466+ self .cmd .take_action , parsed_args )
1467+
1468+ def test_unset_gateway_ip_qos_no_qos (self ):
1469+ qos_policy = network_fakes .FakeNetworkQosPolicy .create_one_qos_policy ()
1470+ self .network .find_qos_policy = mock .Mock (return_value = qos_policy )
1471+ router = network_fakes .FakeRouter .create_one_router (
1472+ {"external_gateway_info" : {"network_id" : "fake-id" }})
1473+ self .network .find_router = mock .Mock (return_value = router )
1474+ arglist = [
1475+ "--qos-policy" ,
1476+ router .id ,
1477+ ]
1478+ verifylist = [
1479+ ('router' , router .id ),
1480+ ]
1481+
1482+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1483+ self .assertRaises (exceptions .CommandError ,
1484+ self .cmd .take_action , parsed_args )
0 commit comments