From 70f8479bf1d300a7892ae56f06d7e60fc70e6107 Mon Sep 17 00:00:00 2001 From: Juan Vidal Date: Tue, 21 Feb 2017 12:49:32 +0000 Subject: 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 --- sfc/lib/utils.py | 56 ++++++++++++++++++++++++-------------------------------- 1 file changed, 24 insertions(+), 32 deletions(-) (limited to 'sfc/lib/utils.py') 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 -- cgit 1.2.3-korg