diff --git a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend.go b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend.go index 028b17c35a..0f0188c814 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend.go @@ -295,18 +295,6 @@ func (backend *DockerKurtosisBackend) GetUserServiceLogs( // NOTE: This function will block while the exec is ongoing; if we need more perf we can make it async func (backend *DockerKurtosisBackend) RunUserServiceExecCommands( - ctx context.Context, - enclaveUuid enclave.EnclaveUUID, - userServiceCommands map[service.ServiceUUID][]string, -) ( - map[service.ServiceUUID]*exec_result.ExecResult, - map[service.ServiceUUID]error, - error, -) { - return user_service_functions.RunUserServiceExecCommands(ctx, enclaveUuid, "", userServiceCommands, backend.dockerManager) -} - -func (backend *DockerKurtosisBackend) RunUserServiceExecCommandsAsUser( ctx context.Context, enclaveUuid enclave.EnclaveUUID, containerUser string, diff --git a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/engine_functions/docker_config_storage_creator/docker_config_storage_creator.go b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/engine_functions/docker_config_storage_creator/docker_config_storage_creator.go index e5a22cfa36..e0c313c0ae 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/engine_functions/docker_config_storage_creator/docker_config_storage_creator.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/engine_functions/docker_config_storage_creator/docker_config_storage_creator.go @@ -142,7 +142,7 @@ func storeConfigInVolume( } for i := uint(0); i < maxRetries; i++ { outputBuffer := &bytes.Buffer{} - exitCode, err := dockerManager.RunExecCommand(ctx, containerId, execCmd, outputBuffer) + exitCode, err := dockerManager.RunUserServiceExecCommands(ctx, containerId, "", execCmd, outputBuffer) if err == nil { if exitCode == creationSuccessExitCode { logrus.Debugf("The Docker config file was successfully added into the volume.") diff --git a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/engine_functions/github_auth_storage_creator/github_auth_storage_creator.go b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/engine_functions/github_auth_storage_creator/github_auth_storage_creator.go index f918ec4f92..929b1991bc 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/engine_functions/github_auth_storage_creator/github_auth_storage_creator.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/engine_functions/github_auth_storage_creator/github_auth_storage_creator.go @@ -4,13 +4,14 @@ import ( "bytes" "context" "fmt" + "os" + "path" + "time" + "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/consts" "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_impls/docker/docker_manager" "github.com/kurtosis-tech/stacktrace" "github.com/sirupsen/logrus" - "os" - "path" - "time" ) const ( @@ -124,7 +125,7 @@ func storeTokenInVolume( } for i := uint(0); i < maxRetries; i++ { outputBuffer := &bytes.Buffer{} - exitCode, err := dockerManager.RunExecCommand(ctx, containerId, execCmd, outputBuffer) + exitCode, err := dockerManager.RunUserServiceExecCommands(ctx, containerId, "", execCmd, outputBuffer) if err == nil { if exitCode == authStorageCreationSuccessExitCode { logrus.Debugf("The GitHub auth token was successfully added into the volume.") diff --git a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/logs_collector_functions/implementations/fluentbit/fluentbit_configuration_creator.go b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/logs_collector_functions/implementations/fluentbit/fluentbit_configuration_creator.go index d713300b46..9226eb24aa 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/logs_collector_functions/implementations/fluentbit/fluentbit_configuration_creator.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/logs_collector_functions/implementations/fluentbit/fluentbit_configuration_creator.go @@ -129,7 +129,7 @@ func (fluent *fluentbitConfigurationCreator) createFluentbitConfigFileInVolume( } for i := uint(0); i < maxRetries; i++ { outputBuffer := &bytes.Buffer{} - exitCode, err := dockerManager.RunExecCommand(ctx, containerId, execCmd, outputBuffer) + exitCode, err := dockerManager.RunUserServiceExecCommands(ctx, containerId, "", execCmd, outputBuffer) if err == nil { if exitCode == configFileCreationSuccessExitCode { logrus.Debugf("The Fluentbit config file with content '%v' was successfully added into the volume", configFileContentStr) diff --git a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/shared_helpers/shared_helpers.go b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/shared_helpers/shared_helpers.go index 18c3e533e2..2a11bc0288 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/shared_helpers/shared_helpers.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/shared_helpers/shared_helpers.go @@ -5,7 +5,6 @@ import ( "context" "encoding/json" "fmt" - "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_impls/docker/object_attributes_provider/docker_label_key" "io" "net" "os" @@ -14,6 +13,8 @@ import ( "strings" "time" + "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_impls/docker/object_attributes_provider/docker_label_key" + "github.com/docker/docker/pkg/stdcopy" "github.com/docker/go-connections/nat" "github.com/gammazero/workerpool" @@ -379,7 +380,7 @@ func WaitForPortAvailabilityUsingNetstat( } for i := uint(0); i < maxRetries; i++ { outputBuffer := &bytes.Buffer{} - exitCode, err := dockerManager.RunExecCommand(ctx, containerId, execCmd, outputBuffer) + exitCode, err := dockerManager.RunUserServiceExecCommands(ctx, containerId, "", execCmd, outputBuffer) if err == nil { if exitCode == netstatSuccessExitCode { return nil diff --git a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/user_services_functions/run_user_service_exec_commands.go b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/user_services_functions/run_user_service_exec_commands.go index 2ae01ab6fe..1fd7b4ef2e 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/user_services_functions/run_user_service_exec_commands.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/user_services_functions/run_user_service_exec_commands.go @@ -3,6 +3,8 @@ package user_service_functions import ( "bytes" "context" + "reflect" + "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/shared_helpers" "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_impls/docker/docker_manager" "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_interface/objects/enclave" @@ -10,7 +12,6 @@ import ( "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_interface/objects/service" "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/operation_parallelizer" "github.com/kurtosis-tech/stacktrace" - "reflect" ) // TODO Switch these to streaming so that huge command outputs don't blow up the API container memory @@ -119,7 +120,7 @@ func createExecOperation( execOutputBuf := &bytes.Buffer{} userServiceDockerContainer := userServiceDockerResource.ServiceContainer - exitCode, err := dockerManager.RunExecCommandAsUser( + exitCode, err := dockerManager.RunUserServiceExecCommands( ctx, userServiceDockerContainer.GetId(), containerUser, diff --git a/container-engine-lib/lib/backend_impls/docker/docker_manager/docker_manager.go b/container-engine-lib/lib/backend_impls/docker/docker_manager/docker_manager.go index 9c559a1cbf..bae23ee2d4 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_manager/docker_manager.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_manager/docker_manager.go @@ -990,14 +990,10 @@ func (manager *DockerManager) GetContainerLogs( } /* -RunExecCommand +RunUserServiceExecCommands Executes the given command inside the container with the given ID, blocking until the command completes */ -func (manager *DockerManager) RunExecCommand(context context.Context, containerId string, command []string, logOutput io.Writer) (int32, error) { - return manager.RunExecCommandAsUser(context, containerId, "", command, logOutput) -} - -func (manager *DockerManager) RunExecCommandAsUser(context context.Context, containerId, userId string, command []string, logOutput io.Writer) (int32, error) { +func (manager *DockerManager) RunUserServiceExecCommands(context context.Context, containerId, userId string, command []string, logOutput io.Writer) (int32, error) { dockerClient := manager.dockerClient execConfig := types.ExecConfig{ User: userId, diff --git a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/kubernetes_kurtosis_backend.go b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/kubernetes_kurtosis_backend.go index 002def6726..3c3b284536 100644 --- a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/kubernetes_kurtosis_backend.go +++ b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/kubernetes_kurtosis_backend.go @@ -347,12 +347,17 @@ func (backend *KubernetesKurtosisBackend) GetUserServiceLogs( func (backend *KubernetesKurtosisBackend) RunUserServiceExecCommands( ctx context.Context, enclaveUuid enclave.EnclaveUUID, + containerUser string, userServiceCommands map[service.ServiceUUID][]string, ) ( succesfulUserServiceExecResults map[service.ServiceUUID]*exec_result.ExecResult, erroredUserServiceUuids map[service.ServiceUUID]error, resultErr error, ) { + if containerUser != "" { + resultErr = stacktrace.NewError("--user not implemented for kurtosis backend") + return + } return user_services_functions.RunUserServiceExecCommands( ctx, enclaveUuid, @@ -363,20 +368,6 @@ func (backend *KubernetesKurtosisBackend) RunUserServiceExecCommands( backend.kubernetesManager) } -func (backend *KubernetesKurtosisBackend) RunUserServiceExecCommandsAsUser( - ctx context.Context, - _ enclave.EnclaveUUID, - _ string, - _ map[service.ServiceUUID][]string, -) ( - succesfulUserServiceExecResults map[service.ServiceUUID]*exec_result.ExecResult, - erroredUserServiceUuids map[service.ServiceUUID]error, - resultErr error, -) { - resultErr = stacktrace.NewError("--user not implemented for kurtosis backend") - return -} - func (backend *KubernetesKurtosisBackend) RunUserServiceExecCommandWithStreamedOutput( ctx context.Context, enclaveUuid enclave.EnclaveUUID, diff --git a/container-engine-lib/lib/backend_impls/metrics_reporting/metrics_reporting_kurtosis_backend.go b/container-engine-lib/lib/backend_impls/metrics_reporting/metrics_reporting_kurtosis_backend.go index c2bf0d8cce..6bd0477876 100644 --- a/container-engine-lib/lib/backend_impls/metrics_reporting/metrics_reporting_kurtosis_backend.go +++ b/container-engine-lib/lib/backend_impls/metrics_reporting/metrics_reporting_kurtosis_backend.go @@ -319,7 +319,7 @@ func (backend *MetricsReportingKurtosisBackend) GetUserServiceLogs( return userServiceLogs, erroredUserServices, nil } -func (backend *MetricsReportingKurtosisBackend) RunUserServiceExecCommandsAsUser( +func (backend *MetricsReportingKurtosisBackend) RunUserServiceExecCommands( ctx context.Context, enclaveUuid enclave.EnclaveUUID, containerUser string, @@ -329,7 +329,7 @@ func (backend *MetricsReportingKurtosisBackend) RunUserServiceExecCommandsAsUser erroredUserServiceUuids map[service.ServiceUUID]error, resultErr error, ) { - successfulUserServiceExecResults, erroredUserServiceUuids, err := backend.underlying.RunUserServiceExecCommandsAsUser(ctx, enclaveUuid, containerUser, userServiceCommands) + successfulUserServiceExecResults, erroredUserServiceUuids, err := backend.underlying.RunUserServiceExecCommands(ctx, enclaveUuid, containerUser, userServiceCommands) if err != nil { return nil, nil, stacktrace.Propagate( err, @@ -341,18 +341,6 @@ func (backend *MetricsReportingKurtosisBackend) RunUserServiceExecCommandsAsUser return successfulUserServiceExecResults, erroredUserServiceUuids, nil } -func (backend *MetricsReportingKurtosisBackend) RunUserServiceExecCommands( - ctx context.Context, - enclaveUuid enclave.EnclaveUUID, - userServiceCommands map[service.ServiceUUID][]string, -) ( - successfulUserServiceExecResults map[service.ServiceUUID]*exec_result.ExecResult, - erroredUserServiceUuids map[service.ServiceUUID]error, - resultErr error, -) { - return backend.underlying.RunUserServiceExecCommands(ctx, enclaveUuid, userServiceCommands) -} - func (backend *MetricsReportingKurtosisBackend) RunUserServiceExecCommandWithStreamedOutput( ctx context.Context, enclaveUuid enclave.EnclaveUUID, diff --git a/container-engine-lib/lib/backend_interface/kurtosis_backend.go b/container-engine-lib/lib/backend_interface/kurtosis_backend.go index ccaea777fa..fa23108d5c 100644 --- a/container-engine-lib/lib/backend_interface/kurtosis_backend.go +++ b/container-engine-lib/lib/backend_interface/kurtosis_backend.go @@ -278,17 +278,6 @@ type KurtosisBackend interface { // Executes a shell command inside an user service instance indenfified by its ID RunUserServiceExecCommands( - ctx context.Context, - enclaveUuid enclave.EnclaveUUID, - userServiceCommands map[service.ServiceUUID][]string, - ) ( - successfulUserServiceExecResults map[service.ServiceUUID]*exec_result.ExecResult, - erroredUserServiceUuids map[service.ServiceUUID]error, - resultErr error, - ) - - // Executes a shell command inside an user service instance indenfified by its ID and as a specifc user - RunUserServiceExecCommandsAsUser( ctx context.Context, enclaveUuid enclave.EnclaveUUID, containerUser string, diff --git a/container-engine-lib/lib/backend_interface/mock_kurtosis_backend.go b/container-engine-lib/lib/backend_interface/mock_kurtosis_backend.go index 71c7c524ce..f400480f99 100644 --- a/container-engine-lib/lib/backend_interface/mock_kurtosis_backend.go +++ b/container-engine-lib/lib/backend_interface/mock_kurtosis_backend.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.39.0. DO NOT EDIT. package backend_interface @@ -2068,81 +2068,12 @@ func (_c *MockKurtosisBackend_RunUserServiceExecCommandWithStreamedOutput_Call) return _c } -// RunUserServiceExecCommands provides a mock function with given fields: ctx, enclaveUuid, userServiceCommands -func (_m *MockKurtosisBackend) RunUserServiceExecCommands(ctx context.Context, enclaveUuid enclave.EnclaveUUID, userServiceCommands map[service.ServiceUUID][]string) (map[service.ServiceUUID]*exec_result.ExecResult, map[service.ServiceUUID]error, error) { - ret := _m.Called(ctx, enclaveUuid, userServiceCommands) - - if len(ret) == 0 { - panic("no return value specified for RunUserServiceExecCommands") - } - - var r0 map[service.ServiceUUID]*exec_result.ExecResult - var r1 map[service.ServiceUUID]error - var r2 error - if rf, ok := ret.Get(0).(func(context.Context, enclave.EnclaveUUID, map[service.ServiceUUID][]string) (map[service.ServiceUUID]*exec_result.ExecResult, map[service.ServiceUUID]error, error)); ok { - return rf(ctx, enclaveUuid, userServiceCommands) - } - if rf, ok := ret.Get(0).(func(context.Context, enclave.EnclaveUUID, map[service.ServiceUUID][]string) map[service.ServiceUUID]*exec_result.ExecResult); ok { - r0 = rf(ctx, enclaveUuid, userServiceCommands) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(map[service.ServiceUUID]*exec_result.ExecResult) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, enclave.EnclaveUUID, map[service.ServiceUUID][]string) map[service.ServiceUUID]error); ok { - r1 = rf(ctx, enclaveUuid, userServiceCommands) - } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).(map[service.ServiceUUID]error) - } - } - - if rf, ok := ret.Get(2).(func(context.Context, enclave.EnclaveUUID, map[service.ServiceUUID][]string) error); ok { - r2 = rf(ctx, enclaveUuid, userServiceCommands) - } else { - r2 = ret.Error(2) - } - - return r0, r1, r2 -} - -// MockKurtosisBackend_RunUserServiceExecCommands_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RunUserServiceExecCommands' -type MockKurtosisBackend_RunUserServiceExecCommands_Call struct { - *mock.Call -} - -// RunUserServiceExecCommands is a helper method to define mock.On call -// - ctx context.Context -// - enclaveUuid enclave.EnclaveUUID -// - userServiceCommands map[service.ServiceUUID][]string -func (_e *MockKurtosisBackend_Expecter) RunUserServiceExecCommands(ctx interface{}, enclaveUuid interface{}, userServiceCommands interface{}) *MockKurtosisBackend_RunUserServiceExecCommands_Call { - return &MockKurtosisBackend_RunUserServiceExecCommands_Call{Call: _e.mock.On("RunUserServiceExecCommands", ctx, enclaveUuid, userServiceCommands)} -} - -func (_c *MockKurtosisBackend_RunUserServiceExecCommands_Call) Run(run func(ctx context.Context, enclaveUuid enclave.EnclaveUUID, userServiceCommands map[service.ServiceUUID][]string)) *MockKurtosisBackend_RunUserServiceExecCommands_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(enclave.EnclaveUUID), args[2].(map[service.ServiceUUID][]string)) - }) - return _c -} - -func (_c *MockKurtosisBackend_RunUserServiceExecCommands_Call) Return(successfulUserServiceExecResults map[service.ServiceUUID]*exec_result.ExecResult, erroredUserServiceUuids map[service.ServiceUUID]error, resultErr error) *MockKurtosisBackend_RunUserServiceExecCommands_Call { - _c.Call.Return(successfulUserServiceExecResults, erroredUserServiceUuids, resultErr) - return _c -} - -func (_c *MockKurtosisBackend_RunUserServiceExecCommands_Call) RunAndReturn(run func(context.Context, enclave.EnclaveUUID, map[service.ServiceUUID][]string) (map[service.ServiceUUID]*exec_result.ExecResult, map[service.ServiceUUID]error, error)) *MockKurtosisBackend_RunUserServiceExecCommands_Call { - _c.Call.Return(run) - return _c -} - -// RunUserServiceExecCommandsAsUser provides a mock function with given fields: ctx, enclaveUuid, containerUser, userServiceCommands -func (_m *MockKurtosisBackend) RunUserServiceExecCommandsAsUser(ctx context.Context, enclaveUuid enclave.EnclaveUUID, containerUser string, userServiceCommands map[service.ServiceUUID][]string) (map[service.ServiceUUID]*exec_result.ExecResult, map[service.ServiceUUID]error, error) { +// RunUserServiceExecCommands provides a mock function with given fields: ctx, enclaveUuid, containerUser, userServiceCommands +func (_m *MockKurtosisBackend) RunUserServiceExecCommands(ctx context.Context, enclaveUuid enclave.EnclaveUUID, containerUser string, userServiceCommands map[service.ServiceUUID][]string) (map[service.ServiceUUID]*exec_result.ExecResult, map[service.ServiceUUID]error, error) { ret := _m.Called(ctx, enclaveUuid, containerUser, userServiceCommands) if len(ret) == 0 { - panic("no return value specified for RunUserServiceExecCommandsAsUser") + panic("no return value specified for RunUserServiceExecCommands") } var r0 map[service.ServiceUUID]*exec_result.ExecResult @@ -2176,33 +2107,33 @@ func (_m *MockKurtosisBackend) RunUserServiceExecCommandsAsUser(ctx context.Cont return r0, r1, r2 } -// MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RunUserServiceExecCommandsAsUser' -type MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call struct { +// MockKurtosisBackend_RunUserServiceExecCommands_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RunUserServiceExecCommands' +type MockKurtosisBackend_RunUserServiceExecCommands_Call struct { *mock.Call } -// RunUserServiceExecCommandsAsUser is a helper method to define mock.On call +// RunUserServiceExecCommands is a helper method to define mock.On call // - ctx context.Context // - enclaveUuid enclave.EnclaveUUID // - containerUser string // - userServiceCommands map[service.ServiceUUID][]string -func (_e *MockKurtosisBackend_Expecter) RunUserServiceExecCommandsAsUser(ctx interface{}, enclaveUuid interface{}, containerUser interface{}, userServiceCommands interface{}) *MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call { - return &MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call{Call: _e.mock.On("RunUserServiceExecCommandsAsUser", ctx, enclaveUuid, containerUser, userServiceCommands)} +func (_e *MockKurtosisBackend_Expecter) RunUserServiceExecCommands(ctx interface{}, enclaveUuid interface{}, containerUser interface{}, userServiceCommands interface{}) *MockKurtosisBackend_RunUserServiceExecCommands_Call { + return &MockKurtosisBackend_RunUserServiceExecCommands_Call{Call: _e.mock.On("RunUserServiceExecCommands", ctx, enclaveUuid, containerUser, userServiceCommands)} } -func (_c *MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call) Run(run func(ctx context.Context, enclaveUuid enclave.EnclaveUUID, containerUser string, userServiceCommands map[service.ServiceUUID][]string)) *MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call { +func (_c *MockKurtosisBackend_RunUserServiceExecCommands_Call) Run(run func(ctx context.Context, enclaveUuid enclave.EnclaveUUID, containerUser string, userServiceCommands map[service.ServiceUUID][]string)) *MockKurtosisBackend_RunUserServiceExecCommands_Call { _c.Call.Run(func(args mock.Arguments) { run(args[0].(context.Context), args[1].(enclave.EnclaveUUID), args[2].(string), args[3].(map[service.ServiceUUID][]string)) }) return _c } -func (_c *MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call) Return(successfulUserServiceExecResults map[service.ServiceUUID]*exec_result.ExecResult, erroredUserServiceUuids map[service.ServiceUUID]error, resultErr error) *MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call { +func (_c *MockKurtosisBackend_RunUserServiceExecCommands_Call) Return(successfulUserServiceExecResults map[service.ServiceUUID]*exec_result.ExecResult, erroredUserServiceUuids map[service.ServiceUUID]error, resultErr error) *MockKurtosisBackend_RunUserServiceExecCommands_Call { _c.Call.Return(successfulUserServiceExecResults, erroredUserServiceUuids, resultErr) return _c } -func (_c *MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call) RunAndReturn(run func(context.Context, enclave.EnclaveUUID, string, map[service.ServiceUUID][]string) (map[service.ServiceUUID]*exec_result.ExecResult, map[service.ServiceUUID]error, error)) *MockKurtosisBackend_RunUserServiceExecCommandsAsUser_Call { +func (_c *MockKurtosisBackend_RunUserServiceExecCommands_Call) RunAndReturn(run func(context.Context, enclave.EnclaveUUID, string, map[service.ServiceUUID][]string) (map[service.ServiceUUID]*exec_result.ExecResult, map[service.ServiceUUID]error, error)) *MockKurtosisBackend_RunUserServiceExecCommands_Call { _c.Call.Return(run) return _c }