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