From 8d609686ce78a72f82455592b48eeab94b44c359 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Tue, 18 Jul 2023 15:11:47 +0100 Subject: [PATCH] feat: upload files support relative locators (#930) ## Description: had missed upload when i fixed read, import ## Is this change user facing? YES --- .../kurtosis_instruction/add_service/add_service.go | 2 +- .../kurtosis_instruction/add_service/add_services.go | 2 +- .../kurtosis_instruction/assert/assert.go | 2 +- .../startosis_engine/kurtosis_instruction/exec/exec.go | 2 +- .../kurtosis_print/kurtosis_print.go | 2 +- .../remove_connection/remove_connection.go | 2 +- .../remove_service/remove_service.go | 2 +- .../render_templates/render_templates.go | 2 +- .../kurtosis_instruction/request/request.go | 2 +- .../set_connection/set_connection.go | 2 +- .../kurtosis_instruction/start_service/start_service.go | 2 +- .../kurtosis_instruction/stop_service/stop_service.go | 2 +- .../store_service_files/store_service_files.go | 2 +- .../kurtosis_instruction/tasks/run_python.go | 2 +- .../kurtosis_instruction/tasks/run_sh.go | 2 +- .../update_service/update_service.go | 2 +- .../kurtosis_instruction/upload_files/upload_files.go | 9 +++++++-- .../startosis_engine/kurtosis_instruction/wait/wait.go | 2 +- .../kurtosis_plan_instruction.go | 3 ++- .../kurtosis_plan_instruction_capabilities.go | 2 +- .../kurtosis_plan_instruction_internal.go | 4 ++-- .../test_engine/upload_files_framework_test.go | 4 ++-- .../upload_files_without_name_framework_test.go | 4 ++-- .../server/startosis_engine/startosis_interpreter.go | 9 +++------ .../startosis_package_relative_import_test.go | 4 ++-- .../valid-package-with-relative-imports/main.star | 1 + 26 files changed, 39 insertions(+), 35 deletions(-) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/add_service/add_service.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/add_service/add_service.go index 36a109cfd6..5493695cff 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/add_service/add_service.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/add_service/add_service.go @@ -85,7 +85,7 @@ type AddServiceCapabilities struct { resultUuid string } -func (builtin *AddServiceCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *AddServiceCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { serviceName, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, ServiceNameArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", ServiceNameArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/add_service/add_services.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/add_service/add_services.go index 08077eec72..6295a7283b 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/add_service/add_services.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/add_service/add_services.go @@ -80,7 +80,7 @@ type AddServicesCapabilities struct { resultUuids map[service.ServiceName]string } -func (builtin *AddServicesCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *AddServicesCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { ServiceConfigsDict, err := builtin_argument.ExtractArgumentValue[*starlark.Dict](arguments, ConfigsArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", ConfigsArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/assert/assert.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/assert/assert.go index 5fbee395b5..7c992f61a4 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/assert/assert.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/assert/assert.go @@ -92,7 +92,7 @@ type AssertCapabilities struct { target starlark.Comparable } -func (builtin *AssertCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *AssertCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { runtimeValue, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, RuntimeValueArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", RuntimeValueArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/exec/exec.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/exec/exec.go index 6c7de507b4..ebd4f05090 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/exec/exec.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/exec/exec.go @@ -98,7 +98,7 @@ type ExecCapabilities struct { skipCodeCheck bool } -func (builtin *ExecCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *ExecCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { serviceNameArgumentValue, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, ServiceNameArgName) if err != nil { diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/kurtosis_print/kurtosis_print.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/kurtosis_print/kurtosis_print.go index bd53e0011b..4e0c0f7dfb 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/kurtosis_print/kurtosis_print.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/kurtosis_print/kurtosis_print.go @@ -57,7 +57,7 @@ type PrintCapabilities struct { msg starlark.Value } -func (builtin *PrintCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *PrintCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { msg, err := builtin_argument.ExtractArgumentValue[starlark.Value](arguments, PrintArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", PrintArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/remove_connection/remove_connection.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/remove_connection/remove_connection.go index 6b74265905..b34d188d3e 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/remove_connection/remove_connection.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/remove_connection/remove_connection.go @@ -59,7 +59,7 @@ type RemoveConnectionCapabilities struct { subnetwork2 service_network_types.PartitionID } -func (builtin *RemoveConnectionCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *RemoveConnectionCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { subnetworks, err := builtin_argument.ExtractArgumentValue[starlark.Tuple](arguments, SubnetworksArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", SubnetworksArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/remove_service/remove_service.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/remove_service/remove_service.go index 8589079339..46c8bf94d5 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/remove_service/remove_service.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/remove_service/remove_service.go @@ -58,7 +58,7 @@ type RemoveServiceCapabilities struct { serviceName service.ServiceName } -func (builtin *RemoveServiceCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *RemoveServiceCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { serviceName, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, ServiceNameArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", ServiceNameArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/render_templates/render_templates.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/render_templates/render_templates.go index d81e192f73..2fccb01cda 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/render_templates/render_templates.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/render_templates/render_templates.go @@ -79,7 +79,7 @@ type RenderTemplatesCapabilities struct { runtimeValueStore *runtime_value_store.RuntimeValueStore } -func (builtin *RenderTemplatesCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *RenderTemplatesCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { if !arguments.IsSet(ArtifactNameArgName) { natureThemeName, err := builtin.serviceNetwork.GetUniqueNameForFileArtifact() if err != nil { diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/request/request.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/request/request.go index 91453f30ad..f620e3267d 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/request/request.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/request/request.go @@ -108,7 +108,7 @@ type RequestCapabilities struct { skipCodeCheck bool } -func (builtin *RequestCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *RequestCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { serviceNameArgumentValue, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, ServiceNameArgName) if err != nil { diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/set_connection/set_connection.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/set_connection/set_connection.go index 36dcb5b24c..e6daa17903 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/set_connection/set_connection.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/set_connection/set_connection.go @@ -81,7 +81,7 @@ type SetConnectionCapabilities struct { connectionConfig *partition_topology.PartitionConnection } -func (builtin *SetConnectionCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *SetConnectionCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { connectionConfigStarlark, err := builtin_argument.ExtractArgumentValue[*connection_config.ConnectionConfig](arguments, ConnectionConfigArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", ConnectionConfigArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/start_service/start_service.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/start_service/start_service.go index b869520a0b..9ea248555b 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/start_service/start_service.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/start_service/start_service.go @@ -58,7 +58,7 @@ type StartServiceCapabilities struct { serviceName service.ServiceName } -func (builtin *StartServiceCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *StartServiceCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { serviceName, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, ServiceNameArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", ServiceNameArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/stop_service/stop_service.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/stop_service/stop_service.go index a0a5828334..bb69d8f989 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/stop_service/stop_service.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/stop_service/stop_service.go @@ -58,7 +58,7 @@ type StopServiceCapabilities struct { serviceName service.ServiceName } -func (builtin *StopServiceCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *StopServiceCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { serviceName, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, ServiceNameArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", ServiceNameArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/store_service_files/store_service_files.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/store_service_files/store_service_files.go index 3c547113a5..260aee8bc1 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/store_service_files/store_service_files.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/store_service_files/store_service_files.go @@ -75,7 +75,7 @@ type StoreServiceFilesCapabilities struct { artifactName string } -func (builtin *StoreServiceFilesCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *StoreServiceFilesCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { if !arguments.IsSet(ArtifactNameArgName) { natureThemeName, err := builtin.serviceNetwork.GetUniqueNameForFileArtifact() if err != nil { diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/tasks/run_python.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/tasks/run_python.go index b9912e8504..98e36a4ac4 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/tasks/run_python.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/tasks/run_python.go @@ -146,7 +146,7 @@ type RunPythonCapabilities struct { wait string } -func (builtin *RunPythonCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *RunPythonCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { pythonScript, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, RunArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", RunArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/tasks/run_sh.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/tasks/run_sh.go index f8a789db3b..baf0a75d41 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/tasks/run_sh.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/tasks/run_sh.go @@ -107,7 +107,7 @@ type RunShCapabilities struct { wait string } -func (builtin *RunShCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *RunShCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { runCommand, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, RunArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", RunArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/update_service/update_service.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/update_service/update_service.go index 24faab7bd9..019349e369 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/update_service/update_service.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/update_service/update_service.go @@ -78,7 +78,7 @@ type UpdateServiceCapabilities struct { updateServiceConfig *kurtosis_core_rpc_api_bindings.UpdateServiceConfig } -func (builtin *UpdateServiceCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *UpdateServiceCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { serviceName, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, ServiceNameArgName) if err != nil { return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", ServiceNameArgName) diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/upload_files/upload_files.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/upload_files/upload_files.go index 1b57bdf58c..0d7a523ecf 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/upload_files/upload_files.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/upload_files/upload_files.go @@ -73,7 +73,7 @@ type UploadFilesCapabilities struct { pathOnDisk string } -func (builtin *UploadFilesCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *UploadFilesCapabilities) Interpret(locatorOfModuleInWhichThisBuiltInIsBeingCalled string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { if !arguments.IsSet(ArtifactNameArgName) { natureThemeName, err := builtin.serviceNetwork.GetUniqueNameForFileArtifact() if err != nil { @@ -93,7 +93,12 @@ func (builtin *UploadFilesCapabilities) Interpret(arguments *builtin_argument.Ar return nil, startosis_errors.WrapWithInterpretationError(err, "Unable to extract value for '%s' argument", SrcArgName) } - pathOnDisk, interpretationErr := builtin.packageContentProvider.GetOnDiskAbsoluteFilePath(src.GoString()) + absoluteLocator, interpretationErr := builtin.packageContentProvider.GetAbsoluteLocatorForRelativeModuleLocator(locatorOfModuleInWhichThisBuiltInIsBeingCalled, src.GoString()) + if interpretationErr != nil { + return nil, startosis_errors.WrapWithInterpretationError(interpretationErr, "Tried to convert locator '%v' into absolute locator but failed", src.GoString()) + } + + pathOnDisk, interpretationErr := builtin.packageContentProvider.GetOnDiskAbsoluteFilePath(absoluteLocator) if interpretationErr != nil { return nil, interpretationErr } diff --git a/core/server/api_container/server/startosis_engine/kurtosis_instruction/wait/wait.go b/core/server/api_container/server/startosis_engine/kurtosis_instruction/wait/wait.go index 2b33d14cb6..7495c7715d 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_instruction/wait/wait.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_instruction/wait/wait.go @@ -129,7 +129,7 @@ type WaitCapabilities struct { resultUuid string } -func (builtin *WaitCapabilities) Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { +func (builtin *WaitCapabilities) Interpret(_ string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) { serviceNameArgumentValue, err := builtin_argument.ExtractArgumentValue[starlark.String](arguments, ServiceNameArgName) if err != nil { diff --git a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction.go b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction.go index 6a941db642..4c14bc7c9b 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction.go @@ -44,7 +44,8 @@ func (builtin *KurtosisPlanInstructionWrapper) CreateBuiltin() func(thread *star } instructionWrapper := newKurtosisPlanInstructionInternal(wrappedBuiltin, builtin.Capabilities(), builtin.DefaultDisplayArguments) - returnedFutureValue, interpretationErr := instructionWrapper.interpret() + locatorOfModuleInWhichInstructionIsBeingInterpreted := thread.Name + returnedFutureValue, interpretationErr := instructionWrapper.interpret(locatorOfModuleInWhichInstructionIsBeingInterpreted) if interpretationErr != nil { return nil, interpretationErr } diff --git a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction_capabilities.go b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction_capabilities.go index 2e7cb7a608..039fb66353 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction_capabilities.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction_capabilities.go @@ -9,7 +9,7 @@ import ( ) type KurtosisPlanInstructionCapabilities interface { - Interpret(arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) + Interpret(locatorOfModuleInWhichThisBuiltInIsBeingCalled string, arguments *builtin_argument.ArgumentValuesSet) (starlark.Value, *startosis_errors.InterpretationError) Validate(arguments *builtin_argument.ArgumentValuesSet, validatorEnvironment *startosis_validator.ValidatorEnvironment) *startosis_errors.ValidationError diff --git a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction_internal.go b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction_internal.go index 360847524a..c88a2232be 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction_internal.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/kurtosis_plan_instruction/kurtosis_plan_instruction_internal.go @@ -75,8 +75,8 @@ func (builtin *kurtosisPlanInstructionInternal) Execute(ctx context.Context) (*s return &result, nil } -func (builtin *kurtosisPlanInstructionInternal) interpret() (starlark.Value, *startosis_errors.InterpretationError) { - result, interpretationErr := builtin.capabilities.Interpret(builtin.GetArguments()) +func (builtin *kurtosisPlanInstructionInternal) interpret(locatorOfModuleInWhichThisBuiltInIsBeingCalled string) (starlark.Value, *startosis_errors.InterpretationError) { + result, interpretationErr := builtin.capabilities.Interpret(locatorOfModuleInWhichThisBuiltInIsBeingCalled, builtin.GetArguments()) if interpretationErr != nil { return nil, interpretationErr } diff --git a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/test_engine/upload_files_framework_test.go b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/test_engine/upload_files_framework_test.go index 1eb4357bfb..5e560aefa6 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/test_engine/upload_files_framework_test.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/test_engine/upload_files_framework_test.go @@ -29,7 +29,7 @@ func (t *uploadFilesTestCase) GetId() string { func (t *uploadFilesTestCase) GetInstruction() *kurtosis_plan_instruction.KurtosisPlanInstruction { serviceNetwork := service_network.NewMockServiceNetwork(t) packageContentProvider := mock_package_content_provider.NewMockPackageContentProvider() - require.Nil(t, packageContentProvider.AddFileContent(TestSrcPath, "Hello World!")) + require.Nil(t, packageContentProvider.AddFileContent(TestModuleFileName, "Hello World!")) serviceNetwork.EXPECT().UploadFilesArtifact( mock.Anything, // data gets written to disk and compressed to it's a bit tricky to replicate here. @@ -43,7 +43,7 @@ func (t *uploadFilesTestCase) GetInstruction() *kurtosis_plan_instruction.Kurtos } func (t uploadFilesTestCase) GetStarlarkCode() string { - return fmt.Sprintf("%s(%s=%q, %s=%q)", upload_files.UploadFilesBuiltinName, upload_files.SrcArgName, TestSrcPath, upload_files.ArtifactNameArgName, TestArtifactName) + return fmt.Sprintf("%s(%s=%q, %s=%q)", upload_files.UploadFilesBuiltinName, upload_files.SrcArgName, TestModuleFileName, upload_files.ArtifactNameArgName, TestArtifactName) } func (t *uploadFilesTestCase) GetStarlarkCodeForAssertion() string { diff --git a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/test_engine/upload_files_without_name_framework_test.go b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/test_engine/upload_files_without_name_framework_test.go index 31d0ed1ca8..334cdf3e7c 100644 --- a/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/test_engine/upload_files_without_name_framework_test.go +++ b/core/server/api_container/server/startosis_engine/kurtosis_starlark_framework/test_engine/upload_files_without_name_framework_test.go @@ -29,7 +29,7 @@ func (t *uploadFilesWithoutNameTestCase) GetId() string { func (t *uploadFilesWithoutNameTestCase) GetInstruction() *kurtosis_plan_instruction.KurtosisPlanInstruction { serviceNetwork := service_network.NewMockServiceNetwork(t) packageContentProvider := mock_package_content_provider.NewMockPackageContentProvider() - require.Nil(t, packageContentProvider.AddFileContent(TestSrcPath, "Hello World!")) + require.Nil(t, packageContentProvider.AddFileContent(TestModuleFileName, "Hello World!")) serviceNetwork.EXPECT().GetUniqueNameForFileArtifact().Times(1).Return( mockedFileArtifactName, @@ -48,7 +48,7 @@ func (t *uploadFilesWithoutNameTestCase) GetInstruction() *kurtosis_plan_instruc } func (t uploadFilesWithoutNameTestCase) GetStarlarkCode() string { - return fmt.Sprintf("%s(%s=%q)", upload_files.UploadFilesBuiltinName, upload_files.SrcArgName, TestSrcPath) + return fmt.Sprintf("%s(%s=%q)", upload_files.UploadFilesBuiltinName, upload_files.SrcArgName, TestModuleFileName) } func (t *uploadFilesWithoutNameTestCase) GetStarlarkCodeForAssertion() string { diff --git a/core/server/api_container/server/startosis_engine/startosis_interpreter.go b/core/server/api_container/server/startosis_engine/startosis_interpreter.go index 6473e3acde..182be6fb31 100644 --- a/core/server/api_container/server/startosis_engine/startosis_interpreter.go +++ b/core/server/api_container/server/startosis_engine/startosis_interpreter.go @@ -28,8 +28,6 @@ import ( ) const ( - starlarkGoThreadName = "Startosis interpreter thread" - multipleInterpretationErrorMsg = "Multiple errors caught interpreting the Starlark script. Listing each of them below." evaluationErrorPrefix = "Evaluation error: " @@ -37,9 +35,8 @@ const ( runFunctionName = "run" - paramsRequiredForArgs = 2 - minimumParamsRequiredForPlan = 1 - maximumParamsAllowedForRunFunction = 2 + paramsRequiredForArgs = 2 + minimumParamsRequiredForPlan = 1 planParamIndex = 0 planParamName = "plan" @@ -268,7 +265,7 @@ func (interpreter *StartosisInterpreter) Interpret( return startosis_constants.NoOutputObject, nil, missingMainFunctionError(packageId, mainFunctionName) } - runFunctionExecutionThread := newStarlarkThread(starlarkGoThreadName) + runFunctionExecutionThread := newStarlarkThread(moduleLocator) var argsTuple starlark.Tuple var kwArgs []starlark.Tuple diff --git a/internal_testsuites/golang/testsuite/startosis_package_test/startosis_package_relative_import_test.go b/internal_testsuites/golang/testsuite/startosis_package_test/startosis_package_relative_import_test.go index 53cadc32ae..2131326b27 100644 --- a/internal_testsuites/golang/testsuite/startosis_package_test/startosis_package_relative_import_test.go +++ b/internal_testsuites/golang/testsuite/startosis_package_test/startosis_package_relative_import_test.go @@ -17,6 +17,6 @@ func (suite *StartosisPackageTestSuite) TestStartosisPackage_RelativeImports() { require.Nil(t, runResult.InterpretationError) require.Empty(t, runResult.ValidationErrors) require.Nil(t, runResult.ExecutionError) - expectedResult := "John Doe\nOpen Sesame\n" - require.Equal(t, expectedResult, string(runResult.RunOutput)) + expectedResult := "Files with artifact name 'upload' uploaded with artifact UUID '[a-f0-9]{32}'\nJohn Doe\nOpen Sesame\n" + require.Regexp(t, expectedResult, string(runResult.RunOutput)) } diff --git a/internal_testsuites/starlark/valid-package-with-relative-imports/main.star b/internal_testsuites/starlark/valid-package-with-relative-imports/main.star index db46176f05..ca6eab3452 100644 --- a/internal_testsuites/starlark/valid-package-with-relative-imports/main.star +++ b/internal_testsuites/starlark/valid-package-with-relative-imports/main.star @@ -2,5 +2,6 @@ lib = import_module("./src/lib.star") password = read_file("./static_files/password.txt") def run(plan): + plan.upload_files("./static_files/password.txt", "upload") plan.print(lib.NAME) plan.print(password)