Skip to content

Commit 8f00622

Browse files
authored
Merge pull request #9520 from mook-as/ui/image-pull/path
Image: Fix PATH when running image commands
2 parents bb0c690 + 65d85cc commit 8f00622

File tree

5 files changed

+17
-25
lines changed

5 files changed

+17
-25
lines changed

background.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ async function startK8sManager() {
594594
*/
595595

596596
function setupImageProcessor() {
597-
const imageProcessor = getImageProcessor(cfg.containerEngine.name, k8smanager.executor);
597+
const imageProcessor = getImageProcessor(cfg.containerEngine.name, k8smanager);
598598

599599
currentImageProcessor?.deactivate();
600600
if (!imageEventHandler) {

pkg/rancher-desktop/backend/images/imageFactory.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { VMExecutor } from '@pkg/backend/backend';
1+
import { VMBackend } from '@pkg/backend/backend';
22
import { ImageProcessor } from '@pkg/backend/images/imageProcessor';
33
import MobyImageProcessor from '@pkg/backend/images/mobyImageProcessor';
44
import NerdctlImageProcessor from '@pkg/backend/images/nerdctlImageProcessor';
@@ -9,7 +9,7 @@ const cachedImageProcessors: Partial<Record<ContainerEngine, ImageProcessor>> =
99
/**
1010
* Return the appropriate ImageProcessor singleton for the specified ContainerEngine.
1111
*/
12-
export function getImageProcessor(engineName: ContainerEngine, executor: VMExecutor): ImageProcessor {
12+
export function getImageProcessor(engineName: ContainerEngine, executor: VMBackend): ImageProcessor {
1313
if (!(engineName in cachedImageProcessors)) {
1414
switch (engineName) {
1515
case ContainerEngine.MOBY:

pkg/rancher-desktop/backend/images/imageProcessor.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Buffer } from 'buffer';
22
import { EventEmitter } from 'events';
33
import timers from 'timers';
44

5-
import { VMExecutor } from '@pkg/backend/backend';
5+
import { VMBackend, VMExecutor } from '@pkg/backend/backend';
66
import mainEvents from '@pkg/main/mainEvents';
77
import { ChildProcess, ErrorCommand } from '@pkg/utils/childProcess';
88
import Logging from '@pkg/utils/logging';
@@ -70,7 +70,7 @@ interface ProcessChildOutputOptions {
7070
* an active ImageProcessor can be dropped.
7171
*/
7272
export abstract class ImageProcessor extends EventEmitter {
73-
protected executor: VMExecutor;
73+
protected backend: VMBackend;
7474
// Sometimes the `images` subcommand repeatedly fires the same error message.
7575
// Instead of logging it every time, keep track of the current error and give a count instead.
7676
private lastErrorMessage = '';
@@ -90,9 +90,9 @@ export abstract class ImageProcessor extends EventEmitter {
9090
// which imageProcessor is currently active, and it can direct events to that.
9191
protected active = false;
9292

93-
protected constructor(executor: VMExecutor) {
93+
protected constructor(backend: VMBackend) {
9494
super();
95-
this.executor = executor;
95+
this.backend = backend;
9696
this._refreshImages = this.refreshImages.bind(this);
9797
this.on('newListener', (event: string | symbol) => {
9898
if (!this.active) {
@@ -195,7 +195,7 @@ export abstract class ImageProcessor extends EventEmitter {
195195
}
196196

197197
return await this.processChildOutput(
198-
this.executor.spawn({ root: true }, ...args),
198+
this.backend.executor.spawn({ root: true }, ...args),
199199
{
200200
commandName: 'trivy',
201201
subcommandName: 'image',

pkg/rancher-desktop/backend/images/mobyImageProcessor.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
1-
import { spawn } from 'child_process';
21
import path from 'path';
32

4-
import { VMBackend, VMExecutor } from '@pkg/backend/backend';
3+
import { VMBackend } from '@pkg/backend/backend';
54
import * as imageProcessor from '@pkg/backend/images/imageProcessor';
65
import * as K8s from '@pkg/backend/k8s';
76
import mainEvents from '@pkg/main/mainEvents';
87
import Logging from '@pkg/utils/logging';
9-
import { executable } from '@pkg/utils/resources';
108
import * as window from '@pkg/window';
119

1210
const console = Logging.images;
1311

1412
export default class MobyImageProcessor extends imageProcessor.ImageProcessor {
15-
constructor(executor: VMExecutor) {
16-
super(executor);
13+
constructor(backend: VMBackend) {
14+
super(backend);
1715

1816
mainEvents.on('k8s-check-state', (mgr: VMBackend) => {
1917
if (!this.active) {
@@ -31,12 +29,8 @@ export default class MobyImageProcessor extends imageProcessor.ImageProcessor {
3129
protected async runImagesCommand(args: string[], sendNotifications = true): Promise<imageProcessor.childResultType> {
3230
const subcommandName = args[0];
3331

34-
if (this.executor.backend !== 'wsl' && !args.includes('--context')) {
35-
args.unshift('--context', 'rancher-desktop');
36-
}
37-
38-
return await this.processChildOutput(
39-
spawn(executable('docker'), args),
32+
return this.processChildOutput(
33+
this.backend.containerEngineClient.runClient(args, 'stream'),
4034
{
4135
subcommandName,
4236
notifications: {

pkg/rancher-desktop/backend/images/nerdctlImageProcessor.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { spawn } from 'child_process';
21
import path from 'path';
32

4-
import { VMBackend, VMExecutor } from '@pkg/backend/backend';
3+
import { VMBackend } from '@pkg/backend/backend';
54
import * as imageProcessor from '@pkg/backend/images/imageProcessor';
65
import * as K8s from '@pkg/backend/k8s';
76
import mainEvents from '@pkg/main/mainEvents';
@@ -12,8 +11,8 @@ import { executable } from '@pkg/utils/resources';
1211
const console = Logging.images;
1312

1413
export default class NerdctlImageProcessor extends imageProcessor.ImageProcessor {
15-
constructor(executor: VMExecutor) {
16-
super(executor);
14+
constructor(backend: VMBackend) {
15+
super(backend);
1716

1817
mainEvents.on('k8s-check-state', (mgr: VMBackend) => {
1918
if (!this.active) {
@@ -30,10 +29,9 @@ export default class NerdctlImageProcessor extends imageProcessor.ImageProcessor
3029

3130
protected async runImagesCommand(args: string[], sendNotifications = true): Promise<imageProcessor.childResultType> {
3231
const subcommandName = args[0];
33-
const namespacedArgs = ['--namespace', this.currentNamespace].concat(args);
3432

3533
return await this.processChildOutput(
36-
spawn(executable('nerdctl'), namespacedArgs),
34+
this.backend.containerEngineClient.runClient(args, 'stream', { namespace: this.currentNamespace }),
3735
{
3836
subcommandName,
3937
notifications: {

0 commit comments

Comments
 (0)