From 039176a2d49ed5b488ce3a44cb6feb5b1eaaa3da Mon Sep 17 00:00:00 2001 From: Donald Stufft Date: Sun, 2 Mar 2014 17:44:39 -0500 Subject: [PATCH] Fix #212 - Allow configuration of the search index --- tests/search/test_indexes.py | 10 +++++----- tests/test_application.py | 1 + warehouse/config.yml | 3 +++ warehouse/search/indexes.py | 8 ++++---- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/tests/search/test_indexes.py b/tests/search/test_indexes.py index 93e416dc2150..31c90afbf0d1 100644 --- a/tests/search/test_indexes.py +++ b/tests/search/test_indexes.py @@ -32,7 +32,7 @@ def test_reindex(self, monkeypatch): monkeypatch.setattr(os, "urandom", urandom) models = pretend.stub() - config = pretend.stub(hosts=[], get=lambda *a: {}) + config = pretend.stub(index="warehouse", hosts=[], get=lambda *a: {}) index = Index(models, config) index.es = pretend.stub( @@ -69,7 +69,7 @@ def test_reindex_no_alias(self, monkeypatch): monkeypatch.setattr(os, "urandom", urandom) models = pretend.stub() - config = pretend.stub(hosts=[], get=lambda *a: {}) + config = pretend.stub(index="warehouse", hosts=[], get=lambda *a: {}) index = Index(models, config) index.es = pretend.stub( @@ -101,7 +101,7 @@ def test_reindex_no_alias(self, monkeypatch): def test_update_alias(self): models = pretend.stub() - config = pretend.stub(hosts=[], get=lambda *a: {}) + config = pretend.stub(index="warehouse", hosts=[], get=lambda *a: {}) index = Index(models, config) index.es = pretend.stub( @@ -134,7 +134,7 @@ def test_update_alias(self): def test_update_alias_no_old_index(self): models = pretend.stub() - config = pretend.stub(hosts=[], get=lambda *a: {}) + config = pretend.stub(index="warehouse", hosts=[], get=lambda *a: {}) def _get_alias(idx): raise TransportError(404, "Fake 404") @@ -160,7 +160,7 @@ def _get_alias(idx): def test_update_alias_exception(self): models = pretend.stub() - config = pretend.stub(hosts=[], get=lambda *a: {}) + config = pretend.stub(index="warehouse", hosts=[], get=lambda *a: {}) def _get_alias(idx): raise TransportError(500, "Fake 500") diff --git a/tests/test_application.py b/tests/test_application.py index 63544f54bea0..29fec8ca5c36 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -41,6 +41,7 @@ def test_basic_instantiation(): "url": "redis://localhost:6379/0" }, "search": { + "index": "warehouse", "hosts": [], }, "logging": { diff --git a/warehouse/config.yml b/warehouse/config.yml index 0aa7fcd2a3a0..4d5235f3e1ff 100644 --- a/warehouse/config.yml +++ b/warehouse/config.yml @@ -4,6 +4,9 @@ site: name: Warehouse url: / +search: + index: warehouse + paths: documentation: data/packagedocs diff --git a/warehouse/search/indexes.py b/warehouse/search/indexes.py index a269fab9dcc1..d69e0cd27a57 100644 --- a/warehouse/search/indexes.py +++ b/warehouse/search/indexes.py @@ -25,8 +25,6 @@ class Index(object): - _index = "warehouse" - def __init__(self, db, config): self.db = db self.config = config @@ -37,14 +35,16 @@ def __init__(self, db, config): self.types = AttributeDict() + self._index = config.index + def register(self, type_): obj = type_(self) self.types[obj._type] = obj - def reindex(self, index=None, alias=True, keep_old=False): + def reindex(self, alias=True, keep_old=False): # Generate an Index Name for Warehouse index = "".join([ - index if index is not None else self._index, + self._index, binascii.hexlify(os.urandom(4)), ])