aboutsummaryrefslogtreecommitdiffstats
path: root/sfc/lib/utils.py
diff options
context:
space:
mode:
authorJuan Vidal <juan.vidal.allende@ericsson.com>2017-02-21 12:49:32 +0000
committerJuan Vidal <juan.vidal.allende@ericsson.com>2017-03-01 09:29:15 +0000
commit70f8479bf1d300a7892ae56f06d7e60fc70e6107 (patch)
treed45380c511fd6cb52824eab2b0633cf24b3f5154 /sfc/lib/utils.py
parentcaa4f781910cf8a4ecac82cdae7de50ccd216f3b (diff)
Remove get_floating_ip_2 from sfc_symmetric_chain
Using the new functions in functest to retrieve the nova ID for a VNF instance, it is possible to use a generic solution at the problem of getting floating ips deterministcally to the instances Change-Id: Ie77820b0f466dcbf8ac771f12b5aee55ef74ead5 Signed-off-by: Juan Vidal <juan.vidal.allende@ericsson.com>
Diffstat (limited to 'sfc/lib/utils.py')
-rw-r--r--sfc/lib/utils.py56
1 files changed, 24 insertions, 32 deletions
diff --git a/sfc/lib/utils.py b/sfc/lib/utils.py
index 6a1192b3..2b8bdc13 100644
--- a/sfc/lib/utils.py
+++ b/sfc/lib/utils.py
@@ -194,6 +194,16 @@ def ping(remote, retries=100, retry_timeout=1):
return False
+def assign_floating_ip(nova_client, neutron_client, instance_id):
+ instance = nova_client.servers.get(instance_id)
+ floating_ip = os_utils.create_floating_ip(neutron_client)['fip_addr']
+ instance.add_floating_ip(floating_ip)
+ logger.info("Assigned floating ip [%s] to instance [%s]"
+ % (floating_ip, instance.name))
+
+ return floating_ip
+
+
def get_floating_ips(nova_client, neutron_client):
ips = []
instances = nova_client.servers.list()
@@ -222,38 +232,6 @@ def get_floating_ips(nova_client, neutron_client):
return server_ip, client_ip, ips[1], ips[0]
-# TODO (jvidal): This is pure scaffolding, it needs to be merged with
-# get_floating_ips in the future
-def get_floating_ips_2(nova_client, neutron_client):
- sf_ip = None
- client_ip = None
- server_ip = None
- instances = nova_client.servers.list()
- for instance in instances:
- floatip_dic = os_utils.create_floating_ip(neutron_client)
- floatip = floatip_dic['fip_addr']
- instance.add_floating_ip(floatip)
- logger.info("Instance name and ip %s:%s " % (instance.name, floatip))
- logger.info("Waiting for instance %s:%s to come up" %
- (instance.name, floatip))
- if not ping(floatip):
- logger.info("Instance %s:%s didn't come up" %
- (instance.name, floatip))
- return None
-
- if instance.name == "server":
- logger.info("Server:%s is reachable" % floatip)
- server_ip = floatip
- elif instance.name == "client":
- logger.info("Client:%s is reachable" % floatip)
- client_ip = floatip
- else:
- logger.info("SF:%s is reachable" % floatip)
- sf_ip = floatip
-
- return server_ip, client_ip, sf_ip
-
-
def start_http_server(ip):
"""Start http server on a given machine, Can be VM"""
cmd = "\'python -m SimpleHTTPServer 80"
@@ -415,3 +393,17 @@ def setup_compute_node(cidr, compute_nodes):
compute.run_cmd(add_cidr)
else:
logger.info("route %s already exists" % cidr)
+
+
+def get_nova_id(tacker_client, resource, vnf_id=None, vnf_name=None):
+ vnf = os_tacker.get_vnf(tacker_client, vnf_id, vnf_name)
+ try:
+ if vnf is None:
+ raise Exception("VNF not found")
+ heat = os_utils.get_heat_client()
+ resource = heat.resources.get(vnf['instance_id'], resource)
+ return resource.attributes['id']
+ except:
+ logger.error("Cannot get nova ID for VNF (id='%s', name='%s')"
+ % (vnf_id, vnf_name))
+ return None