From 3c5f678a40bfe16f4dc33b5887bd46d19418debe Mon Sep 17 00:00:00 2001 From: Leandro Poroli Date: Fri, 26 Apr 2024 16:24:21 -0300 Subject: [PATCH 1/6] starting with restartAllEnclaveAPIContainers in Enclave Manager --- .../lib/backend_interface/kurtosis_backend.go | 2 +- .../engine/enclave_manager/enclave_creator.go | 4 +- .../engine/enclave_manager/enclave_manager.go | 80 +++++++++++++++++++ 3 files changed, 83 insertions(+), 3 deletions(-) diff --git a/container-engine-lib/lib/backend_interface/kurtosis_backend.go b/container-engine-lib/lib/backend_interface/kurtosis_backend.go index 71b3c16394..c0d7ad2039 100644 --- a/container-engine-lib/lib/backend_interface/kurtosis_backend.go +++ b/container-engine-lib/lib/backend_interface/kurtosis_backend.go @@ -169,7 +169,7 @@ type KurtosisBackend interface { resultErr error, ) - // Stops API containers matching the given filters + // Destroy API containers matching the given filters DestroyAPIContainers( ctx context.Context, filters *api_container.APIContainerFilters, diff --git a/engine/server/engine/enclave_manager/enclave_creator.go b/engine/server/engine/enclave_manager/enclave_creator.go index d8526c2a50..a736ea7883 100644 --- a/engine/server/engine/enclave_manager/enclave_creator.go +++ b/engine/server/engine/enclave_manager/enclave_creator.go @@ -100,7 +100,7 @@ func (creator *EnclaveCreator) CreateEnclave( }() } - apiContainer, err := creator.launchApiContainer(setupCtx, + apiContainer, err := creator.LaunchApiContainer(setupCtx, apiContainerImageVersionTag, apiContainerLogLevel, enclaveUuid, @@ -185,7 +185,7 @@ func (creator *EnclaveCreator) CreateEnclave( return newEnclaveInfo, nil } -func (creator *EnclaveCreator) launchApiContainer( +func (creator *EnclaveCreator) LaunchApiContainer( ctx context.Context, apiContainerImageVersionTag string, logLevel logrus.Level, diff --git a/engine/server/engine/enclave_manager/enclave_manager.go b/engine/server/engine/enclave_manager/enclave_manager.go index d966dd47bd..f4b5846ac6 100644 --- a/engine/server/engine/enclave_manager/enclave_manager.go +++ b/engine/server/engine/enclave_manager/enclave_manager.go @@ -3,6 +3,7 @@ package enclave_manager import ( "context" "fmt" + "github.com/kurtosis-tech/kurtosis/api/golang/engine/kurtosis_engine_rpc_api_bindings" "sort" "strings" "sync" @@ -388,6 +389,85 @@ func (manager *EnclaveManager) getExistingAndHistoricalEnclaveIdentifiersWithout return enclaveIdentifiersResult, nil } +func (manager *EnclaveManager) restartAllEnclaveAPIContainers(ctx context.Context) error { + + + manager.kurtosisBackend.GetEnclaves() + + getAPIContainersRunningFilters := &api_container.APIContainerFilters{ + EnclaveIDs: nil, + Statuses: map[container.ContainerStatus]bool{ + container.ContainerStatus_Running: true, + }, + } + allAPIContainersRunning, err := manager.kurtosisBackend.GetAPIContainers(ctx, getAPIContainersRunningFilters) + if err != nil { + return stacktrace.Propagate(err, "An error occurred getting API containers using filters '%+v'", getAPIContainersRunningFilters) + } + + apiContainersToDestroyEnclaveUuids := map[enclave.EnclaveUUID]bool{} + for enclaveUuid := range allAPIContainersRunning { + apiContainersToDestroyEnclaveUuids[enclaveUuid] = true + } + + if err := manager.destroyApiContainers(ctx, apiContainersToDestroyEnclaveUuids); err != nil { + return stacktrace.Propagate(err, "An error occurred destroying API containers on enclave with UUIDs '%*v'", apiContainersToDestroyEnclaveUuids) + } + + //TODO check if we should get this from the CLI commands probably is there a flag for it + useDefaultApiContainerVersionTag := "" + + //TODO check if we can get this one from any place, just using the default for now + restartAPIContainerDefaultLogLevel := logrus.DebugLevel + + for enclaveUuid, currentAPIContainer := range allAPIContainersRunning { + + isProduction := false + if currentAPIContainer. == kurtosis_engine_rpc_api_bindings.EnclaveMode_PRODUCTION { + isProduction = true + } + + manager.enclaveCreator.LaunchApiContainer( + ctx, + useDefaultApiContainerVersionTag, + restartAPIContainerDefaultLogLevel, + enclaveUuid, + apiContainerListenGrpcPortNumInsideNetwork, + manager.enclaveEnvVars, + manager. + ) + } + + +} + +func (manager *EnclaveManager) destroyApiContainers(ctx context.Context, enclaveUuids map[enclave.EnclaveUUID]bool) error { + + destroyAPIContainersFilters := &api_container.APIContainerFilters{ + EnclaveIDs: enclaveUuids, + Statuses: nil, + } + + _, erroredApiContainerIds, err := manager.kurtosisBackend.DestroyAPIContainers(ctx, destroyAPIContainersFilters) + if err != nil { + return stacktrace.Propagate(err, "An error occurred") + } + + if len(erroredApiContainerIds) > 0 { + logrus.Errorf("Errors occurred destroying the following API containers") + var removalErrorStrings []string + for idx, apiContainerErr := range erroredApiContainerIds { + logrus.Errorf("APIC in Enclave '%v' Error: '%v'", idx, apiContainerErr.Error()) + indexedResultErrStr := fmt.Sprintf(">>>>>>>>>>>>>>>>> APIC in Enclave '%v' ERROR <<<<<<<<<<<<<<<<<\n%v", idx, apiContainerErr.Error()) + removalErrorStrings = append(removalErrorStrings, indexedResultErrStr) + } + joinedRemovalErrors := strings.Join(removalErrorStrings, errorDelimiter) + return stacktrace.NewError("Following errors occurred while destroying some API containers :\n%v", joinedRemovalErrors) + } + + return nil +} + // ==================================================================================================== // Private helper methods // ==================================================================================================== From 7fba972c681aed7051b45fce3895dbf277115cc8 Mon Sep 17 00:00:00 2001 From: Leandro Poroli Date: Fri, 26 Apr 2024 17:42:00 -0300 Subject: [PATCH 2/6] adding enclave production mode value in the APIC primitive --- ...urtosis_backend_api_container_functions.go | 56 ++++++++++++++++++- ...cker_kurtosis_backend_enclave_functions.go | 26 +-------- ...urtosis_backend_api_container_functions.go | 1 + .../objects/api_container/api_container.go | 5 ++ 4 files changed, 64 insertions(+), 24 deletions(-) diff --git a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend_api_container_functions.go b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend_api_container_functions.go index 76d99a9832..a99b180b01 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend_api_container_functions.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend_api_container_functions.go @@ -2,6 +2,7 @@ package docker_kurtosis_backend import ( "context" + "encoding/json" "github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_interface/objects/image_registry_spec" "net" "time" @@ -33,6 +34,9 @@ const ( timeBetweenWaitForApiContainerAvailabilityRetries = 1 * time.Second apicDebugServerPort = 50103 // in ClI this is 50101 and in engine is 50102 + + isProductionEnclaveEnvVarKey = "isProductionEnclave" + enableProductionModeEnvVarValue = "true" ) // TODO: MIGRATE THIS FOLDER TO USE STRUCTURE OF USER_SERVICE_FUNCTIONS MODULE @@ -286,7 +290,8 @@ func (backend *DockerKurtosisBackend) CreateAPIContainer( return nil, stacktrace.Propagate(err, "An error occurred while getting bridge network ip address for enclave with id: '%v'", enclaveUuid) } - result, err := getApiContainerObjectFromContainerInfo(containerId, labelStrs, types.ContainerStatus_Running, hostMachinePortBindings, bridgeNetworkIpAddress) + isProductionEnclave := getProductionModeFromEnvVars(customEnvVars) + result, err := getApiContainerObjectFromContainerInfo(containerId, labelStrs, types.ContainerStatus_Running, hostMachinePortBindings, bridgeNetworkIpAddress, isProductionEnclave) if err != nil { return nil, stacktrace.Propagate(err, "An error occurred creating an API container object from container with ID '%v'", containerId) } @@ -423,12 +428,17 @@ func (backend *DockerKurtosisBackend) getMatchingApiContainers(ctx context.Conte return nil, stacktrace.Propagate(err, "An error occurred while getting bridge network ip address for container with id: '%v'", containerId) } + isProductionEnclave, err := getProductionMode(apiContainer) + if err != nil { + return nil, stacktrace.Propagate(err, "An error occurred getting production mode from the API container with container ID '%v'", containerId) + } apicObj, err := getApiContainerObjectFromContainerInfo( containerId, apiContainer.GetLabels(), apiContainer.GetStatus(), apiContainer.GetHostPortBindings(), bridgeNetworkIpAddress, + isProductionEnclave, ) if err != nil { return nil, stacktrace.Propagate(err, "An error occurred converting container with ID '%v' into an API container object", apiContainer.GetId()) @@ -460,6 +470,7 @@ func getApiContainerObjectFromContainerInfo( containerStatus types.ContainerStatus, allHostMachinePortBindings map[nat.Port]*nat.PortBinding, bridgeNetworkIpAddress string, + isProductionEnclave bool, ) (*api_container.APIContainer, error) { enclaveId, found := labels[docker_label_key.EnclaveUUIDDockerLabelKey.GetString()] if !found { @@ -519,6 +530,7 @@ func getApiContainerObjectFromContainerInfo( publicIpAddr, publicGrpcPortSpec, bridgeNetworkIpAddressAddr, + isProductionEnclave, ) return result, nil @@ -549,3 +561,45 @@ func getPrivateApiContainerPorts(containerLabels map[string]string) ( func extractEnclaveIdApiContainer(apiContainer *api_container.APIContainer) string { return string(apiContainer.GetEnclaveID()) } + +func getProductionMode(apicDockerContainer *types.Container) (bool, error) { + var ( + productionMode = false + err error + envVars = apicDockerContainer.GetEnvVars() + ) + + serializedArgsValue, found := envVars[serializedArgs] + if found { + productionMode, err = getProductionModeFromSerializedArgs(serializedArgsValue) + if err != nil { + return false, stacktrace.Propagate(err, "Error occurred while parsing env vars from api container with container ID %v", apicDockerContainer.GetId()) + } + } + return productionMode, nil +} + +func getProductionModeFromSerializedArgs(serializedParamsStr string) (bool, error) { + type Args struct { + IsProductionEnclave bool `json:"isProductionEnclave"` + } + + var args Args + paramsJsonBytes := []byte(serializedParamsStr) + if err := json.Unmarshal(paramsJsonBytes, &args); err != nil { + return false, stacktrace.Propagate(err, "An error occurred deserializing the args JSON '%v'", serializedParamsStr) + } + + return args.IsProductionEnclave, nil + +} + +func getProductionModeFromEnvVars(apiContainerEnvVars map[string]string) bool { + var productionMode bool + for envVarKey, envVarValue := range apiContainerEnvVars { + if envVarKey == isProductionEnclaveEnvVarKey && envVarValue == enableProductionModeEnvVarValue { + productionMode = true + } + } + return productionMode +} diff --git a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend_enclave_functions.go b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend_enclave_functions.go index ae8e0b2a40..c08681cead 100644 --- a/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend_enclave_functions.go +++ b/container-engine-lib/lib/backend_impls/docker/docker_kurtosis_backend/docker_kurtosis_backend_enclave_functions.go @@ -2,7 +2,6 @@ package docker_kurtosis_backend import ( "context" - "encoding/json" "strings" "time" @@ -200,13 +199,9 @@ func (backend *DockerKurtosisBackend) GetEnclaves( } if containerType == label_value_consts.APIContainerContainerTypeDockerLabelValue.GetString() { - envVars := container.GetEnvVars() - serializedArgsValue, found := envVars[serializedArgs] - if found { - productionMode, err = getProductionModeFromEnvVars(serializedArgsValue) - if err != nil { - return nil, stacktrace.Propagate(err, "Error occurred while parsing env vars from api container for %v", enclaveName) - } + productionMode, err = getProductionMode(container) + if err != nil { + return nil, stacktrace.Propagate(err, "Error occurred while getting production mode from api container for %v", enclaveName) } break } @@ -852,18 +847,3 @@ func getEnclaveNameFromNetwork(network *types.Network) string { return enclaveNameStr } - -func getProductionModeFromEnvVars(serializedParamsStr string) (bool, error) { - type Args struct { - IsProductionEnclave bool `json:"isProductionEnclave"` - } - - var args Args - paramsJsonBytes := []byte(serializedParamsStr) - if err := json.Unmarshal(paramsJsonBytes, &args); err != nil { - return false, stacktrace.Propagate(err, "An error occurred deserializing the args JSON '%v'", serializedParamsStr) - } - - return args.IsProductionEnclave, nil - -} diff --git a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/kubernetes_kurtosis_backend_api_container_functions.go b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/kubernetes_kurtosis_backend_api_container_functions.go index 13c52c5be8..748431388b 100644 --- a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/kubernetes_kurtosis_backend_api_container_functions.go +++ b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/kubernetes_kurtosis_backend_api_container_functions.go @@ -1043,6 +1043,7 @@ func getApiContainerObjectsFromKubernetesResources( publicIpAddr, publicGrpcPortSpec, nil, + false, ) result[enclaveId] = apiContainerObj diff --git a/container-engine-lib/lib/backend_interface/objects/api_container/api_container.go b/container-engine-lib/lib/backend_interface/objects/api_container/api_container.go index 25829c9445..7d70dd506e 100644 --- a/container-engine-lib/lib/backend_interface/objects/api_container/api_container.go +++ b/container-engine-lib/lib/backend_interface/objects/api_container/api_container.go @@ -26,6 +26,9 @@ type APIContainer struct { publicGrpcPort *port_spec.PortSpec bridgeNetworkIpAddress net.IP + + // Identifies if this API container is running in a production mode enclave + isProductionEnclave bool } func NewAPIContainer( @@ -36,6 +39,7 @@ func NewAPIContainer( publicIpAddr net.IP, publicGrpcPort *port_spec.PortSpec, bridgeNetworkIpAddress net.IP, + isProductionEnclave bool, ) *APIContainer { return &APIContainer{ enclaveId: enclaveId, @@ -45,6 +49,7 @@ func NewAPIContainer( publicIpAddr: publicIpAddr, publicGrpcPort: publicGrpcPort, bridgeNetworkIpAddress: bridgeNetworkIpAddress, + isProductionEnclave: isProductionEnclave, } } From bd5c072e743662ec7cb5c7e91b6dfb520ff2a321 Mon Sep 17 00:00:00 2001 From: Leandro Poroli Date: Fri, 26 Apr 2024 17:57:56 -0300 Subject: [PATCH 3/6] adding the getter --- .../backend_interface/objects/api_container/api_container.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/container-engine-lib/lib/backend_interface/objects/api_container/api_container.go b/container-engine-lib/lib/backend_interface/objects/api_container/api_container.go index 7d70dd506e..4e7d59a7a0 100644 --- a/container-engine-lib/lib/backend_interface/objects/api_container/api_container.go +++ b/container-engine-lib/lib/backend_interface/objects/api_container/api_container.go @@ -80,3 +80,7 @@ func (apiContainer *APIContainer) GetPublicIPAddress() net.IP { func (apiContainer *APIContainer) GetPublicGRPCPort() *port_spec.PortSpec { return apiContainer.publicGrpcPort } + +func (apiContainer *APIContainer) IsProductionEnclave() bool { + return apiContainer.isProductionEnclave +} From 4d36692e5e5244089b78083812011b6ec4560259 Mon Sep 17 00:00:00 2001 From: Leandro Poroli Date: Mon, 29 Apr 2024 12:00:14 -0300 Subject: [PATCH 4/6] api containers restart flag on engine commands --- .../engine_consuming_kurtosis_command.go | 3 +- cli/cli/commands/cluster/set/set.go | 3 +- cli/cli/commands/enclave/add/add.go | 3 +- cli/cli/commands/engine/restart/restart.go | 17 +++++++++- cli/cli/commands/engine/start/start.go | 21 +++++++++++-- cli/cli/commands/github/login/login.go | 3 +- cli/cli/commands/kurtosis_context/set/set.go | 3 +- .../engine_existence_guarantor.go | 10 +++++- .../helpers/engine_manager/engine_manager.go | 18 ++++++++--- engine/launcher/args/args.go | 5 +++ .../engine_server_launcher.go | 12 +++++-- .../engine/enclave_manager/enclave_manager.go | 31 ++++++++++++------- engine/server/engine/main.go | 6 ++++ engine/server/go.mod | 1 + 14 files changed, 106 insertions(+), 30 deletions(-) diff --git a/cli/cli/command_framework/highlevel/engine_consuming_kurtosis_command/engine_consuming_kurtosis_command.go b/cli/cli/command_framework/highlevel/engine_consuming_kurtosis_command/engine_consuming_kurtosis_command.go index b4d3c12b2e..cb991f19c3 100644 --- a/cli/cli/command_framework/highlevel/engine_consuming_kurtosis_command/engine_consuming_kurtosis_command.go +++ b/cli/cli/command_framework/highlevel/engine_consuming_kurtosis_command/engine_consuming_kurtosis_command.go @@ -186,7 +186,8 @@ func (cmd *EngineConsumingKurtosisCommand) getSetupFunc() func(context.Context) // commands only access the Kurtosis APIs, we can remove this. kurtosisBackend := engineManager.GetKurtosisBackend() - engineClient, closeClientFunc, err := engineManager.StartEngineIdempotentlyWithDefaultVersion(ctx, defaults.DefaultEngineLogLevel, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultGitHubAuthTokenOverride) + dontRestartAPIContainers := false + engineClient, closeClientFunc, err := engineManager.StartEngineIdempotentlyWithDefaultVersion(ctx, defaults.DefaultEngineLogLevel, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultGitHubAuthTokenOverride, dontRestartAPIContainers) if err != nil { return nil, stacktrace.Propagate(err, "An error occurred creating a new Kurtosis engine client") } diff --git a/cli/cli/commands/cluster/set/set.go b/cli/cli/commands/cluster/set/set.go index 6600fc1233..0561734453 100644 --- a/cli/cli/commands/cluster/set/set.go +++ b/cli/cli/commands/cluster/set/set.go @@ -123,7 +123,8 @@ func run(ctx context.Context, flags *flags.ParsedFlags, args *args.ParsedArgs) e // we only start in a stopped state, the idempotent visitor gets stuck with engine_manager.EngineStatus_ContainerRunningButServerNotResponding if the gateway isn't running // TODO - fix the idempotent starter longer term if engineStatus == engine_manager.EngineStatus_Stopped { - _, engineClientCloseFunc, err := engineManagerNewCluster.StartEngineIdempotentlyWithDefaultVersion(ctx, defaults.DefaultEngineLogLevel, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultGitHubAuthTokenOverride) + dontRestartAPIContainers := false + _, engineClientCloseFunc, err := engineManagerNewCluster.StartEngineIdempotentlyWithDefaultVersion(ctx, defaults.DefaultEngineLogLevel, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultGitHubAuthTokenOverride, dontRestartAPIContainers) if err != nil { return stacktrace.Propagate(err, "Engine could not be started after cluster was updated. Its status can be retrieved "+ "running 'kurtosis %s %s' and it can potentially be started running 'kurtosis %s %s'", diff --git a/cli/cli/commands/enclave/add/add.go b/cli/cli/commands/enclave/add/add.go index 9d0e628e5a..a3cb013e99 100644 --- a/cli/cli/commands/enclave/add/add.go +++ b/cli/cli/commands/enclave/add/add.go @@ -115,11 +115,12 @@ func run( return stacktrace.Propagate(err, "An error occurred while getting the enclave name using flag with key '%v'; this is a bug in Kurtosis ", enclaveNameFlagKey) } + dontRestartAPIContainers := false engineManager, err := engine_manager.NewEngineManager(ctx) if err != nil { return stacktrace.Propagate(err, "An error occurred creating an engine manager.") } - engineClient, closeClientFunc, err := engineManager.StartEngineIdempotentlyWithDefaultVersion(ctx, defaults.DefaultEngineLogLevel, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultGitHubAuthTokenOverride) + engineClient, closeClientFunc, err := engineManager.StartEngineIdempotentlyWithDefaultVersion(ctx, defaults.DefaultEngineLogLevel, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultGitHubAuthTokenOverride, dontRestartAPIContainers) if err != nil { return stacktrace.Propagate(err, "An error occurred creating a new Kurtosis engine client") } diff --git a/cli/cli/commands/engine/restart/restart.go b/cli/cli/commands/engine/restart/restart.go index b039800d66..f30620aae5 100644 --- a/cli/cli/commands/engine/restart/restart.go +++ b/cli/cli/commands/engine/restart/restart.go @@ -26,6 +26,9 @@ const ( defaultEngineVersion = "" restartEngineOnSameVersionIfAnyRunning = false + + defaultShouldRestartAPIContainers = "false" + restartAPIContainersFlagKey = "restart-api-containers" ) var RestartCmd = &lowlevel.LowlevelKurtosisCommand{ @@ -71,6 +74,13 @@ var RestartCmd = &lowlevel.LowlevelKurtosisCommand{ Type: flags.FlagType_String, Default: defaults.DefaultGitHubAuthTokenOverride, }, + { + Key: restartAPIContainersFlagKey, + Usage: "", //TODO completar + Shorthand: "", + Type: flags.FlagType_Bool, + Default: defaultShouldRestartAPIContainers, + }, }, PreValidationAndRunFunc: nil, RunFunc: run, @@ -127,9 +137,14 @@ func run(_ context.Context, flags *flags.ParsedFlags, _ *args.ParsedArgs) error shouldStartInDebugMode = true } + shouldRestartAPIContainers, err := flags.GetBool(restartAPIContainersFlagKey) + if err != nil { + return stacktrace.Propagate(err, "Expected a value for the '%v' flag but failed to get it", restartAPIContainersFlagKey) + } + var engineClientCloseFunc func() error var restartEngineErr error - _, engineClientCloseFunc, restartEngineErr = engineManager.RestartEngineIdempotently(ctx, logLevel, engineVersion, restartEngineOnSameVersionIfAnyRunning, enclavePoolSize, shouldStartInDebugMode, githubAuthTokenOverride) + _, engineClientCloseFunc, restartEngineErr = engineManager.RestartEngineIdempotently(ctx, logLevel, engineVersion, restartEngineOnSameVersionIfAnyRunning, enclavePoolSize, shouldStartInDebugMode, githubAuthTokenOverride, shouldRestartAPIContainers) if restartEngineErr != nil { return stacktrace.Propagate(restartEngineErr, "An error occurred restarting the Kurtosis engine") } diff --git a/cli/cli/commands/engine/start/start.go b/cli/cli/commands/engine/start/start.go index 53802f48bd..1f6784ec2d 100644 --- a/cli/cli/commands/engine/start/start.go +++ b/cli/cli/commands/engine/start/start.go @@ -27,6 +27,9 @@ const ( defaultEngineVersion = "" kurtosisTechEngineImagePrefix = "kurtosistech/engine" imageVersionDelimiter = ":" + + defaultShouldRestartAPIContainers = "false" + restartAPIContainersFlagKey = "restart-api-containers" ) var StartCmd = &lowlevel.LowlevelKurtosisCommand{ @@ -72,6 +75,13 @@ var StartCmd = &lowlevel.LowlevelKurtosisCommand{ Type: flags.FlagType_String, Default: defaults.DefaultGitHubAuthTokenOverride, }, + { + Key: restartAPIContainersFlagKey, + Usage: "", //TODO completar + Shorthand: "", + Type: flags.FlagType_Bool, + Default: defaultShouldRestartAPIContainers, + }, }, PreValidationAndRunFunc: nil, RunFunc: run, @@ -123,16 +133,21 @@ func run(_ context.Context, flags *flags.ParsedFlags, _ *args.ParsedArgs) error return stacktrace.Propagate(err, "Expected a value for the '%v' flag but failed to get it", defaults.DebugModeFlagKey) } + shouldRestartAPIContainers, err := flags.GetBool(restartAPIContainersFlagKey) + if err != nil { + return stacktrace.Propagate(err, "Expected a value for the '%v' flag but failed to get it", restartAPIContainersFlagKey) + } + if engineVersion == defaultEngineVersion && isDebugMode { engineDebugVersion := fmt.Sprintf("%s-%s", kurtosis_version.KurtosisVersion, defaults.DefaultKurtosisContainerDebugImageNameSuffix) logrus.Infof("Starting Kurtosis engine in debug mode from image '%v%v%v'...", kurtosisTechEngineImagePrefix, imageVersionDelimiter, engineDebugVersion) - _, engineClientCloseFunc, startEngineErr = engineManager.StartEngineIdempotentlyWithCustomVersion(ctx, engineDebugVersion, logLevel, enclavePoolSize, true, githubAuthTokenOverride) + _, engineClientCloseFunc, startEngineErr = engineManager.StartEngineIdempotentlyWithCustomVersion(ctx, engineDebugVersion, logLevel, enclavePoolSize, true, githubAuthTokenOverride, shouldRestartAPIContainers) } else if engineVersion == defaultEngineVersion { logrus.Infof("Starting Kurtosis engine from image '%v%v%v'...", kurtosisTechEngineImagePrefix, imageVersionDelimiter, kurtosis_version.KurtosisVersion) - _, engineClientCloseFunc, startEngineErr = engineManager.StartEngineIdempotentlyWithDefaultVersion(ctx, logLevel, enclavePoolSize, githubAuthTokenOverride) + _, engineClientCloseFunc, startEngineErr = engineManager.StartEngineIdempotentlyWithDefaultVersion(ctx, logLevel, enclavePoolSize, githubAuthTokenOverride, shouldRestartAPIContainers) } else { logrus.Infof("Starting Kurtosis engine from image '%v%v%v'...", kurtosisTechEngineImagePrefix, imageVersionDelimiter, engineVersion) - _, engineClientCloseFunc, startEngineErr = engineManager.StartEngineIdempotentlyWithCustomVersion(ctx, engineVersion, logLevel, enclavePoolSize, defaults.DefaultEnableDebugMode, githubAuthTokenOverride) + _, engineClientCloseFunc, startEngineErr = engineManager.StartEngineIdempotentlyWithCustomVersion(ctx, engineVersion, logLevel, enclavePoolSize, defaults.DefaultEnableDebugMode, githubAuthTokenOverride, shouldRestartAPIContainers) } if startEngineErr != nil { return stacktrace.Propagate(startEngineErr, "An error occurred starting the Kurtosis engine") diff --git a/cli/cli/commands/github/login/login.go b/cli/cli/commands/github/login/login.go index a7dd63ca16..d0e5ffb86a 100644 --- a/cli/cli/commands/github/login/login.go +++ b/cli/cli/commands/github/login/login.go @@ -70,7 +70,8 @@ func RestartEngineAfterGitHubAuth(ctx context.Context) error { } var engineClientCloseFunc func() error var restartEngineErr error - _, engineClientCloseFunc, restartEngineErr = engineManager.RestartEngineIdempotently(ctx, defaults.DefaultEngineLogLevel, defaultEngineVersion, restartEngineOnSameVersionIfAnyRunning, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultEnableDebugMode, defaults.DefaultGitHubAuthTokenOverride) + dontRestartAPIContainers := false + _, engineClientCloseFunc, restartEngineErr = engineManager.RestartEngineIdempotently(ctx, defaults.DefaultEngineLogLevel, defaultEngineVersion, restartEngineOnSameVersionIfAnyRunning, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultEnableDebugMode, defaults.DefaultGitHubAuthTokenOverride, dontRestartAPIContainers) if restartEngineErr != nil { return stacktrace.Propagate(restartEngineErr, "An error occurred restarting the Kurtosis engine") } diff --git a/cli/cli/commands/kurtosis_context/set/set.go b/cli/cli/commands/kurtosis_context/set/set.go index f52d798cf7..bf00452fb6 100644 --- a/cli/cli/commands/kurtosis_context/set/set.go +++ b/cli/cli/commands/kurtosis_context/set/set.go @@ -147,7 +147,8 @@ func SetContext( return stacktrace.Propagate(err, "An error occurred creating an engine manager for the new context.") } - _, engineClientCloseFunc, startEngineErr := engineManager.StartEngineIdempotentlyWithDefaultVersion(ctx, logrus.InfoLevel, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultGitHubAuthTokenOverride) + dontRestartAPIContainers := false + _, engineClientCloseFunc, startEngineErr := engineManager.StartEngineIdempotentlyWithDefaultVersion(ctx, logrus.InfoLevel, defaults.DefaultEngineEnclavePoolSize, defaults.DefaultGitHubAuthTokenOverride, dontRestartAPIContainers) if startEngineErr != nil { logrus.Warnf("The context was successfully set to '%s' but Kurtosis failed to start an engine in "+ "this new context. A new engine should be started manually with '%s %s %s'. The error was:\n%v", diff --git a/cli/cli/helpers/engine_manager/engine_existence_guarantor.go b/cli/cli/helpers/engine_manager/engine_existence_guarantor.go index c522476f86..af807bbb2e 100644 --- a/cli/cli/helpers/engine_manager/engine_existence_guarantor.go +++ b/cli/cli/helpers/engine_manager/engine_existence_guarantor.go @@ -81,6 +81,9 @@ type engineExistenceGuarantor struct { // token with git auth to override existing GitHub auth if there is any githubAuthTokenOverride string + + //TODO to complete + restartAPIContainers bool } func newEngineExistenceGuarantorWithDefaultVersion( @@ -98,7 +101,7 @@ func newEngineExistenceGuarantorWithDefaultVersion( allowedCORSOrigins *[]string, shouldRunInDebugMode bool, githubAuthTokenOverride string, - + restartAPIContainers bool, ) *engineExistenceGuarantor { return newEngineExistenceGuarantorWithCustomVersion( ctx, @@ -116,6 +119,7 @@ func newEngineExistenceGuarantorWithDefaultVersion( allowedCORSOrigins, shouldRunInDebugMode, githubAuthTokenOverride, + restartAPIContainers, ) } @@ -135,6 +139,7 @@ func newEngineExistenceGuarantorWithCustomVersion( allowedCORSOrigins *[]string, shouldRunInDebugMode bool, githubAuthTokenOverride string, + restartAPIContainers bool, ) *engineExistenceGuarantor { return &engineExistenceGuarantor{ ctx: ctx, @@ -154,6 +159,7 @@ func newEngineExistenceGuarantorWithCustomVersion( allowedCORSOrigins: allowedCORSOrigins, shouldRunInDebugMode: shouldRunInDebugMode, githubAuthTokenOverride: githubAuthTokenOverride, + restartAPIContainers: restartAPIContainers, } } @@ -212,6 +218,7 @@ func (guarantor *engineExistenceGuarantor) VisitStopped() error { guarantor.allowedCORSOrigins, guarantor.shouldRunInDebugMode, githubAuthToken, + guarantor.restartAPIContainers, ) } else { _, _, engineLaunchErr = guarantor.engineServerLauncher.LaunchWithCustomVersion( @@ -231,6 +238,7 @@ func (guarantor *engineExistenceGuarantor) VisitStopped() error { guarantor.allowedCORSOrigins, guarantor.shouldRunInDebugMode, githubAuthToken, + guarantor.restartAPIContainers, ) } if engineLaunchErr != nil { diff --git a/cli/cli/helpers/engine_manager/engine_manager.go b/cli/cli/helpers/engine_manager/engine_manager.go index f1638f5bb1..68cfcc8281 100644 --- a/cli/cli/helpers/engine_manager/engine_manager.go +++ b/cli/cli/helpers/engine_manager/engine_manager.go @@ -180,7 +180,9 @@ func (manager *EngineManager) StartEngineIdempotentlyWithDefaultVersion( ctx context.Context, logLevel logrus.Level, poolSize uint8, - githubAuthTokenOverride string) (kurtosis_engine_rpc_api_bindings.EngineServiceClient, func() error, error) { + githubAuthTokenOverride string, + restartAPIContainers bool, +) (kurtosis_engine_rpc_api_bindings.EngineServiceClient, func() error, error) { status, maybeHostMachinePortBinding, engineVersion, err := manager.GetEngineStatus(ctx) if err != nil { return nil, nil, stacktrace.Propagate(err, "An error occurred retrieving the Kurtosis engine status, which is necessary for creating a connection to the engine") @@ -202,6 +204,7 @@ func (manager *EngineManager) StartEngineIdempotentlyWithDefaultVersion( manager.allowedCORSOrigins, doNotStartTheEngineInDebugModeForDefaultVersion, githubAuthTokenOverride, + restartAPIContainers, ) // TODO Need to handle the Kubernetes case, where a gateway needs to be started after the engine is started but // before we can return an EngineClient @@ -219,7 +222,9 @@ func (manager *EngineManager) StartEngineIdempotentlyWithCustomVersion( logLevel logrus.Level, poolSize uint8, shouldStartInDebugMode bool, - githubAuthTokenOverride string) (kurtosis_engine_rpc_api_bindings.EngineServiceClient, func() error, error) { + githubAuthTokenOverride string, + restartAPIContainers bool, +) (kurtosis_engine_rpc_api_bindings.EngineServiceClient, func() error, error) { status, maybeHostMachinePortBinding, engineVersion, err := manager.GetEngineStatus(ctx) if err != nil { return nil, nil, stacktrace.Propagate(err, "An error occurred retrieving the Kurtosis engine status, which is necessary for creating a connection to the engine") @@ -242,6 +247,7 @@ func (manager *EngineManager) StartEngineIdempotentlyWithCustomVersion( manager.allowedCORSOrigins, shouldStartInDebugMode, githubAuthTokenOverride, + restartAPIContainers, ) engineClient, engineClientCloseFunc, err := manager.startEngineWithGuarantor(ctx, status, engineGuarantor) if err != nil { @@ -340,7 +346,9 @@ func (manager *EngineManager) RestartEngineIdempotently( restartEngineOnSameVersionIfAnyRunning bool, poolSize uint8, shouldStartInDebugMode bool, - githubAuthTokenOverride string) (kurtosis_engine_rpc_api_bindings.EngineServiceClient, func() error, error) { + githubAuthTokenOverride string, + shouldRestartAPIContainers bool, +) (kurtosis_engine_rpc_api_bindings.EngineServiceClient, func() error, error) { var versionOfNewEngine string // We try to do our best to restart an engine on the same version the current on is on _, _, currentEngineVersion, err := manager.GetEngineStatus(ctx) @@ -365,9 +373,9 @@ func (manager *EngineManager) RestartEngineIdempotently( var engineClientCloseFunc func() error var restartEngineErr error if versionOfNewEngine != defaultEngineVersion { - _, engineClientCloseFunc, restartEngineErr = manager.StartEngineIdempotentlyWithCustomVersion(ctx, versionOfNewEngine, logLevel, poolSize, shouldStartInDebugMode, githubAuthTokenOverride) + _, engineClientCloseFunc, restartEngineErr = manager.StartEngineIdempotentlyWithCustomVersion(ctx, versionOfNewEngine, logLevel, poolSize, shouldStartInDebugMode, githubAuthTokenOverride, shouldRestartAPIContainers) } else { - _, engineClientCloseFunc, restartEngineErr = manager.StartEngineIdempotentlyWithDefaultVersion(ctx, logLevel, poolSize, githubAuthTokenOverride) + _, engineClientCloseFunc, restartEngineErr = manager.StartEngineIdempotentlyWithDefaultVersion(ctx, logLevel, poolSize, githubAuthTokenOverride, shouldRestartAPIContainers) } if restartEngineErr != nil { return nil, nil, stacktrace.Propagate(restartEngineErr, "An error occurred starting a new engine") diff --git a/engine/launcher/args/args.go b/engine/launcher/args/args.go index f54fbe9e7f..09139cae8f 100644 --- a/engine/launcher/args/args.go +++ b/engine/launcher/args/args.go @@ -61,6 +61,9 @@ type EngineServerArgs struct { // List of allowed origins to validate CORS requests on the REST API. If undefined, defaults to '*' (any origin). AllowedCORSOrigins *[]string `json:"allowed_cors_origins,omitempty"` + + // TODO put a comment + RestartAPIContainers bool `json:"restart_api_containers"` } var skipValidation = map[string]bool{ @@ -116,6 +119,7 @@ func NewEngineServerArgs( cloudUserID metrics_client.CloudUserID, cloudInstanceID metrics_client.CloudInstanceID, allowedCORSOrigins *[]string, + restartAPIContainers bool, ) (*EngineServerArgs, error) { if enclaveEnvVars == "" { enclaveEnvVars = emptyJsonField @@ -135,6 +139,7 @@ func NewEngineServerArgs( CloudUserID: cloudUserID, CloudInstanceID: cloudInstanceID, AllowedCORSOrigins: allowedCORSOrigins, + RestartAPIContainers: restartAPIContainers, } if err := result.validate(); err != nil { return nil, stacktrace.Propagate(err, "An error occurred validating engine server args") diff --git a/engine/launcher/engine_server_launcher/engine_server_launcher.go b/engine/launcher/engine_server_launcher/engine_server_launcher.go index 18591ddd97..18e99c8f4a 100644 --- a/engine/launcher/engine_server_launcher/engine_server_launcher.go +++ b/engine/launcher/engine_server_launcher/engine_server_launcher.go @@ -45,7 +45,9 @@ func (launcher *EngineServerLauncher) LaunchWithDefaultVersion( cloudInstanceID metrics_client.CloudInstanceID, allowedCORSOrigins *[]string, shouldStartInDebugMode bool, - githubAuthToken string) ( + githubAuthToken string, + restartAPIContainers bool, +) ( resultPublicIpAddr net.IP, resultPublicGrpcPortSpec *port_spec.PortSpec, resultErr error, @@ -66,7 +68,8 @@ func (launcher *EngineServerLauncher) LaunchWithDefaultVersion( cloudInstanceID, allowedCORSOrigins, shouldStartInDebugMode, - githubAuthToken) + githubAuthToken, + restartAPIContainers) if err != nil { return nil, nil, stacktrace.Propagate(err, "An error occurred launching the engine server container with default version tag '%v'", kurtosis_version.KurtosisVersion) } @@ -89,7 +92,9 @@ func (launcher *EngineServerLauncher) LaunchWithCustomVersion( cloudInstanceID metrics_client.CloudInstanceID, allowedCORSOrigins *[]string, shouldStartInDebugMode bool, - githubAuthToken string) ( + githubAuthToken string, + restartAPIContainers bool, +) ( resultPublicIpAddr net.IP, resultPublicGrpcPortSpec *port_spec.PortSpec, resultErr error, @@ -111,6 +116,7 @@ func (launcher *EngineServerLauncher) LaunchWithCustomVersion( cloudUserID, cloudInstanceID, allowedCORSOrigins, + restartAPIContainers, ) if err != nil { return nil, nil, stacktrace.Propagate(err, "An error occurred creating the engine server args") diff --git a/engine/server/engine/enclave_manager/enclave_manager.go b/engine/server/engine/enclave_manager/enclave_manager.go index f4b5846ac6..0c0e635d8a 100644 --- a/engine/server/engine/enclave_manager/enclave_manager.go +++ b/engine/server/engine/enclave_manager/enclave_manager.go @@ -3,7 +3,6 @@ package enclave_manager import ( "context" "fmt" - "github.com/kurtosis-tech/kurtosis/api/golang/engine/kurtosis_engine_rpc_api_bindings" "sort" "strings" "sync" @@ -389,10 +388,9 @@ func (manager *EnclaveManager) getExistingAndHistoricalEnclaveIdentifiersWithout return enclaveIdentifiersResult, nil } -func (manager *EnclaveManager) restartAllEnclaveAPIContainers(ctx context.Context) error { +func (manager *EnclaveManager) RestartAllEnclaveAPIContainers(ctx context.Context) error { - - manager.kurtosisBackend.GetEnclaves() + logrus.Info("Restarting all API containers...") getAPIContainersRunningFilters := &api_container.APIContainerFilters{ EnclaveIDs: nil, @@ -411,7 +409,7 @@ func (manager *EnclaveManager) restartAllEnclaveAPIContainers(ctx context.Contex } if err := manager.destroyApiContainers(ctx, apiContainersToDestroyEnclaveUuids); err != nil { - return stacktrace.Propagate(err, "An error occurred destroying API containers on enclave with UUIDs '%*v'", apiContainersToDestroyEnclaveUuids) + return stacktrace.Propagate(err, "An error occurred destroying API containers on enclave with UUIDs '%+v'", apiContainersToDestroyEnclaveUuids) } //TODO check if we should get this from the CLI commands probably is there a flag for it @@ -420,25 +418,34 @@ func (manager *EnclaveManager) restartAllEnclaveAPIContainers(ctx context.Contex //TODO check if we can get this one from any place, just using the default for now restartAPIContainerDefaultLogLevel := logrus.DebugLevel - for enclaveUuid, currentAPIContainer := range allAPIContainersRunning { + //TODO not using debug mode on restart so far + noDebugMode := false - isProduction := false - if currentAPIContainer. == kurtosis_engine_rpc_api_bindings.EnclaveMode_PRODUCTION { - isProduction = true - } + for enclaveUuid, currentAPIContainer := range allAPIContainersRunning { - manager.enclaveCreator.LaunchApiContainer( + _, err := manager.enclaveCreator.LaunchApiContainer( ctx, useDefaultApiContainerVersionTag, restartAPIContainerDefaultLogLevel, enclaveUuid, apiContainerListenGrpcPortNumInsideNetwork, manager.enclaveEnvVars, - manager. + currentAPIContainer.IsProductionEnclave(), + manager.metricsUserID, + manager.didUserAcceptSendingMetrics, + manager.isCI, + manager.cloudUserID, + manager.cloudInstanceID, + noDebugMode, ) + if err != nil { + return stacktrace.Propagate(err, "An error occurred launching the API container") + } } + logrus.Info("...all API containers restarted.") + return nil } func (manager *EnclaveManager) destroyApiContainers(ctx context.Context, enclaveUuids map[enclave.EnclaveUUID]bool) error { diff --git a/engine/server/engine/main.go b/engine/server/engine/main.go index f9bac6cb38..a2efa9d10d 100644 --- a/engine/server/engine/main.go +++ b/engine/server/engine/main.go @@ -291,6 +291,12 @@ func runMain() error { } }() + if serverArgs.RestartAPIContainers { + if err := enclaveManager.RestartAllEnclaveAPIContainers(ctx); err != nil { + return stacktrace.Propagate(err, "An error occurred restarting all API containers.") + } + } + engineHttpServer := connect_server.NewConnectServer(serverArgs.GrpcListenPortNum, grpcServerStopGracePeriod, handler, apiPath) if err := engineHttpServer.RunServerUntilInterruptedWithCors(cors.AllowAll()); err != nil { return stacktrace.Propagate(err, "An error occurred running the server.") diff --git a/engine/server/go.mod b/engine/server/go.mod index 75b91b5309..f6548f984e 100644 --- a/engine/server/go.mod +++ b/engine/server/go.mod @@ -99,6 +99,7 @@ require ( github.com/kurtosis-tech/kurtosis/cloud/api/golang v0.0.0-20230828153722-32770ca96513 // indirect github.com/kurtosis-tech/kurtosis/contexts-config-store v0.0.0 // indirect github.com/kurtosis-tech/kurtosis/enclave-manager/api/golang v0.0.0-20230828153722-32770ca96513 // indirect + github.com/kurtosis-tech/kurtosis/kurtosis_version v0.0.0 // indirect github.com/kurtosis-tech/kurtosis/path-compression v0.0.0-20240307154559-64d2929cd265 // indirect github.com/labstack/gommon v0.4.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect From 8e19282150b6a05fbfd34c448002fd16fc1292c5 Mon Sep 17 00:00:00 2001 From: Leandro Poroli Date: Mon, 29 Apr 2024 12:14:10 -0300 Subject: [PATCH 5/6] adding comments in arguments and flags --- cli/cli/commands/engine/restart/restart.go | 2 +- cli/cli/commands/engine/start/start.go | 2 +- .../helpers/engine_manager/engine_existence_guarantor.go | 2 +- engine/launcher/args/args.go | 2 +- engine/server/engine/enclave_manager/enclave_manager.go | 7 +++---- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/cli/cli/commands/engine/restart/restart.go b/cli/cli/commands/engine/restart/restart.go index f30620aae5..0dceb666d8 100644 --- a/cli/cli/commands/engine/restart/restart.go +++ b/cli/cli/commands/engine/restart/restart.go @@ -76,7 +76,7 @@ var RestartCmd = &lowlevel.LowlevelKurtosisCommand{ }, { Key: restartAPIContainersFlagKey, - Usage: "", //TODO completar + Usage: "Also restart the current API containers after starting the Kurtosis engine.", Shorthand: "", Type: flags.FlagType_Bool, Default: defaultShouldRestartAPIContainers, diff --git a/cli/cli/commands/engine/start/start.go b/cli/cli/commands/engine/start/start.go index 1f6784ec2d..29bcbdf278 100644 --- a/cli/cli/commands/engine/start/start.go +++ b/cli/cli/commands/engine/start/start.go @@ -77,7 +77,7 @@ var StartCmd = &lowlevel.LowlevelKurtosisCommand{ }, { Key: restartAPIContainersFlagKey, - Usage: "", //TODO completar + Usage: "Restart the current API containers after starting the Kurtosis engine.", Shorthand: "", Type: flags.FlagType_Bool, Default: defaultShouldRestartAPIContainers, diff --git a/cli/cli/helpers/engine_manager/engine_existence_guarantor.go b/cli/cli/helpers/engine_manager/engine_existence_guarantor.go index af807bbb2e..04c6286ee4 100644 --- a/cli/cli/helpers/engine_manager/engine_existence_guarantor.go +++ b/cli/cli/helpers/engine_manager/engine_existence_guarantor.go @@ -82,7 +82,7 @@ type engineExistenceGuarantor struct { // token with git auth to override existing GitHub auth if there is any githubAuthTokenOverride string - //TODO to complete + // To restart the current API containers after the engine has been restarted restartAPIContainers bool } diff --git a/engine/launcher/args/args.go b/engine/launcher/args/args.go index 09139cae8f..124dfdb82c 100644 --- a/engine/launcher/args/args.go +++ b/engine/launcher/args/args.go @@ -62,7 +62,7 @@ type EngineServerArgs struct { // List of allowed origins to validate CORS requests on the REST API. If undefined, defaults to '*' (any origin). AllowedCORSOrigins *[]string `json:"allowed_cors_origins,omitempty"` - // TODO put a comment + // To restart the current API containers after the engine has been restarted RestartAPIContainers bool `json:"restart_api_containers"` } diff --git a/engine/server/engine/enclave_manager/enclave_manager.go b/engine/server/engine/enclave_manager/enclave_manager.go index 0c0e635d8a..eae579da68 100644 --- a/engine/server/engine/enclave_manager/enclave_manager.go +++ b/engine/server/engine/enclave_manager/enclave_manager.go @@ -130,11 +130,11 @@ func CreateEnclaveManager( // is only used by the EngineServerService so we might as well return the object that EngineServerService wants func (manager *EnclaveManager) CreateEnclave( setupCtx context.Context, - // If blank, will use the default +// If blank, will use the default engineVersion string, apiContainerImageVersionTag string, apiContainerLogLevel logrus.Level, - //If blank, will use a random one +//If blank, will use a random one enclaveName string, isProduction bool, shouldAPICRunInDebugMode bool, @@ -412,13 +412,12 @@ func (manager *EnclaveManager) RestartAllEnclaveAPIContainers(ctx context.Contex return stacktrace.Propagate(err, "An error occurred destroying API containers on enclave with UUIDs '%+v'", apiContainersToDestroyEnclaveUuids) } - //TODO check if we should get this from the CLI commands probably is there a flag for it + // this way we are going to use always the same engine's version useDefaultApiContainerVersionTag := "" //TODO check if we can get this one from any place, just using the default for now restartAPIContainerDefaultLogLevel := logrus.DebugLevel - //TODO not using debug mode on restart so far noDebugMode := false for enclaveUuid, currentAPIContainer := range allAPIContainersRunning { From 268621ba2b40cf5693fa23381d532db09f5d0ba1 Mon Sep 17 00:00:00 2001 From: Leandro Poroli Date: Mon, 29 Apr 2024 14:59:51 -0300 Subject: [PATCH 6/6] format comments --- engine/server/engine/enclave_manager/enclave_manager.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/server/engine/enclave_manager/enclave_manager.go b/engine/server/engine/enclave_manager/enclave_manager.go index eae579da68..fbb64957bd 100644 --- a/engine/server/engine/enclave_manager/enclave_manager.go +++ b/engine/server/engine/enclave_manager/enclave_manager.go @@ -130,11 +130,11 @@ func CreateEnclaveManager( // is only used by the EngineServerService so we might as well return the object that EngineServerService wants func (manager *EnclaveManager) CreateEnclave( setupCtx context.Context, -// If blank, will use the default + // If blank, will use the default engineVersion string, apiContainerImageVersionTag string, apiContainerLogLevel logrus.Level, -//If blank, will use a random one + //If blank, will use a random one enclaveName string, isProduction bool, shouldAPICRunInDebugMode bool,