Esempio n. 1
0
 def setUp(self):
     super(TestMeta0PrefixMapping, self).setUp()
     self.account = "test_prefixmapping"
     self.reference = "prefixmapping-" + random_str(4)
     self.meta0_client = Meta0Client(self.conf)
     self.mapping = Meta0PrefixMapping(self.meta0_client,
                                       logger=self.logger)
Esempio n. 2
0
    def _take_action(self, parsed_args):
        import subprocess
        from oio.directory.meta0 import Meta0Client
        from oio.common.json import json

        self.logger.debug("Checking the directory bootstrap.")

        # Get an official dump from the proxy, check its size
        m0 = Meta0Client({"namespace": self.app.options.ns})
        prefixes = m0.list()
        if len(prefixes) != CID_PREFIX_COUNT:
            raise ValueError('Found %d entries in meta0, expected %d' %
                             (len(prefixes), CID_PREFIX_COUNT))
        self.logger.info("The proxy serves a full meta0 dump.")

        # contact each M0 to perform a check: any "get" command will
        # fail if the meta0 is not complete. Unfortunately we just have
        # oio-meta0-client to target a specific service.
        for _, host, port, _ in self.filter_services(self.catalog, 'meta0'):
            url = '%s:%d' % (host, port)
            res = subprocess.check_output(
                ['oio-meta0-client', url, 'get', '0000'])
            self.logger.info(res)
        self.logger.info("All meta0 services are complete.")

        # contact each meta0 to check that all the dumps are identical
        dump0 = None
        first = None
        for _, host, port, _ in self.filter_services(self.catalog, 'meta0'):
            url = '%s:%d' % (host, port)
            dump = subprocess.check_output(['oio-meta0-client', url, 'list'])
            if dump0 is None:
                dump0 = dump
                first = url
            elif dump0 != dump:
                raise ValueError('The dump returned by meta0 %s differs from '
                                 'the dump returned by %s' % (url, first))
        self.logger.info("All meta0 services serve the same base.")

        # Check all the meta1 are concerned
        reverse_dump = set()
        for _, v in iteritems(json.loads(dump0)):
            for url in v:
                reverse_dump.add(url)
        m1 = {
            ':'.join((descr[1], str(descr[2])))
            for descr in self.filter_services(self.catalog, 'meta1')
        }
        if m1 != reverse_dump:
            raise ValueError('Meta1 used but not visible: %s, '
                             'meta1 visible but not used: %s' %
                             (reverse_dump - m1, m1 - reverse_dump))
        self.logger.info("All meta1 services have been assigned.")
        yield ('OK', None)
Esempio n. 3
0
    def _take_action(self, parsed_args):
        import subprocess
        from oio.directory.meta0 import Meta0Client
        from oio.common.json import json

        self.logger.debug("Checking the directory bootstrap.")

        # Get an official dump from the proxy, check its size
        m0 = Meta0Client({"namespace": self.app.options.ns})
        prefixes = m0.list()
        assert len(prefixes) == 65536
        self.logger.info("The proxy serves a full meta0 dump.")

        # contact each M0 to perform a check: any "get" command will
        # fail if the meta0 is not complete. Unfortunately we just have
        # oio-meta0-client to target a specific service.
        for t, i, p, s in self.filter_services(self.catalog, 'meta0'):
            url = '%s:%d' % (i, p)
            res = subprocess.check_output(
                ['oio-meta0-client', url, 'get', '0000'])
            self.logger.info(res)
        self.logger.info("All meta0 services are complete.")

        # contact each meta0 to check that all the dumps are identical
        dump0 = None
        for t, i, p, s in self.filter_services(self.catalog, 'meta0'):
            url = '%s:%d' % (i, p)
            dump = subprocess.check_output(['oio-meta0-client', url, 'list'])
            if dump0 is None:
                dump0 = dump
            else:
                assert dump0 == dump
        self.logger.info("All meta0 services serve the same base.")

        # Check all the meta1 are concerned
        reverse_dump = set()
        for _, v in iteritems(json.loads(dump0)):
            for url in v:
                reverse_dump.add(url)
        m1 = list(self.filter_services(self.catalog, 'meta1'))
        # FIXME(FVE): this check does not guarantee items are the same
        assert len(m1) == len(reverse_dump)
        self.logger.info("All meta1 services have been assigned.")
        yield ('OK', None)
Esempio n. 4
0
 def setUp(self):
     super(TestPrefixMapping, self).setUp()
     self.cs_client = FakeConscienceClient()
     self.m0_client = Meta0Client({'namespace': self.ns})
Esempio n. 5
0
 def meta0(self):
     if not self._meta0:
         from oio.directory.meta0 import Meta0Client
         self._meta0 = Meta0Client(self.conf,
                                   pool_manager=self.pool_manager)
     return self._meta0
Esempio n. 6
0
 def meta0(self):
     if not self._meta0:
         self._meta0 = Meta0Client(self.conf, session=self.session)
     return self._meta0
Esempio n. 7
0
 def meta0(self):
     if not self._meta0:
         from oio.directory.meta0 import Meta0Client
         self._meta0 = Meta0Client(self.conf)
     return self._meta0