Пример #1
0
    def check_instance(url, insecure):
        """Checks if there is an instance of Elasticsearch in url.

        Actually, it checks if GET on the url returns a JSON document
        with a field tagline "You know, for search",
        and a field version.number.

        :value      url: url of the instance to check
        :value insecure: don't verify ssl connection (boolean)

        :returns:        major version of Elasticsearch, as string.
        """
        res = grimoire_con(insecure).get(url)
        if res.status_code != 200:
            msg = "Got {} from url {}".format(res.status_code, url)
            logger.error(msg)
            raise ElasticError(cause=msg)
        else:
            try:
                version_str = res.json()['version']['number']
                version_major = version_str.split('.')[0]
                return version_major
            except Exception:
                msg = "Could not read proper welcome message from url {}, {}".format(
                    anonymize_url(url), res.text)
                logger.error(msg)
                raise ElasticError(cause=msg)
Пример #2
0
    def create_index(self, analyzers=None, clean=False):
        """Create an index. If clean is `True`, the target index will be deleted and recreated.

        :param analyzers: set index analyzers
        :param clean: if True, the index is deleted and recreated
        """
        res = self.requests.get(self.index_url)

        headers = {"Content-Type": "application/json"}
        if res.status_code != 200:
            # Index does no exists
            res = self.requests.put(self.index_url,
                                    data=analyzers,
                                    headers=headers)
            if res.status_code != 200:
                msg = "Can't create index {} ({})".format(
                    anonymize_url(self.index_url), res.status_code)
                logger.error(msg)
                raise ElasticError(cause=msg)
            else:
                logger.info("Created index {}".format(
                    anonymize_url(self.index_url)))
        else:
            if clean:
                res = self.requests.delete(self.index_url)
                res.raise_for_status()
                res = self.requests.put(self.index_url,
                                        data=analyzers,
                                        headers=headers)
                res.raise_for_status()
                logger.info("Deleted and created index {}".format(
                    anonymize_url(self.index_url)))