Skip to content

Commit 5f35537

Browse files
authored
Refactor ElasticBase to expose framework elements (#2438)
Refactor ElasticBase to expose framework elements I want to reuse Schema for a new API outside of the Elasticsearch query context. I've pulled the conversion/normalization framework up a level to server.api.resources, and reworked the post/put/get delegation to (hopefully) support more general interfaces. (I expect to use GET, PUT, DELETE, and possibly POST for metadata.)
1 parent c4dcdff commit 5f35537

File tree

13 files changed

+809
-574
lines changed

13 files changed

+809
-574
lines changed

lib/pbench/server/api/resources/__init__.py

Lines changed: 694 additions & 0 deletions
Large diffs are not rendered by default.

lib/pbench/server/api/resources/query_apis/__init__.py

Lines changed: 22 additions & 527 deletions
Large diffs are not rendered by default.

lib/pbench/server/api/resources/query_apis/controllers_list.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33
from logging import Logger
44

55
from pbench.server import PbenchServerConfig
6-
from pbench.server.api.resources.query_apis import (
7-
CONTEXT,
8-
ElasticBase,
6+
from pbench.server.api.resources import (
97
JSON,
108
Schema,
119
Parameter,
1210
ParamType,
1311
PostprocessError,
1412
)
13+
from pbench.server.api.resources.query_apis import CONTEXT, ElasticBase
1514

1615

1716
class ControllersList(ElasticBase):

lib/pbench/server/api/resources/query_apis/datasets_detail.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33
from logging import Logger
44

55
from pbench.server import PbenchServerConfig
6-
from pbench.server.api.resources.query_apis import (
7-
CONTEXT,
8-
ElasticBase,
6+
from pbench.server.api.resources import (
97
JSON,
108
Schema,
119
Parameter,
1210
ParamType,
1311
PostprocessError,
1412
)
13+
from pbench.server.api.resources.query_apis import CONTEXT, ElasticBase
1514

1615

1716
class DatasetsDetail(ElasticBase):

lib/pbench/server/api/resources/query_apis/datasets_list.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,8 @@
22
from logging import Logger
33

44
from pbench.server import PbenchServerConfig
5-
from pbench.server.api.resources.query_apis import (
6-
CONTEXT,
7-
ElasticBase,
8-
JSON,
9-
Schema,
10-
Parameter,
11-
ParamType,
12-
)
5+
from pbench.server.api.resources import JSON, Schema, Parameter, ParamType
6+
from pbench.server.api.resources.query_apis import CONTEXT, ElasticBase
137

148

159
class DatasetsList(ElasticBase):

lib/pbench/server/api/resources/query_apis/datasets_publish.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55
from flask_restful import abort
66

77
from pbench.server import PbenchServerConfig
8-
from pbench.server.api.resources.query_apis import (
8+
from pbench.server.api.resources import (
99
API_OPERATION,
10-
CONTEXT,
11-
ElasticBase,
1210
JSON,
13-
PostprocessError,
1411
Schema,
1512
Parameter,
1613
ParamType,
14+
PostprocessError,
1715
)
16+
from pbench.server.api.resources.query_apis import CONTEXT, ElasticBase
1817
from pbench.server.database.models.datasets import Dataset, Metadata
1918
from pbench.server.database.models.users import User
2019

lib/pbench/server/api/resources/query_apis/elasticsearch_api.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
from logging import Logger
22

33
from pbench.server import PbenchServerConfig
4-
from pbench.server.api.resources.query_apis import (
5-
CONTEXT,
6-
ElasticBase,
7-
JSON,
8-
Schema,
9-
Parameter,
10-
ParamType,
11-
)
4+
from pbench.server.api.resources import JSON, Schema, Parameter, ParamType
5+
from pbench.server.api.resources.query_apis import CONTEXT, ElasticBase
126

137

148
class Elasticsearch(ElasticBase):

lib/pbench/server/api/resources/query_apis/index_search.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
from flask import jsonify
55

66
from pbench.server import PbenchServerConfig
7-
from pbench.server.api.resources.query_apis import (
8-
CONTEXT,
9-
ElasticBase,
7+
from pbench.server.api.resources import (
108
JSON,
119
Parameter,
1210
ParamType,
1311
PostprocessError,
1412
Schema,
1513
)
14+
from pbench.server.api.resources.query_apis import CONTEXT, ElasticBase
1615

1716

1817
class IndexSearch(ElasticBase):

lib/pbench/server/api/resources/query_apis/month_indices.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from logging import Logger
33

44
from pbench.server import PbenchServerConfig
5-
from pbench.server.api.resources.query_apis import CONTEXT, ElasticBase, JSON, Schema
5+
from pbench.server.api.resources import JSON, Schema
6+
from pbench.server.api.resources.query_apis import CONTEXT, ElasticBase
67
from pbench.server.database.models.template import Template
78

89

lib/pbench/test/unit/server/conftest.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,13 @@ def login_user(client, server_config, username, password):
184184

185185

186186
@pytest.fixture()
187-
def create_user() -> User:
187+
def create_user(client) -> User:
188+
"""
189+
Construct a test user and add it to the database.
190+
191+
Args:
192+
client: Fixture to ensure we have a database
193+
"""
188194
user = User(
189195
190196
password=generic_password,
@@ -197,7 +203,13 @@ def create_user() -> User:
197203

198204

199205
@pytest.fixture
200-
def create_admin_user() -> User:
206+
def create_admin_user(client) -> User:
207+
"""
208+
Construct an admin user and add it to the database.
209+
210+
Args:
211+
client: Fixture to ensure we have a database
212+
"""
201213
user = User(
202214
email=admin_email,
203215
password=generic_password,

0 commit comments

Comments
 (0)