Revision d2c3c533

b/snf-cyclades-app/synnefo/api/servers.py
380 380
        assert isinstance(personality, list)
381 381
        networks = server.get("networks", [])
382 382
        assert isinstance(networks, list)
383
        floating_ips = server.get("floating_ips", [])
384
        assert isinstance(floating_ips, list)
385 383
    except (KeyError, AssertionError):
386 384
        raise faults.BadRequest("Malformed request")
387 385

  
......
396 394

  
397 395
    vm = servers.create(user_id, name, password, flavor, image,
398 396
                        metadata=metadata, personality=personality,
399
                        networks=networks,
400
                        floating_ips=floating_ips)
397
                        networks=networks)
401 398

  
402 399
    server = vm_to_dict(vm, detail=True)
403 400
    server['status'] = 'BUILD'
b/snf-cyclades-app/synnefo/api/tests/servers.py
498 498
                               DEFAULT_INSTANCE_NETWORKS=["SNF:ANY_PUBLIC"]):
499 499
            response = self.mypost('servers', 'test_user',
500 500
                                   json.dumps(request), 'json')
501
        self.assertFault(response, 403, "forbidden")
501
        self.assertBadRequest(response)
502 502

  
503 503
        # test wrong user
504 504
        request = deepcopy(self.request)
......
512 512

  
513 513
        # Test floating IPs
514 514
        request = deepcopy(self.request)
515
        request["server"]["networks"] = [{"uuid": bnet1.network.id}]
516 515
        fp1 = mfactory.FloatingIPFactory(address="10.0.0.2",
517 516
                                         userid="test_user",
518 517
                                         network=self.network,
......
521 520
                                         userid="test_user",
522 521
                                         network=self.network,
523 522
                                         nic=None)
524
        request["server"]["floating_ips"] = [fp1.id, fp2.id]
523
        request["server"]["networks"] = [{"uuid": bnet1.network.id},
524
                                         {"uuid": fp1.network.id,
525
                                          "fixed_ip": fp1.address},
526
                                         {"uuid": fp2.network.id,
527
                                          "fixed_ip": fp2.address}]
525 528
        with override_settings(settings,
526 529
                               DEFAULT_INSTANCE_NETWORKS=[bnet3.network.id]):
527 530
            with mocked_quotaholder():
......
538 541
        self.assertEqual(len(kwargs["nics"]), 4)
539 542
        self.assertEqual(kwargs["nics"][0]["network"],
540 543
                         bnet3.network.backend_id)
541
        self.assertEqual(kwargs["nics"][1]["network"], fp1.network.backend_id)
542
        self.assertEqual(kwargs["nics"][1]["ip"], fp1.address)
543
        self.assertEqual(kwargs["nics"][2]["network"], fp2.network.backend_id)
544
        self.assertEqual(kwargs["nics"][2]["ip"], fp2.address)
545
        self.assertEqual(kwargs["nics"][3]["network"],
544
        self.assertEqual(kwargs["nics"][1]["network"],
546 545
                         bnet1.network.backend_id)
546
        self.assertEqual(kwargs["nics"][2]["network"], fp1.network.backend_id)
547
        self.assertEqual(kwargs["nics"][2]["ip"], fp1.address)
548
        self.assertEqual(kwargs["nics"][3]["network"], fp2.network.backend_id)
549
        self.assertEqual(kwargs["nics"][3]["ip"], fp2.address)
547 550

  
548 551
    def test_create_server_no_flavor(self, mrapi):
549 552
        request = deepcopy(self.request)
b/snf-cyclades-app/synnefo/logic/servers.py
274 274
            port = util.get_port(port_id, userid, for_update=True)
275 275
            ports.append(port)
276 276
        elif net_id is not None:
277
            address = net.get("fixed_ip")
277 278
            network = util.get_network(net_id, userid, non_deleted=True)
278 279
            if network.public:
279
                raise faults.Forbidden("Can not connect to public network")
280
            address = net.get("fixed_ip")
281
            port = _create_port(userid, network, address=address)
280
                if address is None:
281
                    msg = ("Can not connect to public network %s. Specify"
282
                           " 'fixed_ip'" " attribute to connect to a public"
283
                           " network")
284
                    raise faults.BadRequest(msg % network.id)
285
                floating_ip = util.get_floating_ip_by_address(userid,
286
                                                              address,
287
                                                              for_update=True)
288
                port = _create_port(userid, network, use_ipaddress=floating_ip)
289
            else:
290
                port = _create_port(userid, network, address=address)
282 291
            ports.append(port)
283 292
        else:
284
            raise faults.BadRequest("")
293
            raise faults.BadRequest("Network 'uuid' or 'port' attribute"
294
                                    " is required.")
285 295

  
286 296
    for index, port in enumerate(ports):
287 297
        associate_port_with_machine(port, vm)

Also available in: Unified diff