-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
We don't store the metadata in Backdrop any more. We're modifying BucketConfigRepository to call the Stagecraft /data-sets endpoint to get the metadata.
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,8 @@ | ||
|
||
import json | ||
|
||
import requests | ||
|
||
from backdrop.core.bucket import BucketConfig | ||
from backdrop.core.user import UserConfig | ||
|
||
|
@@ -42,27 +47,61 @@ def _create_model(self, doc): | |
|
||
class BucketConfigRepository(object): | ||
|
||
def __init__(self, db): | ||
self._db = db | ||
self._repository = _Repository(db, BucketConfig, "buckets", "name") | ||
def __init__(self, stagecraft_url, stagecraft_token): | ||
self._stagecraft_url = stagecraft_url | ||
self._stagecraft_token = stagecraft_token | ||
|
||
def save(self, bucket_config, create_bucket=True): | ||
self._repository.save(bucket_config) | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
fawkesley
Contributor
|
||
|
||
if bucket_config.realtime and create_bucket: | ||
self._db.create_capped_collection(bucket_config.name, | ||
bucket_config.capped_size) | ||
raise NotImplementedError("You can't create/update data-sets through " | ||
"backdrop any more - this is read-only.") | ||
|
||
def get_all(self): | ||
return self._repository.get_all() | ||
data_set_url = '{url}/data-sets/'.format(url=self._stagecraft_url) | ||
|
||
data_sets = _decode_json(_get_url(data_set_url)) | ||
return [_make_bucket_config(data_set) for data_set in data_sets] | ||
|
||
def retrieve(self, name): | ||
This comment has been minimized.
Sorry, something went wrong.
roc
Contributor
|
||
return self._repository.retrieve(name) | ||
data_set_url = ('{url}/data-sets/{data_set_name}'.format( | ||
url=self._stagecraft_url, | ||
data_set_name=name)) | ||
|
||
data_set = _decode_json(_get_url(data_set_url)) | ||
return _make_bucket_config(data_set) | ||
|
||
def get_bucket_for_query(self, data_group, data_type): | ||
return self._repository.find_first_instance_of( | ||
This comment has been minimized.
Sorry, something went wrong.
roc
Contributor
|
||
{"data_group": data_group, | ||
"data_type": data_type}) | ||
data_set_url = ('{url}/data-sets?data-group={data_group_name}' | ||
'&data-type={data_type_name}'.format( | ||
url=self._stagecraft_url, | ||
data_group_name=data_group, | ||
data_type_name=data_type)) | ||
|
||
data_sets = _decode_json(_get_url(data_set_url)) | ||
if len(data_sets) > 0: | ||
return _make_bucket_config(data_sets[0]) | ||
return None | ||
|
||
|
||
def _make_bucket_config(stagecraft_dict): | ||
if stagecraft_dict is None: | ||
return None | ||
return BucketConfig(**stagecraft_dict) | ||
|
||
|
||
def _decode_json(string): | ||
return json.loads(string) if string is not None else None | ||
|
||
|
||
def _get_url(url): | ||
response = requests.get(url) | ||
try: | ||
response.raise_for_status() | ||
except requests.HTTPError as e: | ||
if e.code == 404: | ||
return None | ||
raise | ||
|
||
return response.content | ||
|
||
|
||
class UserConfigRepository(object): | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -44,3 +44,5 @@ | |
# LPA / Lasting Power of Attorney | ||
"lpa_journey": True, | ||
} | ||
|
||
STAGECRAFT_URL = 'stagecraft.perfplat.dev:3204' |
Dumb question: isn't this how we save config in backdrop at the moment? What happens when I want to change some bucket metadata?
If not, can this method be completely removed for clarity?