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)
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)))