Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions manifests/host-pod.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ apiVersion: v1
kind: Pod
metadata:
namespace: {{ name_space }}
name: {{ pod_name }}
name: "{{ pod_name }}"
labels:
tft-tests: "{{ index }}"
tft-port: "{{ port }}"
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
nodeSelector:
kubernetes.io/hostname: {{ node_name }}
kubernetes.io/hostname: "{{ node_name }}"
containers:
- name: {{ pod_name }}
- name: "{{ pod_name }}"
image: {{ test_image }}
command: {{ command }}
args: {{ args }}
Expand Down
6 changes: 3 additions & 3 deletions manifests/pod-secondary-network.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ apiVersion: v1
kind: Pod
metadata:
namespace: {{ name_space }}
name: {{ pod_name }}
name: "{{ pod_name }}"
labels:
tft-tests: "{{ index }}"
tft-port: "{{ port }}"
annotations:
k8s.v1.cni.cncf.io/networks: {{ secondary_network_nad }}
spec:
nodeSelector:
kubernetes.io/hostname: {{ node_name }}
kubernetes.io/hostname: "{{ node_name }}"
containers:
- name: {{ pod_name }}
- name: "{{ pod_name }}"
image: {{ test_image }}
command: {{ command }}
args: {{ args }}
Expand Down
6 changes: 3 additions & 3 deletions manifests/pod.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ apiVersion: v1
kind: Pod
metadata:
namespace: {{ name_space }}
name: {{ pod_name }}
name: "{{ pod_name }}"
labels:
tft-tests: "{{ index }}"
tft-port: "{{ port }}"
spec:
nodeSelector:
kubernetes.io/hostname: {{ node_name }}
kubernetes.io/hostname: "{{ node_name }}"
containers:
- name: {{ pod_name }}
- name: "{{ pod_name }}"
image: {{ test_image }}
command: {{ command }}
args: {{ args }}
Expand Down
6 changes: 3 additions & 3 deletions manifests/sriov-pod.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v1
kind: Pod
metadata:
namespace: {{ name_space }}
name: {{ pod_name }}
name: "{{ pod_name }}"
annotations: {% if not use_secondary_network %}
v1.multus-cni.io/default-network: {{ default_network }} {% else %}
k8s.v1.cni.cncf.io/networks: {{ secondary_network_nad }} {% endif %}
Expand All @@ -11,9 +11,9 @@ metadata:
tft-port: "{{ port }}"
spec:
nodeSelector:
kubernetes.io/hostname: {{ node_name }}
kubernetes.io/hostname: "{{ node_name }}"
containers:
- name: {{ pod_name }}
- name: "{{ pod_name }}"
image: {{ test_image }}
command: {{ command }}
args: {{ args }}
Expand Down
6 changes: 3 additions & 3 deletions manifests/tools-pod.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ apiVersion: v1
kind: Pod
metadata:
namespace: {{ name_space }}
name: {{ pod_name }}
name: "{{ pod_name }}"
labels:
tft-tests: "{{ index }}"
spec:
nodeSelector:
kubernetes.io/hostname: {{ node_name }}
kubernetes.io/hostname: "{{ node_name }}"
hostNetwork: true
containers:
- name: {{ pod_name }}
- name: "{{ pod_name }}"
image: {{ test_image }}
command: {{ command }}
args: {{ args }}
Expand Down
5 changes: 2 additions & 3 deletions pluginMeasureCpu.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,12 @@ def __init__(self, ts: TestSettings, task_role: TaskRole, tenant: bool):
tenant=tenant,
)

self.pod_name = f"tools-pod-{self.node_name_sanitized()}-measure-cpu"
self.pod_name = f"tools-pod-{self.node_name_sanitized}-measure-cpu"
self.in_file_template = tftbase.get_manifest("tools-pod.yaml.j2")
self.out_file_yaml = tftbase.get_manifest_renderpath(self.pod_name + ".yaml")

def initialize(self) -> None:
super().initialize()
self.render_file("Server Pod Yaml")
self.render_pod_file("Plugin Pod Yaml")

def _create_task_operation(self) -> TaskOperation:
def _thread_action() -> BaseOutput:
Expand Down
5 changes: 2 additions & 3 deletions pluginMeasurePower.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,12 @@ def __init__(self, ts: TestSettings, task_role: TaskRole, tenant: bool):
tenant=tenant,
)

self.pod_name = f"tools-pod-{self.node_name_sanitized()}-measure-cpu"
self.pod_name = f"tools-pod-{self.node_name_sanitized}-measure-cpu"
self.in_file_template = tftbase.get_manifest("tools-pod.yaml.j2")
self.out_file_yaml = tftbase.get_manifest_renderpath(self.pod_name + ".yaml")

def initialize(self) -> None:
super().initialize()
self.render_file("Server Pod Yaml")
self.render_pod_file("Plugin Pod Yaml")

def _create_task_operation(self) -> TaskOperation:
def _thread_action() -> BaseOutput:
Expand Down
5 changes: 2 additions & 3 deletions pluginValidateOffload.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,16 +156,15 @@ def __init__(
tenant=tenant,
)

self.pod_name = f"tools-pod-{self.node_name_sanitized()}-validate-offload"
self.pod_name = f"tools-pod-{self.node_name_sanitized}-validate-offload"
self.in_file_template = tftbase.get_manifest("tools-pod.yaml.j2")
self.out_file_yaml = tftbase.get_manifest_renderpath(self.pod_name + ".yaml")
self._perf_instance = perf_instance
self.perf_pod_name = perf_instance.pod_name
self.perf_pod_type = perf_instance.pod_type

def initialize(self) -> None:
super().initialize()
self.render_file("Server Pod Yaml")
self.render_pod_file("Plugin Pod Yaml")

def _create_task_operation(self) -> TaskOperation:
def _thread_action() -> BaseOutput:
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ PyYAML
jc
jinja2
paramiko
git+https://github.com/thom311/ktoolbox@d30bacd0e4e71c470f276cc9192d7ae117a45a02
git+https://github.com/thom311/ktoolbox@7708daaf4f8c1fc49b560a17c4f5f66690b34c35
83 changes: 34 additions & 49 deletions task.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,6 @@ def __init__(
) -> None:
self.task_role = task_role
self.in_file_template = ""
self.out_file_yaml = ""
self.pod_name = ""
self._setup_operation: Optional[TaskOperation] = None
self._task_operation: Optional[TaskOperation] = None
Expand Down Expand Up @@ -291,15 +290,22 @@ def node(self) -> testConfig.ConfNodeBase:
def node_name(self) -> str:
return self.node.name

@property
def node_name_sanitized(self) -> str:
return self.node_name.replace(".", "-")
return tftbase.str_sanitize(self.node_name)

def get_namespace(self) -> str:
return self.ts.cfg_descr.get_tft().namespace

def get_duration(self) -> int:
return self.ts.cfg_descr.get_tft().duration

@property
def out_file_yaml(self) -> str:
if not self.in_file_template or not self.pod_name:
raise RuntimeError("task cannot generate a pod yaml")
return tftbase.get_manifest_renderpath(self.pod_name + ".yaml")

@functools.cache
@staticmethod
def _fetch_default_resource_name(
Expand Down Expand Up @@ -377,17 +383,20 @@ def _get_template_args_port(self) -> str:
def _get_template_args_args(self) -> list[str]:
return []

def render_pod_file(self, log_info: str) -> None:
self.render_file(
log_info,
self.in_file_template,
self.out_file_yaml,
)

def render_file(
self,
log_info: str,
in_file_template: Optional[str] = None,
out_file_yaml: Optional[str] = None,
in_file_template: str,
out_file_yaml: str,
template_args: Optional[dict[str, str | list[str]]] = None,
) -> None:
if in_file_template is None:
in_file_template = self.in_file_template
if out_file_yaml is None:
out_file_yaml = self.out_file_yaml
if template_args is None:
template_args = self.get_template_args()
logger.info(
Expand Down Expand Up @@ -756,51 +765,40 @@ def __init__(self, ts: TestSettings):

connection_mode = ts.connection_mode
pod_type = ts.server_pod_type
node_name_sanitized = self.node_name_sanitized()
node_name_sanitized = self.node_name_sanitized
port = 5201 + self.index

if connection_mode == ConnectionMode.EXTERNAL_IP:
in_file_template = ""
out_file_yaml = ""
pod_name = EXTERNAL_PERF_SERVER
elif connection_mode in (
ConnectionMode.MULTI_HOME,
ConnectionMode.MULTI_NETWORK,
):
in_file_template = tftbase.get_manifest("pod-secondary-network.yaml.j2")
out_file_yaml = tftbase.get_manifest_renderpath(
f"pod-secondary-network-{node_name_sanitized}-server.yaml"
)
in_file_template = "pod-secondary-network.yaml.j2"
pod_name = (
f"normal-pod-secondary-network-{node_name_sanitized}-server-{port}"
)
elif pod_type == PodType.SRIOV:
in_file_template = tftbase.get_manifest("sriov-pod.yaml.j2")
out_file_yaml = tftbase.get_manifest_renderpath(
f"sriov-pod-{node_name_sanitized}-server.yaml"
)
in_file_template = "sriov-pod.yaml.j2"
pod_name = f"sriov-pod-{node_name_sanitized}-server-{port}"
elif pod_type == PodType.NORMAL:
in_file_template = tftbase.get_manifest("pod.yaml.j2")
out_file_yaml = tftbase.get_manifest_renderpath(
f"pod-{node_name_sanitized}-server.yaml"
)
in_file_template = "pod.yaml.j2"
pod_name = f"normal-pod-{node_name_sanitized}-server-{port}"
elif pod_type == PodType.HOSTBACKED:
in_file_template = tftbase.get_manifest("host-pod.yaml.j2")
out_file_yaml = tftbase.get_manifest_renderpath(
f"host-pod-{node_name_sanitized}-server.yaml"
)
in_file_template = "host-pod.yaml.j2"
pod_name = f"host-pod-{node_name_sanitized}-server-{port}"
else:
raise ValueError("Invalid pod_type {pod_type}")

if in_file_template != "":
in_file_template = tftbase.get_manifest(in_file_template)

self.exec_persistent = ts.node_server.is_persistent_server
self.port = port
self.pod_type = pod_type
self.connection_mode = ts.connection_mode
self.in_file_template = in_file_template
self.out_file_yaml = out_file_yaml
self.pod_name = pod_name

def _get_template_args_port(self) -> str:
Expand All @@ -809,10 +807,8 @@ def _get_template_args_port(self) -> str:
def initialize(self) -> None:
super().initialize()

assert (self.in_file_template == "") == (self.out_file_yaml == "")

if self.in_file_template != "":
self.render_file("Server Pod Yaml")
self.render_pod_file("Server Pod Yaml")

self.cluster_ip_addr = self.create_cluster_ip_service()
self.nodeport_ip_addr = self.create_node_port_service(self.port + 25000)
Expand Down Expand Up @@ -925,39 +921,29 @@ def __init__(self, ts: TestSettings, server: ServerTask):
)

pod_type = ts.client_pod_type
node_name_sanitized = self.node_name_sanitized()
node_name_sanitized = self.node_name_sanitized
port = server.port
connection_mode = ts.connection_mode

if connection_mode in (ConnectionMode.MULTI_HOME, ConnectionMode.MULTI_NETWORK):
in_file_template = tftbase.get_manifest("pod-secondary-network.yaml.j2")
out_file_yaml = tftbase.get_manifest_renderpath(
f"pod-secondary-network-{node_name_sanitized}-client.yaml"
)
in_file_template = "pod-secondary-network.yaml.j2"
pod_name = (
f"normal-pod-secondary-network-{node_name_sanitized}-client-{port}"
)
elif pod_type == PodType.SRIOV:
in_file_template = tftbase.get_manifest("sriov-pod.yaml.j2")
out_file_yaml = tftbase.get_manifest_renderpath(
f"sriov-pod-{node_name_sanitized}-client.yaml"
)
in_file_template = "sriov-pod.yaml.j2"
pod_name = f"sriov-pod-{node_name_sanitized}-client-{port}"
elif pod_type == PodType.NORMAL:
in_file_template = tftbase.get_manifest("pod.yaml.j2")
out_file_yaml = tftbase.get_manifest_renderpath(
f"pod-{node_name_sanitized}-client.yaml"
)
in_file_template = "pod.yaml.j2"
pod_name = f"normal-pod-{node_name_sanitized}-client-{port}"
elif pod_type == PodType.HOSTBACKED:
in_file_template = tftbase.get_manifest("host-pod.yaml.j2")
Comment thread
thom311 marked this conversation as resolved.
out_file_yaml = tftbase.get_manifest_renderpath(
f"host-pod-{node_name_sanitized}-client.yaml"
)
in_file_template = "host-pod.yaml.j2"
pod_name = f"host-pod-{node_name_sanitized}-client-{port}"
else:
raise ValueError("Invalid pod_type {pod_type}")

in_file_template = tftbase.get_manifest(in_file_template)

self.server = server
self.port = port
self.pod_type = pod_type
Expand All @@ -966,12 +952,11 @@ def __init__(self, ts: TestSettings, server: ServerTask):
self.test_case_id = ts.test_case_id
self.reverse = ts.reverse
self.in_file_template = in_file_template
self.out_file_yaml = out_file_yaml
self.pod_name = pod_name

def initialize(self) -> None:
super().initialize()
self.render_file("Client Pod Yaml")
self.render_pod_file("Client Pod Yaml")

def get_target_ip(self) -> str:
if self.connection_mode == ConnectionMode.CLUSTER_IP:
Expand Down
5 changes: 4 additions & 1 deletion testConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,10 @@ def _parse(
) -> T2:
with pctx.with_strdict() as varg:

name = common.structparse_pop_str_name(varg.for_name())
name = common.structparse_pop_str_name(
varg.for_name(),
check=common.validate_dns_name,
)

sriov = common.structparse_pop_bool(
varg.for_key("sriov"),
Expand Down
Loading