Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/backend/src/utils/modelsUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export function getRemoteModelFile(modelInfo: ModelInfo): string {
*/
export async function isModelUploaded(machine: string, modelInfo: ModelInfo): Promise<boolean> {
try {
const remotePath = getRemoteModelFile(modelInfo);
const remotePath = getRemoteModelFile(modelInfo).replace(/ /g, '\\ ');
await process.exec(getPodmanCli(), ['machine', 'ssh', machine, 'stat', remotePath]);
return true;
} catch (err: unknown) {
Expand Down
34 changes: 34 additions & 0 deletions packages/backend/src/workers/uploader/WSLUploader.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,40 @@ describe('upload', () => {
]);
});

test('copy model if not exists on podman machine with space handling', async () => {
vi.mocked(process.exec).mockRejectedValueOnce('error');
await wslUploader.perform({
connection: connectionMock,
model: {
id: 'dummyId',
file: { path: 'C:\\Users\\podman folder', file: 'dummy.guff' },
} as unknown as ModelInfo,
});
expect(process.exec).toBeCalledWith('podman.exe', [
'machine',
'ssh',
'machine2',
'stat',
'/home/user/ai-lab/models/dummy.guff',
]);
expect(process.exec).toBeCalledWith('podman.exe', [
'machine',
'ssh',
'machine2',
'mkdir',
'-p',
'/home/user/ai-lab/models',
]);
expect(process.exec).toBeCalledWith('podman.exe', [
'machine',
'ssh',
'machine2',
'cp',
'/mnt/c/Users/podman\\ folder/dummy.guff',
'/home/user/ai-lab/models/dummy.guff',
]);
});

test('do not copy model if it exists on podman machine', async () => {
vi.mocked(process.exec).mockResolvedValue({} as RunResult);
await wslUploader.perform({
Expand Down
5 changes: 3 additions & 2 deletions packages/backend/src/workers/uploader/WSLUploader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,12 @@ export class WSLUploader extends WindowsWorker<UploaderOptions, string> {
const driveLetter = localPath.charAt(0);
const convertToMntPath = localPath
.replace(`${driveLetter}:\\`, `/mnt/${driveLetter.toLowerCase()}/`)
.replace(/\\/g, '/');
.replace(/\\/g, '/')
.replace(/ /g, '\\ ');

// check if model already loaded on the podman machine
const existsRemote = await isModelUploaded(machineName, options.model);
const remoteFile = getRemoteModelFile(options.model);
const remoteFile = getRemoteModelFile(options.model).replace(/ /g, '\\ ');

// if not exists remotely it copies it from the local path
if (!existsRemote) {
Expand Down