Skip to content

Commit

Permalink
feat!: Added main-file and main-function-name flags to the `kurto…
Browse files Browse the repository at this point in the history
…sis run` CLI command. These new options were also added in the `RunStarlarkScript`, `RunStarlarkPackage` and the `RunStarlarkRemotePackage` SDKs methods, users will have to update the calls. (#693)

## Description:
Added `main-file` and `main-function-name` flags to the `kurtosis run`
CLI command

## Is this change user-facing?
YES

## References (if applicable):
<!-- Add relevant Github Issues, Discord threads, or other helpful
information. -->
  • Loading branch information
leoporoli committed Jun 12, 2023
1 parent 10b6b91 commit 1693237
Show file tree
Hide file tree
Showing 29 changed files with 1,218 additions and 850 deletions.
1,233 changes: 635 additions & 598 deletions api/golang/core/kurtosis_core_rpc_api_bindings/api_container_service.pb.go

Large diffs are not rendered by default.

31 changes: 28 additions & 3 deletions api/golang/core/lib/binding_constructors/binding_constructors.go
Expand Up @@ -65,18 +65,32 @@ func NewUpdateServiceConfig(subnetwork string) *kurtosis_core_rpc_api_bindings.U
// Execute Starlark Arguments
//
// ==============================================================================================
func NewRunStarlarkScriptArgs(serializedString string, serializedParams string, dryRun bool, parallelism int32) *kurtosis_core_rpc_api_bindings.RunStarlarkScriptArgs {
func NewRunStarlarkScriptArgs(
mainFunctionName string,
serializedString string,
serializedParams string,
dryRun bool,
parallelism int32,
) *kurtosis_core_rpc_api_bindings.RunStarlarkScriptArgs {
parallelismCopy := new(int32)
*parallelismCopy = parallelism
return &kurtosis_core_rpc_api_bindings.RunStarlarkScriptArgs{
SerializedScript: serializedString,
SerializedParams: serializedParams,
DryRun: &dryRun,
Parallelism: parallelismCopy,
MainFunctionName: mainFunctionName,
}
}

func NewRunStarlarkPackageArgs(packageId string, serializedParams string, dryRun bool, parallelism int32) *kurtosis_core_rpc_api_bindings.RunStarlarkPackageArgs {
func NewRunStarlarkPackageArgs(
packageId string,
relativePathToMainFile string,
mainFunctionName string,
serializedParams string,
dryRun bool,
parallelism int32,
) *kurtosis_core_rpc_api_bindings.RunStarlarkPackageArgs {
parallelismCopy := new(int32)
*parallelismCopy = parallelism
clonePackage := false
Expand All @@ -87,10 +101,19 @@ func NewRunStarlarkPackageArgs(packageId string, serializedParams string, dryRun
SerializedParams: serializedParams,
DryRun: &dryRun,
Parallelism: parallelismCopy,
RelativePathToMainFile: relativePathToMainFile,
MainFunctionName: mainFunctionName,
}
}

func NewRunStarlarkRemotePackageArgs(packageId string, serializedParams string, dryRun bool, parallelism int32) *kurtosis_core_rpc_api_bindings.RunStarlarkPackageArgs {
func NewRunStarlarkRemotePackageArgs(
packageId string,
relativePathToMainFile string,
mainFunctionName string,
serializedParams string,
dryRun bool,
parallelism int32,
) *kurtosis_core_rpc_api_bindings.RunStarlarkPackageArgs {
parallelismCopy := new(int32)
*parallelismCopy = parallelism
clonePackage := true
Expand All @@ -101,6 +124,8 @@ func NewRunStarlarkRemotePackageArgs(packageId string, serializedParams string,
SerializedParams: serializedParams,
DryRun: &dryRun,
Parallelism: parallelismCopy,
RelativePathToMainFile: relativePathToMainFile,
MainFunctionName: mainFunctionName,
}
}

Expand Down
74 changes: 60 additions & 14 deletions api/golang/core/lib/enclaves/enclave_context.go
Expand Up @@ -78,9 +78,16 @@ func (enclaveCtx *EnclaveContext) GetEnclaveName() string {
}

// Docs available at https://docs.kurtosis.com/sdk/#runstarlarkscriptstring-serializedstarlarkscript-boolean-dryrun---streamstarlarkrunresponseline-responselines-error-error
func (enclaveCtx *EnclaveContext) RunStarlarkScript(ctx context.Context, serializedScript string, serializedParams string, dryRun bool, parallelism int32) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
func (enclaveCtx *EnclaveContext) RunStarlarkScript(
ctx context.Context,
mainFunctionName string,
serializedScript string,
serializedParams string,
dryRun bool,
parallelism int32,
) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
ctxWithCancel, cancelCtxFunc := context.WithCancel(ctx)
executeStartosisScriptArgs := binding_constructors.NewRunStarlarkScriptArgs(serializedScript, serializedParams, dryRun, parallelism)
executeStartosisScriptArgs := binding_constructors.NewRunStarlarkScriptArgs(mainFunctionName, serializedScript, serializedParams, dryRun, parallelism)
starlarkResponseLineChan := make(chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine)

stream, err := enclaveCtx.client.RunStarlarkScript(ctxWithCancel, executeStartosisScriptArgs)
Expand All @@ -94,8 +101,8 @@ func (enclaveCtx *EnclaveContext) RunStarlarkScript(ctx context.Context, seriali
}

// Docs available at https://docs.kurtosis.com/sdk/#runstarlarkscriptblockingstring-serializedstarlarkscript-boolean-dryrun---starlarkrunresult-runresult-error-error
func (enclaveCtx *EnclaveContext) RunStarlarkScriptBlocking(ctx context.Context, serializedScript string, serializedParams string, dryRun bool, parallelism int32) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkScript(ctx, serializedScript, serializedParams, dryRun, parallelism)
func (enclaveCtx *EnclaveContext) RunStarlarkScriptBlocking(ctx context.Context, mainFunctionName string, serializedScript string, serializedParams string, dryRun bool, parallelism int32) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkScript(ctx, mainFunctionName, serializedScript, serializedParams, dryRun, parallelism)
if err != nil {
return nil, stacktrace.Propagate(err, "Error requesting Starlark Script run")
}
Expand All @@ -104,7 +111,15 @@ func (enclaveCtx *EnclaveContext) RunStarlarkScriptBlocking(ctx context.Context,
}

// Docs available at https://docs.kurtosis.com/sdk/#runstarlarkpackagestring-packagerootpath-string-serializedparams-boolean-dryrun---streamstarlarkrunresponseline-responselines-error-error
func (enclaveCtx *EnclaveContext) RunStarlarkPackage(ctx context.Context, packageRootPath string, serializedParams string, dryRun bool, parallelism int32) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
func (enclaveCtx *EnclaveContext) RunStarlarkPackage(
ctx context.Context,
packageRootPath string,
relativePathToMainFile string,
mainFunctionName string,
serializedParams string,
dryRun bool,
parallelism int32,
) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
executionStartedSuccessfully := false
ctxWithCancel, cancelCtxFunc := context.WithCancel(ctx)
defer func() {
Expand All @@ -114,7 +129,7 @@ func (enclaveCtx *EnclaveContext) RunStarlarkPackage(ctx context.Context, packag
}()

starlarkResponseLineChan := make(chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine)
executeStartosisPackageArgs, err := enclaveCtx.assembleRunStartosisPackageArg(packageRootPath, serializedParams, dryRun, parallelism)
executeStartosisPackageArgs, err := enclaveCtx.assembleRunStartosisPackageArg(packageRootPath, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism)
if err != nil {
return nil, nil, stacktrace.Propagate(err, "Error preparing package '%s' for execution", packageRootPath)
}
Expand All @@ -135,8 +150,16 @@ func (enclaveCtx *EnclaveContext) RunStarlarkPackage(ctx context.Context, packag
}

// Docs available at https://docs.kurtosis.com/sdk/#runstarlarkpackageblockingstring-packagerootpath-string-serializedparams-boolean-dryrun---starlarkrunresult-runresult-error-error
func (enclaveCtx *EnclaveContext) RunStarlarkPackageBlocking(ctx context.Context, packageRootPath string, serializedParams string, dryRun bool, parallelism int32) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkPackage(ctx, packageRootPath, serializedParams, dryRun, parallelism)
func (enclaveCtx *EnclaveContext) RunStarlarkPackageBlocking(
ctx context.Context,
packageRootPath string,
relativePathToMainFile string,
mainFunctionName string,
serializedParams string,
dryRun bool,
parallelism int32,
) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkPackage(ctx, packageRootPath, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism)
if err != nil {
return nil, stacktrace.Propagate(err, "Error running Starlark package")
}
Expand All @@ -145,7 +168,15 @@ func (enclaveCtx *EnclaveContext) RunStarlarkPackageBlocking(ctx context.Context
}

// Docs available at https://docs.kurtosis.com/sdk/#runstarlarkremotepackagestring-packageid-string-serializedparams-boolean-dryrun---streamstarlarkrunresponseline-responselines-error-error
func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackage(ctx context.Context, packageId string, serializedParams string, dryRun bool, parallelism int32) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackage(
ctx context.Context,
packageId string,
relativePathToMainFile string,
mainFunctionName string,
serializedParams string,
dryRun bool,
parallelism int32,
) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
executionStartedSuccessfully := false
ctxWithCancel, cancelCtxFunc := context.WithCancel(ctx)
defer func() {
Expand All @@ -155,7 +186,7 @@ func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackage(ctx context.Context,
}()

starlarkResponseLineChan := make(chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine)
executeStartosisScriptArgs := binding_constructors.NewRunStarlarkRemotePackageArgs(packageId, serializedParams, dryRun, parallelism)
executeStartosisScriptArgs := binding_constructors.NewRunStarlarkRemotePackageArgs(packageId, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism)

stream, err := enclaveCtx.client.RunStarlarkPackage(ctxWithCancel, executeStartosisScriptArgs)
if err != nil {
Expand All @@ -168,8 +199,16 @@ func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackage(ctx context.Context,
}

// Docs available at https://docs.kurtosis.com/sdk/#runstarlarkremotepackageblockingstring-packageid-string-serializedparams-boolean-dryrun---starlarkrunresult-runresult-error-error
func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackageBlocking(ctx context.Context, packageId string, serializedParams string, dryRun bool, parallelism int32) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkRemotePackage(ctx, packageId, serializedParams, dryRun, parallelism)
func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackageBlocking(
ctx context.Context,
packageId string,
relativePathToMainFile string,
mainFunctionName string,
serializedParams string,
dryRun bool,
parallelism int32,
) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkRemotePackage(ctx, packageId, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism)
if err != nil {
return nil, stacktrace.Propagate(err, "Error running remote Starlark package")
}
Expand Down Expand Up @@ -394,14 +433,21 @@ func getErrFromStarlarkRunResult(result *StarlarkRunResult) error {
return nil
}

func (enclaveCtx *EnclaveContext) assembleRunStartosisPackageArg(packageRootPath string, serializedParams string, dryRun bool, parallelism int32) (*kurtosis_core_rpc_api_bindings.RunStarlarkPackageArgs, error) {
func (enclaveCtx *EnclaveContext) assembleRunStartosisPackageArg(
packageRootPath string,
relativePathToMainFile string,
mainFunctionName string,
serializedParams string,
dryRun bool,
parallelism int32,
) (*kurtosis_core_rpc_api_bindings.RunStarlarkPackageArgs, error) {
kurtosisYamlFilepath := path.Join(packageRootPath, kurtosisYamlFilename)

kurtosisYaml, err := parseKurtosisYaml(kurtosisYamlFilepath)
if err != nil {
return nil, stacktrace.Propagate(err, "There was an error parsing the '%v' at '%v'", kurtosisYamlFilename, packageRootPath)
}
return binding_constructors.NewRunStarlarkPackageArgs(kurtosisYaml.PackageName, serializedParams, dryRun, parallelism), nil
return binding_constructors.NewRunStarlarkPackageArgs(kurtosisYaml.PackageName, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism), nil
}

func (enclaveCtx *EnclaveContext) uploadStarlarkPackage(packageId string, packageRootPath string) error {
Expand Down
9 changes: 9 additions & 0 deletions api/protobuf/core/api_container_service.proto
Expand Up @@ -176,6 +176,9 @@ message RunStarlarkScriptArgs {

// Defaults to 4
optional int32 parallelism = 4;

// The name of the main function, the default value is "run"
string main_function_name = 5;
}

message RunStarlarkPackageArgs {
Expand Down Expand Up @@ -204,6 +207,12 @@ message RunStarlarkPackageArgs {
// have been uploaded using UploadStarlarkPackage prior to calling RunStarlarkPackage.
// If true, then the package will be cloned from GitHub before execution starts
optional bool clone_package = 8;

// The relative main file filepath, the default value is the "main.star" file in the root of a package
string relative_path_to_main_file = 9;

// The name of the main function, the default value is "run"
string main_function_name = 10;
}

// ==============================================================================================
Expand Down
Expand Up @@ -192,6 +192,9 @@ export class RunStarlarkScriptArgs extends jspb.Message {
hasParallelism(): boolean;
clearParallelism(): RunStarlarkScriptArgs;

getMainFunctionName(): string;
setMainFunctionName(value: string): RunStarlarkScriptArgs;

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): RunStarlarkScriptArgs.AsObject;
static toObject(includeInstance: boolean, msg: RunStarlarkScriptArgs): RunStarlarkScriptArgs.AsObject;
Expand All @@ -206,6 +209,7 @@ export namespace RunStarlarkScriptArgs {
serializedParams: string,
dryRun?: boolean,
parallelism?: number,
mainFunctionName: string,
}

export enum DryRunCase {
Expand Down Expand Up @@ -249,6 +253,12 @@ export class RunStarlarkPackageArgs extends jspb.Message {
hasClonePackage(): boolean;
clearClonePackage(): RunStarlarkPackageArgs;

getRelativePathToMainFile(): string;
setRelativePathToMainFile(value: string): RunStarlarkPackageArgs;

getMainFunctionName(): string;
setMainFunctionName(value: string): RunStarlarkPackageArgs;

getStarlarkPackageContentCase(): RunStarlarkPackageArgs.StarlarkPackageContentCase;

serializeBinary(): Uint8Array;
Expand All @@ -268,6 +278,8 @@ export namespace RunStarlarkPackageArgs {
dryRun?: boolean,
parallelism?: number,
clonePackage?: boolean,
relativePathToMainFile: string,
mainFunctionName: string,
}

export enum StarlarkPackageContentCase {
Expand Down

0 comments on commit 1693237

Please sign in to comment.