Revision 92d2d1ce snf-cyclades-app/synnefo/api/tests/servers.py

b/snf-cyclades-app/synnefo/api/tests/servers.py
122 122
        """Test if a server details are returned."""
123 123
        db_vm = self.vm2
124 124
        user = self.vm2.userid
125
        net = mfactory.NetworkFactory()
126
        nic = mfactory.NetworkInterfaceFactory(machine=self.vm2, network=net,
127
                                               ipv6="::babe")
125
        ip4 = mfactory.IPv4AddressFactory(nic__machine=self.vm2)
126
        nic = ip4.nic
127
        net = ip4.network
128
        ip6 = mfactory.IPv6AddressFactory(nic=nic, network=net)
129
        nic.mac = "aa:00:11:22:33:44"
130
        nic.save()
128 131

  
129 132
        db_vm_meta = mfactory.VirtualMachineMetadataFactory(vm=db_vm)
130 133

  
......
141 144
        self.assertEqual(api_nic['network_id'], str(net.id))
142 145
        self.assertEqual(api_nic['mac_address'], nic.mac)
143 146
        self.assertEqual(api_nic['firewallProfile'], nic.firewall_profile)
144
        self.assertEqual(api_nic['ipv4'], nic.ipv4)
145
        self.assertEqual(api_nic['ipv6'], nic.ipv6)
147
        self.assertEqual(api_nic['ipv4'], ip4.address)
148
        self.assertEqual(api_nic['ipv6'], ip6.address)
146 149
        self.assertEqual(api_nic['OS-EXT-IPS:type'], "fixed")
147 150
        self.assertEqual(api_nic['id'], nic.id)
148 151
        api_address = server["addresses"]
149 152
        self.assertEqual(api_address[str(net.id)], [
150
            {"version": 4, "addr": nic.ipv4, "OS-EXT-IPS:type": "fixed"},
151
            {"version": 6, "addr": nic.ipv6, "OS-EXT-IPS:type": "fixed"}
153
            {"version": 4, "addr": ip4.address, "OS-EXT-IPS:type": "fixed"},
154
            {"version": 6, "addr": ip6.address, "OS-EXT-IPS:type": "fixed"}
152 155
        ])
153 156

  
154 157
        metadata = server['metadata']
......
184 187
            self.assertEqual(server["SNF:fqdn"], "")
185 188

  
186 189
        # IPv6 NIC
187
        nic = mfactory.NetworkInterfaceFactory(machine=vm, ipv4=None,
188
                                               ipv6="babe::", state="ACTIVE",
189
                                               network__public=True)
190
        ipv6_address = mfactory.IPv6AddressFactory(nic__machine=vm,
191
                                                   network__public=True)
190 192
        with override_settings(settings,
191 193
                               CYCLADES_SERVERS_FQDN=None):
192 194
            response = self.myget("servers/%d" % vm.id, vm.userid)
193 195
            server = json.loads(response.content)['server']
194
            self.assertEqual(server["SNF:fqdn"], nic.ipv6)
196
            self.assertEqual(server["SNF:fqdn"], ipv6_address.address)
195 197

  
196 198
        # IPv4 NIC
197
        nic = mfactory.NetworkInterfaceFactory(machine=vm,
198
                                               network__public=True,
199
                                               state="ACTIVE")
199
        ipv4_address = mfactory.IPv4AddressFactory(nic__machine=vm,
200
                                                   network__public=True)
200 201
        with override_settings(settings,
201 202
                               CYCLADES_SERVERS_FQDN=None):
202 203
            response = self.myget("servers/%d" % vm.id, vm.userid)
203 204
            server = json.loads(response.content)['server']
204
            self.assertEqual(server["SNF:fqdn"], nic.ipv4)
205
            self.assertEqual(server["SNF:fqdn"], ipv4_address.address)
205 206

  
206 207
    def test_server_port_forwarding(self):
207 208
        vm = mfactory.VirtualMachineFactory()
......
229 230
            server = json.loads(response.content)['server']
230 231
            self.assertEqual(server["SNF:port_forwarding"], {})
231 232

  
232
        mfactory.NetworkInterfaceFactory(machine=vm, ipv4="192.168.2.2",
233
                                         network__public=True)
233
        mfactory.IPv4AddressFactory(nic__machine=vm,
234
                                    network__public=True,
235
                                    address="192.168.2.2")
234 236
        with override_settings(settings,
235 237
                               CYCLADES_PORT_FORWARDING=ports):
236 238
            response = self.myget("servers/%d" % vm.id, vm.userid)
......
335 337
    def setUp(self):
336 338
        self.flavor = mfactory.FlavorFactory()
337 339
        # Create public network and backend
338
        self.network = mfactory.NetworkFactory(public=True)
340
        subnet = mfactory.IPv4SubnetFactory(network__public=True)
341
        self.network = subnet.network
339 342
        self.backend = mfactory.BackendFactory()
340 343
        mfactory.BackendNetworkFactory(network=self.network,
341 344
                                       backend=self.backend,
......
386 389

  
387 390
    def test_create_network_settings(self, mrapi):
388 391
        mrapi().CreateInstance.return_value = 12
389
        bnet1 = mfactory.BackendNetworkFactory(operstate="ACTIVE",
390
                                               backend=self.backend)
391
        bnet2 = mfactory.BackendNetworkFactory(operstate="ACTIVE",
392
                                               backend=self.backend)
393
        bnet3 = mfactory.BackendNetworkFactory(network__userid="test_user",
394
                                               operstate="ACTIVE",
395
                                               backend=self.backend)
396
        bnet4 = mfactory.BackendNetworkFactory(network__userid="test_user",
397
                                               operstate="ACTIVE",
398
                                               backend=self.backend)
392
        # Create public network and backend
393
        subnet1 = mfactory.IPv4SubnetFactory()
394
        bnet1 = mfactory.BackendNetworkFactory(network=subnet1.network,
395
                                               backend=self.backend,
396
                                               operstate="ACTIVE")
397
        subnet2 = mfactory.IPv4SubnetFactory()
398
        bnet2 = mfactory.BackendNetworkFactory(network=subnet2.network,
399
                                               backend=self.backend,
400
                                               operstate="ACTIVE")
401
        subnet3 = mfactory.IPv4SubnetFactory(network__userid="test_user")
402
        bnet3 = mfactory.BackendNetworkFactory(network=subnet3.network,
403
                                               backend=self.backend,
404
                                               operstate="ACTIVE")
405
        subnet4 = mfactory.IPv4SubnetFactory(network__userid="test_user")
406
        bnet4 = mfactory.BackendNetworkFactory(network=subnet4.network,
407
                                               backend=self.backend,
408
                                               operstate="ACTIVE")
399 409
        # User requested private networks
400 410
        request = deepcopy(self.request)
401 411
        request["server"]["networks"] = [bnet3.network.id, bnet4.network.id]
......
464 474
        # Test floating IPs
465 475
        request = deepcopy(self.request)
466 476
        request["server"]["networks"] = [bnet4.network.id]
467
        network = mfactory.NetworkFactory(subnet="10.0.0.0/24")
468
        mfactory.BackendNetworkFactory(network=network,
469
                                       backend=self.backend,
470
                                       operstate="ACTIVE")
471
        fp1 = mfactory.IPAddressFactory(ipv4="10.0.0.2",
477
        fp1 = mfactory.FloatingIPFactory(address="10.0.0.2",
472 478
                                         userid="test_user",
473
                                         network=network, machine=None)
474
        fp2 = mfactory.IPAddressFactory(ipv4="10.0.0.3", network=network,
479
                                         nic=None)
480
        fp2 = mfactory.FloatingIPFactory(address="10.0.0.3",
475 481
                                         userid="test_user",
476
                                         machine=None)
477
        request["server"]["floating_ips"] = [fp1.ipv4, fp2.ipv4]
482
                                         nic=None)
483
        request["server"]["floating_ips"] = [fp1.address, fp2.address]
478 484
        with override_settings(settings,
479 485
                               DEFAULT_INSTANCE_NETWORKS=[bnet3.network.id]):
480 486
            with mocked_quotaholder():
......
483 489
        self.assertEqual(response.status_code, 202)
484 490
        api_server = json.loads(response.content)['server']
485 491
        vm = VirtualMachine.objects.get(id=api_server["id"])
486
        fp1 = IPAddress.objects.get(id=fp1.id)
487
        fp2 = IPAddress.objects.get(id=fp2.id)
488
        self.assertEqual(fp1.machine, vm)
489
        self.assertEqual(fp2.machine, vm)
492
        fp1 = IPAddress.objects.get(floating_ip=True, id=fp1.id)
493
        fp2 = IPAddress.objects.get(floating_ip=True, id=fp2.id)
494
        self.assertEqual(fp1.nic.machine, vm)
495
        self.assertEqual(fp2.nic.machine, vm)
490 496
        name, args, kwargs = mrapi().CreateInstance.mock_calls[2]
491 497
        self.assertEqual(len(kwargs["nics"]), 4)
492 498
        self.assertEqual(kwargs["nics"][0]["network"],
493 499
                         bnet3.network.backend_id)
494
        self.assertEqual(kwargs["nics"][1]["network"], network.backend_id)
495
        self.assertEqual(kwargs["nics"][1]["ip"], fp1.ipv4)
496
        self.assertEqual(kwargs["nics"][2]["network"], network.backend_id)
497
        self.assertEqual(kwargs["nics"][2]["ip"], fp2.ipv4)
500
        self.assertEqual(kwargs["nics"][1]["network"], fp1.network.backend_id)
501
        self.assertEqual(kwargs["nics"][1]["ip"], fp1.address)
502
        self.assertEqual(kwargs["nics"][2]["network"], fp2.network.backend_id)
503
        self.assertEqual(kwargs["nics"][2]["ip"], fp2.address)
498 504
        self.assertEqual(kwargs["nics"][3]["network"],
499 505
                         bnet4.network.backend_id)
500 506

  
......
510 516
        """Test if the create server call returns the expected response
511 517
           if a valid request has been speficied."""
512 518
        mrapi().CreateInstance.side_effect = GanetiApiError("..ganeti is down")
513
        # Create public network and backend
514
        network = mfactory.NetworkFactory(public=True)
515
        backend = mfactory.BackendFactory()
516
        mfactory.BackendNetworkFactory(network=network, backend=backend)
517 519

  
518 520
        request = self.request
519 521
        with mocked_quotaholder():

Also available in: Unified diff