async def run_by_id_pair(params: IDPair): codepack_storage_service = Default.get_service('codepack', 'storage_service') codepack = codepack_storage_service.load(params.codepack_id) argpack_storage_service = Default.get_service('argpack', 'storage_service') argpack = argpack_storage_service.load(params.argpack_id) common.supervisor.run_codepack(codepack=codepack, argpack=argpack) return {'serial_number': codepack.serial_number}
async def register_by_id_pair(params: IDPairJob): codepack_storage_service = Default.get_service('codepack', 'storage_service') codepack = codepack_storage_service.load(params.codepack_id) argpack_storage_service = Default.get_service('argpack', 'storage_service') argpack = argpack_storage_service.load(params.argpack_id) common.scheduler.add_codepack(codepack=codepack, argpack=argpack, job_id=params.job_id, trigger=params.trigger, **params.trigger_config) return {'serial_number': codepack.serial_number}
async def result(serial_number: str): delivery_service = Default.get_service('delivery', 'delivery_service') tmp = delivery_service.check(serial_number=serial_number) if tmp: _result = delivery_service.receive(serial_number=serial_number) else: _result = None return {'serial_number': serial_number, 'result': _result}
def default_os_env(): os.environ['CODEPACK_CONFIG_DIR'] = 'config' os.environ['CODEPACK_CONFIG_PATH'] = 'test.ini' Default.get_service('delivery', 'delivery_service').storage.init() Default.get_service('code_snapshot', 'snapshot_service').storage.init() Default.get_service('code', 'storage_service').storage.init() Default.get_service('codepack', 'storage_service').storage.init() yield os.environ.pop('CODEPACK_CONFIG_DIR', None) os.environ.pop('CODEPACK_CONFIG_PATH', None)
async def result(serial_number: str): snapshot_service = Default.get_service('codepack_snapshot', 'snapshot_service') snapshot = snapshot_service.load(serial_number=serial_number) _result = None if snapshot and snapshot['subscribe']: codepack_snapshot = CodePackSnapshot.from_dict(snapshot) codepack = CodePack.from_snapshot(codepack_snapshot) _result = codepack.get_result() return {'serial_number': serial_number, 'result': _result}
async def register_by_id(params: CodePackIDJob): storage_service = Default.get_service('codepack', 'storage_service') codepack = storage_service.load(params.id) argpack = ArgPack.from_json(params.argpack) common.scheduler.add_codepack(codepack=codepack, argpack=argpack, job_id=params.job_id, trigger=params.trigger, **params.trigger_config) return {'serial_number': codepack.serial_number}
def test_default_memory_delivery_service_with_os_env(): config = Config() storage_config = config.get_storage_config('delivery') assert storage_config == {'source': 'memory'} env_source = 'CODEPACK_DELIVERY_SOURCE' try: os.environ[env_source] = 'memory' mds = Default.get_service('delivery', 'delivery_service') assert isinstance(mds.storage, MemoryStorage) finally: for env in [env_source]: os.environ.pop(env, None)
async def state(serial_number: str): snapshot_service = Default.get_service('code_snapshot', 'snapshot_service') snapshot = snapshot_service.load(serial_number=serial_number, projection={'state', 'message'}) ret = {'serial_number': serial_number} if snapshot: _state = snapshot['state'] if snapshot['message']: ret['message'] = snapshot['message'] else: _state = 'UNKNOWN' ret['state'] = _state return ret
def test_default_memory_code_storage_service_with_os_env(): config = Config() storage_config = config.get_storage_config('code') assert storage_config == {'source': 'memory'} env_source = 'CODEPACK_CODE_SOURCE' try: os.environ[env_source] = 'memory' mss = Default.get_service('code', 'storage_service') assert hasattr(mss.storage, 'memory') assert mss.storage.item_type == Code finally: if env_source in os.environ: os.environ.pop(env_source, None)
def test_default_file_code_snapshot_service_with_os_env(): config = Config() storage_config = config.get_storage_config('code_snapshot') assert storage_config == {'source': 'memory'} env_source = 'CODEPACK_CODESNAPSHOT_SOURCE' env_path = 'CODEPACK_CODESNAPSHOT_PATH' try: os.environ[env_source] = 'file' os.environ[env_path] = 'tmp/' fss = Default.get_service('code_snapshot', 'snapshot_service') assert hasattr(fss.storage, 'path') assert fss.storage.path == 'tmp/' finally: for env in [env_source, env_path]: os.environ.pop(env, None)
async def state(serial_number: str): snapshot_service = Default.get_service('codepack_snapshot', 'snapshot_service') tmp = snapshot_service.load(serial_number=serial_number) ret = {'serial_number': serial_number} if tmp: codepack_snapshot = CodePackSnapshot.from_dict(tmp) codepack = CodePack.from_snapshot(codepack_snapshot) _state = codepack.get_state() if _state == 'ERROR': ret['message'] = codepack.get_message() else: _state = 'UNKNOWN' ret['state'] = _state return ret
def test_default_file_delivery_service_with_os_env(): config = Config() storage_config = config.get_storage_config('delivery') assert storage_config == {'source': 'memory'} env_source = 'CODEPACK_DELIVERY_SOURCE' env_path = 'CODEPACK_DELIVERY_PATH' try: os.environ[env_source] = 'file' os.environ[env_path] = 'tmp/' fds = Default.get_service('delivery', 'delivery_service') assert hasattr(fds.storage, 'path') assert fds.storage.path == 'tmp/' finally: for env in [env_source, env_path]: os.environ.pop(env, None)
def test_default_memory_code_snapshot_service_with_os_env(fake_mongodb): mss = None try: config = Config() storage_config = config.get_storage_config('code_snapshot') assert storage_config == {'source': 'memory'} os.environ['CODEPACK_CODESNAPSHOT_SOURCE'] = 'mongodb' os.environ['CODEPACK_CODESNAPSHOT_DB'] = 'test_db' os.environ['CODEPACK_CODESNAPSHOT_COLLECTION'] = 'test_collection' mss = Default.get_service('code_snapshot', 'snapshot_service') assert hasattr(mss.storage, 'mongodb') assert mss.storage.db == 'test_db' assert mss.storage.collection == 'test_collection' finally: if mss is not None and not mss.storage.mongodb.closed(): mss.storage.mongodb.close() os.environ.pop('CODEPACK_CODESNAPSHOT_SOURCE', None) os.environ.pop('CODEPACK_CODESNAPSHOT_DB', None) os.environ.pop('CODEPACK_CODESNAPSHOT_COLLECTION', None)
def test_default_mongo_code_snapshot_service_with_os_env(): config = Config() storage_config = config.get_storage_config('code_snapshot') assert storage_config == {'source': 'memory'} env_source = 'CODEPACK_CODESNAPSHOT_SOURCE' env_db = 'CODEPACK_CODESNAPSHOT_DB' env_collection = 'CODEPACK_CODESNAPSHOT_COLLECTION' mss = None try: os.environ[env_source] = 'mongodb' os.environ[env_db] = 'test' os.environ[env_collection] = 'snapshot' mss = Default.get_service('code_snapshot', 'snapshot_service') finally: if mss is not None and not mss.storage.mongodb.closed(): mss.storage.mongodb.close() for env in [env_source, env_db, env_collection]: os.environ.pop(env, None) assert hasattr(mss.storage, 'mongodb')
def test_default_mongo_delivery_service_with_os_env(): config = Config() storage_config = config.get_storage_config('delivery') assert storage_config == {'source': 'memory'} env_source = 'CODEPACK_DELIVERY_SOURCE' env_db = 'CODEPACK_DELIVERY_DB' env_collection = 'CODEPACK_DELIVERY_COLLECTION' mds = None try: os.environ[env_source] = 'mongodb' os.environ[env_db] = 'test' os.environ[env_collection] = 'delivery' mds = Default.get_service('delivery', 'delivery_service') assert hasattr(mds.storage, 'mongodb') assert mds.storage.db == 'test' assert mds.storage.collection == 'delivery' finally: for env in [env_source, env_db, env_collection]: os.environ.pop(env, None) if mds is not None and not mds.storage.mongodb.closed(): mds.storage.mongodb.close()
def test_default_mongo_code_storage_service_with_os_env(): config = Config() storage_config = config.get_storage_config('code') assert storage_config == {'source': 'memory'} env_source = 'CODEPACK_CODE_SOURCE' env_db = 'CODEPACK_CODE_DB' env_collection = 'CODEPACK_CODE_COLLECTION' mss = None try: os.environ[env_source] = 'mongodb' os.environ[env_db] = 'test' os.environ[env_collection] = 'codes' mss = Default.get_service('code', 'storage_service') assert hasattr(mss.storage, 'mongodb') assert mss.storage.item_type == Code assert mss.storage.db == 'test' assert mss.storage.collection == 'codes' finally: for env in [env_source, env_db, env_collection]: os.environ.pop(env, None) if mss is not None and not mss.storage.mongodb.closed(): mss.storage.mongodb.close()
def test_get_default_service(): service = Default.get_service('delivery', 'delivery_service') assert isinstance(service, DeliveryService) and isinstance( service.storage, MemoryStorage)
async def load(id: str): storage_service = Default.get_service('codepack', 'storage_service') codepack = storage_service.load(id) return {'codepack': codepack.to_json()}
async def remove(id: str): storage_service = Default.get_service('codepack', 'storage_service') storage_service.remove(id) return {'id': id}
async def run_by_id(params: CodePackID): storage_service = Default.get_service('codepack', 'storage_service') codepack = storage_service.load(params.id) argpack = ArgPack.from_json(params.argpack) common.supervisor.run_codepack(codepack=codepack, argpack=argpack) return {'serial_number': codepack.serial_number}
async def update(argpack: ArgPackJSON): storage_service = Default.get_service('argpack', 'storage_service') tmp = ArgPack.from_json(argpack.argpack) storage_service.save(item=tmp, update=True) return {'id': tmp.id}
async def run_by_id(params: CodeID): storage_service = Default.get_service('code', 'storage_service') code = storage_service.load(params.id) common.supervisor.run_code(code=code, args=params.args, kwargs=params.kwargs) return {'serial_number': code.serial_number}