Esempio n. 1
0
def _create_workspace_directly(cur_dir):
    from daemon.models import DaemonID
    from daemon.helper import get_workspace_path
    from daemon.files import DaemonFile
    from daemon import daemon_logger
    from daemon.dockerize import Dockerizer
    from daemon.stores import workspace_store
    from daemon.models import WorkspaceItem
    from daemon.models.workspaces import WorkspaceMetadata
    from daemon.models.workspaces import WorkspaceArguments

    workspace_id = DaemonID('jworkspace')

    workdir = get_workspace_path(workspace_id)
    shutil.copytree(cur_dir, workdir)

    daemon_file = DaemonFile(
        workdir=get_workspace_path(workspace_id), logger=daemon_logger
    )

    image_id = Dockerizer.build(
        workspace_id=workspace_id, daemon_file=daemon_file, logger=daemon_logger
    )
    network_id = Dockerizer.network(workspace_id=workspace_id)
    from jina.enums import RemoteWorkspaceState

    workspace_store[workspace_id] = WorkspaceItem(
        state=RemoteWorkspaceState.ACTIVE,
        metadata=WorkspaceMetadata(
            image_id=image_id,
            image_name=workspace_id.tag,
            network=network_id,
            workdir=workdir,
        ),
        arguments=WorkspaceArguments(
            files=os.listdir(cur_dir), jinad={'a': 'b'}, requirements=''
        ),
    )
    return image_id, network_id, workspace_id, workspace_store
Esempio n. 2
0
def test_multiple_requirements_txt():
    assert sorted(
        DaemonFile(
            os.path.join(cur_dir, '../../distributed/test_dir_structures/src5')
        ).requirements.split()) == ['sklearn', 'tinydb']
Esempio n. 3
0
def test_jinad_file_bad(workdir):
    with pytest.raises(DaemonInvalidDockerfile):
        DaemonFile(workdir=f'{cur_dir}/models/{workdir}')
Esempio n. 4
0
def test_jinad_file_good(workdir, expected_response):
    d = DaemonFile(workdir=f'{cur_dir}/models/{workdir}')
    assert d.dockerfile.endswith(expected_response[0])
    assert d.python == expected_response[1]
    assert d.run == expected_response[2]
    assert d.ports == expected_response[3]
Esempio n. 5
0
def test_jinad_file_workspace(workdir, expected_response):
    d = DaemonFile(workdir=f'{cur_dir}/models/{workdir}')
    assert d.build == expected_response[0]
    assert d.python == expected_response[1]
    assert d.run == expected_response[2]
    assert d.ports == expected_response[3]
Esempio n. 6
0
    def daemon_file(self) -> DaemonFile:
        """set daemonfile for current worker thread

        :return: DaemonFile object representing current workspace
        """
        return DaemonFile(workdir=self.workdir, logger=self._logger)