From c2b148b4c0f728a5893bd01ee0faa379a7b3ac7f Mon Sep 17 00:00:00 2001 From: Leonardo Maycotte Date: Mon, 6 Jun 2016 11:11:59 -0500 Subject: [PATCH] Minor Shared IP infrastructure updates - Adding the RAX_PUBLIC_IP_ZONE constant - Adding the ip_zone_hint param to the create_servers_in_same_cell behavior method - Adding data to the server persona portv4 and portv6 attributes by the update_server_persona method Change-Id: I879483584bb0145dd79be0de2bd1102a5dacd9c3 --- cloudcafe/networking/networks/behaviors.py | 5 +++-- .../networks/extensions/ip_addresses_api/constants.py | 1 + cloudcafe/networking/networks/personas.py | 7 +++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cloudcafe/networking/networks/behaviors.py b/cloudcafe/networking/networks/behaviors.py index 452b089a..655931d3 100644 --- a/cloudcafe/networking/networks/behaviors.py +++ b/cloudcafe/networking/networks/behaviors.py @@ -448,7 +448,8 @@ class NetworkingBehaviors(NetworkingBaseBehaviors): raise TimeoutException(msg) def create_servers_in_same_cell(self, n_servers, name='same_cell_server', - network_ids=None, port_ids=None): + network_ids=None, port_ids=None, + ip_zone_hint=None): """ @summary: Creates n servers in same cell using the first server ID with scheduler hints @@ -476,7 +477,7 @@ class NetworkingBehaviors(NetworkingBaseBehaviors): server = resp.entity # Setting up the scheduler hints for creating other servers - pz = IPAddressesServerZone.PUBLIC_IP_ZONE_NEAR + pz = ip_zone_hint or IPAddressesServerZone.PUBLIC_IP_ZONE_NEAR scheduler_hints = {pz: server.id} else: resp = self.create_networking_server( diff --git a/cloudcafe/networking/networks/extensions/ip_addresses_api/constants.py b/cloudcafe/networking/networks/extensions/ip_addresses_api/constants.py index 610223c7..045863b9 100644 --- a/cloudcafe/networking/networks/extensions/ip_addresses_api/constants.py +++ b/cloudcafe/networking/networks/extensions/ip_addresses_api/constants.py @@ -52,6 +52,7 @@ class IPAddressesServerZone(object): server builds """ + RAX_PUBLIC_IP_ZONE = 'RAX-PUBLIC-IP-ZONE-ID:publicIPZoneId' PUBLIC_IP_ZONE_NEAR = 'public_ip_zone:near' PUBLIC_IP_ZONE_FAR = 'public_ip_zone:far' DIFFERENT_HOST = 'different_host' diff --git a/cloudcafe/networking/networks/personas.py b/cloudcafe/networking/networks/personas.py index b220c6d8..a89389ec 100644 --- a/cloudcafe/networking/networks/personas.py +++ b/cloudcafe/networking/networks/personas.py @@ -296,6 +296,13 @@ class ServerPersona(BaseModel, NetworkingBaseBehaviors): self.server = self.behaviors.get_networking_server(server=self.server) self.isolated_network_id = getattr(self.network, 'id', None) + # Updating the isolated network port attribute + isolated_ports = self.inet_ports + if self.subnetv4 and isolated_ports: + self.portv4 = isolated_ports[0] + if self.subnetv6 and isolated_ports: + self.portv6 = isolated_ports[0] + if clear_errors: self.errors = []