Skip to content

Instantly share code, notes, and snippets.

@myfashionhub
Last active August 6, 2019 15:35
Show Gist options
  • Save myfashionhub/f152a21f82905b0ef6dcb6015edc94d6 to your computer and use it in GitHub Desktop.
Save myfashionhub/f152a21f82905b0ef6dcb6015edc94d6 to your computer and use it in GitHub Desktop.
Code refactor examples
class ElasticSearchCartDaily(object):
    def __init__(self, es_index_name, host=None, version=_CONFIG.ELASTICSEARCH_VERSION):
        hosts = (host, ) if host else _CONFIG.ELASTICSEARCH_HOSTS
        self.es = Elasticsearch(hosts)
        self.version = version

        # Need two indices, one to alias to when we update the index, and one to hold historical stats.
        # They will both be alternating as a search or update index per build
        self.es_index_name_a = u'{}_a'.format(es_index_name)
        self.es_index_name_b = u'{}_b'.format(es_index_name)
        self.index_to_update = self.es_index_name_a
        self.index_to_delete = self.es_index_name_b

    def initialize_indices(self):
        log_msg(u'Searching for ES index...')

        # If index a exists, index b was deleted in previous build
        if self.es.indices.exists(index=self.es_index_name_a):
            log_msg(u'ES index {} already exists.'.format(self.es_index_name_a))
            self.index_to_update = self.es_index_name_b
            self.index_to_delete = self.es_index_name_a
            self.create_index()
            return

        # If index b exists, index a was deleted in previous build
        if self.es.indices.exists(index=self.es_index_name_b):
            log_msg(u'ES index {} already exists.'.format(self.es_index_name_b))
            self.index_to_update = self.es_index_name_a
            self.index_to_delete = self.es_index_name_b
            self.create_index()
            return

        # This should only occur on very first build
        self.create_index()
class ElasticSearchCartDaily(object):
    def __init__(self, index_name, host=None, version=_CONFIG.ELASTICSEARCH_VERSION):
        hosts = (host, ) if host else _CONFIG.ELASTICSEARCH_HOSTS
        self.es = Elasticsearch(hosts)
        self.version = version

        self.index_a = u'{}_a'.format(index_name)
        self.index_b = u'{}_b'.format(index_name)
        self.index_to_update = self.index_a
        self.index_to_delete = self.index_b

        # If index a exists, index b was deleted in previous build, and vice versa
        if self.es.indices.exists(index=self.index_a):
            self.index_to_update = self.index_b
            self.index_to_delete = self.index_a
        elif self.es.indices.exists(index=self.index_b):
            self.index_to_update = self.index_a
            self.index_to_delete = self.index_b

        log_msg(u'Deleting index {}, updating {}.'.format(self.index_to_delete, self.index_to_update))
        self.create_index()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment