Module materialize.cloudtest.app.application
Expand source code Browse git
# Copyright Materialize, Inc. and contributors. All rights reserved.
#
# Use of this software is governed by the Business Source License
# included in the LICENSE file at the root of this repository.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0.
import os
import subprocess
from materialize import ui
from materialize.cloudtest import DEFAULT_K8S_CLUSTER_NAME, DEFAULT_K8S_CONTEXT_NAME
from materialize.cloudtest.k8s.api.k8s_resource import K8sResource
from materialize.cloudtest.util.common import log_subprocess_error
class Application:
resources: list[K8sResource]
images: list[str]
release_mode: bool
aws_region: str | None
def __init__(self) -> None:
pass
def create_resources(self) -> None:
self.acquire_images()
for resource in self.resources:
resource.create()
def coverage_mode(self) -> bool:
return ui.env_is_truthy("CI_COVERAGE_ENABLED")
def sanitizer_mode(self) -> str:
return os.getenv("CI_SANITIZER", "none")
def acquire_images(self) -> None:
raise NotImplementedError
def kubectl(self, *args: str, namespace: str | None = None) -> str:
try:
cmd = ["kubectl", "--context", self.context(), *args]
if namespace is not None:
cmd.extend(["--namespace", namespace])
return subprocess.check_output(cmd, text=True)
except subprocess.CalledProcessError as e:
log_subprocess_error(e)
raise e
def context(self) -> str:
return DEFAULT_K8S_CONTEXT_NAME
def cluster_name(self) -> str:
return DEFAULT_K8S_CLUSTER_NAME
Classes
class Application
-
Expand source code Browse git
class Application: resources: list[K8sResource] images: list[str] release_mode: bool aws_region: str | None def __init__(self) -> None: pass def create_resources(self) -> None: self.acquire_images() for resource in self.resources: resource.create() def coverage_mode(self) -> bool: return ui.env_is_truthy("CI_COVERAGE_ENABLED") def sanitizer_mode(self) -> str: return os.getenv("CI_SANITIZER", "none") def acquire_images(self) -> None: raise NotImplementedError def kubectl(self, *args: str, namespace: str | None = None) -> str: try: cmd = ["kubectl", "--context", self.context(), *args] if namespace is not None: cmd.extend(["--namespace", namespace]) return subprocess.check_output(cmd, text=True) except subprocess.CalledProcessError as e: log_subprocess_error(e) raise e def context(self) -> str: return DEFAULT_K8S_CONTEXT_NAME def cluster_name(self) -> str: return DEFAULT_K8S_CLUSTER_NAME
Subclasses
Class variables
var aws_region : str | None
var images : list[str]
var release_mode : bool
var resources : list[K8sResource]
Methods
def acquire_images(self) ‑> None
-
Expand source code Browse git
def acquire_images(self) -> None: raise NotImplementedError
def cluster_name(self) ‑> str
-
Expand source code Browse git
def cluster_name(self) -> str: return DEFAULT_K8S_CLUSTER_NAME
def context(self) ‑> str
-
Expand source code Browse git
def context(self) -> str: return DEFAULT_K8S_CONTEXT_NAME
def coverage_mode(self) ‑> bool
-
Expand source code Browse git
def coverage_mode(self) -> bool: return ui.env_is_truthy("CI_COVERAGE_ENABLED")
def create_resources(self) ‑> None
-
Expand source code Browse git
def create_resources(self) -> None: self.acquire_images() for resource in self.resources: resource.create()
def kubectl(self, *args: str, namespace: str | None = None) ‑> str
-
Expand source code Browse git
def kubectl(self, *args: str, namespace: str | None = None) -> str: try: cmd = ["kubectl", "--context", self.context(), *args] if namespace is not None: cmd.extend(["--namespace", namespace]) return subprocess.check_output(cmd, text=True) except subprocess.CalledProcessError as e: log_subprocess_error(e) raise e
def sanitizer_mode(self) ‑> str
-
Expand source code Browse git
def sanitizer_mode(self) -> str: return os.getenv("CI_SANITIZER", "none")