Пример #1
0
    def test_allocates_v4_ips_for_private_network(self):
        private_network = db_api.network_create_safe(admin_context,
                            dict(label="private", project_id="project1",
                                 priority=1))
        private_noise_network = db_api.network_create_safe(admin_context,
                            dict(label="private", project_id="another_project",
                                 priority=1))

        private_v4block = dict(netmask="255.255.255.0", cidr="10.1.1.0/24",
                               gateway="10.1.1.1", broadcast="10.1.1.255",
                               dns1="1.2.3.4", dns2="2.3.4.5")
        private_v4ip = dict(address="10.1.1.2", version=4,
                            ip_block=private_v4block)
        melange_client.allocate_private_net_ip(private_network.id, IgnoreArg(),
                                               project_id="project1",
                                               mac_address=IgnoreArg())\
                                   .InAnyOrder().AndReturn([private_v4ip])
        self.mox.ReplayAll()

        net_info = QuantumManager().allocate_for_instance(admin_context,
                                               instance_id=self.instance_id,
                                               host=None,
                                               project_id="project1",
                                               instance_type_id=1,
                                               vpn=None)

        self.assertEqual(len(net_info), 1)
        assert_network_info_has_ip(self, net_info[0], private_v4ip,
                                         private_network)
Пример #2
0
    def test_allocates_public_and_private_network_ips_from_melange(self):
        network_params = dict(label="private", project_id="some_other_project",
                              priority=1)
        private_noise_network = db_api.network_create_safe(admin_context,
                                                           network_params)

        private_nw, private_ip = self._setup_network("10.1.1.2", "10.1.1.0/24",
                                                     net_label="private",
                                                     project_id="project1")
        melange_client.allocate_private_net_ip(private_nw.id, IgnoreArg(),
                                               project_id="project1",
                                               mac_address=IgnoreArg()).\
                                               AndReturn([private_ip])
        public_nw, public_ip = self._setup_network("77.1.1.2", "77.1.1.0/24",
                                                   net_label="public",
                                                   project_id=None)
        melange_client.allocate_global_net_ip(public_nw.id, IgnoreArg(),
                                               project_id="project1",
                                               mac_address=IgnoreArg()).\
                                               AndReturn([public_ip])
        self.mox.ReplayAll()

        net_info = QuantumManager().allocate_for_instance(admin_context,
                                               instance_id=self.instance_id,
                                               host=None,
                                               project_id="project1",
                                               instance_type_id=1,
                                               vpn=None)
        [private_net, public_net] = net_info

        assert_network_info_has_ip(self, private_net, private_ip, private_nw)
        assert_network_info_has_ip(self, public_net, public_ip, public_nw)
Пример #3
0
 def allocate_ip(vif):
 
     if is_private_network(vif):
         return melange.allocate_private_net_ip(
             vif['network_id'],
             vif['id'], project_id=project_id,
             mac_address=vif['address'])
     
     return melange.allocate_global_net_ip(
         vif['network_id'],
         vif['id'], project_id=project_id,
         mac_address=vif['address'])
Пример #4
0
    def test_allocates_v6_ips_from_melange(self):
        quantum_mgr = QuantumManager()
        mac_address = "11:22:33:44:55:66"
        self._stub_out_mac_address_generation(mac_address, quantum_mgr)
        network = db_api.network_create_safe(admin_context,
                                             dict(project_id="project1",
                                                  cidr_v6="fe::/96",
                                                  priority=1))

        v4_block = dict(netmask="255.255.255.0", cidr="10.1.1.0/24",
                               gateway="10.1.1.1", broadcast="10.1.1.255",
                               dns1="1.2.3.4", dns2="2.3.4.5")
        allocated_v4ip = dict(address="10.1.1.2", version=4,
                              ip_block=v4_block)

        v6_block = dict(netmask="f:f:f:f::", cidr="fe::/96",
                        gateway="fe::1", broadcast="fe::ffff:ffff")
        allocated_v6ip = dict(address="fe::2", version=6, ip_block=v6_block)
        v6_block_prefix_length = 96

        melange_client.allocate_private_net_ip(network.id, IgnoreArg(),
                                               project_id="project1",
                                               mac_address=mac_address)\
                                   .AndReturn([allocated_v4ip, allocated_v6ip])
        self.mox.ReplayAll()

        [net_info] = quantum_mgr.allocate_for_instance(admin_context,
                                               instance_id=self.instance_id,
                                               host="localhost",
                                               project_id="project1",
                                               instance_type_id=1,
                                               vpn="vpn_address")
        vif_config_net_params = net_info[1]

        assert_network_info_has_ip(self, net_info, allocated_v4ip, network)
        self.assertEqual(vif_config_net_params['ip6s'],
                         [{'ip': 'fe::2',
                           'netmask': v6_block_prefix_length,
                           'enabled': '1'}])
        self.assertEqual(vif_config_net_params['gateway6'], "fe::1")
Пример #5
0
    def test_allocate_private_net_ip_posts_to_tenant_scoped_allocations(self):
        network_id = "network1"
        vif_id = "vif1"
        project_id = "project2"
        mac_address = "11:22:33:44:55:66"
        request_body = json.dumps(dict(network=dict(mac_address=mac_address,
                                                    tenant_id=project_id)))
        mock_client = setup_mock_client(self.mox)
        stub_response = ResponseStub({'ip_addresses': [{'id': "123"}]})
        mock_client.post("/v0.1/ipam/tenants/project2/networks/network1/"
                         "interfaces/vif1/ip_allocations", body=request_body,
                         headers=json_content_type()).AndReturn(stub_response)

        self.mox.ReplayAll()

        ip_addresses = melange_client.allocate_private_net_ip(
            network_id, vif_id, project_id=project_id,
            mac_address=mac_address)
        self.assertEqual(ip_addresses, [{'id': "123"}])