示例#1
0
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}
示例#2
0
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}
示例#3
0
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}
示例#4
0
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)
示例#5
0
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}
示例#6
0
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}
示例#7
0
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)
示例#8
0
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
示例#9
0
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)
示例#10
0
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)
示例#11
0
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
示例#12
0
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)
示例#13
0
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)
示例#14
0
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')
示例#15
0
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()
示例#16
0
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()
示例#17
0
def test_get_default_service():
    service = Default.get_service('delivery', 'delivery_service')
    assert isinstance(service, DeliveryService) and isinstance(
        service.storage, MemoryStorage)
示例#18
0
async def load(id: str):
    storage_service = Default.get_service('codepack', 'storage_service')
    codepack = storage_service.load(id)
    return {'codepack': codepack.to_json()}
示例#19
0
async def remove(id: str):
    storage_service = Default.get_service('codepack', 'storage_service')
    storage_service.remove(id)
    return {'id': id}
示例#20
0
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}
示例#21
0
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}
示例#22
0
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}