def create_test_runner_pod( test: str, config_file: str, tag: str, perform_cleanup: str, test_runner_image_name: str, ) -> None: """ create_test_runner_pod creates the pod which will run all of the tests. """ dev_config = load_config(config_file) corev1 = client.CoreV1Api() pod_body = _get_testrunner_pod_body( test, config_file, tag, perform_cleanup, test_runner_image_name ) if not k8s_conditions.wait( lambda: corev1.list_namespaced_pod( dev_config.namespace, field_selector=f"metadata.name=={TEST_RUNNER_NAME}", ), lambda pod_list: len(pod_list.items) == 0, timeout=30, sleep_time=0.5, ): raise Exception( "Execution timed out while waiting for the existing pod to be deleted" ) if not k8s_conditions.call_eventually_succeeds( lambda: corev1.create_namespaced_pod(dev_config.namespace, body=pod_body), sleep_time=10, timeout=60, exceptions_to_ignore=ApiException, ): raise Exception("Could not create test_runner pod!")
def create_test_pod(args: argparse.Namespace, dev_config: DevConfig) -> None: corev1 = client.CoreV1Api() test_pod = { "kind": "Pod", "metadata": { "name": TEST_POD_NAME, "namespace": dev_config.namespace, }, "spec": { "restartPolicy": "Never", "serviceAccountName": "e2e-test", "containers": [{ "name": TEST_POD_NAME, "image": f"{dev_config.repo_url}/{dev_config.e2e_image}:{args.tag}", "imagePullPolicy": "Always", "volumeMounts": [{ "mountPath": "/etc/config", "name": "kube-config-volume" }], "env": [ { "name": "CLUSTER_WIDE", "value": f"{args.cluster_wide}", }, { "name": "OPERATOR_IMAGE", "value": f"{dev_config.repo_url}/{dev_config.operator_image}:{args.tag}", }, { "name": "AGENT_IMAGE", "value": f"{dev_config.repo_url}/{dev_config.agent_image}:{args.tag}", }, { "name": "TEST_NAMESPACE", "value": dev_config.namespace, }, { "name": "VERSION_UPGRADE_HOOK_IMAGE", "value": f"{dev_config.repo_url}/{dev_config.version_upgrade_hook_image}:{args.tag}", }, { "name": "READINESS_PROBE_IMAGE", "value": f"{dev_config.repo_url}/{dev_config.readiness_probe_image}:{args.tag}", }, { "name": "PERFORM_CLEANUP", "value": f"{args.perform_cleanup}", }, ], "command": [ "go", "test", "-v", "-timeout=30m", "-failfast", f"./test/e2e/{args.test}", ], }], "volumes": [{ "name": "kube-config-volume", "configMap": { "name": "kube-config", }, }], }, } if not k8s_conditions.wait( lambda: corev1.list_namespaced_pod( dev_config.namespace, field_selector=f"metadata.name=={TEST_POD_NAME}", ), lambda pod_list: len(pod_list.items) == 0, timeout=30, sleep_time=0.5, ): raise Exception( "Execution timed out while waiting for the existing pod to be deleted" ) if not k8s_conditions.call_eventually_succeeds( lambda: corev1.create_namespaced_pod(dev_config.namespace, body=test_pod), sleep_time=10, timeout=60, exceptions_to_ignore=ApiException, ): raise Exception("Could not create test_runner pod!")
def create_test_pod(args: argparse.Namespace, dev_config: DevConfig) -> None: corev1 = client.CoreV1Api() test_pod = { "kind": "Pod", "metadata": { "name": TEST_POD_NAME, "namespace": dev_config.namespace, }, "spec": { "restartPolicy": "Never", "serviceAccountName": "mongodb-kubernetes-operator", "containers": [{ "name": TEST_POD_NAME, "image": f"{dev_config.repo_url}/{dev_config.e2e_image}:{args.tag}", "imagePullPolicy": "Always", "volumeMounts": [{ "mountPath": "/etc/config", "name": "kube-config-volume" }], "env": [ { "name": "CLUSTER_WIDE", "value": f"{args.cluster_wide}", }, { "name": "OPERATOR_IMAGE", "value": f"{dev_config.repo_url}/{dev_config.operator_image}:{args.tag}", }, { "name": "TEST_NAMESPACE", "value": dev_config.namespace, }, { "name": "VERSION_UPGRADE_HOOK_IMAGE", # TODO: this needs to come from somewhere else "value": "quay.io/mongodb/mongodb-kubernetes-operator-version-upgrade-post-start-hook:1.0.2", }, { "name": "PERFORM_CLEANUP", "value": f"{args.perform_cleanup}", }, ], "command": [ "/bin/operator-sdk", "test", "local", f"./test/e2e/{args.test}", "--operator-namespace", dev_config.namespace, "--verbose", "--kubeconfig", "/etc/config/kubeconfig", "--go-test-flags", "-timeout=60m", ], }], "volumes": [{ "name": "kube-config-volume", "configMap": { "name": "kube-config", }, }], }, } if not k8s_conditions.wait( lambda: corev1.list_namespaced_pod( dev_config.namespace, field_selector=f"metadata.name=={TEST_POD_NAME}", ), lambda pod_list: len(pod_list.items) == 0, timeout=30, sleep_time=0.5, ): raise Exception( "Execution timed out while waiting for the existing pod to be deleted" ) if not k8s_conditions.call_eventually_succeeds( lambda: corev1.create_namespaced_pod(dev_config.namespace, body=test_pod), sleep_time=10, timeout=60, exceptions_to_ignore=ApiException, ): raise Exception("Could not create test_runner pod!")