Skip to content

Commit 8e0822f

Browse files
committed
Merge remote-tracking branch 'origin/stackhpc/2024.1' into feature/jd-grafana-home-dash
2 parents a64e899 + 1eef82c commit 8e0822f

File tree

361 files changed

+60315
-53079
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

361 files changed

+60315
-53079
lines changed

.automation.conf/config.sh

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@
33

44
# See: https://github.com/stackhpc/docker-rally/blob/master/bin/rally-verify-wrapper.sh for a full list of tempest parameters that can be overriden.
55
# You can override tempest parameters like so:
6-
export TEMPEST_CONCURRENCY=2
6+
7+
# The Tempest concurrency determines how many tests can be running at once.
8+
# Higher values run tests faster but risk running out of resources and failing tests
9+
# On production systems, Tempest concurrency can usually be set to a high number e.g. 16-64. It is often limited by the number of available floating IPs.
10+
# On virtualised test environments, compute and networking speeds often limit the concurrency to 1-16 before tests begin to fail due to timeouts.
11+
export TEMPEST_CONCURRENCY=16
12+
13+
714
# Specify single test whilst experimenting
815
#export TEMPEST_PATTERN="${TEMPEST_PATTERN:-tempest.api.compute.servers.test_create_server.ServersTestJSON.test_host_name_is_same_as_server_name}"
916

@@ -21,9 +28,7 @@ if [ ! -z ${KAYOBE_ENVIRONMENT:+x} ]; then
2128
fi
2229

2330
if [[ "$KAYOBE_ENVIRONMENT" =~ "ci-multinode" ]]; then
24-
# SMSLab is currently running with 1G switches. This causes tests using volumes and images to fail if
25-
# the concurrency is set too high.
26-
export TEMPEST_CONCURRENCY=1
31+
export TEMPEST_CONCURRENCY=4
2732
# Uncomment this to perform a full tempest test
2833
# export KAYOBE_AUTOMATION_TEMPEST_LOADLIST=tempest-full
2934
# export KAYOBE_AUTOMATION_TEMPEST_SKIPLIST=ci-multinode-tempest-full
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/bash
2+
3+
set -euE
4+
set -o pipefail
5+
6+
PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7+
KAYOBE_AUTOMATION_DIR="$(realpath "${PARENT}/../../.automation")"
8+
9+
function main {
10+
if [ "${PULP_DO_CONTAINER_SYNC:-}" = true ]; then
11+
${KAYOBE_AUTOMATION_DIR}/scripts/playbook-run.sh '$KAYOBE_CONFIG_PATH/ansible/pulp-container-sync.yml' -e stackhpc_pulp_images_kolla_filter="${PULP_KOLLA_FILTER:-}"
12+
fi
13+
if [ "${PULP_DO_CONTAINER_PUBLISH:-}" = true ]; then
14+
${KAYOBE_AUTOMATION_DIR}/scripts/playbook-run.sh '$KAYOBE_CONFIG_PATH/ansible/pulp-container-publish.yml' -e stackhpc_pulp_images_kolla_filter="${PULP_KOLLA_FILTER:-}"
15+
fi
16+
if [ "${PULP_DO_REPO_SYNC:-}" = true ]; then
17+
${KAYOBE_AUTOMATION_DIR}/scripts/playbook-run.sh '$KAYOBE_CONFIG_PATH/ansible/pulp-repo-sync.yml'
18+
fi
19+
if [ "${PULP_DO_REPO_PUBLISH:-}" = true ]; then
20+
${KAYOBE_AUTOMATION_DIR}/scripts/playbook-run.sh '$KAYOBE_CONFIG_PATH/ansible/pulp-repo-publish.yml'
21+
fi
22+
if [ "${PULP_DO_REPO_PROMOTE:-}" = true ]; then
23+
${KAYOBE_AUTOMATION_DIR}/scripts/playbook-run.sh '$KAYOBE_CONFIG_PATH/ansible/pulp-repo-promote-production.yml'
24+
fi
25+
}
26+
27+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
28+
main
29+
fi

.automation.conf/tempest/tempest-ci-multinode.overrides.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ v3_endpoint_type = publicURL
1010
[compute]
1111
min_compute_nodes = 2
1212
min_microversion = 2.1
13-
max_microversion = 2.95
13+
max_microversion = 2.96
1414

1515
[service-clients]
1616
http_timeout = 600
@@ -26,10 +26,10 @@ console_output = true
2626
storage_protocol = ceph
2727
build_timeout = 600
2828
min_microversion = 3.0
29-
max_microversion = 3.70
29+
max_microversion = 3.71
3030

3131
[image]
3232
build_timeout = 600
3333

3434
[dashboard]
35-
dashboard_url = http://192.168.39.2
35+
dashboard_url = https://192.168.39.2

.github/path-filters.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# This file is a list of path filters for the PR workflow in .github/workflows/stackhpc-pull-request.yml.
2-
aio:
2+
aio: &aio
33
- '.automation'
44
- '.automation.conf/config.sh'
55
- '.automation.conf/tempest/load-lists/default'
@@ -20,6 +20,11 @@ aio:
2020
- 'kayobe-env'
2121
- 'requirements.txt'
2222
- 'terraform/aio/**'
23-
check-tags:
23+
check-tags: &check-tags
2424
- '.github/workflows/stackhpc-check-tags.yml'
2525
- 'etc/kayobe/kolla-image-tags.yml'
26+
- 'etc/kayobe/pulp.yml'
27+
- 'tools/kolla-images.py'
28+
build-kayobe-image:
29+
- *aio
30+
- *check-tags

.github/workflows/multinode-inputs.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Generate inputs for the reusable multinode.yml workflow.
2+
# The test scenario is randomly selected.
3+
# The inputs are printed to stdout in GitHub step output key=value format.
4+
5+
from dataclasses import dataclass
6+
import random
7+
import typing as t
8+
9+
10+
@dataclass
11+
class OSRelease:
12+
distribution: str
13+
release: str
14+
ssh_username: str
15+
16+
17+
@dataclass
18+
class OpenStackRelease:
19+
version: str
20+
previous_version: str
21+
os_releases: t.List[OSRelease]
22+
23+
24+
@dataclass
25+
class Scenario:
26+
openstack_release: OpenStackRelease
27+
os_release: OSRelease
28+
neutron_plugin: str
29+
upgrade: bool
30+
31+
32+
ROCKY_9 = OSRelease("rocky", "9", "cloud-user")
33+
UBUNTU_JAMMY = OSRelease("ubuntu", "jammy", "ubuntu")
34+
# NOTE(upgrade): Add supported releases here.
35+
OPENSTACK_RELEASES = [
36+
OpenStackRelease("2024.1", "2023.1", [ROCKY_9, UBUNTU_JAMMY]),
37+
OpenStackRelease("2023.1", "zed", [ROCKY_9, UBUNTU_JAMMY]),
38+
]
39+
NEUTRON_PLUGINS = ["ovs", "ovn"]
40+
41+
42+
def main() -> None:
43+
scenario = random_scenario()
44+
inputs = generate_inputs(scenario)
45+
for name, value in inputs.items():
46+
write_output(name, value)
47+
48+
49+
def random_scenario() -> Scenario:
50+
openstack_release = random.choice(OPENSTACK_RELEASES)
51+
os_release = random.choice(openstack_release.os_releases)
52+
neutron_plugin = random.choice(NEUTRON_PLUGINS)
53+
upgrade = random.random() > 0.6
54+
return Scenario(openstack_release, os_release, neutron_plugin, upgrade)
55+
56+
57+
def generate_inputs(scenario: Scenario) -> t.Dict[str, str]:
58+
branch = get_branch(scenario.openstack_release.version)
59+
previous_branch = get_branch(scenario.openstack_release.previous_version)
60+
inputs = {
61+
"os_distribution": scenario.os_release.distribution,
62+
"os_release": scenario.os_release.release,
63+
"ssh_username": scenario.os_release.ssh_username,
64+
"neutron_plugin": scenario.neutron_plugin,
65+
"upgrade": str(scenario.upgrade).lower(),
66+
"stackhpc_kayobe_config_version": branch,
67+
"stackhpc_kayobe_config_previous_version": previous_branch,
68+
}
69+
return inputs
70+
71+
72+
def get_branch(version: str) -> str:
73+
return f"stackhpc/{version}"
74+
75+
76+
def write_output(name: str, value: str) -> None:
77+
print(f"{name}={value}")
78+
79+
80+
if __name__ == "__main__":
81+
main()

0 commit comments

Comments
 (0)