def test_get_available_addresses(self): service = self.mk_azure_service() addresses = service.get_available_addresses() self.assertTrue(addresses) self.assertTrue(service.get_available_addresses(count=2)) self.assertTrue( service.get_available_addresses(count=2, contiguous=False))
def test_move_route(self): service = self.mk_azure_service() i1 = None i2 = None try: uniq = int(time.time()) i1 = ServiceInstance.create(service, self.azure['instance_type'], 'vfxttest-dup-route-1-{}'.format(uniq), self.azure['image']) i2 = ServiceInstance.create(service, self.azure['instance_type'], 'vfxttest-dup-route-2-{}'.format(uniq), self.azure['image']) addrs, _ = service.get_available_addresses(count=30) addr = addrs[-1] i1.add_address(addr) i2.add_address(addr) i1.refresh() i2.refresh() self.assertTrue(addr not in i1.in_use_addresses()) self.assertTrue(addr in i2.in_use_addresses()) finally: if i1: try: i1.destroy() except Exception as e: log.debug(e) if i2: try: i2.destroy() except Exception as e: log.debug(e)
def test_move_route(self): from vFXT.serviceInstance import ServiceInstance service = self.mk_aws_service() i1 = None i2 = None try: uniq = int(time.time()) i1 = ServiceInstance.create(service, self.aws['instance_type'], 'vfxttest-dup-route-1-{}'.format(uniq), self.aws['ami']) i2 = ServiceInstance.create(service, self.aws['instance_type'], 'vfxttest-dup-route-2-{}'.format(uniq), self.aws['ami']) # get a free address addrs, _ = service.get_available_addresses( count=10, addr_range='172.16.16.0/24') addr = random.choice(addrs) i1.add_address(addr) i2.add_address(addr) i1.refresh() i2.refresh() self.assertTrue(addr not in i1.in_use_addresses()) self.assertTrue(addr in i2.in_use_addresses()) finally: if i1: i1.destroy() if i2: i2.destroy()
def test_instance_in_use_addresses(self): service = self.mk_gce_service() instance = service.get_instance( self.gce['existing'][0]) # well known instance self.assertTrue(service.instance_in_use_addresses(instance)) available_addrs, _ = service.get_available_addresses(count=1) self.assertFalse( service.instance_in_use_addresses( instance, '{}/32'.format(available_addrs[0])))
def test_move_route(self): from vFXT.serviceInstance import ServiceInstance service = self.mk_gce_service() i1 = None i2 = None try: uniq = int(time.time()) i1 = ServiceInstance.create(service, self.gce['instance_type'], 'vfxttest-dup-route-1-{}'.format(uniq), self.gce['image'], metadata={'purpose': 'test'}, tags=['avere-dev']) i2 = ServiceInstance.create(service, self.gce['instance_type'], 'vfxttest-dup-route-2-{}'.format(uniq), self.gce['image'], metadata={'purpose': 'test'}, tags=['avere-dev']) addrs, mask = service.get_available_addresses( count=10, addr_range='172.16.16.0/24') #pylint: disable=unused-variable addr = random.choice(addrs) i1.add_address(addr) i2.add_address(addr) i1.refresh() i2.refresh() self.assertTrue(addr not in i1.in_use_addresses()) self.assertTrue(addr in i2.in_use_addresses()) # add a different kind of route addr = random.choice([_ for _ in addrs if _ != addr]) route_body = { 'name': 'reservation-{}'.format(addr.replace('.', '-')), 'network': service._get_network()['selfLink'], 'nextHopIp': service.get_default_router(), 'priority': 900, 'destRange': '{}/32'.format(addr) } op = vFXT.gce._gce_do(service.connection().routes().insert, project=service.network_project_id, body=route_body) #pylint: disable=unused-variable # Just do it... we will fix it up later# service._wait_for_operation(op, msg='route to be reserved', op_type='globalOperations') # we should be able to take it i2.add_address(addr) i2.refresh() self.assertTrue(addr in i2.in_use_addresses()) finally: if i1: i1.destroy() if i2: i2.destroy()
def test_create_instance(self): from vFXT.serviceInstance import ServiceInstance service = self.mk_aws_service() name = 'vfxtpy-unittest-{}'.format(int(time.time())) instance = ServiceInstance.create(service, self.aws['instance_type'], name, self.aws['ami'], subnet=self.aws['subnet'], tags={'Name': name}) self.assertTrue(instance.instance.tags['Name'] == name) try: self.assertTrue(instance.name()) self.assertTrue(instance.id()) self.assertTrue(instance.ip()) self.assertTrue(instance.fqdn()) self.assertTrue(instance.status()) # get a free address addrs, _ = service.get_available_addresses( count=10, addr_range='172.16.16.0/24') addr = random.choice(addrs) instance.add_address(addr) instance.refresh() self.assertTrue(addr in instance.in_use_addresses()) # duplicate failure self.assertRaises(vFXT.service.vFXTConfigurationException, instance.add_address, addr) instance.remove_address(addr) instance.refresh() self.assertFalse(addr in instance.in_use_addresses()) self.assertTrue(instance.is_on()) if service.can_stop(instance.instance): instance.stop() self.assertTrue(instance.is_off()) if instance.is_off(): instance.start() self.assertTrue(instance.is_on()) instance.restart() self.assertTrue(instance.is_on()) except Exception as e: log.error(e) raise finally: instance.destroy()
def test_create_instance(self): service = self.mk_azure_service() name = 'vfxttest-lg-test-{}'.format(int(time.time())) instance = ServiceInstance.create( service, self.azure['instance_type'], name, boot_disk_image=self.azure['image'], tags={'purpose': 'vfxt-unittest-deleteme'}, user_data="this\nis\na\test") self.assertTrue( instance.instance.tags['purpose'] == 'vfxt-unittest-deleteme') try: self.assertTrue(instance.name()) self.assertTrue(instance.id()) self.assertTrue(instance.ip()) self.assertTrue(instance.fqdn()) self.assertTrue(instance.status()) # use ip configurations for addresses within the subnet subnet = service._instance_subnet(instance.instance) addrs, _ = service.get_available_addresses( count=10, addr_range=subnet.address_prefix) addr = random.choice(addrs) instance.add_address(addr) instance.refresh() self.assertTrue(addr in instance.in_use_addresses()) # duplicate failure self.assertRaises(vFXT.service.vFXTConfigurationException, instance.add_address, addr) instance.remove_address(addr) instance.refresh() self.assertFalse(addr in instance.in_use_addresses()) self.assertTrue(instance.is_on()) if service.can_stop(instance.instance): instance.stop() self.assertTrue(instance.is_off()) if instance.is_off(): instance.start() self.assertTrue(instance.is_on()) except Exception as e: log.debug(e) raise finally: instance.destroy()
def test_ip_alias(self): from vFXT.serviceInstance import ServiceInstance service = self.mk_gce_service() subnetwork_region = service._zone_to_region(service.zones[0]) subnetworks = service._get_subnetworks(subnetwork_region) if not subnetworks: self.skipTest("skipping tests for no subnetwork configuration") ipalias_range = subnetworks[0].get('ipCidrRange') i1 = None i2 = None try: uniq = int(time.time()) i1 = ServiceInstance.create(service, self.gce['instance_type'], 'vfxttest-ip-alias-1-{}'.format(uniq), self.gce['image'], metadata={'purpose': 'test'}, tags=['avere-dev']) i2 = ServiceInstance.create(service, self.gce['instance_type'], 'vfxttest-ip-alias-2-{}'.format(uniq), self.gce['image'], metadata={'purpose': 'test'}, tags=['avere-dev']) addrs, _ = service.get_available_addresses( count=10, addr_range=ipalias_range) addr = random.choice(addrs) # add to first instance i1.add_address(addr) self.assertTrue(addr in i1.in_use_addresses()) self.assertTrue(addr not in i2.in_use_addresses()) # move it i2.add_address(addr) self.assertTrue(addr not in i1.in_use_addresses()) self.assertTrue(addr in i2.in_use_addresses()) finally: if i1: i1.destroy() if i2: i2.destroy()
def test_get_available_addresses(self): service = self.mk_gce_service() self.assertTrue(service.get_available_addresses())
def test_create_instance(self): from vFXT.serviceInstance import ServiceInstance service = self.mk_gce_service() name = 'vfxtpy-unittest-{}'.format(int(time.time())) instance = ServiceInstance.create(service, self.gce['instance_type'], name, self.gce['image'], metadata={'purpose': 'test'}, tags=['avere-dev']) self.assertTrue('avere-dev' in instance.instance['tags']['items']) self.assertTrue( service._get_metadata(instance.instance, 'purpose') == 'test') try: self.assertTrue(instance.name()) self.assertTrue(instance.id()) self.assertTrue(instance.ip()) self.assertTrue(instance.fqdn()) self.assertTrue(instance.status()) # get a free address addrs, _ = service.get_available_addresses( count=10, addr_range='172.16.16.0/24') addr = random.choice(addrs) instance.add_address(addr) instance.refresh() self.assertTrue(addr in instance.in_use_addresses()) # duplicate failure self.assertRaises(vFXT.service.vFXTConfigurationException, instance.add_address, addr) instance.remove_address(addr) instance.refresh() self.assertFalse(addr in instance.in_use_addresses()) # metadata instance.refresh() metadata_value = str(uuid.uuid4()) service._set_metadata(instance.instance, 'metadata_test', metadata_value) instance.refresh() self.assertTrue(metadata_value == service._get_metadata( instance.instance, 'metadata_test')) service._delete_metadata(instance.instance, 'metadata_test') instance.refresh() self.assertFalse( service._get_metadata(instance.instance, 'metadata_test')) # tags instance.refresh() service._add_tag(instance.instance, 'vfxttest-tag-test') instance.refresh() self.assertTrue( 'vfxttest-tag-test' in instance.instance['tags']['items']) service._remove_tag(instance.instance, 'vfxttest-tag-test') instance.refresh() self.assertFalse( 'vfxttest-tag-test' in instance.instance['tags']['items']) self.assertTrue(instance.is_on()) if service.can_stop(instance.instance): instance.stop() self.assertTrue(instance.is_off()) if instance.is_off(): instance.start() self.assertTrue(instance.is_on()) instance.restart() self.assertTrue(instance.is_on()) finally: instance.destroy()