Run compute upgrade only in compute hosts.

The basic deployment used in TripleO CI
with only a controller is displaying
the controller in the openstack hypervisor
list command and tries running
upgrade-non-controller.sh on it, which fails.

With this change we plan to filter out
only those hosts with the compute role, leaving
aside those hosts in which nova-scheduler and
nova-compute are running at the same time.

Closes-Bug: #1747432
Change-Id: If7bfd63d62509387be4b843d470816365f68cfaf
(cherry picked from commit 8d852b0491)
This commit is contained in:
Jose Luis Franco Arza 2018-02-05 15:41:52 +01:00
parent 46bec09d3f
commit b249e5a7fc
4 changed files with 40 additions and 25 deletions

View File

@ -0,0 +1,25 @@
- name: list hypervisors in overcloud
shell: |
source {{ overcloud_rc }}
openstack hypervisor list -f json | jq -r -c '.[] | .["Hypervisor Hostname"]'
register: hypervisors
- name: hosts running nova-compute
shell: |
source {{ overcloud_rc }}
openstack compute service list --service nova-compute -c Host -f value
register: nova_compute_hosts
- name: hosts running nova-scheduller
shell: |
source {{ overcloud_rc }}
openstack compute service list --service nova-scheduler -c Host -f value
register: nova_scheduler_hosts
- name: controller hosts acting as all-in-one
set_fact:
all_in_one: "{{ nova_compute_hosts.stdout_lines | default([]) | intersect(nova_scheduler_hosts.stdout_lines | default([])) }}"
- name: Filter out only compute nodes
set_fact:
compute_nodes: "{{ hypervisors.stdout_lines | default([]) | difference(all_in_one) }}"

View File

@ -1,10 +1,6 @@
- name: list compute nodes
shell: |
source {{ overcloud_rc }}
openstack hypervisor list -f json | jq -r -c '.[] | .["Hypervisor Hostname"]'
register: hypervisors
- include: compute_detect.yml
- include: node_upgrade.yml
with_items: "{{ hypervisors.stdout_lines }}"
with_items: "{{ compute_nodes }}"
loop_control:
loop_var: node_name

View File

@ -1,17 +1,15 @@
---
- block:
- name: register instances running on {{ node_name }}
shell: |
source {{ overcloud_rc }}
openstack server list --host {{ node_name }} -f json | jq -r -c '.[] | select(.Status | contains("ACTIVE") or contains("PAUSED")) | .Name'
register: node_instances
- name: register instances running on {{ node_name }}
shell: |
source {{ overcloud_rc }}
openstack server list --host {{ node_name }} -f json | jq -r -c '.[] | select(.Status | contains("ACTIVE") or contains("PAUSED")) | .Name'
register: node_instances
- name: create pre upgrade script for {{ node_name }}
template:
src: node_upgrade_pre.sh.j2
dest: "{{working_dir}}/{{ node_name | splitext | first | splitext | first }}_upgrade_pre.sh"
mode: 0775
when: "'compute' in node_name"
- name: create pre upgrade script for {{ node_name }}
template:
src: node_upgrade_pre.sh.j2
dest: "{{working_dir}}/{{ node_name | splitext | first | splitext | first }}_upgrade_pre.sh"
mode: 0775
- name: create script for upgrading {{ node_name }}
template:

View File

@ -1,18 +1,14 @@
- name: register compute nodes
shell: |
source {{ overcloud_rc }}
openstack hypervisor list -f json | jq -r -c '.[] | .["Hypervisor Hostname"]'
register: hypervisors
- name: register swift storage nodes
shell: |
source {{ undercloud_rc }}
openstack server list -f json | jq -r -c '.[] | select(.Name | contains("swift") or contains("objectstorage")) | .Name'
register: swift_nodes
- include: compute_detect.yml
- include: node_upgrade_script.yml
loop_control:
loop_var: node_name
with_items:
- "{{ hypervisors.stdout_lines }}"
- "{{ compute_nodes }}"
- "{{ swift_nodes.stdout_lines }}"