Skip to content

Commit 8716ee6

Browse files
committed
Add test role for converting external Swift storage nodes
Adds a swift_conversion test role that exercises the procedure from proc_converting-object-storage-nodes.adoc, covering the repo-setup and tripleo-cleanup service creation, nodeset and deployment creation, and post-conversion verification. Signed-off-by: Christian Schwede <cschwede@redhat.com>
1 parent 0bdade4 commit 8716ee6

5 files changed

Lines changed: 191 additions & 0 deletions

File tree

Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ test-swift-migration:
6464
mkdir -p tests/logs
6565
ANSIBLE_CONFIG=$(TEST_CONFIG) ansible-playbook -v -i $(TEST_INVENTORY) -e @$(TEST_SECRETS) -e @$(TEST_VARS) $(TEST_ARGS) tests/playbooks/test_swift_migration.yaml 2>&1 | tee $(TEST_OUTFILE)
6666

67+
test-swift-conversion: TEST_OUTFILE ?= tests/logs/test_swift_conversion_out_$(shell date +%FT%T%Z).log
68+
test-swift-conversion:
69+
mkdir -p tests/logs
70+
ANSIBLE_CONFIG=$(TEST_CONFIG) ansible-playbook -v -i $(TEST_INVENTORY) -e @$(TEST_SECRETS) -e @$(TEST_VARS) $(TEST_ARGS) tests/playbooks/test_swift_conversion.yaml 2>&1 | tee $(TEST_OUTFILE)
71+
6772
test-ocp-as-gw: TEST_OUTFILE ?= tests/logs/test_ocp_as_gw_out_$(shell date +%FT%T%Z).log
6873
test-ocp-as-gw: ## Launch test suite related to the ocp gateways
6974
mkdir -p tests/logs
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
- name: Swift conversion
2+
hosts: local
3+
gather_facts: false
4+
force_handlers: true
5+
module_defaults:
6+
ansible.builtin.shell:
7+
executable: /bin/bash
8+
roles:
9+
- role: swift_conversion
10+
tags:
11+
- swift_conversion
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
swift_conversion_delay: 10
3+
swift_conversion_retries: 180
4+
5+
swift_node_ssh_user: cloud-admin
6+
swift_node_ip: 192.168.122.100
7+
8+
swift_conversion_nodeset_name: openstack-edpm-ipam
9+
swift_conversion_deployment_name: openstack-edpm-ipam
10+
11+
swift_conversion_nodeset: |
12+
apiVersion: dataplane.openstack.org/v1beta1
13+
kind: OpenStackDataPlaneNodeSet
14+
metadata:
15+
name: {{ swift_conversion_nodeset_name }}
16+
namespace: openstack
17+
spec:
18+
networkAttachments:
19+
- ctlplane
20+
- storage
21+
nodeTemplate:
22+
ansible:
23+
ansibleUser: {{ swift_node_ssh_user }}
24+
ansibleVars:
25+
edpm_nodes_validation_validate_controllers_icmp: false
26+
edpm_nodes_validation_validate_gateway_icmp: false
27+
edpm_service_removal_skip_list:
28+
- tripleo-container-shutdown.service
29+
edpm_sshd_allowed_ranges:
30+
- 192.168.122.0/24
31+
edpm_swift_disks: []
32+
enable_debug: false
33+
gather_facts: false
34+
timesync_ntp_servers:
35+
- hostname: pool.ntp.org
36+
ansibleSSHPrivateKeySecret: dataplane-adoption-secret
37+
managementNetwork: ctlplane
38+
nodes:
39+
edpm-swift-0:
40+
ansible:
41+
ansibleHost: {{ swift_node_ip }}
42+
ansibleVars:
43+
edpm_swift_disks: []
44+
hostName: edpm-swift-0
45+
networks:
46+
- defaultRoute: true
47+
fixedIP: {{ swift_node_ip }}
48+
name: ctlplane
49+
subnetName: subnet1
50+
- name: internalapi
51+
subnetName: subnet2
52+
- name: storage
53+
subnetName: subnet3
54+
- name: tenant
55+
subnetName: subnet4
56+
preProvisioned: true
57+
services:
58+
- repo-setup
59+
- bootstrap
60+
- download-cache
61+
- install-os
62+
- configure-os
63+
- ssh-known-hosts
64+
- run-os
65+
- reboot-os
66+
- install-certs
67+
- tripleo-cleanup
68+
- swift
69+
tlsEnabled: true
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
dependencies:
2+
- role: common_defaults
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
- name: Create repo-setup OpenStackDataPlaneService
2+
no_log: "{{ use_no_log }}"
3+
ansible.builtin.shell: |
4+
{{ shell_header }}
5+
{{ oc_header }}
6+
oc apply -f - <<EOF
7+
apiVersion: dataplane.openstack.org/v1beta1
8+
kind: OpenStackDataPlaneService
9+
metadata:
10+
name: repo-setup
11+
namespace: openstack
12+
spec:
13+
addCertMounts: false
14+
caCerts: combined-ca-bundle
15+
edpmServiceType: repo-setup
16+
playbookContents: |
17+
- hosts: all
18+
strategy: linear
19+
tasks:
20+
- name: Enable podified-repos
21+
become: true
22+
ansible.builtin.shell: |
23+
dnf install -y /tmp/rhos-release.rpm
24+
rhos-release -x
25+
rhos-release 18.0
26+
EOF
27+
28+
- name: Create tripleo-cleanup OpenStackDataPlaneService
29+
no_log: "{{ use_no_log }}"
30+
ansible.builtin.shell: |
31+
{{ shell_header }}
32+
{{ oc_header }}
33+
oc apply -f - <<EOF
34+
apiVersion: dataplane.openstack.org/v1beta1
35+
kind: OpenStackDataPlaneService
36+
metadata:
37+
name: tripleo-cleanup
38+
namespace: openstack
39+
spec:
40+
playbook: osp.edpm.tripleo_cleanup
41+
EOF
42+
43+
- name: Create OpenStackDataPlaneNodeSet for Swift node conversion
44+
no_log: "{{ use_no_log }}"
45+
ansible.builtin.shell: |
46+
{{ shell_header }}
47+
{{ oc_header }}
48+
oc apply -f - <<EOF
49+
{{ swift_conversion_nodeset }}
50+
EOF
51+
52+
- name: Create OpenStackDataPlaneDeployment to trigger conversion
53+
no_log: "{{ use_no_log }}"
54+
ansible.builtin.shell: |
55+
{{ shell_header }}
56+
{{ oc_header }}
57+
oc apply -f - <<EOF
58+
apiVersion: dataplane.openstack.org/v1beta1
59+
kind: OpenStackDataPlaneDeployment
60+
metadata:
61+
name: {{ swift_conversion_deployment_name }}
62+
namespace: openstack
63+
spec:
64+
nodeSets:
65+
- {{ swift_conversion_nodeset_name }}
66+
EOF
67+
68+
- name: Wait for the Swift node conversion deployment to finish
69+
ansible.builtin.shell: |
70+
{{ shell_header }}
71+
{{ oc_header }}
72+
oc wait --for condition=Ready openstackdataplanedeployment/{{ swift_conversion_deployment_name }} --timeout=30m
73+
74+
- name: Verify OpenStackDataPlaneNodeSet is ready
75+
ansible.builtin.shell: |
76+
{{ shell_header }}
77+
{{ oc_header }}
78+
oc get openstackdataplanenodeset {{ swift_conversion_nodeset_name }} -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' | grep True
79+
register: swift_conversion_nodeset_ready
80+
until: swift_conversion_nodeset_ready is success
81+
retries: 10
82+
delay: "{{ swift_conversion_delay }}"
83+
84+
- name: Verify Swift services are running on converted node
85+
ansible.builtin.shell: |
86+
{{ shell_header }}
87+
ssh -o StrictHostKeyChecking=accept-new -i {{ edpm_privatekey_path }} {{ swift_node_ssh_user }}@{{ swift_node_ip }} "sudo systemctl status edpm_swift_*"
88+
register: swift_services_result
89+
until: swift_services_result is success
90+
retries: 10
91+
delay: "{{ swift_conversion_delay }}"
92+
93+
- name: Verify Swift is still functional after conversion
94+
ansible.builtin.shell: |
95+
{{ shell_header }}
96+
{{ oc_header }}
97+
alias openstack="oc exec -t openstackclient -- openstack"
98+
99+
${BASH_ALIASES[openstack]} endpoint list | grep -i object-store
100+
${BASH_ALIASES[openstack]} container list
101+
register: swift_functional_result
102+
until: swift_functional_result is success
103+
retries: 15
104+
delay: "{{ swift_conversion_delay }}"

0 commit comments

Comments
 (0)