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
def test_multiple_requirements_txt(): assert sorted( DaemonFile( os.path.join(cur_dir, '../../distributed/test_dir_structures/src5') ).requirements.split()) == ['sklearn', 'tinydb']
def test_jinad_file_bad(workdir): with pytest.raises(DaemonInvalidDockerfile): DaemonFile(workdir=f'{cur_dir}/models/{workdir}')
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]
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]
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)