Merge pull request #517 from CartoDB/development
Release 0.33 server and 0.20 for python library
This commit is contained in:
commit
9a6f52d63b
6
NEWS.md
6
NEWS.md
@ -1,3 +1,9 @@
|
|||||||
|
|
||||||
|
Aug 27th, 2018
|
||||||
|
==============
|
||||||
|
* Version `0.33.0` of the server, and `0.20.0` of the Python library.
|
||||||
|
* Remove the obs_snapshot quota and now the snapshot functions uses obs_general quota
|
||||||
|
|
||||||
Jul 19th, 2018
|
Jul 19th, 2018
|
||||||
==============
|
==============
|
||||||
* Version `0.25.0` of the client, `0.32.0` of the server, and `0.19.1` of the Python library.
|
* Version `0.25.0` of the client, `0.32.0` of the server, and `0.19.1` of the Python library.
|
||||||
|
204
server/extension/cdb_dataservices_server--0.32.0--0.33.0.sql
Normal file
204
server/extension/cdb_dataservices_server--0.32.0--0.33.0.sql
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
--DO NOT MODIFY THIS FILE, IT IS GENERATED AUTOMATICALLY FROM SOURCES
|
||||||
|
-- Complain if script is sourced in psql, rather than via CREATE EXTENSION
|
||||||
|
\echo Use "ALTER EXTENSION cdb_dataservices_server UPDATE TO '0.33.0'" to load this file. \quit
|
||||||
|
|
||||||
|
-- HERE goes your code to upgrade/downgrade
|
||||||
|
DROP FUNCTION IF EXISTS cdb_dataservices_server._get_obs_snapshot_config;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._obs_server_conn_str(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT)
|
||||||
|
RETURNS text AS $$
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
|
return user_obs_config.connection_str
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.obs_get_demographic_snapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
time_span TEXT DEFAULT NULL,
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS json AS $$
|
||||||
|
from cartodb_services.metrics import metrics
|
||||||
|
from cartodb_services.metrics import QuotaService
|
||||||
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
import json
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
|
logger_config = GD["logger_config"]
|
||||||
|
logger = Logger(logger_config)
|
||||||
|
quota_service = QuotaService(user_obs_config, redis_conn)
|
||||||
|
if not quota_service.check_user_quota():
|
||||||
|
raise Exception('You have reached the limit of your quota')
|
||||||
|
|
||||||
|
with metrics('obs_getdemographicsnapshot', user_obs_config, logger):
|
||||||
|
try:
|
||||||
|
obs_plan = plpy.prepare("SELECT cdb_dataservices_server._OBS_GetDemographicSnapshotJSON($1, $2, $3, $4, $5) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text", "text"])
|
||||||
|
result = plpy.execute(obs_plan, [username, orgname, geom, time_span, geometry_level])
|
||||||
|
if result:
|
||||||
|
quota_service.increment_success_service_use()
|
||||||
|
return result[0]['snapshot']
|
||||||
|
else:
|
||||||
|
quota_service.increment_empty_service_use()
|
||||||
|
return None
|
||||||
|
except BaseException as e:
|
||||||
|
import sys
|
||||||
|
quota_service.increment_failed_service_use()
|
||||||
|
logger.error('Error trying to obs_get_demographic_snapshot', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
|
raise Exception('Error trying to obs_get_demographic_snapshot')
|
||||||
|
finally:
|
||||||
|
quota_service.increment_total_service_use()
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.OBS_GetDemographicSnapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
time_span TEXT DEFAULT NULL,
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS SETOF JSON AS $$
|
||||||
|
from cartodb_services.metrics import metrics
|
||||||
|
from cartodb_services.metrics import QuotaService
|
||||||
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
|
logger_config = GD["logger_config"]
|
||||||
|
logger = Logger(logger_config)
|
||||||
|
quota_service = QuotaService(user_obs_config, redis_conn)
|
||||||
|
if not quota_service.check_user_quota():
|
||||||
|
raise Exception('You have reached the limit of your quota')
|
||||||
|
|
||||||
|
with metrics('obs_getdemographicsnapshot', user_obs_config, logger):
|
||||||
|
try:
|
||||||
|
obs_plan = plpy.prepare("SELECT cdb_dataservices_server._OBS_GetDemographicSnapshot($1, $2, $3, $4, $5) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text", "text"])
|
||||||
|
result = plpy.execute(obs_plan, [username, orgname, geom, time_span, geometry_level])
|
||||||
|
if result:
|
||||||
|
resp = []
|
||||||
|
for element in result:
|
||||||
|
value = element['snapshot']
|
||||||
|
resp.append(value)
|
||||||
|
quota_service.increment_success_service_use()
|
||||||
|
return resp
|
||||||
|
else:
|
||||||
|
quota_service.increment_empty_service_use()
|
||||||
|
return []
|
||||||
|
except BaseException as e:
|
||||||
|
import sys
|
||||||
|
quota_service.increment_failed_service_use()
|
||||||
|
logger.error('Error trying to obs_get_demographic_snapshot', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
|
raise Exception('Error trying to obs_get_demographic_snapshot')
|
||||||
|
finally:
|
||||||
|
quota_service.increment_total_service_use()
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.obs_get_segment_snapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS json AS $$
|
||||||
|
from cartodb_services.metrics import metrics
|
||||||
|
from cartodb_services.metrics import QuotaService
|
||||||
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
import json
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
|
logger_config = GD["logger_config"]
|
||||||
|
logger = Logger(logger_config)
|
||||||
|
quota_service = QuotaService(user_obs_config, redis_conn)
|
||||||
|
if not quota_service.check_user_quota():
|
||||||
|
raise Exception('You have reached the limit of your quota')
|
||||||
|
|
||||||
|
with metrics('obs_getsegmentsnapshot', user_obs_config, logger):
|
||||||
|
try:
|
||||||
|
obs_plan = plpy.prepare("SELECT cdb_dataservices_server._OBS_GetSegmentSnapshotJSON($1, $2, $3, $4) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text"])
|
||||||
|
result = plpy.execute(obs_plan, [username, orgname, geom, geometry_level])
|
||||||
|
if result:
|
||||||
|
quota_service.increment_success_service_use()
|
||||||
|
return result[0]['snapshot']
|
||||||
|
else:
|
||||||
|
quota_service.increment_empty_service_use()
|
||||||
|
return None
|
||||||
|
except BaseException as e:
|
||||||
|
import sys
|
||||||
|
quota_service.increment_failed_service_use()
|
||||||
|
logger.error('Error trying to obs_get_segment_snapshot', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
|
raise Exception('Error trying to obs_get_segment_snapshot')
|
||||||
|
finally:
|
||||||
|
quota_service.increment_total_service_use()
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetSegmentSnapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS SETOF json AS $$
|
||||||
|
CONNECT cdb_dataservices_server._obs_server_conn_str(username, orgname);
|
||||||
|
SELECT * FROM cdb_observatory.OBS_GetSegmentSnapshot(geom, geometry_level);
|
||||||
|
$$ LANGUAGE plproxy VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.OBS_GetSegmentSnapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS SETOF JSON AS $$
|
||||||
|
from cartodb_services.metrics import metrics
|
||||||
|
from cartodb_services.metrics import QuotaService
|
||||||
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
|
logger_config = GD["logger_config"]
|
||||||
|
logger = Logger(logger_config)
|
||||||
|
quota_service = QuotaService(user_obs_config, redis_conn)
|
||||||
|
if not quota_service.check_user_quota():
|
||||||
|
raise Exception('You have reached the limit of your quota')
|
||||||
|
|
||||||
|
with metrics('obs_getsegmentsnapshot', user_obs_config, logger):
|
||||||
|
try:
|
||||||
|
obs_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._OBS_GetSegmentSnapshot($1, $2, $3, $4) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text"])
|
||||||
|
result = plpy.execute(obs_plan, [username, orgname, geom, geometry_level])
|
||||||
|
if result:
|
||||||
|
resp = []
|
||||||
|
for element in result:
|
||||||
|
value = element['snapshot']
|
||||||
|
resp.append(value)
|
||||||
|
quota_service.increment_success_service_use()
|
||||||
|
return resp
|
||||||
|
else:
|
||||||
|
quota_service.increment_empty_service_use()
|
||||||
|
return []
|
||||||
|
except BaseException as e:
|
||||||
|
import sys
|
||||||
|
quota_service.increment_failed_service_use()
|
||||||
|
logger.error('Error trying to OBS_GetSegmentSnapshot', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
|
raise Exception('Error trying to OBS_GetSegmentSnapshot')
|
||||||
|
finally:
|
||||||
|
quota_service.increment_total_service_use()
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
216
server/extension/cdb_dataservices_server--0.33.0--0.32.0.sql
Normal file
216
server/extension/cdb_dataservices_server--0.33.0--0.32.0.sql
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
--DO NOT MODIFY THIS FILE, IT IS GENERATED AUTOMATICALLY FROM SOURCES
|
||||||
|
-- Complain if script is sourced in psql, rather than via CREATE EXTENSION
|
||||||
|
\echo Use "ALTER EXTENSION cdb_dataservices_server UPDATE TO '0.32.0'" to load this file. \quit
|
||||||
|
|
||||||
|
-- HERE goes your code to upgrade/downgrade
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_obs_snapshot_config(username text, orgname text)
|
||||||
|
RETURNS boolean AS $$
|
||||||
|
cache_key = "user_obs_snapshot_config_{0}".format(username)
|
||||||
|
if cache_key in GD:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
from cartodb_services.metrics import ObservatorySnapshotConfig
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metadata_connection']
|
||||||
|
obs_snapshot_config = ObservatorySnapshotConfig(redis_conn, plpy, username, orgname)
|
||||||
|
GD[cache_key] = obs_snapshot_config
|
||||||
|
return True
|
||||||
|
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._obs_server_conn_str(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT)
|
||||||
|
RETURNS text AS $$
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
||||||
|
|
||||||
|
return user_obs_config.connection_str
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.obs_get_demographic_snapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
time_span TEXT DEFAULT NULL,
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS json AS $$
|
||||||
|
from cartodb_services.metrics import metrics
|
||||||
|
from cartodb_services.metrics import QuotaService
|
||||||
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
import json
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
|
logger_config = GD["logger_config"]
|
||||||
|
logger = Logger(logger_config)
|
||||||
|
quota_service = QuotaService(user_obs_config, redis_conn)
|
||||||
|
if not quota_service.check_user_quota():
|
||||||
|
raise Exception('You have reached the limit of your quota')
|
||||||
|
|
||||||
|
with metrics('obs_getdemographicsnapshot', user_obs_config, logger):
|
||||||
|
try:
|
||||||
|
obs_plan = plpy.prepare("SELECT cdb_dataservices_server._OBS_GetDemographicSnapshotJSON($1, $2, $3, $4, $5) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text", "text"])
|
||||||
|
result = plpy.execute(obs_plan, [username, orgname, geom, time_span, geometry_level])
|
||||||
|
if result:
|
||||||
|
quota_service.increment_success_service_use()
|
||||||
|
return result[0]['snapshot']
|
||||||
|
else:
|
||||||
|
quota_service.increment_empty_service_use()
|
||||||
|
return None
|
||||||
|
except BaseException as e:
|
||||||
|
import sys
|
||||||
|
quota_service.increment_failed_service_use()
|
||||||
|
logger.error('Error trying to obs_get_demographic_snapshot', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
|
raise Exception('Error trying to obs_get_demographic_snapshot')
|
||||||
|
finally:
|
||||||
|
quota_service.increment_total_service_use()
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.OBS_GetDemographicSnapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
time_span TEXT DEFAULT NULL,
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS SETOF JSON AS $$
|
||||||
|
from cartodb_services.metrics import metrics
|
||||||
|
from cartodb_services.metrics import QuotaService
|
||||||
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
|
logger_config = GD["logger_config"]
|
||||||
|
logger = Logger(logger_config)
|
||||||
|
quota_service = QuotaService(user_obs_config, redis_conn)
|
||||||
|
if not quota_service.check_user_quota():
|
||||||
|
raise Exception('You have reached the limit of your quota')
|
||||||
|
|
||||||
|
with metrics('obs_getdemographicsnapshot', user_obs_config, logger):
|
||||||
|
try:
|
||||||
|
obs_plan = plpy.prepare("SELECT cdb_dataservices_server._OBS_GetDemographicSnapshot($1, $2, $3, $4, $5) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text", "text"])
|
||||||
|
result = plpy.execute(obs_plan, [username, orgname, geom, time_span, geometry_level])
|
||||||
|
if result:
|
||||||
|
resp = []
|
||||||
|
for element in result:
|
||||||
|
value = element['snapshot']
|
||||||
|
resp.append(value)
|
||||||
|
quota_service.increment_success_service_use()
|
||||||
|
return resp
|
||||||
|
else:
|
||||||
|
quota_service.increment_empty_service_use()
|
||||||
|
return []
|
||||||
|
except BaseException as e:
|
||||||
|
import sys
|
||||||
|
quota_service.increment_failed_service_use()
|
||||||
|
logger.error('Error trying to obs_get_demographic_snapshot', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
|
raise Exception('Error trying to obs_get_demographic_snapshot')
|
||||||
|
finally:
|
||||||
|
quota_service.increment_total_service_use()
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.obs_get_segment_snapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS json AS $$
|
||||||
|
from cartodb_services.metrics import metrics
|
||||||
|
from cartodb_services.metrics import QuotaService
|
||||||
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
import json
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
|
logger_config = GD["logger_config"]
|
||||||
|
logger = Logger(logger_config)
|
||||||
|
quota_service = QuotaService(user_obs_config, redis_conn)
|
||||||
|
if not quota_service.check_user_quota():
|
||||||
|
raise Exception('You have reached the limit of your quota')
|
||||||
|
|
||||||
|
with metrics('obs_getsegmentsnapshot', user_obs_config, logger):
|
||||||
|
try:
|
||||||
|
obs_plan = plpy.prepare("SELECT cdb_dataservices_server._OBS_GetSegmentSnapshotJSON($1, $2, $3, $4) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text"])
|
||||||
|
result = plpy.execute(obs_plan, [username, orgname, geom, geometry_level])
|
||||||
|
if result:
|
||||||
|
quota_service.increment_success_service_use()
|
||||||
|
return result[0]['snapshot']
|
||||||
|
else:
|
||||||
|
quota_service.increment_empty_service_use()
|
||||||
|
return None
|
||||||
|
except BaseException as e:
|
||||||
|
import sys
|
||||||
|
quota_service.increment_failed_service_use()
|
||||||
|
logger.error('Error trying to obs_get_segment_snapshot', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
|
raise Exception('Error trying to obs_get_segment_snapshot')
|
||||||
|
finally:
|
||||||
|
quota_service.increment_total_service_use()
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetSegmentSnapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS SETOF json AS $$
|
||||||
|
CONNECT cdb_dataservices_server._obs_server_conn_str(username, orgname);
|
||||||
|
SELECT * FROM cdb_observatory.OBS_GetSegmentSnapshot(geom, geometry_level);
|
||||||
|
$$ LANGUAGE plproxy VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.OBS_GetSegmentSnapshot(
|
||||||
|
username TEXT,
|
||||||
|
orgname TEXT,
|
||||||
|
geom geometry(Geometry, 4326),
|
||||||
|
geometry_level TEXT DEFAULT NULL)
|
||||||
|
RETURNS SETOF JSON AS $$
|
||||||
|
from cartodb_services.metrics import metrics
|
||||||
|
from cartodb_services.metrics import QuotaService
|
||||||
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
|
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
||||||
|
|
||||||
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
|
logger_config = GD["logger_config"]
|
||||||
|
logger = Logger(logger_config)
|
||||||
|
quota_service = QuotaService(user_obs_config, redis_conn)
|
||||||
|
if not quota_service.check_user_quota():
|
||||||
|
raise Exception('You have reached the limit of your quota')
|
||||||
|
|
||||||
|
with metrics('obs_getsegmentsnapshot', user_obs_config, logger):
|
||||||
|
try:
|
||||||
|
obs_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._OBS_GetSegmentSnapshot($1, $2, $3, $4) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text"])
|
||||||
|
result = plpy.execute(obs_plan, [username, orgname, geom, geometry_level])
|
||||||
|
if result:
|
||||||
|
resp = []
|
||||||
|
for element in result:
|
||||||
|
value = element['snapshot']
|
||||||
|
resp.append(value)
|
||||||
|
quota_service.increment_success_service_use()
|
||||||
|
return resp
|
||||||
|
else:
|
||||||
|
quota_service.increment_empty_service_use()
|
||||||
|
return []
|
||||||
|
except BaseException as e:
|
||||||
|
import sys
|
||||||
|
quota_service.increment_failed_service_use()
|
||||||
|
logger.error('Error trying to OBS_GetSegmentSnapshot', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
|
raise Exception('Error trying to OBS_GetSegmentSnapshot')
|
||||||
|
finally:
|
||||||
|
quota_service.increment_total_service_use()
|
||||||
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
@ -1,5 +1,5 @@
|
|||||||
comment = 'CartoDB dataservices server extension'
|
comment = 'CartoDB dataservices server extension'
|
||||||
default_version = '0.32.0'
|
default_version = '0.33.0'
|
||||||
requires = 'plpythonu, plproxy, postgis, cdb_geocoder'
|
requires = 'plpythonu, plproxy, postgis, cdb_geocoder'
|
||||||
superuser = true
|
superuser = true
|
||||||
schema = cdb_dataservices_server
|
schema = cdb_dataservices_server
|
||||||
|
3801
server/extension/old_versions/cdb_dataservices_server--0.32.0.sql
Normal file
3801
server/extension/old_versions/cdb_dataservices_server--0.32.0.sql
Normal file
File diff suppressed because it is too large
Load Diff
@ -10,8 +10,8 @@ CREATE OR REPLACE FUNCTION cdb_dataservices_server._obs_server_conn_str(
|
|||||||
RETURNS text AS $$
|
RETURNS text AS $$
|
||||||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
return user_obs_config.connection_str
|
return user_obs_config.connection_str
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
||||||
@ -41,8 +41,8 @@ RETURNS json AS $$
|
|||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
logger_config = GD["logger_config"]
|
logger_config = GD["logger_config"]
|
||||||
@ -94,8 +94,8 @@ RETURNS SETOF JSON AS $$
|
|||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
logger_config = GD["logger_config"]
|
logger_config = GD["logger_config"]
|
||||||
@ -150,8 +150,8 @@ RETURNS json AS $$
|
|||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
logger_config = GD["logger_config"]
|
logger_config = GD["logger_config"]
|
||||||
@ -201,8 +201,8 @@ RETURNS SETOF JSON AS $$
|
|||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
||||||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
plpy.execute("SELECT cdb_dataservices_server._get_obs_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
|
||||||
user_obs_config = GD["user_obs_snapshot_config_{0}".format(username)]
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
logger_config = GD["logger_config"]
|
logger_config = GD["logger_config"]
|
||||||
|
@ -90,20 +90,6 @@ RETURNS boolean AS $$
|
|||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER;
|
$$ LANGUAGE plpythonu SECURITY DEFINER;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_obs_snapshot_config(username text, orgname text)
|
|
||||||
RETURNS boolean AS $$
|
|
||||||
cache_key = "user_obs_snapshot_config_{0}".format(username)
|
|
||||||
if cache_key in GD:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
from cartodb_services.metrics import ObservatorySnapshotConfig
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
|
||||||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metadata_connection']
|
|
||||||
obs_snapshot_config = ObservatorySnapshotConfig(redis_conn, plpy, username, orgname)
|
|
||||||
GD[cache_key] = obs_snapshot_config
|
|
||||||
return True
|
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_obs_config(username text, orgname text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_obs_config(username text, orgname text)
|
||||||
RETURNS boolean AS $$
|
RETURNS boolean AS $$
|
||||||
cache_key = "user_obs_config_{0}".format(username)
|
cache_key = "user_obs_config_{0}".format(username)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from config import GeocoderConfig, IsolinesRoutingConfig, InternalGeocoderConfig, RoutingConfig, ConfigException, ObservatorySnapshotConfig, ObservatoryConfig
|
from config import GeocoderConfig, IsolinesRoutingConfig, InternalGeocoderConfig, RoutingConfig, ConfigException, ObservatoryConfig
|
||||||
from quota import QuotaService
|
from quota import QuotaService
|
||||||
from user import UserMetricsService
|
from user import UserMetricsService
|
||||||
from log import metrics, MetricsDataGatherer, Traceable
|
from log import metrics, MetricsDataGatherer, Traceable
|
||||||
|
@ -86,28 +86,6 @@ class DataObservatoryConfig(ServiceConfig):
|
|||||||
return 'data observatory'
|
return 'data observatory'
|
||||||
|
|
||||||
|
|
||||||
class ObservatorySnapshotConfig(DataObservatoryConfig):
|
|
||||||
|
|
||||||
SOFT_LIMIT_KEY = 'soft_obs_snapshot_limit'
|
|
||||||
QUOTA_KEY = 'obs_snapshot_quota'
|
|
||||||
PERIOD_END_DATE = 'period_end_date'
|
|
||||||
|
|
||||||
def __init__(self, redis_connection, db_conn, username, orgname=None):
|
|
||||||
super(ObservatorySnapshotConfig, self).__init__(redis_connection, db_conn,
|
|
||||||
username, orgname)
|
|
||||||
self._period_end_date = date_parse(self._redis_config[self.PERIOD_END_DATE])
|
|
||||||
if self.SOFT_LIMIT_KEY in self._redis_config and self._redis_config[self.SOFT_LIMIT_KEY].lower() == 'true':
|
|
||||||
self._soft_limit = True
|
|
||||||
else:
|
|
||||||
self._soft_limit = False
|
|
||||||
self._monthly_quota = self._get_effective_monthly_quota(self.QUOTA_KEY)
|
|
||||||
self._connection_str = self._db_config.data_observatory_connection_str
|
|
||||||
|
|
||||||
@property
|
|
||||||
def service_type(self):
|
|
||||||
return 'obs_snapshot'
|
|
||||||
|
|
||||||
|
|
||||||
class ObservatoryConfig(DataObservatoryConfig):
|
class ObservatoryConfig(DataObservatoryConfig):
|
||||||
|
|
||||||
SOFT_LIMIT_KEY = 'soft_obs_general_limit'
|
SOFT_LIMIT_KEY = 'soft_obs_general_limit'
|
||||||
@ -890,7 +868,6 @@ class ServicesRedisConfig:
|
|||||||
QUOTA_KEY = 'geocoding_quota'
|
QUOTA_KEY = 'geocoding_quota'
|
||||||
ISOLINES_QUOTA_KEY = 'here_isolines_quota'
|
ISOLINES_QUOTA_KEY = 'here_isolines_quota'
|
||||||
ROUTING_QUOTA_KEY = 'mapzen_routing_quota'
|
ROUTING_QUOTA_KEY = 'mapzen_routing_quota'
|
||||||
OBS_SNAPSHOT_QUOTA_KEY = 'obs_snapshot_quota'
|
|
||||||
OBS_GENERAL_QUOTA_KEY = 'obs_general_quota'
|
OBS_GENERAL_QUOTA_KEY = 'obs_general_quota'
|
||||||
PERIOD_END_DATE = 'period_end_date'
|
PERIOD_END_DATE = 'period_end_date'
|
||||||
GEOCODER_PROVIDER_KEY = 'geocoder_provider'
|
GEOCODER_PROVIDER_KEY = 'geocoder_provider'
|
||||||
@ -934,8 +911,6 @@ class ServicesRedisConfig:
|
|||||||
user_config[self.ISOLINES_QUOTA_KEY] = org_config[self.ISOLINES_QUOTA_KEY]
|
user_config[self.ISOLINES_QUOTA_KEY] = org_config[self.ISOLINES_QUOTA_KEY]
|
||||||
if self.ROUTING_QUOTA_KEY in org_config:
|
if self.ROUTING_QUOTA_KEY in org_config:
|
||||||
user_config[self.ROUTING_QUOTA_KEY] = org_config[self.ROUTING_QUOTA_KEY]
|
user_config[self.ROUTING_QUOTA_KEY] = org_config[self.ROUTING_QUOTA_KEY]
|
||||||
if self.OBS_SNAPSHOT_QUOTA_KEY in org_config:
|
|
||||||
user_config[self.OBS_SNAPSHOT_QUOTA_KEY] = org_config[self.OBS_SNAPSHOT_QUOTA_KEY]
|
|
||||||
if self.OBS_GENERAL_QUOTA_KEY in org_config:
|
if self.OBS_GENERAL_QUOTA_KEY in org_config:
|
||||||
user_config[self.OBS_GENERAL_QUOTA_KEY] = org_config[self.OBS_GENERAL_QUOTA_KEY]
|
user_config[self.OBS_GENERAL_QUOTA_KEY] = org_config[self.OBS_GENERAL_QUOTA_KEY]
|
||||||
if self.PERIOD_END_DATE in org_config:
|
if self.PERIOD_END_DATE in org_config:
|
||||||
|
@ -10,7 +10,7 @@ from setuptools import setup, find_packages
|
|||||||
setup(
|
setup(
|
||||||
name='cartodb_services',
|
name='cartodb_services',
|
||||||
|
|
||||||
version='0.19.1',
|
version='0.20.0',
|
||||||
|
|
||||||
description='CartoDB Services API Python Library',
|
description='CartoDB Services API Python Library',
|
||||||
|
|
||||||
|
@ -344,41 +344,7 @@ class TestDataObservatoryUserConfig(TestCase):
|
|||||||
self.redis_conn = MockRedis()
|
self.redis_conn = MockRedis()
|
||||||
plpy_mock_config()
|
plpy_mock_config()
|
||||||
|
|
||||||
def test_should_return_config_for_obs_snapshot(self):
|
def test_should_return_config_for_obs_config(self):
|
||||||
yesterday = datetime.today() - timedelta(days=1)
|
|
||||||
build_redis_user_config(self.redis_conn, 'test_user', 'data_observatory',
|
|
||||||
quota=100, end_date=yesterday)
|
|
||||||
do_config = ObservatorySnapshotConfig(self.redis_conn, plpy_mock,
|
|
||||||
'test_user')
|
|
||||||
assert do_config.monthly_quota == 100
|
|
||||||
assert do_config.soft_limit is False
|
|
||||||
assert do_config.period_end_date.date() == yesterday.date()
|
|
||||||
|
|
||||||
def test_should_return_true_if_soft_limit_is_true_in_redis(self):
|
|
||||||
yesterday = datetime.today() - timedelta(days=1)
|
|
||||||
build_redis_user_config(self.redis_conn, 'test_user', 'data_observatory',
|
|
||||||
quota=0, soft_limit=True, end_date=yesterday)
|
|
||||||
do_config = ObservatorySnapshotConfig(self.redis_conn, plpy_mock,
|
|
||||||
'test_user')
|
|
||||||
assert do_config.soft_limit is True
|
|
||||||
|
|
||||||
def test_should_return_0_if_quota_is_0_in_redis(self):
|
|
||||||
yesterday = datetime.today() - timedelta(days=1)
|
|
||||||
build_redis_user_config(self.redis_conn, 'test_user', 'data_observatory',
|
|
||||||
quota=0, end_date=yesterday)
|
|
||||||
do_config = ObservatorySnapshotConfig(self.redis_conn, plpy_mock,
|
|
||||||
'test_user')
|
|
||||||
assert do_config.monthly_quota == 0
|
|
||||||
|
|
||||||
def test_should_return_0_if_quota_is_empty_in_redis(self):
|
|
||||||
yesterday = datetime.today() - timedelta(days=1)
|
|
||||||
build_redis_user_config(self.redis_conn, 'test_user', 'data_observatory',
|
|
||||||
quota='', end_date=yesterday)
|
|
||||||
do_config = ObservatorySnapshotConfig(self.redis_conn, plpy_mock,
|
|
||||||
'test_user')
|
|
||||||
assert do_config.monthly_quota == 0
|
|
||||||
|
|
||||||
def test_should_return_config_for_obs_snapshot(self):
|
|
||||||
yesterday = datetime.today() - timedelta(days=1)
|
yesterday = datetime.today() - timedelta(days=1)
|
||||||
build_redis_user_config(self.redis_conn, 'test_user', 'data_observatory',
|
build_redis_user_config(self.redis_conn, 'test_user', 'data_observatory',
|
||||||
quota=100, end_date=yesterday)
|
quota=100, end_date=yesterday)
|
||||||
|
@ -28,9 +28,7 @@ def build_redis_user_config(redis_conn, username, service, quota=100,
|
|||||||
redis_conn.hset(user_redis_name, 'mapzen_routing_quota', str(quota))
|
redis_conn.hset(user_redis_name, 'mapzen_routing_quota', str(quota))
|
||||||
redis_conn.hset(user_redis_name, 'soft_mapzen_routing_limit', str(soft_limit).lower())
|
redis_conn.hset(user_redis_name, 'soft_mapzen_routing_limit', str(soft_limit).lower())
|
||||||
elif service is 'data_observatory':
|
elif service is 'data_observatory':
|
||||||
redis_conn.hset(user_redis_name, 'obs_snapshot_quota', str(quota))
|
|
||||||
redis_conn.hset(user_redis_name, 'obs_general_quota', str(quota))
|
redis_conn.hset(user_redis_name, 'obs_general_quota', str(quota))
|
||||||
redis_conn.hset(user_redis_name, 'soft_obs_snapshot_limit', str(soft_limit).lower())
|
|
||||||
redis_conn.hset(user_redis_name, 'soft_obs_general_limit', str(soft_limit).lower())
|
redis_conn.hset(user_redis_name, 'soft_obs_general_limit', str(soft_limit).lower())
|
||||||
|
|
||||||
redis_conn.hset(user_redis_name, 'google_maps_client_id', '')
|
redis_conn.hset(user_redis_name, 'google_maps_client_id', '')
|
||||||
@ -57,7 +55,6 @@ def build_redis_org_config(redis_conn, orgname, service, quota=100,
|
|||||||
redis_conn.hset(org_redis_name, 'mapzen_routing_quota', str(quota))
|
redis_conn.hset(org_redis_name, 'mapzen_routing_quota', str(quota))
|
||||||
elif service is 'data_observatory':
|
elif service is 'data_observatory':
|
||||||
if quota is not None:
|
if quota is not None:
|
||||||
redis_conn.hset(org_redis_name, 'obs_snapshot_quota', str(quota))
|
|
||||||
redis_conn.hset(org_redis_name, 'obs_general_quota', str(quota))
|
redis_conn.hset(org_redis_name, 'obs_general_quota', str(quota))
|
||||||
|
|
||||||
redis_conn.hset(org_redis_name, 'google_maps_client_id', '')
|
redis_conn.hset(org_redis_name, 'google_maps_client_id', '')
|
||||||
|
@ -181,28 +181,6 @@ class TestQuotaService(TestCase):
|
|||||||
# Quick workaround so we don't take into account numer of credits
|
# Quick workaround so we don't take into account numer of credits
|
||||||
# spent for users that have defined the quota.
|
# spent for users that have defined the quota.
|
||||||
# See https://github.com/CartoDB/bigmetadata/issues/215
|
# See https://github.com/CartoDB/bigmetadata/issues/215
|
||||||
def test_should_check_user_obs_snapshot_quota_correctly(self):
|
|
||||||
qs = self.__build_obs_snapshot_quota_service('test_user')
|
|
||||||
qs.increment_success_service_use()
|
|
||||||
assert qs.check_user_quota() is True
|
|
||||||
qs.increment_success_service_use(amount=100000)
|
|
||||||
assert qs.check_user_quota() is True
|
|
||||||
|
|
||||||
def test_should_check_org_obs_snapshot_quota_correctly(self):
|
|
||||||
qs = self.__build_obs_snapshot_quota_service('test_user',
|
|
||||||
orgname='testorg')
|
|
||||||
qs.increment_success_service_use()
|
|
||||||
assert qs.check_user_quota() is True
|
|
||||||
qs.increment_success_service_use(amount=100000)
|
|
||||||
assert qs.check_user_quota() is True
|
|
||||||
|
|
||||||
def test_should_check_user_obs_quota_correctly(self):
|
|
||||||
qs = self.__build_obs_snapshot_quota_service('test_user')
|
|
||||||
qs.increment_success_service_use()
|
|
||||||
assert qs.check_user_quota() is True
|
|
||||||
qs.increment_success_service_use(amount=100000)
|
|
||||||
assert qs.check_user_quota() is True
|
|
||||||
|
|
||||||
def test_should_check_org_obs_quota_correctly(self):
|
def test_should_check_org_obs_quota_correctly(self):
|
||||||
qs = self.__build_obs_quota_service('test_user',
|
qs = self.__build_obs_quota_service('test_user',
|
||||||
orgname='testorg')
|
orgname='testorg')
|
||||||
@ -249,17 +227,6 @@ class TestQuotaService(TestCase):
|
|||||||
username, orgname)
|
username, orgname)
|
||||||
return QuotaService(isolines_config, redis_connection=self.redis_conn)
|
return QuotaService(isolines_config, redis_connection=self.redis_conn)
|
||||||
|
|
||||||
def __build_obs_snapshot_quota_service(self, username, quota=100,
|
|
||||||
provider='obs_snapshot',
|
|
||||||
orgname=None,
|
|
||||||
soft_limit=False,
|
|
||||||
end_date=datetime.today()):
|
|
||||||
self.__prepare_quota_service(username, 'data_observatory', quota,
|
|
||||||
None, orgname, soft_limit, end_date)
|
|
||||||
do_config = ObservatorySnapshotConfig(self.redis_conn, plpy_mock,
|
|
||||||
username, orgname)
|
|
||||||
return QuotaService(do_config, redis_connection=self.redis_conn)
|
|
||||||
|
|
||||||
def __build_obs_quota_service(self, username, quota=100,
|
def __build_obs_quota_service(self, username, quota=100,
|
||||||
provider='obs_general',
|
provider='obs_general',
|
||||||
orgname=None,
|
orgname=None,
|
||||||
|
Loading…
Reference in New Issue
Block a user