Skip to content

Commit

Permalink
Add minimal support for feature flags
Browse files Browse the repository at this point in the history
  • Loading branch information
guillaume.bouvignies committed Jun 26, 2023
1 parent fb3e922 commit dc5ecad
Show file tree
Hide file tree
Showing 18 changed files with 1,029 additions and 703 deletions.
1,403 changes: 740 additions & 663 deletions api/golang/core/kurtosis_core_rpc_api_bindings/api_container_service.pb.go

Large diffs are not rendered by default.

16 changes: 11 additions & 5 deletions api/golang/core/lib/binding_constructors/binding_constructors.go
Expand Up @@ -75,15 +75,17 @@ func NewRunStarlarkScriptArgs(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) *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,
SerializedScript: serializedString,
SerializedParams: serializedParams,
DryRun: &dryRun,
Parallelism: parallelismCopy,
MainFunctionName: mainFunctionName,
ExperimentalFeatures: experimentalFeatures,
}
}

Expand All @@ -94,6 +96,7 @@ func NewRunStarlarkPackageArgs(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) *kurtosis_core_rpc_api_bindings.RunStarlarkPackageArgs {
parallelismCopy := new(int32)
*parallelismCopy = parallelism
Expand All @@ -107,6 +110,7 @@ func NewRunStarlarkPackageArgs(
Parallelism: parallelismCopy,
RelativePathToMainFile: relativePathToMainFile,
MainFunctionName: mainFunctionName,
ExperimentalFeatures: experimentalFeatures,
}
}

Expand All @@ -117,6 +121,7 @@ func NewRunStarlarkRemotePackageArgs(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) *kurtosis_core_rpc_api_bindings.RunStarlarkPackageArgs {
parallelismCopy := new(int32)
*parallelismCopy = parallelism
Expand All @@ -130,6 +135,7 @@ func NewRunStarlarkRemotePackageArgs(
Parallelism: parallelismCopy,
RelativePathToMainFile: relativePathToMainFile,
MainFunctionName: mainFunctionName,
ExperimentalFeatures: experimentalFeatures,
}
}

Expand Down
22 changes: 14 additions & 8 deletions api/golang/core/lib/enclaves/enclave_context.go
Expand Up @@ -85,9 +85,10 @@ func (enclaveCtx *EnclaveContext) RunStarlarkScript(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
ctxWithCancel, cancelCtxFunc := context.WithCancel(ctx)
executeStartosisScriptArgs := binding_constructors.NewRunStarlarkScriptArgs(mainFunctionName, serializedScript, serializedParams, dryRun, parallelism)
executeStartosisScriptArgs := binding_constructors.NewRunStarlarkScriptArgs(mainFunctionName, serializedScript, serializedParams, dryRun, parallelism, experimentalFeatures)
starlarkResponseLineChan := make(chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine)

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

// Docs available at https://docs.kurtosis.com/sdk/#runstarlarkscriptblockingstring-serializedstarlarkscript-boolean-dryrun---starlarkrunresult-runresult-error-error
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)
func (enclaveCtx *EnclaveContext) RunStarlarkScriptBlocking(ctx context.Context, mainFunctionName string, serializedScript string, serializedParams string, dryRun bool, parallelism int32, experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkScript(ctx, mainFunctionName, serializedScript, serializedParams, dryRun, parallelism, experimentalFeatures)
if err != nil {
return nil, stacktrace.Propagate(err, "Error requesting Starlark Script run")
}
Expand All @@ -119,6 +120,7 @@ func (enclaveCtx *EnclaveContext) RunStarlarkPackage(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
executionStartedSuccessfully := false
ctxWithCancel, cancelCtxFunc := context.WithCancel(ctx)
Expand All @@ -129,7 +131,7 @@ func (enclaveCtx *EnclaveContext) RunStarlarkPackage(
}()

starlarkResponseLineChan := make(chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine)
executeStartosisPackageArgs, err := enclaveCtx.assembleRunStartosisPackageArg(packageRootPath, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism)
executeStartosisPackageArgs, err := enclaveCtx.assembleRunStartosisPackageArg(packageRootPath, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism, experimentalFeatures)
if err != nil {
return nil, nil, stacktrace.Propagate(err, "Error preparing package '%s' for execution", packageRootPath)
}
Expand Down Expand Up @@ -158,8 +160,9 @@ func (enclaveCtx *EnclaveContext) RunStarlarkPackageBlocking(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkPackage(ctx, packageRootPath, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism)
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkPackage(ctx, packageRootPath, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism, experimentalFeatures)
if err != nil {
return nil, stacktrace.Propagate(err, "Error running Starlark package")
}
Expand All @@ -176,6 +179,7 @@ func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackage(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) (chan *kurtosis_core_rpc_api_bindings.StarlarkRunResponseLine, context.CancelFunc, error) {
executionStartedSuccessfully := false
ctxWithCancel, cancelCtxFunc := context.WithCancel(ctx)
Expand All @@ -186,7 +190,7 @@ func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackage(
}()

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

stream, err := enclaveCtx.client.RunStarlarkPackage(ctxWithCancel, executeStartosisScriptArgs)
if err != nil {
Expand All @@ -207,8 +211,9 @@ func (enclaveCtx *EnclaveContext) RunStarlarkRemotePackageBlocking(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) (*StarlarkRunResult, error) {
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkRemotePackage(ctx, packageId, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism)
starlarkRunResponseLineChan, _, err := enclaveCtx.RunStarlarkRemotePackage(ctx, packageId, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism, experimentalFeatures)
if err != nil {
return nil, stacktrace.Propagate(err, "Error running remote Starlark package")
}
Expand Down Expand Up @@ -440,14 +445,15 @@ func (enclaveCtx *EnclaveContext) assembleRunStartosisPackageArg(
serializedParams string,
dryRun bool,
parallelism int32,
experimentalFeatures []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag,
) (*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, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism), nil
return binding_constructors.NewRunStarlarkPackageArgs(kurtosisYaml.PackageName, relativePathToMainFile, mainFunctionName, serializedParams, dryRun, parallelism, experimentalFeatures), nil
}

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

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

repeated KurtosisFeatureFlag experimental_features = 6;
}

message RunStarlarkPackageArgs {
Expand Down Expand Up @@ -208,6 +210,12 @@ message RunStarlarkPackageArgs {

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

repeated KurtosisFeatureFlag experimental_features = 11;
}

enum KurtosisFeatureFlag {
USE_INSTRUCTIONS_CACHING = 0;
}

// ==============================================================================================
Expand Down
Expand Up @@ -203,6 +203,11 @@ export class RunStarlarkScriptArgs extends jspb.Message {
getMainFunctionName(): string;
setMainFunctionName(value: string): RunStarlarkScriptArgs;

getExperimentalFeaturesList(): Array<KurtosisFeatureFlag>;
setExperimentalFeaturesList(value: Array<KurtosisFeatureFlag>): RunStarlarkScriptArgs;
clearExperimentalFeaturesList(): RunStarlarkScriptArgs;
addExperimentalFeatures(value: KurtosisFeatureFlag, index?: number): RunStarlarkScriptArgs;

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): RunStarlarkScriptArgs.AsObject;
static toObject(includeInstance: boolean, msg: RunStarlarkScriptArgs): RunStarlarkScriptArgs.AsObject;
Expand All @@ -218,6 +223,7 @@ export namespace RunStarlarkScriptArgs {
dryRun?: boolean,
parallelism?: number,
mainFunctionName: string,
experimentalFeaturesList: Array<KurtosisFeatureFlag>,
}

export enum DryRunCase {
Expand Down Expand Up @@ -267,6 +273,11 @@ export class RunStarlarkPackageArgs extends jspb.Message {
getMainFunctionName(): string;
setMainFunctionName(value: string): RunStarlarkPackageArgs;

getExperimentalFeaturesList(): Array<KurtosisFeatureFlag>;
setExperimentalFeaturesList(value: Array<KurtosisFeatureFlag>): RunStarlarkPackageArgs;
clearExperimentalFeaturesList(): RunStarlarkPackageArgs;
addExperimentalFeatures(value: KurtosisFeatureFlag, index?: number): RunStarlarkPackageArgs;

getStarlarkPackageContentCase(): RunStarlarkPackageArgs.StarlarkPackageContentCase;

serializeBinary(): Uint8Array;
Expand All @@ -288,6 +299,7 @@ export namespace RunStarlarkPackageArgs {
clonePackage?: boolean,
relativePathToMainFile: string,
mainFunctionName: string,
experimentalFeaturesList: Array<KurtosisFeatureFlag>,
}

export enum StarlarkPackageContentCase {
Expand Down Expand Up @@ -1268,3 +1280,6 @@ export namespace ListFilesArtifactNamesAndUuidsResponse {
}
}

export enum KurtosisFeatureFlag {
USE_INSTRUCTIONS_CACHING = 0,
}

0 comments on commit dc5ecad

Please sign in to comment.