def create_network(neutron_client, net, subnet1, cidr1,
                    router, subnet2=None, cidr2=None):
-    """Network assoc will not work for networks/subnets created by this function.
+    """Network assoc won't work for networks/subnets created by this function.
 
     It is an ODL limitation due to it handling routers as vpns.
     See https://bugs.opendaylight.org/show_bug.cgi?id=6962"""
     return str(os.environ['INSTALLER_IP'])
 
 
+def get_instance_ip(instance):
+    instance_ip = instance.networks.itervalues().next()[0]
+    return instance_ip
+
+
 def wait_for_instance(instance):
     logger.info("Waiting for instance %s to get a DHCP lease..." % instance.id)
     # The sleep this function replaced waited for 80s
 
         sg_id,
         secgroup_name=TESTCASE_CONFIG.secgroup_name,
         compute_node=av_zone_1)
-    vm_2_ip = vm_2.networks.itervalues().next()[0]
+    vm_2_ip = test_utils.get_instance_ip(vm_2)
 
     vm_3 = test_utils.create_instance(
         nova_client,
         sg_id,
         secgroup_name=TESTCASE_CONFIG.secgroup_name,
         compute_node=av_zone_2)
-    vm_3_ip = vm_3.networks.itervalues().next()[0]
+    vm_3_ip = test_utils.get_instance_ip(vm_3)
 
     vm_5 = test_utils.create_instance(
         nova_client,
         sg_id,
         secgroup_name=TESTCASE_CONFIG.secgroup_name,
         compute_node=av_zone_2)
-    vm_5_ip = vm_5.networks.itervalues().next()[0]
+    vm_5_ip = test_utils.get_instance_ip(vm_5)
 
     # We boot vm5 first because we need vm5_ip for vm4 userdata
     u4 = test_utils.generate_ping_userdata([vm_5_ip])
         secgroup_name=TESTCASE_CONFIG.secgroup_name,
         compute_node=av_zone_1,
         userdata=u4)
-    vm_4_ip = vm_4.networks.itervalues().next()[0]
+    vm_4_ip = test_utils.get_instance_ip(vm_4)
 
     # We boot VM1 at the end because we need to get the IPs first to generate
     # the userdata
 
         sg_id,
         secgroup_name=TESTCASE_CONFIG.secgroup_name,
         compute_node=av_zone_1)
-    vm_2_ip = vm_2.networks.itervalues().next()[0]
+    vm_2_ip = test_utils.get_instance_ip(vm_2)
 
     vm_3 = test_utils.create_instance(
         nova_client,
         sg_id,
         secgroup_name=TESTCASE_CONFIG.secgroup_name,
         compute_node=av_zone_2)
-    vm_3_ip = vm_3.networks.itervalues().next()[0]
+    vm_3_ip = test_utils.get_instance_ip(vm_3)
 
     vm_5 = test_utils.create_instance(
         nova_client,
         sg_id,
         secgroup_name=TESTCASE_CONFIG.secgroup_name,
         compute_node=av_zone_2)
-    vm_5_ip = vm_5.networks.itervalues().next()[0]
+    vm_5_ip = test_utils.get_instance_ip(vm_5)
 
     # We boot vm5 first because we need vm5_ip for vm4 userdata
     u4 = test_utils.generate_ping_userdata([vm_5_ip])
         secgroup_name=TESTCASE_CONFIG.secgroup_name,
         compute_node=av_zone_1,
         userdata=u4)
-    vm_4_ip = vm_4.networks.itervalues().next()[0]
+    vm_4_ip = test_utils.get_instance_ip(vm_4)
 
     # We boot VM1 at the end because we need to get the IPs first to generate
     # the userdata
 
         network_2_id,
         sg_id,
         secgroup_name=TESTCASE_CONFIG.secgroup_name)
-    vm_2_ip = vm_2.networks.itervalues().next()[0]
+    vm_2_ip = test_utils.get_instance_ip(vm_2)
 
     u1 = test_utils.generate_ping_userdata([vm_2_ip])
     vm_1 = test_utils.create_instance(
 
         network_2_id,
         sg_id,
         secgroup_name=TESTCASE_CONFIG.secgroup_name)
-    vm_2_ip = vm_2.networks.itervalues().next()[0]
+    vm_2_ip = test_utils.get_instance_ip(vm_2)
 
     u1 = test_utils.generate_ping_userdata([vm_2_ip])
     vm_1 = test_utils.create_instance(