diff --git a/defaults/main.yml b/defaults/main.yml index f9966320..fdceea55 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -147,6 +147,9 @@ l3_agent_connectivity_check_start_template: l3_agent_start_ping.sh.j2 l3_agent_connectivity_check_stop_template: l3_agent_stop_ping.sh.j2 l3_agent_failover_check: false +# enable web load test +fip_http_check: false + # migrate instances between compute nodes during upgrade compute_evacuate: false diff --git a/tasks/fast-forward-upgrade/create-prepare-scripts.yaml b/tasks/fast-forward-upgrade/create-prepare-scripts.yaml index cbeb2cf6..ac641d5e 100644 --- a/tasks/fast-forward-upgrade/create-prepare-scripts.yaml +++ b/tasks/fast-forward-upgrade/create-prepare-scripts.yaml @@ -80,3 +80,6 @@ - name: create nova actions check script include: ../common/create_nova_actions_check_script.yml + +- name: import create HTTP test scripts + import_tasks: ../common/create_http_test_scripts.yml diff --git a/tasks/update/create-overcloud-update-scripts.yaml b/tasks/update/create-overcloud-update-scripts.yaml index 30ef9ea9..9a4c9e50 100644 --- a/tasks/update/create-overcloud-update-scripts.yaml +++ b/tasks/update/create-overcloud-update-scripts.yaml @@ -73,3 +73,6 @@ - name: create nova actions check script include: ../common/create_nova_actions_check_script.yml + +- name: import create HTTP test scripts + import_tasks: ../common/create_http_test_scripts.yml diff --git a/tasks/upgrade/create-overcloud-upgrade-scripts.yaml b/tasks/upgrade/create-overcloud-upgrade-scripts.yaml index 51065a37..97018dad 100644 --- a/tasks/upgrade/create-overcloud-upgrade-scripts.yaml +++ b/tasks/upgrade/create-overcloud-upgrade-scripts.yaml @@ -95,3 +95,6 @@ - name: create nova actions check script include: ../common/create_nova_actions_check_script.yml + +- name: import create HTTP test scripts + import_tasks: ../common/create_http_test_scripts.yml diff --git a/templates/fip_http_check_start.sh.j2 b/templates/fip_http_check_start.sh.j2 new file mode 100644 index 00000000..4d3a2bc1 --- /dev/null +++ b/templates/fip_http_check_start.sh.j2 @@ -0,0 +1,10 @@ +#!/bin/env bash + +FIP=$(openstack floating ip list -f json | jq -r -c '.[] | select(.Port) | .["Floating IP Address"]' | head -1) + +while true; do + curl --location --silent --show-error --max-time 5 \ + --write-out "HTTP Code: %{http_code}\nTotal Time: %{time_total} sec\nEffective URL: %{url_effective}\n\n" \ + http://$FIP/ 2>/dev/null >> {{ working_dir }}/http_response.log + sleep 1 +done diff --git a/templates/fip_http_check_stop.sh.j2 b/templates/fip_http_check_stop.sh.j2 new file mode 100644 index 00000000..d944f8d5 --- /dev/null +++ b/templates/fip_http_check_stop.sh.j2 @@ -0,0 +1,9 @@ +#!/bin/env bash + +RESULT_CODE=$(grep 'HTTP Code' {{ working_dir }}/http_response.log | sort | uniq) + +#TODO: assert other conditions/thresholds for pass/fail criteria +if [[ "$RESULT_CODE" != "HTTP Code: 200" ]]; then + echo 'There are non-200 HTTP calls' + exit 1 +fi diff --git a/templates/overcloud_upgrade_converge.sh.j2 b/templates/overcloud_upgrade_converge.sh.j2 index f4f7daf8..0cceeae4 100644 --- a/templates/overcloud_upgrade_converge.sh.j2 +++ b/templates/overcloud_upgrade_converge.sh.j2 @@ -17,6 +17,13 @@ if [[ -e {{ working_dir }}/l3_agent_failover_pre.sh ]]; then fi {% endif %} +{% if fip_http_check|bool %} +source {{ overcloud_rc }} +kill -9 $( lsof -t {{ working_dir }}/fip_http_check_start.sh ) +bash {{ working_dir }}/fip_http_check_start.sh & +{% endif %} + + source {{ undercloud_rc }} echo "[$(date)] Running {% if ffu_overcloud_upgrade %} ffwd-upgrade {% else %} major {% endif %}upgrade converge step" openstack overcloud {% if ffu_overcloud_upgrade %} ffwd-upgrade {% else %} upgrade {% endif %}converge \ @@ -79,3 +86,9 @@ if [[ -e {{ working_dir }}/l3_agent_failover_post.sh ]]; then bash {{ working_dir }}/l3_agent_failover_post.sh fi {% endif %} + +{% if fip_http_check|bool %} +source {{ overcloud_rc }} +kill -9 $( lsof -t {{ working_dir }}/fip_http_check_start.sh ) +bash {{ working_dir }}/fip_http_check_stop.sh +{% endif %} diff --git a/templates/overcloud_upgrade_run.sh.j2 b/templates/overcloud_upgrade_run.sh.j2 index 6979c2f9..a0a0c6c7 100644 --- a/templates/overcloud_upgrade_run.sh.j2 +++ b/templates/overcloud_upgrade_run.sh.j2 @@ -22,6 +22,12 @@ if [[ -e {{ working_dir }}/l3_agent_failover_pre.sh ]]; then fi {% endif %} +{% if fip_http_check|bool %} +source {{ overcloud_rc }} +kill -9 $( lsof -t {{ working_dir }}/fip_http_check_start.sh ) +bash {{ working_dir }}/fip_http_check_start.sh & +{% endif %} + source {{ undercloud_rc }} echo "[$(date)] Runing major upgrade {{ playbook }} playbook for {{ item }} role" @@ -51,6 +57,13 @@ if [[ -e {{ working_dir }}/l3_agent_failover_post.sh ]]; then fi {% endif %} +{% if fip_http_check|bool %} +source {{ overcloud_rc }} +kill -9 $( lsof -t {{ working_dir }}/fip_http_check_start.sh ) +bash {{ working_dir }}/fip_http_check_stop.sh +{% endif %} + + {%- endfor %} {% else %} @@ -68,6 +81,12 @@ if [[ -e {{ working_dir }}/l3_agent_failover_pre.sh ]]; then fi {% endif %} +{% if fip_http_check|bool %} +source {{ overcloud_rc }} +kill -9 $( lsof -t {{ working_dir }}/fip_http_check_start.sh ) +bash {{ working_dir }}/fip_http_check_start.sh & +{% endif %} + source {{ undercloud_rc }} echo "[$(date)] Runing major upgrade for {{ item }} role" @@ -97,4 +116,10 @@ if [[ -e {{ working_dir }}/l3_agent_failover_post.sh ]]; then bash {{ working_dir }}/l3_agent_failover_post.sh fi {% endif %} + +{% if fip_http_check|bool %} +source {{ overcloud_rc }} +kill -9 $( lsof -t {{ working_dir }}/fip_http_check_start.sh ) +bash {{ working_dir }}/fip_http_check_stop.sh +{% endif %} {% endif %} diff --git a/templates/workload_launch.sh.j2 b/templates/workload_launch.sh.j2 index 0ab81189..a4556002 100644 --- a/templates/workload_launch.sh.j2 +++ b/templates/workload_launch.sh.j2 @@ -65,6 +65,8 @@ if [ $? -ne 0 ]; then openstack security group create ${SECGROUP_NAME} openstack security group rule create --proto icmp ${SECGROUP_NAME} openstack security group rule create --proto tcp --dst-port 22 ${SECGROUP_NAME} + openstack security group rule create --proto tcp --dst-port 80 ${SECGROUP_NAME} + openstack security group rule create --proto tcp --dst-port 443 ${SECGROUP_NAME} fi ## create instance