Clean up the druid sync api. (#1101)

This commit is contained in:
Bogdan 2016-09-13 17:30:36 -07:00 committed by GitHub
parent 2e6b4b121f
commit a871ee7858
2 changed files with 41 additions and 38 deletions

View File

@ -1388,9 +1388,10 @@ class Caravel(BaseCaravelView):
"dimensions": ["affiliate_id", "campaign", "first_seen"]
}
"""
druid_config = json.loads(request.form.get('config'))
user_name = request.form.get('user')
cluster_name = request.form.get('cluster')
payload = request.get_json(force=True)
druid_config = payload['config']
user_name = payload['user']
cluster_name = payload['cluster']
user = sm.find_user(username=user_name)
if not user:

View File

@ -218,6 +218,9 @@ class CoreTests(CaravelTestCase):
db.session.commit()
cfg = {
"user": "admin",
"cluster": "new_druid",
"config": {
"name": "test_click",
"dimensions": ["affiliate_id", "campaign", "first_seen"],
"metrics_spec": [{"type": "count", "name": "count"},
@ -231,9 +234,8 @@ class CoreTests(CaravelTestCase):
}]
}
}
resp = self.client.post(
'/caravel/sync_druid/', data=dict(
config=json.dumps(cfg), user="admin", cluster="new_druid"))
}
resp = self.client.post('/caravel/sync_druid/', data=json.dumps(cfg))
druid_ds = db.session.query(DruidDatasource).filter_by(
datasource_name="test_click").first()
@ -243,20 +245,21 @@ class CoreTests(CaravelTestCase):
["count", "sum"])
assert resp.status_code == 201
# Datasource exists, not changes required
resp = self.client.post(
'/caravel/sync_druid/', data=dict(
config=json.dumps(cfg), user="admin", cluster="new_druid"))
druid_ds = db.session.query(DruidDatasource).filter_by(
datasource_name="test_click").first()
assert set([c.column_name for c in druid_ds.columns]) == set(
["affiliate_id", "campaign", "first_seen"])
assert set([m.metric_name for m in druid_ds.metrics]) == set(
["count", "sum"])
assert resp.status_code == 201
# datasource exists, not changes required
resp = self.client.post('/caravel/sync_druid/', data=json.dumps(cfg))
druid_ds = db.session.query(DruidDatasource).filter_by(
datasource_name="test_click").first()
assert set([c.column_name for c in druid_ds.columns]) == set(
["affiliate_id", "campaign", "first_seen"])
assert set([m.metric_name for m in druid_ds.metrics]) == set(
["count", "sum"])
assert resp.status_code == 201
# datasource exists, add new metrics and dimentions
cfg = {
"user": "admin",
"cluster": "new_druid",
"config": {
"name": "test_click",
"dimensions": ["affiliate_id", "second_seen"],
"metrics_spec": [
@ -264,9 +267,8 @@ class CoreTests(CaravelTestCase):
{"type": "unique", "name": "unique"}
],
}
resp = self.client.post(
'/caravel/sync_druid/', data=dict(
config=json.dumps(cfg), user="admin", cluster="new_druid"))
}
resp = self.client.post('/caravel/sync_druid/', data=json.dumps(cfg))
druid_ds = db.session.query(DruidDatasource).filter_by(
datasource_name="test_click").first()
# columns and metrics are not deleted if config is changed as