1# Licensed under the Apache License, Version 2.0 (the "License"); you may 2# not use this file except in compliance with the License. You may obtain 3# a copy of the License at 4# 5# http://www.apache.org/licenses/LICENSE-2.0 6# 7# Unless required by applicable law or agreed to in writing, software 8# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10# License for the specific language governing permissions and limitations 11# under the License. 12 13from unittest import mock 14import uuid 15 16from openstack import exceptions 17from openstack.network.v2 import _proxy 18from openstack.network.v2 import address_scope 19from openstack.network.v2 import agent 20from openstack.network.v2 import auto_allocated_topology 21from openstack.network.v2 import availability_zone 22from openstack.network.v2 import extension 23from openstack.network.v2 import firewall_group 24from openstack.network.v2 import firewall_policy 25from openstack.network.v2 import firewall_rule 26from openstack.network.v2 import flavor 27from openstack.network.v2 import floating_ip 28from openstack.network.v2 import health_monitor 29from openstack.network.v2 import ipsec_site_connection 30from openstack.network.v2 import l3_conntrack_helper 31from openstack.network.v2 import listener 32from openstack.network.v2 import load_balancer 33from openstack.network.v2 import metering_label 34from openstack.network.v2 import metering_label_rule 35from openstack.network.v2 import network 36from openstack.network.v2 import network_ip_availability 37from openstack.network.v2 import network_segment_range 38from openstack.network.v2 import pool 39from openstack.network.v2 import pool_member 40from openstack.network.v2 import port 41from openstack.network.v2 import port_forwarding 42from openstack.network.v2 import qos_bandwidth_limit_rule 43from openstack.network.v2 import qos_dscp_marking_rule 44from openstack.network.v2 import qos_minimum_bandwidth_rule 45from openstack.network.v2 import qos_policy 46from openstack.network.v2 import qos_rule_type 47from openstack.network.v2 import quota 48from openstack.network.v2 import rbac_policy 49from openstack.network.v2 import router 50from openstack.network.v2 import security_group 51from openstack.network.v2 import security_group_rule 52from openstack.network.v2 import segment 53from openstack.network.v2 import service_profile 54from openstack.network.v2 import service_provider 55from openstack.network.v2 import subnet 56from openstack.network.v2 import subnet_pool 57from openstack.network.v2 import vpn_service 58from openstack import proxy as proxy_base 59from openstack.tests.unit import test_proxy_base 60 61 62QOS_POLICY_ID = 'qos-policy-id-' + uuid.uuid4().hex 63QOS_RULE_ID = 'qos-rule-id-' + uuid.uuid4().hex 64NETWORK_ID = 'network-id-' + uuid.uuid4().hex 65AGENT_ID = 'agent-id-' + uuid.uuid4().hex 66ROUTER_ID = 'router-id-' + uuid.uuid4().hex 67FIP_ID = 'fip-id-' + uuid.uuid4().hex 68CT_HELPER_ID = 'ct-helper-id-' + uuid.uuid4().hex 69 70 71class TestNetworkProxy(test_proxy_base.TestProxyBase): 72 def setUp(self): 73 super(TestNetworkProxy, self).setUp() 74 self.proxy = _proxy.Proxy(self.session) 75 76 def verify_update( 77 self, test_method, resource_type, base_path=None, *, 78 method_args=None, method_kwargs=None, 79 expected_args=None, expected_kwargs=None, expected_result="result", 80 mock_method="openstack.network.v2._proxy.Proxy._update", 81 ): 82 super().verify_update( 83 test_method, 84 resource_type, 85 base_path=base_path, 86 method_args=method_args, 87 method_kwargs=method_kwargs, 88 expected_args=expected_args, 89 expected_kwargs=expected_kwargs, 90 expected_result=expected_result, 91 mock_method=mock_method) 92 93 def verify_delete( 94 self, test_method, resource_type, ignore_missing=True, *, 95 method_args=None, method_kwargs=None, 96 expected_args=None, expected_kwargs=None, 97 mock_method="openstack.network.v2._proxy.Proxy._delete", 98 ): 99 super().verify_delete( 100 test_method, 101 resource_type, 102 ignore_missing=ignore_missing, 103 method_args=method_args, 104 method_kwargs=method_kwargs, 105 expected_args=expected_args, 106 expected_kwargs=expected_kwargs, 107 mock_method=mock_method) 108 109 def test_address_scope_create_attrs(self): 110 self.verify_create(self.proxy.create_address_scope, 111 address_scope.AddressScope) 112 113 def test_address_scope_delete(self): 114 self.verify_delete(self.proxy.delete_address_scope, 115 address_scope.AddressScope, 116 False) 117 118 def test_address_scope_delete_ignore(self): 119 self.verify_delete(self.proxy.delete_address_scope, 120 address_scope.AddressScope, 121 True) 122 123 def test_address_scope_find(self): 124 self.verify_find(self.proxy.find_address_scope, 125 address_scope.AddressScope) 126 127 def test_address_scope_get(self): 128 self.verify_get(self.proxy.get_address_scope, 129 address_scope.AddressScope) 130 131 def test_address_scopes(self): 132 self.verify_list(self.proxy.address_scopes, 133 address_scope.AddressScope) 134 135 def test_address_scope_update(self): 136 self.verify_update(self.proxy.update_address_scope, 137 address_scope.AddressScope) 138 139 def test_agent_delete(self): 140 self.verify_delete(self.proxy.delete_agent, agent.Agent, True) 141 142 def test_agent_get(self): 143 self.verify_get(self.proxy.get_agent, agent.Agent) 144 145 def test_agents(self): 146 self.verify_list(self.proxy.agents, agent.Agent) 147 148 def test_agent_update(self): 149 self.verify_update(self.proxy.update_agent, agent.Agent) 150 151 def test_availability_zones(self): 152 self.verify_list( 153 self.proxy.availability_zones, 154 availability_zone.AvailabilityZone) 155 156 def test_dhcp_agent_hosting_networks(self): 157 self.verify_list( 158 self.proxy.dhcp_agent_hosting_networks, 159 network.DHCPAgentHostingNetwork, 160 method_kwargs={'agent': AGENT_ID}, 161 expected_kwargs={'agent_id': AGENT_ID} 162 ) 163 164 def test_network_hosting_dhcp_agents(self): 165 self.verify_list( 166 self.proxy.network_hosting_dhcp_agents, 167 agent.NetworkHostingDHCPAgent, 168 method_kwargs={'network': NETWORK_ID}, 169 expected_kwargs={'network_id': NETWORK_ID} 170 ) 171 172 def test_extension_find(self): 173 self.verify_find(self.proxy.find_extension, extension.Extension) 174 175 def test_extensions(self): 176 self.verify_list(self.proxy.extensions, extension.Extension) 177 178 def test_floating_ip_create_attrs(self): 179 self.verify_create(self.proxy.create_ip, floating_ip.FloatingIP) 180 181 def test_floating_ip_delete(self): 182 self.verify_delete(self.proxy.delete_ip, floating_ip.FloatingIP, 183 False, expected_kwargs={'if_revision': None}) 184 185 def test_floating_ip_delete_ignore(self): 186 self.verify_delete(self.proxy.delete_ip, floating_ip.FloatingIP, 187 True, expected_kwargs={'if_revision': None}) 188 189 def test_floating_ip_delete_if_revision(self): 190 self.verify_delete(self.proxy.delete_ip, floating_ip.FloatingIP, 191 True, method_kwargs={'if_revision': 42}, 192 expected_kwargs={'if_revision': 42}) 193 194 def test_floating_ip_find(self): 195 self.verify_find(self.proxy.find_ip, floating_ip.FloatingIP) 196 197 def test_floating_ip_get(self): 198 self.verify_get(self.proxy.get_ip, floating_ip.FloatingIP) 199 200 def test_ips(self): 201 self.verify_list(self.proxy.ips, floating_ip.FloatingIP) 202 203 def test_floating_ip_update(self): 204 self.verify_update(self.proxy.update_ip, floating_ip.FloatingIP, 205 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 206 'if_revision': None}) 207 208 def test_floating_ip_update_if_revision(self): 209 self.verify_update(self.proxy.update_ip, floating_ip.FloatingIP, 210 method_kwargs={'x': 1, 'y': 2, 'z': 3, 211 'if_revision': 42}, 212 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 213 'if_revision': 42}) 214 215 def test_health_monitor_create_attrs(self): 216 self.verify_create(self.proxy.create_health_monitor, 217 health_monitor.HealthMonitor) 218 219 def test_health_monitor_delete(self): 220 self.verify_delete(self.proxy.delete_health_monitor, 221 health_monitor.HealthMonitor, False) 222 223 def test_health_monitor_delete_ignore(self): 224 self.verify_delete(self.proxy.delete_health_monitor, 225 health_monitor.HealthMonitor, True) 226 227 def test_health_monitor_find(self): 228 self.verify_find(self.proxy.find_health_monitor, 229 health_monitor.HealthMonitor) 230 231 def test_health_monitor_get(self): 232 self.verify_get(self.proxy.get_health_monitor, 233 health_monitor.HealthMonitor) 234 235 def test_health_monitors(self): 236 self.verify_list(self.proxy.health_monitors, 237 health_monitor.HealthMonitor) 238 239 def test_health_monitor_update(self): 240 self.verify_update(self.proxy.update_health_monitor, 241 health_monitor.HealthMonitor) 242 243 def test_ipsec_site_connection_create_attrs(self): 244 self.verify_create(self.proxy.create_vpn_ipsec_site_connection, 245 ipsec_site_connection.IPSecSiteConnection) 246 247 def test_ipsec_site_connection_delete(self): 248 self.verify_delete(self.proxy.delete_vpn_ipsec_site_connection, 249 ipsec_site_connection.IPSecSiteConnection, False) 250 251 def test_ipsec_site_connection_delete_ignore(self): 252 self.verify_delete(self.proxy.delete_vpn_ipsec_site_connection, 253 ipsec_site_connection.IPSecSiteConnection, True) 254 255 def test_ipsec_site_connection_find(self): 256 self.verify_find(self.proxy.find_vpn_ipsec_site_connection, 257 ipsec_site_connection.IPSecSiteConnection) 258 259 def test_ipsec_site_connection_get(self): 260 self.verify_get(self.proxy.get_vpn_ipsec_site_connection, 261 ipsec_site_connection.IPSecSiteConnection) 262 263 def test_ipsec_site_connections(self): 264 self.verify_list(self.proxy.vpn_ipsec_site_connections, 265 ipsec_site_connection.IPSecSiteConnection) 266 267 def test_ipsec_site_connection_update(self): 268 self.verify_update(self.proxy.update_vpn_ipsec_site_connection, 269 ipsec_site_connection.IPSecSiteConnection) 270 271 def test_listener_create_attrs(self): 272 self.verify_create(self.proxy.create_listener, listener.Listener) 273 274 def test_listener_delete(self): 275 self.verify_delete(self.proxy.delete_listener, 276 listener.Listener, False) 277 278 def test_listener_delete_ignore(self): 279 self.verify_delete(self.proxy.delete_listener, 280 listener.Listener, True) 281 282 def test_listener_find(self): 283 self.verify_find(self.proxy.find_listener, listener.Listener) 284 285 def test_listener_get(self): 286 self.verify_get(self.proxy.get_listener, listener.Listener) 287 288 def test_listeners(self): 289 self.verify_list(self.proxy.listeners, listener.Listener) 290 291 def test_listener_update(self): 292 self.verify_update(self.proxy.update_listener, listener.Listener) 293 294 def test_load_balancer_create_attrs(self): 295 self.verify_create(self.proxy.create_load_balancer, 296 load_balancer.LoadBalancer) 297 298 def test_load_balancer_delete(self): 299 self.verify_delete(self.proxy.delete_load_balancer, 300 load_balancer.LoadBalancer, False) 301 302 def test_load_balancer_delete_ignore(self): 303 self.verify_delete(self.proxy.delete_load_balancer, 304 load_balancer.LoadBalancer, True) 305 306 def test_load_balancer_find(self): 307 self.verify_find(self.proxy.find_load_balancer, 308 load_balancer.LoadBalancer) 309 310 def test_load_balancer_get(self): 311 self.verify_get(self.proxy.get_load_balancer, 312 load_balancer.LoadBalancer) 313 314 def test_load_balancers(self): 315 self.verify_list(self.proxy.load_balancers, 316 load_balancer.LoadBalancer) 317 318 def test_load_balancer_update(self): 319 self.verify_update(self.proxy.update_load_balancer, 320 load_balancer.LoadBalancer) 321 322 def test_metering_label_create_attrs(self): 323 self.verify_create(self.proxy.create_metering_label, 324 metering_label.MeteringLabel) 325 326 def test_metering_label_delete(self): 327 self.verify_delete(self.proxy.delete_metering_label, 328 metering_label.MeteringLabel, False) 329 330 def test_metering_label_delete_ignore(self): 331 self.verify_delete(self.proxy.delete_metering_label, 332 metering_label.MeteringLabel, True) 333 334 def test_metering_label_find(self): 335 self.verify_find(self.proxy.find_metering_label, 336 metering_label.MeteringLabel) 337 338 def test_metering_label_get(self): 339 self.verify_get(self.proxy.get_metering_label, 340 metering_label.MeteringLabel) 341 342 def test_metering_labels(self): 343 self.verify_list(self.proxy.metering_labels, 344 metering_label.MeteringLabel) 345 346 def test_metering_label_update(self): 347 self.verify_update(self.proxy.update_metering_label, 348 metering_label.MeteringLabel) 349 350 def test_metering_label_rule_create_attrs(self): 351 self.verify_create(self.proxy.create_metering_label_rule, 352 metering_label_rule.MeteringLabelRule) 353 354 def test_metering_label_rule_delete(self): 355 self.verify_delete(self.proxy.delete_metering_label_rule, 356 metering_label_rule.MeteringLabelRule, False) 357 358 def test_metering_label_rule_delete_ignore(self): 359 self.verify_delete(self.proxy.delete_metering_label_rule, 360 metering_label_rule.MeteringLabelRule, True) 361 362 def test_metering_label_rule_find(self): 363 self.verify_find(self.proxy.find_metering_label_rule, 364 metering_label_rule.MeteringLabelRule) 365 366 def test_metering_label_rule_get(self): 367 self.verify_get(self.proxy.get_metering_label_rule, 368 metering_label_rule.MeteringLabelRule) 369 370 def test_metering_label_rules(self): 371 self.verify_list(self.proxy.metering_label_rules, 372 metering_label_rule.MeteringLabelRule) 373 374 def test_metering_label_rule_update(self): 375 self.verify_update(self.proxy.update_metering_label_rule, 376 metering_label_rule.MeteringLabelRule) 377 378 def test_network_create_attrs(self): 379 self.verify_create(self.proxy.create_network, network.Network) 380 381 def test_network_delete(self): 382 self.verify_delete(self.proxy.delete_network, network.Network, False, 383 expected_kwargs={'if_revision': None}) 384 385 def test_network_delete_ignore(self): 386 self.verify_delete(self.proxy.delete_network, network.Network, True, 387 expected_kwargs={'if_revision': None}) 388 389 def test_network_delete_if_revision(self): 390 self.verify_delete(self.proxy.delete_network, network.Network, True, 391 method_kwargs={'if_revision': 42}, 392 expected_kwargs={'if_revision': 42}) 393 394 def test_network_find(self): 395 self.verify_find(self.proxy.find_network, network.Network) 396 397 def test_network_find_with_filter(self): 398 self._verify( 399 'openstack.proxy.Proxy._find', 400 self.proxy.find_network, 401 method_args=["net1"], 402 method_kwargs={"project_id": "1"}, 403 expected_args=[network.Network, "net1"], 404 expected_kwargs={"project_id": "1", "ignore_missing": True}) 405 406 def test_network_get(self): 407 self.verify_get(self.proxy.get_network, network.Network) 408 409 def test_networks(self): 410 self.verify_list(self.proxy.networks, network.Network) 411 412 def test_network_update(self): 413 self.verify_update(self.proxy.update_network, network.Network, 414 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 415 'if_revision': None}) 416 417 def test_network_update_if_revision(self): 418 self.verify_update(self.proxy.update_network, network.Network, 419 method_kwargs={'x': 1, 'y': 2, 'z': 3, 420 'if_revision': 42}, 421 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 422 'if_revision': 42}) 423 424 def test_flavor_create_attrs(self): 425 self.verify_create(self.proxy.create_flavor, flavor.Flavor) 426 427 def test_flavor_delete(self): 428 self.verify_delete(self.proxy.delete_flavor, flavor.Flavor, True) 429 430 def test_flavor_find(self): 431 self.verify_find(self.proxy.find_flavor, flavor.Flavor) 432 433 def test_flavor_get(self): 434 self.verify_get(self.proxy.get_flavor, flavor.Flavor) 435 436 def test_flavor_update(self): 437 self.verify_update(self.proxy.update_flavor, flavor.Flavor) 438 439 def test_flavors(self): 440 self.verify_list(self.proxy.flavors, flavor.Flavor) 441 442 def test_service_profile_create_attrs(self): 443 self.verify_create(self.proxy.create_service_profile, 444 service_profile.ServiceProfile) 445 446 def test_service_profile_delete(self): 447 self.verify_delete(self.proxy.delete_service_profile, 448 service_profile.ServiceProfile, True) 449 450 def test_service_profile_find(self): 451 self.verify_find(self.proxy.find_service_profile, 452 service_profile.ServiceProfile) 453 454 def test_service_profile_get(self): 455 self.verify_get(self.proxy.get_service_profile, 456 service_profile.ServiceProfile) 457 458 def test_service_profiles(self): 459 self.verify_list(self.proxy.service_profiles, 460 service_profile.ServiceProfile) 461 462 def test_service_profile_update(self): 463 self.verify_update(self.proxy.update_service_profile, 464 service_profile.ServiceProfile) 465 466 def test_network_ip_availability_find(self): 467 self.verify_find(self.proxy.find_network_ip_availability, 468 network_ip_availability.NetworkIPAvailability) 469 470 def test_network_ip_availability_get(self): 471 self.verify_get(self.proxy.get_network_ip_availability, 472 network_ip_availability.NetworkIPAvailability) 473 474 def test_network_ip_availabilities(self): 475 self.verify_list(self.proxy.network_ip_availabilities, 476 network_ip_availability.NetworkIPAvailability) 477 478 def test_pool_member_create_attrs(self): 479 self.verify_create(self.proxy.create_pool_member, 480 pool_member.PoolMember, 481 method_kwargs={"pool": "test_id"}, 482 expected_kwargs={"pool_id": "test_id"}) 483 484 def test_pool_member_delete(self): 485 self.verify_delete( 486 self.proxy.delete_pool_member, 487 pool_member.PoolMember, 488 ignore_missing=False, 489 method_kwargs={"pool": "test_id"}, 490 expected_kwargs={"pool_id": "test_id"}) 491 492 def test_pool_member_delete_ignore(self): 493 self.verify_delete( 494 self.proxy.delete_pool_member, 495 pool_member.PoolMember, 496 ignore_missing=True, 497 method_kwargs={"pool": "test_id"}, 498 expected_kwargs={"pool_id": "test_id"}) 499 500 def test_pool_member_find(self): 501 self._verify( 502 'openstack.proxy.Proxy._find', 503 self.proxy.find_pool_member, 504 method_args=["MEMBER", "POOL"], 505 expected_args=[pool_member.PoolMember, "MEMBER"], 506 expected_kwargs={"pool_id": "POOL", "ignore_missing": True}) 507 508 def test_pool_member_get(self): 509 self._verify( 510 'openstack.proxy.Proxy._get', 511 self.proxy.get_pool_member, 512 method_args=["MEMBER", "POOL"], 513 expected_args=[pool_member.PoolMember, "MEMBER"], 514 expected_kwargs={"pool_id": "POOL"}) 515 516 def test_pool_members(self): 517 self.verify_list( 518 self.proxy.pool_members, pool_member.PoolMember, 519 method_args=["test_id"], 520 expected_args=[], 521 expected_kwargs={"pool_id": "test_id"}) 522 523 def test_pool_member_update(self): 524 self._verify( 525 "openstack.network.v2._proxy.Proxy._update", 526 self.proxy.update_pool_member, 527 method_args=["MEMBER", "POOL"], 528 expected_args=[pool_member.PoolMember, "MEMBER"], 529 expected_kwargs={"pool_id": "POOL"}) 530 531 def test_pool_create_attrs(self): 532 self.verify_create(self.proxy.create_pool, pool.Pool) 533 534 def test_pool_delete(self): 535 self.verify_delete(self.proxy.delete_pool, pool.Pool, False) 536 537 def test_pool_delete_ignore(self): 538 self.verify_delete(self.proxy.delete_pool, pool.Pool, True) 539 540 def test_pool_find(self): 541 self.verify_find(self.proxy.find_pool, pool.Pool) 542 543 def test_pool_get(self): 544 self.verify_get(self.proxy.get_pool, pool.Pool) 545 546 def test_pools(self): 547 self.verify_list(self.proxy.pools, pool.Pool) 548 549 def test_pool_update(self): 550 self.verify_update(self.proxy.update_pool, pool.Pool) 551 552 def test_port_create_attrs(self): 553 self.verify_create(self.proxy.create_port, port.Port) 554 555 def test_port_delete(self): 556 self.verify_delete(self.proxy.delete_port, port.Port, False, 557 expected_kwargs={'if_revision': None}) 558 559 def test_port_delete_ignore(self): 560 self.verify_delete(self.proxy.delete_port, port.Port, True, 561 expected_kwargs={'if_revision': None}) 562 563 def test_port_delete_if_revision(self): 564 self.verify_delete(self.proxy.delete_port, port.Port, True, 565 method_kwargs={'if_revision': 42}, 566 expected_kwargs={'if_revision': 42}) 567 568 def test_port_find(self): 569 self.verify_find(self.proxy.find_port, port.Port) 570 571 def test_port_get(self): 572 self.verify_get(self.proxy.get_port, port.Port) 573 574 def test_ports(self): 575 self.verify_list(self.proxy.ports, port.Port) 576 577 def test_port_update(self): 578 self.verify_update(self.proxy.update_port, port.Port, 579 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 580 'if_revision': None}) 581 582 def test_port_update_if_revision(self): 583 self.verify_update(self.proxy.update_port, port.Port, 584 method_kwargs={'x': 1, 'y': 2, 'z': 3, 585 'if_revision': 42}, 586 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 587 'if_revision': 42}) 588 589 @mock.patch('openstack.network.v2._proxy.Proxy._bulk_create') 590 def test_ports_create(self, bc): 591 data = mock.sentinel 592 593 self.proxy.create_ports(data) 594 595 bc.assert_called_once_with(port.Port, data) 596 597 def test_qos_bandwidth_limit_rule_create_attrs(self): 598 self.verify_create( 599 self.proxy.create_qos_bandwidth_limit_rule, 600 qos_bandwidth_limit_rule.QoSBandwidthLimitRule, 601 method_kwargs={'qos_policy': QOS_POLICY_ID}, 602 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 603 604 def test_qos_bandwidth_limit_rule_delete(self): 605 self.verify_delete( 606 self.proxy.delete_qos_bandwidth_limit_rule, 607 qos_bandwidth_limit_rule.QoSBandwidthLimitRule, 608 ignore_missing=False, 609 method_args=["resource_or_id", QOS_POLICY_ID], 610 expected_args=["resource_or_id"], 611 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 612 613 def test_qos_bandwidth_limit_rule_delete_ignore(self): 614 self.verify_delete( 615 self.proxy.delete_qos_bandwidth_limit_rule, 616 qos_bandwidth_limit_rule.QoSBandwidthLimitRule, 617 ignore_missing=True, 618 method_args=["resource_or_id", QOS_POLICY_ID], 619 expected_args=["resource_or_id"], 620 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 621 622 def test_qos_bandwidth_limit_rule_find(self): 623 policy = qos_policy.QoSPolicy.new(id=QOS_POLICY_ID) 624 self._verify( 625 'openstack.proxy.Proxy._find', 626 self.proxy.find_qos_bandwidth_limit_rule, 627 method_args=['rule_id', policy], 628 expected_args=[ 629 qos_bandwidth_limit_rule.QoSBandwidthLimitRule, 630 'rule_id'], 631 expected_kwargs={ 632 'ignore_missing': True, 'qos_policy_id': QOS_POLICY_ID}) 633 634 def test_qos_bandwidth_limit_rule_get(self): 635 self.verify_get( 636 self.proxy.get_qos_bandwidth_limit_rule, 637 qos_bandwidth_limit_rule.QoSBandwidthLimitRule, 638 method_kwargs={'qos_policy': QOS_POLICY_ID}, 639 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 640 641 def test_qos_bandwidth_limit_rules(self): 642 self.verify_list( 643 self.proxy.qos_bandwidth_limit_rules, 644 qos_bandwidth_limit_rule.QoSBandwidthLimitRule, 645 method_kwargs={'qos_policy': QOS_POLICY_ID}, 646 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 647 648 def test_qos_bandwidth_limit_rule_update(self): 649 policy = qos_policy.QoSPolicy.new(id=QOS_POLICY_ID) 650 self._verify( 651 'openstack.network.v2._proxy.Proxy._update', 652 self.proxy.update_qos_bandwidth_limit_rule, 653 method_args=['rule_id', policy], 654 method_kwargs={'foo': 'bar'}, 655 expected_args=[ 656 qos_bandwidth_limit_rule.QoSBandwidthLimitRule, 657 'rule_id'], 658 expected_kwargs={'qos_policy_id': QOS_POLICY_ID, 'foo': 'bar'}) 659 660 def test_qos_dscp_marking_rule_create_attrs(self): 661 self.verify_create( 662 self.proxy.create_qos_dscp_marking_rule, 663 qos_dscp_marking_rule.QoSDSCPMarkingRule, 664 method_kwargs={'qos_policy': QOS_POLICY_ID}, 665 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 666 667 def test_qos_dscp_marking_rule_delete(self): 668 self.verify_delete( 669 self.proxy.delete_qos_dscp_marking_rule, 670 qos_dscp_marking_rule.QoSDSCPMarkingRule, 671 ignore_missing=False, 672 method_args=["resource_or_id", QOS_POLICY_ID], 673 expected_args=["resource_or_id"], 674 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 675 676 def test_qos_dscp_marking_rule_delete_ignore(self): 677 self.verify_delete( 678 self.proxy.delete_qos_dscp_marking_rule, 679 qos_dscp_marking_rule.QoSDSCPMarkingRule, 680 ignore_missing=True, 681 method_args=["resource_or_id", QOS_POLICY_ID], 682 expected_args=["resource_or_id"], 683 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}, ) 684 685 def test_qos_dscp_marking_rule_find(self): 686 policy = qos_policy.QoSPolicy.new(id=QOS_POLICY_ID) 687 self._verify( 688 'openstack.proxy.Proxy._find', 689 self.proxy.find_qos_dscp_marking_rule, 690 method_args=['rule_id', policy], 691 expected_args=[ 692 qos_dscp_marking_rule.QoSDSCPMarkingRule, 'rule_id'], 693 expected_kwargs={ 694 'ignore_missing': True, 'qos_policy_id': QOS_POLICY_ID}) 695 696 def test_qos_dscp_marking_rule_get(self): 697 self.verify_get( 698 self.proxy.get_qos_dscp_marking_rule, 699 qos_dscp_marking_rule.QoSDSCPMarkingRule, 700 method_kwargs={'qos_policy': QOS_POLICY_ID}, 701 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 702 703 def test_qos_dscp_marking_rules(self): 704 self.verify_list( 705 self.proxy.qos_dscp_marking_rules, 706 qos_dscp_marking_rule.QoSDSCPMarkingRule, 707 method_kwargs={'qos_policy': QOS_POLICY_ID}, 708 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 709 710 def test_qos_dscp_marking_rule_update(self): 711 policy = qos_policy.QoSPolicy.new(id=QOS_POLICY_ID) 712 self._verify( 713 'openstack.network.v2._proxy.Proxy._update', 714 self.proxy.update_qos_dscp_marking_rule, 715 method_args=['rule_id', policy], 716 method_kwargs={'foo': 'bar'}, 717 expected_args=[ 718 qos_dscp_marking_rule.QoSDSCPMarkingRule, 719 'rule_id'], 720 expected_kwargs={'qos_policy_id': QOS_POLICY_ID, 'foo': 'bar'}) 721 722 def test_qos_minimum_bandwidth_rule_create_attrs(self): 723 self.verify_create( 724 self.proxy.create_qos_minimum_bandwidth_rule, 725 qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule, 726 method_kwargs={'qos_policy': QOS_POLICY_ID}, 727 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 728 729 def test_qos_minimum_bandwidth_rule_delete(self): 730 self.verify_delete( 731 self.proxy.delete_qos_minimum_bandwidth_rule, 732 qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule, 733 ignore_missing=False, 734 method_args=["resource_or_id", QOS_POLICY_ID], 735 expected_args=["resource_or_id"], 736 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 737 738 def test_qos_minimum_bandwidth_rule_delete_ignore(self): 739 self.verify_delete( 740 self.proxy.delete_qos_minimum_bandwidth_rule, 741 qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule, 742 ignore_missing=True, 743 method_args=["resource_or_id", QOS_POLICY_ID], 744 expected_args=["resource_or_id"], 745 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 746 747 def test_qos_minimum_bandwidth_rule_find(self): 748 policy = qos_policy.QoSPolicy.new(id=QOS_POLICY_ID) 749 self._verify( 750 'openstack.proxy.Proxy._find', 751 self.proxy.find_qos_minimum_bandwidth_rule, 752 method_args=['rule_id', policy], 753 expected_args=[ 754 qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule, 755 'rule_id'], 756 expected_kwargs={ 757 'ignore_missing': True, 'qos_policy_id': QOS_POLICY_ID}) 758 759 def test_qos_minimum_bandwidth_rule_get(self): 760 self.verify_get( 761 self.proxy.get_qos_minimum_bandwidth_rule, 762 qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule, 763 method_kwargs={'qos_policy': QOS_POLICY_ID}, 764 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 765 766 def test_qos_minimum_bandwidth_rules(self): 767 self.verify_list( 768 self.proxy.qos_minimum_bandwidth_rules, 769 qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule, 770 method_kwargs={'qos_policy': QOS_POLICY_ID}, 771 expected_kwargs={'qos_policy_id': QOS_POLICY_ID}) 772 773 def test_qos_minimum_bandwidth_rule_update(self): 774 policy = qos_policy.QoSPolicy.new(id=QOS_POLICY_ID) 775 self._verify( 776 'openstack.network.v2._proxy.Proxy._update', 777 self.proxy.update_qos_minimum_bandwidth_rule, 778 method_args=['rule_id', policy], 779 method_kwargs={'foo': 'bar'}, 780 expected_args=[ 781 qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule, 782 'rule_id'], 783 expected_kwargs={ 784 'qos_policy_id': QOS_POLICY_ID, 'foo': 'bar'}) 785 786 def test_qos_policy_create_attrs(self): 787 self.verify_create(self.proxy.create_qos_policy, qos_policy.QoSPolicy) 788 789 def test_qos_policy_delete(self): 790 self.verify_delete(self.proxy.delete_qos_policy, qos_policy.QoSPolicy, 791 False) 792 793 def test_qos_policy_delete_ignore(self): 794 self.verify_delete(self.proxy.delete_qos_policy, qos_policy.QoSPolicy, 795 True) 796 797 def test_qos_policy_find(self): 798 self.verify_find(self.proxy.find_qos_policy, qos_policy.QoSPolicy) 799 800 def test_qos_policy_get(self): 801 self.verify_get(self.proxy.get_qos_policy, qos_policy.QoSPolicy) 802 803 def test_qos_policies(self): 804 self.verify_list(self.proxy.qos_policies, qos_policy.QoSPolicy) 805 806 def test_qos_policy_update(self): 807 self.verify_update(self.proxy.update_qos_policy, qos_policy.QoSPolicy) 808 809 def test_qos_rule_type_find(self): 810 self.verify_find(self.proxy.find_qos_rule_type, 811 qos_rule_type.QoSRuleType) 812 813 def test_qos_rule_type_get(self): 814 self.verify_get(self.proxy.get_qos_rule_type, 815 qos_rule_type.QoSRuleType) 816 817 def test_qos_rule_types(self): 818 self.verify_list(self.proxy.qos_rule_types, qos_rule_type.QoSRuleType) 819 820 def test_quota_delete(self): 821 self.verify_delete(self.proxy.delete_quota, quota.Quota, False) 822 823 def test_quota_delete_ignore(self): 824 self.verify_delete(self.proxy.delete_quota, quota.Quota, True) 825 826 def test_quota_get(self): 827 self.verify_get(self.proxy.get_quota, quota.Quota) 828 829 @mock.patch.object(proxy_base.Proxy, "_get_resource") 830 def test_quota_get_details(self, mock_get): 831 fake_quota = mock.Mock(project_id='PROJECT') 832 mock_get.return_value = fake_quota 833 self._verify( 834 "openstack.proxy.Proxy._get", 835 self.proxy.get_quota, 836 method_args=['QUOTA_ID'], 837 method_kwargs={'details': True}, 838 expected_args=[quota.QuotaDetails], 839 expected_kwargs={ 840 'project': fake_quota.id, 'requires_id': False}) 841 mock_get.assert_called_once_with(quota.Quota, 'QUOTA_ID') 842 843 @mock.patch.object(proxy_base.Proxy, "_get_resource") 844 def test_quota_default_get(self, mock_get): 845 fake_quota = mock.Mock(project_id='PROJECT') 846 mock_get.return_value = fake_quota 847 self._verify( 848 "openstack.proxy.Proxy._get", 849 self.proxy.get_quota_default, 850 method_args=['QUOTA_ID'], 851 expected_args=[quota.QuotaDefault], 852 expected_kwargs={ 853 'project': fake_quota.id, 'requires_id': False}) 854 mock_get.assert_called_once_with(quota.Quota, 'QUOTA_ID') 855 856 def test_quotas(self): 857 self.verify_list(self.proxy.quotas, quota.Quota) 858 859 def test_quota_update(self): 860 self.verify_update(self.proxy.update_quota, quota.Quota) 861 862 def test_rbac_policy_create_attrs(self): 863 self.verify_create(self.proxy.create_rbac_policy, 864 rbac_policy.RBACPolicy) 865 866 def test_rbac_policy_delete(self): 867 self.verify_delete(self.proxy.delete_rbac_policy, 868 rbac_policy.RBACPolicy, False) 869 870 def test_rbac_policy_delete_ignore(self): 871 self.verify_delete(self.proxy.delete_rbac_policy, 872 rbac_policy.RBACPolicy, True) 873 874 def test_rbac_policy_find(self): 875 self.verify_find(self.proxy.find_rbac_policy, rbac_policy.RBACPolicy) 876 877 def test_rbac_policy_get(self): 878 self.verify_get(self.proxy.get_rbac_policy, rbac_policy.RBACPolicy) 879 880 def test_rbac_policies(self): 881 self.verify_list(self.proxy.rbac_policies, rbac_policy.RBACPolicy) 882 883 def test_rbac_policy_update(self): 884 self.verify_update(self.proxy.update_rbac_policy, 885 rbac_policy.RBACPolicy) 886 887 def test_router_create_attrs(self): 888 self.verify_create(self.proxy.create_router, router.Router) 889 890 def test_router_delete(self): 891 self.verify_delete(self.proxy.delete_router, router.Router, False, 892 expected_kwargs={'if_revision': None}) 893 894 def test_router_delete_ignore(self): 895 self.verify_delete(self.proxy.delete_router, router.Router, True, 896 expected_kwargs={'if_revision': None}) 897 898 def test_router_delete_if_revision(self): 899 self.verify_delete(self.proxy.delete_router, router.Router, True, 900 method_kwargs={'if_revision': 42}, 901 expected_kwargs={'if_revision': 42}) 902 903 def test_router_find(self): 904 self.verify_find(self.proxy.find_router, router.Router) 905 906 def test_router_get(self): 907 self.verify_get(self.proxy.get_router, router.Router) 908 909 def test_routers(self): 910 self.verify_list(self.proxy.routers, router.Router) 911 912 def test_router_update(self): 913 self.verify_update(self.proxy.update_router, router.Router, 914 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 915 'if_revision': None}) 916 917 def test_router_update_if_revision(self): 918 self.verify_update(self.proxy.update_router, router.Router, 919 method_kwargs={'x': 1, 'y': 2, 'z': 3, 920 'if_revision': 42}, 921 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 922 'if_revision': 42}) 923 924 @mock.patch.object(proxy_base.Proxy, '_get_resource') 925 @mock.patch.object(router.Router, 'add_interface') 926 def test_add_interface_to_router_with_port(self, mock_add_interface, 927 mock_get): 928 x_router = router.Router.new(id="ROUTER_ID") 929 mock_get.return_value = x_router 930 931 self._verify( 932 "openstack.network.v2.router.Router.add_interface", 933 self.proxy.add_interface_to_router, 934 method_args=["FAKE_ROUTER"], 935 method_kwargs={"port_id": "PORT"}, 936 expected_args=[self.proxy], 937 expected_kwargs={"port_id": "PORT"}) 938 mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER") 939 940 @mock.patch.object(proxy_base.Proxy, '_get_resource') 941 @mock.patch.object(router.Router, 'add_interface') 942 def test_add_interface_to_router_with_subnet(self, mock_add_interface, 943 mock_get): 944 x_router = router.Router.new(id="ROUTER_ID") 945 mock_get.return_value = x_router 946 947 self._verify( 948 "openstack.network.v2.router.Router.add_interface", 949 self.proxy.add_interface_to_router, 950 method_args=["FAKE_ROUTER"], 951 method_kwargs={"subnet_id": "SUBNET"}, 952 expected_args=[self.proxy], 953 expected_kwargs={"subnet_id": "SUBNET"}) 954 mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER") 955 956 @mock.patch.object(proxy_base.Proxy, '_get_resource') 957 @mock.patch.object(router.Router, 'remove_interface') 958 def test_remove_interface_from_router_with_port(self, mock_remove, 959 mock_get): 960 x_router = router.Router.new(id="ROUTER_ID") 961 mock_get.return_value = x_router 962 963 self._verify( 964 "openstack.network.v2.router.Router.remove_interface", 965 self.proxy.remove_interface_from_router, 966 method_args=["FAKE_ROUTER"], 967 method_kwargs={"port_id": "PORT"}, 968 expected_args=[self.proxy], 969 expected_kwargs={"port_id": "PORT"}) 970 mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER") 971 972 @mock.patch.object(proxy_base.Proxy, '_get_resource') 973 @mock.patch.object(router.Router, 'remove_interface') 974 def test_remove_interface_from_router_with_subnet(self, mock_remove, 975 mock_get): 976 x_router = router.Router.new(id="ROUTER_ID") 977 mock_get.return_value = x_router 978 979 self._verify( 980 "openstack.network.v2.router.Router.remove_interface", 981 self.proxy.remove_interface_from_router, 982 method_args=["FAKE_ROUTER"], 983 method_kwargs={"subnet_id": "SUBNET"}, 984 expected_args=[self.proxy], 985 expected_kwargs={"subnet_id": "SUBNET"}) 986 mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER") 987 988 @mock.patch.object(proxy_base.Proxy, '_get_resource') 989 @mock.patch.object(router.Router, 'add_extra_routes') 990 def test_add_extra_routes_to_router( 991 self, mock_add_extra_routes, mock_get): 992 x_router = router.Router.new(id="ROUTER_ID") 993 mock_get.return_value = x_router 994 995 self._verify( 996 "openstack.network.v2.router.Router.add_extra_routes", 997 self.proxy.add_extra_routes_to_router, 998 method_args=["FAKE_ROUTER"], 999 method_kwargs={"body": {"router": {"routes": []}}}, 1000 expected_args=[self.proxy], 1001 expected_kwargs={"body": {"router": {"routes": []}}}) 1002 mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER") 1003 1004 @mock.patch.object(proxy_base.Proxy, '_get_resource') 1005 @mock.patch.object(router.Router, 'remove_extra_routes') 1006 def test_remove_extra_routes_from_router( 1007 self, mock_remove_extra_routes, mock_get): 1008 x_router = router.Router.new(id="ROUTER_ID") 1009 mock_get.return_value = x_router 1010 1011 self._verify( 1012 "openstack.network.v2.router.Router.remove_extra_routes", 1013 self.proxy.remove_extra_routes_from_router, 1014 method_args=["FAKE_ROUTER"], 1015 method_kwargs={"body": {"router": {"routes": []}}}, 1016 expected_args=[self.proxy], 1017 expected_kwargs={"body": {"router": {"routes": []}}}) 1018 mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER") 1019 1020 @mock.patch.object(proxy_base.Proxy, '_get_resource') 1021 @mock.patch.object(router.Router, 'add_gateway') 1022 def test_add_gateway_to_router(self, mock_add, mock_get): 1023 x_router = router.Router.new(id="ROUTER_ID") 1024 mock_get.return_value = x_router 1025 1026 self._verify( 1027 "openstack.network.v2.router.Router.add_gateway", 1028 self.proxy.add_gateway_to_router, 1029 method_args=["FAKE_ROUTER"], 1030 method_kwargs={"foo": "bar"}, 1031 expected_args=[self.proxy], 1032 expected_kwargs={"foo": "bar"}) 1033 mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER") 1034 1035 @mock.patch.object(proxy_base.Proxy, '_get_resource') 1036 @mock.patch.object(router.Router, 'remove_gateway') 1037 def test_remove_gateway_from_router(self, mock_remove, mock_get): 1038 x_router = router.Router.new(id="ROUTER_ID") 1039 mock_get.return_value = x_router 1040 1041 self._verify( 1042 "openstack.network.v2.router.Router.remove_gateway", 1043 self.proxy.remove_gateway_from_router, 1044 method_args=["FAKE_ROUTER"], 1045 method_kwargs={"foo": "bar"}, 1046 expected_args=[self.proxy], 1047 expected_kwargs={"foo": "bar"}) 1048 mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER") 1049 1050 def test_router_hosting_l3_agents_list(self): 1051 self.verify_list( 1052 self.proxy.routers_hosting_l3_agents, 1053 agent.RouterL3Agent, 1054 method_kwargs={'router': ROUTER_ID}, 1055 expected_kwargs={'router_id': ROUTER_ID}, 1056 ) 1057 1058 def test_agent_hosted_routers_list(self): 1059 self.verify_list( 1060 self.proxy.agent_hosted_routers, 1061 router.L3AgentRouter, 1062 method_kwargs={'agent': AGENT_ID}, 1063 expected_kwargs={'agent_id': AGENT_ID}, 1064 ) 1065 1066 def test_firewall_group_create_attrs(self): 1067 self.verify_create(self.proxy.create_firewall_group, 1068 firewall_group.FirewallGroup) 1069 1070 def test_firewall_group_delete(self): 1071 self.verify_delete(self.proxy.delete_firewall_group, 1072 firewall_group.FirewallGroup, False) 1073 1074 def test_firewall_group_delete_ignore(self): 1075 self.verify_delete(self.proxy.delete_firewall_group, 1076 firewall_group.FirewallGroup, True) 1077 1078 def test_firewall_group_find(self): 1079 self.verify_find(self.proxy.find_firewall_group, 1080 firewall_group.FirewallGroup) 1081 1082 def test_firewall_group_get(self): 1083 self.verify_get(self.proxy.get_firewall_group, 1084 firewall_group.FirewallGroup) 1085 1086 def test_firewall_groups(self): 1087 self.verify_list(self.proxy.firewall_groups, 1088 firewall_group.FirewallGroup) 1089 1090 def test_firewall_group_update(self): 1091 self.verify_update(self.proxy.update_firewall_group, 1092 firewall_group.FirewallGroup) 1093 1094 def test_firewall_policy_create_attrs(self): 1095 self.verify_create(self.proxy.create_firewall_policy, 1096 firewall_policy.FirewallPolicy) 1097 1098 def test_firewall_policy_delete(self): 1099 self.verify_delete(self.proxy.delete_firewall_policy, 1100 firewall_policy.FirewallPolicy, False) 1101 1102 def test_firewall_policy_delete_ignore(self): 1103 self.verify_delete(self.proxy.delete_firewall_policy, 1104 firewall_policy.FirewallPolicy, True) 1105 1106 def test_firewall_policy_find(self): 1107 self.verify_find(self.proxy.find_firewall_policy, 1108 firewall_policy.FirewallPolicy) 1109 1110 def test_firewall_policy_get(self): 1111 self.verify_get(self.proxy.get_firewall_policy, 1112 firewall_policy.FirewallPolicy) 1113 1114 def test_firewall_policies(self): 1115 self.verify_list(self.proxy.firewall_policies, 1116 firewall_policy.FirewallPolicy) 1117 1118 def test_firewall_policy_update(self): 1119 self.verify_update(self.proxy.update_firewall_policy, 1120 firewall_policy.FirewallPolicy) 1121 1122 def test_firewall_rule_create_attrs(self): 1123 self.verify_create(self.proxy.create_firewall_rule, 1124 firewall_rule.FirewallRule) 1125 1126 def test_firewall_rule_delete(self): 1127 self.verify_delete(self.proxy.delete_firewall_rule, 1128 firewall_rule.FirewallRule, False) 1129 1130 def test_firewall_rule_delete_ignore(self): 1131 self.verify_delete(self.proxy.delete_firewall_rule, 1132 firewall_rule.FirewallRule, True) 1133 1134 def test_firewall_rule_find(self): 1135 self.verify_find(self.proxy.find_firewall_rule, 1136 firewall_rule.FirewallRule) 1137 1138 def test_firewall_rule_get(self): 1139 self.verify_get(self.proxy.get_firewall_rule, 1140 firewall_rule.FirewallRule) 1141 1142 def test_firewall_rules(self): 1143 self.verify_list(self.proxy.firewall_rules, 1144 firewall_rule.FirewallRule) 1145 1146 def test_firewall_rule_update(self): 1147 self.verify_update(self.proxy.update_firewall_rule, 1148 firewall_rule.FirewallRule) 1149 1150 def test_network_segment_range_create_attrs(self): 1151 self.verify_create(self.proxy.create_network_segment_range, 1152 network_segment_range.NetworkSegmentRange) 1153 1154 def test_network_segment_range_delete(self): 1155 self.verify_delete(self.proxy.delete_network_segment_range, 1156 network_segment_range.NetworkSegmentRange, False) 1157 1158 def test_network_segment_range_delete_ignore(self): 1159 self.verify_delete(self.proxy.delete_network_segment_range, 1160 network_segment_range.NetworkSegmentRange, True) 1161 1162 def test_network_segment_range_find(self): 1163 self.verify_find(self.proxy.find_network_segment_range, 1164 network_segment_range.NetworkSegmentRange) 1165 1166 def test_network_segment_range_get(self): 1167 self.verify_get(self.proxy.get_network_segment_range, 1168 network_segment_range.NetworkSegmentRange) 1169 1170 def test_network_segment_ranges(self): 1171 self.verify_list(self.proxy.network_segment_ranges, 1172 network_segment_range.NetworkSegmentRange) 1173 1174 def test_network_segment_range_update(self): 1175 self.verify_update(self.proxy.update_network_segment_range, 1176 network_segment_range.NetworkSegmentRange) 1177 1178 def test_security_group_create_attrs(self): 1179 self.verify_create(self.proxy.create_security_group, 1180 security_group.SecurityGroup) 1181 1182 def test_security_group_delete(self): 1183 self.verify_delete(self.proxy.delete_security_group, 1184 security_group.SecurityGroup, False, 1185 expected_kwargs={'if_revision': None}) 1186 1187 def test_security_group_delete_ignore(self): 1188 self.verify_delete(self.proxy.delete_security_group, 1189 security_group.SecurityGroup, True, 1190 expected_kwargs={'if_revision': None}) 1191 1192 def test_security_group_delete_if_revision(self): 1193 self.verify_delete(self.proxy.delete_security_group, 1194 security_group.SecurityGroup, True, 1195 method_kwargs={'if_revision': 42}, 1196 expected_kwargs={'if_revision': 42}) 1197 1198 def test_security_group_find(self): 1199 self.verify_find(self.proxy.find_security_group, 1200 security_group.SecurityGroup) 1201 1202 def test_security_group_get(self): 1203 self.verify_get(self.proxy.get_security_group, 1204 security_group.SecurityGroup) 1205 1206 def test_security_groups(self): 1207 self.verify_list(self.proxy.security_groups, 1208 security_group.SecurityGroup) 1209 1210 def test_security_group_update(self): 1211 self.verify_update(self.proxy.update_security_group, 1212 security_group.SecurityGroup, 1213 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 1214 'if_revision': None}) 1215 1216 def test_security_group_update_if_revision(self): 1217 self.verify_update(self.proxy.update_security_group, 1218 security_group.SecurityGroup, 1219 method_kwargs={'x': 1, 'y': 2, 'z': 3, 1220 'if_revision': 42}, 1221 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 1222 'if_revision': 42}) 1223 1224 def test_security_group_rule_create_attrs(self): 1225 self.verify_create(self.proxy.create_security_group_rule, 1226 security_group_rule.SecurityGroupRule) 1227 1228 def test_security_group_rule_delete(self): 1229 self.verify_delete(self.proxy.delete_security_group_rule, 1230 security_group_rule.SecurityGroupRule, False, 1231 expected_kwargs={'if_revision': None}) 1232 1233 def test_security_group_rule_delete_ignore(self): 1234 self.verify_delete(self.proxy.delete_security_group_rule, 1235 security_group_rule.SecurityGroupRule, True, 1236 expected_kwargs={'if_revision': None}) 1237 1238 def test_security_group_rule_delete_if_revision(self): 1239 self.verify_delete(self.proxy.delete_security_group_rule, 1240 security_group_rule.SecurityGroupRule, True, 1241 method_kwargs={'if_revision': 42}, 1242 expected_kwargs={'if_revision': 42}) 1243 1244 def test_security_group_rule_find(self): 1245 self.verify_find(self.proxy.find_security_group_rule, 1246 security_group_rule.SecurityGroupRule) 1247 1248 def test_security_group_rule_get(self): 1249 self.verify_get(self.proxy.get_security_group_rule, 1250 security_group_rule.SecurityGroupRule) 1251 1252 def test_security_group_rules(self): 1253 self.verify_list(self.proxy.security_group_rules, 1254 security_group_rule.SecurityGroupRule) 1255 1256 @mock.patch('openstack.network.v2._proxy.Proxy._bulk_create') 1257 def test_security_group_rules_create(self, bc): 1258 data = mock.sentinel 1259 1260 self.proxy.create_security_group_rules(data) 1261 1262 bc.assert_called_once_with(security_group_rule.SecurityGroupRule, data) 1263 1264 def test_segment_create_attrs(self): 1265 self.verify_create(self.proxy.create_segment, segment.Segment) 1266 1267 def test_segment_delete(self): 1268 self.verify_delete(self.proxy.delete_segment, segment.Segment, False) 1269 1270 def test_segment_delete_ignore(self): 1271 self.verify_delete(self.proxy.delete_segment, segment.Segment, True) 1272 1273 def test_segment_find(self): 1274 self.verify_find(self.proxy.find_segment, segment.Segment) 1275 1276 def test_segment_get(self): 1277 self.verify_get(self.proxy.get_segment, segment.Segment) 1278 1279 def test_segments(self): 1280 self.verify_list(self.proxy.segments, segment.Segment) 1281 1282 def test_segment_update(self): 1283 self.verify_update(self.proxy.update_segment, segment.Segment) 1284 1285 def test_subnet_create_attrs(self): 1286 self.verify_create(self.proxy.create_subnet, subnet.Subnet) 1287 1288 def test_subnet_delete(self): 1289 self.verify_delete(self.proxy.delete_subnet, subnet.Subnet, False, 1290 expected_kwargs={'if_revision': None}) 1291 1292 def test_subnet_delete_ignore(self): 1293 self.verify_delete(self.proxy.delete_subnet, subnet.Subnet, True, 1294 expected_kwargs={'if_revision': None}) 1295 1296 def test_subnet_delete_if_revision(self): 1297 self.verify_delete(self.proxy.delete_subnet, subnet.Subnet, True, 1298 method_kwargs={'if_revision': 42}, 1299 expected_kwargs={'if_revision': 42}) 1300 1301 def test_subnet_find(self): 1302 self.verify_find(self.proxy.find_subnet, subnet.Subnet) 1303 1304 def test_subnet_get(self): 1305 self.verify_get(self.proxy.get_subnet, subnet.Subnet) 1306 1307 def test_subnets(self): 1308 self.verify_list(self.proxy.subnets, subnet.Subnet) 1309 1310 def test_subnet_update(self): 1311 self.verify_update(self.proxy.update_subnet, subnet.Subnet, 1312 expected_kwargs={'x': 1, 'y': 2, 'z': 3, 1313 'if_revision': None}) 1314 1315 def test_subnet_pool_create_attrs(self): 1316 self.verify_create(self.proxy.create_subnet_pool, 1317 subnet_pool.SubnetPool) 1318 1319 def test_subnet_pool_delete(self): 1320 self.verify_delete(self.proxy.delete_subnet_pool, 1321 subnet_pool.SubnetPool, False) 1322 1323 def test_subnet_pool_delete_ignore(self): 1324 self.verify_delete(self.proxy.delete_subnet_pool, 1325 subnet_pool.SubnetPool, True) 1326 1327 def test_subnet_pool_find(self): 1328 self.verify_find(self.proxy.find_subnet_pool, 1329 subnet_pool.SubnetPool) 1330 1331 def test_subnet_pool_get(self): 1332 self.verify_get(self.proxy.get_subnet_pool, 1333 subnet_pool.SubnetPool) 1334 1335 def test_subnet_pools(self): 1336 self.verify_list(self.proxy.subnet_pools, 1337 subnet_pool.SubnetPool) 1338 1339 def test_subnet_pool_update(self): 1340 self.verify_update(self.proxy.update_subnet_pool, 1341 subnet_pool.SubnetPool) 1342 1343 def test_vpn_service_create_attrs(self): 1344 self.verify_create(self.proxy.create_vpn_service, 1345 vpn_service.VPNService) 1346 1347 def test_vpn_service_delete(self): 1348 self.verify_delete(self.proxy.delete_vpn_service, 1349 vpn_service.VPNService, False) 1350 1351 def test_vpn_service_delete_ignore(self): 1352 self.verify_delete(self.proxy.delete_vpn_service, 1353 vpn_service.VPNService, True) 1354 1355 def test_vpn_service_find(self): 1356 self.verify_find(self.proxy.find_vpn_service, 1357 vpn_service.VPNService) 1358 1359 def test_vpn_service_get(self): 1360 self.verify_get(self.proxy.get_vpn_service, vpn_service.VPNService) 1361 1362 def test_vpn_services(self): 1363 self.verify_list(self.proxy.vpn_services, vpn_service.VPNService) 1364 1365 def test_vpn_service_update(self): 1366 self.verify_update(self.proxy.update_vpn_service, 1367 vpn_service.VPNService) 1368 1369 def test_service_provider(self): 1370 self.verify_list(self.proxy.service_providers, 1371 service_provider.ServiceProvider) 1372 1373 def test_auto_allocated_topology_get(self): 1374 self.verify_get(self.proxy.get_auto_allocated_topology, 1375 auto_allocated_topology.AutoAllocatedTopology) 1376 1377 def test_auto_allocated_topology_delete(self): 1378 self.verify_delete(self.proxy.delete_auto_allocated_topology, 1379 auto_allocated_topology.AutoAllocatedTopology, 1380 False) 1381 1382 def test_auto_allocated_topology_delete_ignore(self): 1383 self.verify_delete(self.proxy.delete_auto_allocated_topology, 1384 auto_allocated_topology.AutoAllocatedTopology, 1385 True) 1386 1387 def test_validate_topology(self): 1388 self.verify_get(self.proxy.validate_auto_allocated_topology, 1389 auto_allocated_topology.ValidateTopology, 1390 method_args=[mock.sentinel.project_id], 1391 expected_args=[], 1392 expected_kwargs={"project": mock.sentinel.project_id, 1393 "requires_id": False}) 1394 1395 def test_set_tags(self): 1396 x_network = network.Network.new(id='NETWORK_ID') 1397 self._verify( 1398 'openstack.network.v2.network.Network.set_tags', 1399 self.proxy.set_tags, 1400 method_args=[x_network, ['TAG1', 'TAG2']], 1401 expected_args=[self.proxy, ['TAG1', 'TAG2']], 1402 expected_result=mock.sentinel.result_set_tags) 1403 1404 @mock.patch('openstack.network.v2.network.Network.set_tags') 1405 def test_set_tags_resource_without_tag_suport(self, mock_set_tags): 1406 no_tag_resource = object() 1407 self.assertRaises(exceptions.InvalidRequest, 1408 self.proxy.set_tags, 1409 no_tag_resource, ['TAG1', 'TAG2']) 1410 self.assertEqual(0, mock_set_tags.call_count) 1411 1412 def test_create_floating_ip_port_forwarding(self): 1413 self.verify_create(self.proxy.create_floating_ip_port_forwarding, 1414 port_forwarding.PortForwarding, 1415 method_kwargs={'floating_ip': FIP_ID}, 1416 expected_kwargs={'floatingip_id': FIP_ID}) 1417 1418 def test_delete_floating_ip_port_forwarding(self): 1419 self.verify_delete( 1420 self.proxy.delete_floating_ip_port_forwarding, 1421 port_forwarding.PortForwarding, 1422 ignore_missing=False, 1423 method_args=[FIP_ID, "resource_or_id"], 1424 expected_args=["resource_or_id"], 1425 expected_kwargs={'floatingip_id': FIP_ID}) 1426 1427 def test_delete_floating_ip_port_forwarding_ignore(self): 1428 self.verify_delete( 1429 self.proxy.delete_floating_ip_port_forwarding, 1430 port_forwarding.PortForwarding, 1431 ignore_missing=True, 1432 method_args=[FIP_ID, "resource_or_id"], 1433 expected_args=["resource_or_id"], 1434 expected_kwargs={'floatingip_id': FIP_ID}) 1435 1436 def test_find_floating_ip_port_forwarding(self): 1437 fip = floating_ip.FloatingIP.new(id=FIP_ID) 1438 self._verify( 1439 'openstack.proxy.Proxy._find', 1440 self.proxy.find_floating_ip_port_forwarding, 1441 method_args=[fip, 'port_forwarding_id'], 1442 expected_args=[ 1443 port_forwarding.PortForwarding, 1444 'port_forwarding_id'], 1445 expected_kwargs={ 1446 'ignore_missing': True, 'floatingip_id': FIP_ID}) 1447 1448 def test_get_floating_ip_port_forwarding(self): 1449 fip = floating_ip.FloatingIP.new(id=FIP_ID) 1450 self._verify( 1451 'openstack.proxy.Proxy._get', 1452 self.proxy.get_floating_ip_port_forwarding, 1453 method_args=[fip, 'port_forwarding_id'], 1454 expected_args=[ 1455 port_forwarding.PortForwarding, 1456 'port_forwarding_id'], 1457 expected_kwargs={'floatingip_id': FIP_ID}) 1458 1459 def test_floating_ip_port_forwardings(self): 1460 self.verify_list(self.proxy.floating_ip_port_forwardings, 1461 port_forwarding.PortForwarding, 1462 method_kwargs={'floating_ip': FIP_ID}, 1463 expected_kwargs={'floatingip_id': FIP_ID}) 1464 1465 def test_update_floating_ip_port_forwarding(self): 1466 fip = floating_ip.FloatingIP.new(id=FIP_ID) 1467 self._verify( 1468 'openstack.network.v2._proxy.Proxy._update', 1469 self.proxy.update_floating_ip_port_forwarding, 1470 method_args=[fip, 'port_forwarding_id'], 1471 method_kwargs={'foo': 'bar'}, 1472 expected_args=[ 1473 port_forwarding.PortForwarding, 1474 'port_forwarding_id'], 1475 expected_kwargs={'floatingip_id': FIP_ID, 'foo': 'bar'}) 1476 1477 def test_create_l3_conntrack_helper(self): 1478 self.verify_create(self.proxy.create_conntrack_helper, 1479 l3_conntrack_helper.ConntrackHelper, 1480 method_kwargs={'router': ROUTER_ID}, 1481 expected_kwargs={'router_id': ROUTER_ID}) 1482 1483 def test_delete_l3_conntrack_helper(self): 1484 r = router.Router.new(id=ROUTER_ID) 1485 self.verify_delete( 1486 self.proxy.delete_conntrack_helper, 1487 l3_conntrack_helper.ConntrackHelper, 1488 ignore_missing=False, 1489 method_args=['resource_or_id', r], 1490 expected_args=['resource_or_id'], 1491 expected_kwargs={'router_id': ROUTER_ID},) 1492 1493 def test_delete_l3_conntrack_helper_ignore(self): 1494 r = router.Router.new(id=ROUTER_ID) 1495 self.verify_delete( 1496 self.proxy.delete_conntrack_helper, 1497 l3_conntrack_helper.ConntrackHelper, 1498 ignore_missing=True, 1499 method_args=['resource_or_id', r], 1500 expected_args=['resource_or_id'], 1501 expected_kwargs={'router_id': ROUTER_ID},) 1502 1503 def test_get_l3_conntrack_helper(self): 1504 r = router.Router.new(id=ROUTER_ID) 1505 self._verify( 1506 'openstack.proxy.Proxy._get', 1507 self.proxy.get_conntrack_helper, 1508 method_args=['conntrack_helper_id', r], 1509 expected_args=[ 1510 l3_conntrack_helper.ConntrackHelper, 1511 'conntrack_helper_id'], 1512 expected_kwargs={'router_id': ROUTER_ID}) 1513 1514 def test_l3_conntrack_helpers(self): 1515 self.verify_list(self.proxy.conntrack_helpers, 1516 l3_conntrack_helper.ConntrackHelper, 1517 method_args=[ROUTER_ID], 1518 expected_args=[], 1519 expected_kwargs={'router_id': ROUTER_ID}) 1520 1521 def test_update_l3_conntrack_helper(self): 1522 r = router.Router.new(id=ROUTER_ID) 1523 self._verify( 1524 'openstack.network.v2._proxy.Proxy._update', 1525 self.proxy.update_conntrack_helper, 1526 method_args=['conntrack_helper_id', r], 1527 method_kwargs={'foo': 'bar'}, 1528 expected_args=[ 1529 l3_conntrack_helper.ConntrackHelper, 1530 'conntrack_helper_id'], 1531 expected_kwargs={'router_id': ROUTER_ID, 'foo': 'bar'}) 1532