From 534ed23eee197cb21b46e1855a507234df27a343 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 13 Oct 2023 14:54:09 +0100 Subject: [PATCH 1/3] quick fail engine restart --- .../engine_functions/create_engine.go | 8 ++++++++ .../kubernetes/kubernetes_manager/kubernetes_manager.go | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/engine_functions/create_engine.go b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/engine_functions/create_engine.go index 8009b58458..aa682cce30 100644 --- a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/engine_functions/create_engine.go +++ b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/engine_functions/create_engine.go @@ -42,6 +42,14 @@ func CreateEngine( *engine.Engine, error, ) { + hasNodes, err := kubernetesManager.HasComputeNodes(ctx) + if err != nil { + return nil, stacktrace.Propagate(err, "an error occurred while verifying whether the Kubernetes cluster has any compute nodes") + } + if !hasNodes { + return nil, stacktrace.NewError("can't start engine on the Kubernetes cluster as it has no compute nodes") + } + engineGuidStr, err := uuid_generator.GenerateUUIDString() if err != nil { return nil, stacktrace.Propagate(err, "An error occurred generating a UUID string for the engine") diff --git a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go index e4ff86c01e..7b0fdace35 100644 --- a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go +++ b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go @@ -1729,6 +1729,14 @@ func (manager *KubernetesManager) GetExecStream(ctx context.Context, pod *apiv1. }) } +func (manager *KubernetesManager) HasComputeNodes(ctx context.Context) (bool, error) { + nodes, err := manager.kubernetesClientSet.CoreV1().Nodes().List(ctx, metav1.ListOptions{}) + if err != nil { + return false, stacktrace.Propagate(err, "an error occurred while checking if the Kubernetes cluster has any nodes") + } + return len(nodes.Items) != 0, nil +} + // TODO Delete this after 2022-08-01 if we're not using Jobs /* func (manager *KubernetesManager) CreateJobWithContainerAndVolume(ctx context.Context, From d64f6cb553e5b39ba4f157aff2a9fa50e71ed659 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 13 Oct 2023 14:57:50 +0100 Subject: [PATCH 2/3] start errors with capital letters --- .../engine_functions/create_engine.go | 4 ++-- .../kubernetes/kubernetes_manager/kubernetes_manager.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/engine_functions/create_engine.go b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/engine_functions/create_engine.go index aa682cce30..fc0e06bb7e 100644 --- a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/engine_functions/create_engine.go +++ b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_kurtosis_backend/engine_functions/create_engine.go @@ -44,10 +44,10 @@ func CreateEngine( ) { hasNodes, err := kubernetesManager.HasComputeNodes(ctx) if err != nil { - return nil, stacktrace.Propagate(err, "an error occurred while verifying whether the Kubernetes cluster has any compute nodes") + return nil, stacktrace.Propagate(err, "An error occurred while verifying whether the Kubernetes cluster has any compute nodes") } if !hasNodes { - return nil, stacktrace.NewError("can't start engine on the Kubernetes cluster as it has no compute nodes") + return nil, stacktrace.NewError("Can't start engine on the Kubernetes cluster as it has no compute nodes") } engineGuidStr, err := uuid_generator.GenerateUUIDString() diff --git a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go index 7b0fdace35..57b0b9ec57 100644 --- a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go +++ b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go @@ -1732,7 +1732,7 @@ func (manager *KubernetesManager) GetExecStream(ctx context.Context, pod *apiv1. func (manager *KubernetesManager) HasComputeNodes(ctx context.Context) (bool, error) { nodes, err := manager.kubernetesClientSet.CoreV1().Nodes().List(ctx, metav1.ListOptions{}) if err != nil { - return false, stacktrace.Propagate(err, "an error occurred while checking if the Kubernetes cluster has any nodes") + return false, stacktrace.Propagate(err, "An error occurred while checking if the Kubernetes cluster has any nodes") } return len(nodes.Items) != 0, nil } From 3f0518ca8d170f66427b01a2f25a4c261254c7d2 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 13 Oct 2023 15:16:27 +0100 Subject: [PATCH 3/3] pacify linter --- .../kubernetes_manager/kubernetes_manager.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go index 57b0b9ec57..231c0b6340 100644 --- a/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go +++ b/container-engine-lib/lib/backend_impls/kubernetes/kubernetes_manager/kubernetes_manager.go @@ -122,6 +122,22 @@ var ( }, ResourceVersion: "", } + globalListOptions = metav1.ListOptions{ + TypeMeta: metav1.TypeMeta{ + Kind: "", + APIVersion: "", + }, + LabelSelector: "", + FieldSelector: "", + Watch: false, + AllowWatchBookmarks: false, + ResourceVersion: "", + ResourceVersionMatch: "", + TimeoutSeconds: nil, + Limit: 0, + Continue: "", + SendInitialEvents: nil, + } ) type KubernetesManager struct { @@ -1730,7 +1746,7 @@ func (manager *KubernetesManager) GetExecStream(ctx context.Context, pod *apiv1. } func (manager *KubernetesManager) HasComputeNodes(ctx context.Context) (bool, error) { - nodes, err := manager.kubernetesClientSet.CoreV1().Nodes().List(ctx, metav1.ListOptions{}) + nodes, err := manager.kubernetesClientSet.CoreV1().Nodes().List(ctx, globalListOptions) if err != nil { return false, stacktrace.Propagate(err, "An error occurred while checking if the Kubernetes cluster has any nodes") }