Revision 81814446 snf-tools/synnefo_tools/burnin/cyclades_common.py
b/snf-tools/synnefo_tools/burnin/cyclades_common.py | ||
---|---|---|
452 | 452 |
# Verify quotas |
453 | 453 |
self._check_quotas(network=-len(networks)) |
454 | 454 |
|
455 |
def _get_public_network(self, networks=None): |
|
456 |
"""Get the public network""" |
|
455 |
def _get_public_networks(self, networks=None):
|
|
456 |
"""Get the public networks"""
|
|
457 | 457 |
if networks is None: |
458 | 458 |
networks = self._get_list_of_networks(detail=True) |
459 |
self.info("Getting the public network") |
|
459 |
self.info("Getting the public networks") |
|
460 |
public_networks = [] |
|
460 | 461 |
for net in networks: |
461 | 462 |
if net['SNF:floating_ip_pool'] and net['public']: |
462 |
return net |
|
463 |
self.fail("Could not find a public network to use") |
|
463 |
public_networks.append(net) |
|
464 |
|
|
465 |
self.assertNotEqual(public_networks, [], |
|
466 |
"Could not find a public network to use") |
|
467 |
return public_networks |
|
464 | 468 |
|
465 | 469 |
def _create_floating_ip(self): |
466 | 470 |
"""Create a new floating ip""" |
467 |
pub_net = self._get_public_network() |
|
468 |
self.info("Creating a new floating ip for network with id %s", |
|
469 |
pub_net['id']) |
|
470 |
fip = self.clients.network.create_floatingip(pub_net['id']) |
|
471 |
# Verify that floating ip has been created |
|
472 |
fips = self.clients.network.list_floatingips() |
|
473 |
fips = [f['id'] for f in fips] |
|
474 |
self.assertIn(fip['id'], fips) |
|
475 |
# Verify quotas |
|
476 |
self._check_quotas(ip=+1) |
|
477 |
# Check that IP is IPv4 |
|
478 |
self.assertEquals(IPy.IP(fip['floating_ip_address']).version(), 4) |
|
471 |
pub_nets = self._get_public_networks() |
|
472 |
for pub_net in pub_nets: |
|
473 |
self.info("Creating a new floating ip for network with id %s", |
|
474 |
pub_net['id']) |
|
475 |
try: |
|
476 |
fip = self.clients.network.create_floatingip(pub_net['id']) |
|
477 |
except ClientError as err: |
|
478 |
self.warning("%s: %s", err.message, err.details) |
|
479 |
continue |
|
480 |
# Verify that floating ip has been created |
|
481 |
fips = self.clients.network.list_floatingips() |
|
482 |
fips = [f['id'] for f in fips] |
|
483 |
self.assertIn(fip['id'], fips) |
|
484 |
# Verify quotas |
|
485 |
self._check_quotas(ip=+1) |
|
486 |
# Check that IP is IPv4 |
|
487 |
self.assertEquals(IPy.IP(fip['floating_ip_address']).version(), 4) |
|
488 |
|
|
489 |
self.info("Floating IP %s with id %s created", |
|
490 |
fip['floating_ip_address'], fip['id']) |
|
491 |
return fip |
|
479 | 492 |
|
480 |
self.info("Floating IP %s with id %s created", |
|
481 |
fip['floating_ip_address'], fip['id']) |
|
482 |
return fip |
|
493 |
self.fail("No more IP addresses available") |
|
483 | 494 |
|
484 | 495 |
def _create_port(self, network_id, device_id=None, floating_ip=None): |
485 | 496 |
"""Create a new port attached to the a specific network""" |
... | ... | |
540 | 551 |
def _disconnect_from_network(self, server, network=None): |
541 | 552 |
"""Disconnnect server from network""" |
542 | 553 |
if network is None: |
543 |
# Disconnect from public network |
|
544 |
network = self._get_public_network() |
|
554 |
# Disconnect from all public networks |
|
555 |
for net in self._get_public_networks(): |
|
556 |
self._disconnect_from_network(server, network=net) |
|
557 |
return |
|
545 | 558 |
|
546 | 559 |
lports = self.clients.network.list_ports() |
547 | 560 |
ports = [] |
... | ... | |
569 | 582 |
"""Delete floating ips""" |
570 | 583 |
# Renew the list of floating IP objects |
571 | 584 |
# (It may have been changed, i.e. a port may have been deleted). |
585 |
if not fips: |
|
586 |
return |
|
572 | 587 |
fip_ids = [f['id'] for f in fips] |
573 | 588 |
new_fips = [f for f in self.clients.network.list_floatingips() |
574 | 589 |
if f['id'] in fip_ids] |
Also available in: Unified diff