示例#1
0
 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))
示例#2
0
    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)
示例#3
0
    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()
示例#4
0
    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])))
示例#5
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()
示例#6
0
    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()
示例#7
0
    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()
示例#8
0
    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()
示例#9
0
 def test_get_available_addresses(self):
     service = self.mk_gce_service()
     self.assertTrue(service.get_available_addresses())
示例#10
0
    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()