~corey.bryant/ubuntu/trusty/neutron/lp1318721

« back to all changes in this revision

Viewing changes to neutron/tests/unit/test_dhcp_agent.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short, Corey Bryant
  • Date: 2014-10-06 09:15:06 UTC
  • mfrom: (28.1.4 trusty-proposed)
  • Revision ID: package-import@ubuntu.com-20141006091506-cesvev43moce4y74
Tags: 1:2014.1.3-0ubuntu1
[ Corey Bryant ]
* Resynchronize with stable/icehouse (4a0210e) (LP: #1377136):
  - [3a30d19] Deletes floating ip related connection states
  - [dd4b77f] Forbid regular users to reset admin-only attrs to default values
  - [dc2c893] Add delete operations for the ODL MechanismDriver
  - [b51e2c7] Add missing ml2 plugin to migration 1fcfc149aca4
  - [a17a500] Don't convert numeric protocol values to int
  - [3a85946] NSX: Optionally not enforce nat rule match length check
  - [645f984] Don't spawn metadata-proxy for non-isolated nets
  - [b464d89] Big Switch: Check for 'id' in port before lookup
  - [3116ffa] use TRUE in SQL for boolean var
  - [3520e66] call security_groups_member_updated in port_update
  - [50e1534] Don't allow user to set firewall rule with port and no protocol
  - [0061533] BSN: Add context to backend request for debugging
  - [6de6d61] Improve ODL ML2 Exception Handling
  - [2a4153d] Send network name and uuid to subnet create
  - [b5e3c9a] BSN: Allow concurrent reads to consistency DB
  - [b201432] Big Switch: Retry on 503 errors from backend
  - [f6c47ee] NSX: log request body to NSX as debug
  - [97d622a] Fix metadata agent's auth info caching
  - [255df45] NSX: Correct allowed_address_pair return value on create_port
  - [5bea041] Neutron should not use the neutronclient utils module for import_class
  - [d5314e2] Cisco N1kv plugin to send subtype on network profile creation
  - [f32d1ce] Pass object to policy when finding fields to strip
  - [8b5f6be] Call policy.init() once per API request
  - [9a6d811] Perform policy checks only once on list responses
  - [c48db90] Datacenter moid should not be tuple
  - [161d465] Allow unsharing a network used as gateway/floatingip
  - [9574a2f] Add support for router scheduling in Cisco N1kv Plugin
  - [6f54565] Fix func job hook script permission problems
  - [ea43103] Add hook scripts for the functional infra job
  - [8161cb7] Fixes Hyper-V agent issue on Hyper-V 2008 R2
  - [8e99cfd] Fixes Hyper-V issue due to ML2 RPC versioning
  - [69f9121] Ensure ip6tables are used only if ipv6 is enabled in kernel
  - [399b809] Remove explicit dependency on amqplib
  - [a872143] Clear entries in Cisco N1KV specific tables on rollback
  - [ad82fad] Verify ML2 type driver exists before calling del
  - [af2cc98] Big Switch: Only update hash header on success
  - [b1e5eec] Ignore variable column widths in ovsdb functional tests
  - [4a0210e] VMWare: don't notify on disassociate_floatingips()

Show diffs side-by-side

added added

removed removed

Lines of Context:
88
88
 
89
89
fake_port1 = dhcp.DictModel(dict(id='12345678-1234-aaaa-1234567890ab',
90
90
                            device_id='dhcp-12345678-1234-aaaa-1234567890ab',
 
91
                            device_owner='',
91
92
                            allocation_pools=fake_subnet1_allocation_pools,
92
93
                            mac_address='aa:bb:cc:dd:ee:ff',
93
94
                            network_id='12345678-1234-5678-1234567890ab',
94
95
                            fixed_ips=[fake_fixed_ip1]))
95
96
 
96
97
fake_port2 = dhcp.DictModel(dict(id='12345678-1234-aaaa-123456789000',
 
98
                            device_owner='',
97
99
                            mac_address='aa:bb:cc:dd:ee:99',
98
100
                            network_id='12345678-1234-5678-1234567890ab',
99
101
                            fixed_ips=[]))
111
113
                             subnets=[fake_subnet1, fake_subnet2],
112
114
                             ports=[fake_port1]))
113
115
 
 
116
isolated_network = dhcp.NetModel(
 
117
    True, dict(
 
118
        id='12345678-1234-5678-1234567890ab',
 
119
        tenant_id='aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa',
 
120
        admin_state_up=True,
 
121
        subnets=[fake_subnet1],
 
122
        ports=[fake_port1]))
 
123
 
 
124
empty_network = dhcp.NetModel(
 
125
    True, dict(
 
126
        id='12345678-1234-5678-1234567890ab',
 
127
        tenant_id='aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa',
 
128
        admin_state_up=True,
 
129
        subnets=[fake_subnet1],
 
130
        ports=[]))
 
131
 
114
132
fake_meta_network = dhcp.NetModel(
115
133
    True, dict(id='12345678-1234-5678-1234567890ab',
116
134
               tenant_id='aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa',
497
515
        self.mock_init_p.stop()
498
516
        super(TestDhcpAgentEventHandler, self).tearDown()
499
517
 
500
 
    def _enable_dhcp_helper(self, isolated_metadata=False):
501
 
        if isolated_metadata:
 
518
    def _enable_dhcp_helper(self, network, enable_isolated_metadata=False,
 
519
                            is_isolated_network=False):
 
520
        if enable_isolated_metadata:
502
521
            cfg.CONF.set_override('enable_isolated_metadata', True)
503
 
        self.plugin.get_network_info.return_value = fake_network
504
 
        self.dhcp.enable_dhcp_helper(fake_network.id)
 
522
        self.plugin.get_network_info.return_value = network
 
523
        self.dhcp.enable_dhcp_helper(network.id)
505
524
        self.plugin.assert_has_calls(
506
 
            [mock.call.get_network_info(fake_network.id)])
507
 
        self.call_driver.assert_called_once_with('enable', fake_network)
508
 
        self.cache.assert_has_calls([mock.call.put(fake_network)])
509
 
        if isolated_metadata:
 
525
            [mock.call.get_network_info(network.id)])
 
526
        self.call_driver.assert_called_once_with('enable', network)
 
527
        self.cache.assert_has_calls([mock.call.put(network)])
 
528
        if is_isolated_network:
510
529
            self.external_process.assert_has_calls([
511
530
                mock.call(
512
531
                    cfg.CONF,
518
537
        else:
519
538
            self.assertFalse(self.external_process.call_count)
520
539
 
521
 
    def test_enable_dhcp_helper_enable_isolated_metadata(self):
522
 
        self._enable_dhcp_helper(isolated_metadata=True)
 
540
    def test_enable_dhcp_helper_enable_metadata_isolated_network(self):
 
541
        self._enable_dhcp_helper(isolated_network,
 
542
                                 enable_isolated_metadata=True,
 
543
                                 is_isolated_network=True)
 
544
 
 
545
    def test_enable_dhcp_helper_enable_metadata_no_gateway(self):
 
546
        isolated_network_no_gateway = copy.deepcopy(isolated_network)
 
547
        isolated_network_no_gateway.subnets[0].gateway_ip = None
 
548
 
 
549
        self._enable_dhcp_helper(isolated_network_no_gateway,
 
550
                                 enable_isolated_metadata=True,
 
551
                                 is_isolated_network=True)
 
552
 
 
553
    def test_enable_dhcp_helper_enable_metadata_nonisolated_network(self):
 
554
        nonisolated_network = copy.deepcopy(isolated_network)
 
555
        nonisolated_network.ports[0].device_owner = "network:router_interface"
 
556
        nonisolated_network.ports[0].fixed_ips[0].ip_address = '172.9.9.1'
 
557
 
 
558
        self._enable_dhcp_helper(nonisolated_network,
 
559
                                 enable_isolated_metadata=True,
 
560
                                 is_isolated_network=False)
 
561
 
 
562
    def test_enable_dhcp_helper_enable_metadata_empty_network(self):
 
563
        self._enable_dhcp_helper(empty_network,
 
564
                                 enable_isolated_metadata=True,
 
565
                                 is_isolated_network=True)
523
566
 
524
567
    def test_enable_dhcp_helper(self):
525
 
        self._enable_dhcp_helper()
 
568
        self._enable_dhcp_helper(fake_network)
526
569
 
527
570
    def test_enable_dhcp_helper_down_network(self):
528
571
        self.plugin.get_network_info.return_value = fake_down_network