Improve console install and restart services appropriately

The current implementation wipes out the novnc/spice directory
every single time the playbook executes. While it does replace
it afterwards it does not fire a notifier to make the service
restart, resulting in the service failing.

This patch makes the install process idempotent - it will only
wipe out the directory if it does not look the way it is
expected to look. It also fires the notifier to restart services
if the git repo changes.

This should ensure that novnc/spice restart properly on upgrades
and that there are no changes/restarts for the service if the git
SHA or software does not change.

Backport note:
The 'Manage LB' handler notification is removed as it is not
present in pike.

Closes-Bug: #1746523
Change-Id: Ic39f884016a6ba0498110267027783001a087a1c
(cherry picked from commit c41103ba70)
This commit is contained in:
Jesse Pretorius 2018-01-31 15:49:44 +00:00 committed by Jesse Pretorius (odyssey4me)
parent 80e0d04822
commit 802237e4b2
2 changed files with 50 additions and 8 deletions

View File

@ -13,10 +13,28 @@
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Remove old git directory
file:
path: "/usr/share/novnc"
state: "absent"
- name: Remove existing directory if it is not a git repo or it is dirty
shell: |
EXIT_CODE=0
FOLDER_PATH="/usr/share/novnc"
if [[ -e ${FOLDER_PATH} ]]; then
if [[ ! -d "${FOLDER_PATH}/.git" ]]; then
echo "${FOLDER_PATH} is not a git repo, deleting..."
EXIT_CODE=2
elif test -n "$(cd ${FOLDER_PATH}; git status --porcelain)"; then
echo "${FOLDER_PATH} is a dirty git repo, deleting..."
EXIT_CODE=2
fi
if [[ "${EXIT_CODE}" == "2" ]]; then
rm -rf ${FOLDER_PATH}
fi
fi
exit ${EXIT_CODE}
args:
executable: /bin/bash
register: existing_dir_cleanup
changed_when: existing_dir_cleanup.rc == 2
failed_when: existing_dir_cleanup.rc not in [0,2]
tags:
- nova-novnc-git
@ -33,6 +51,8 @@
until: git_clone|success
retries: 5
delay: 2
notify:
- Restart nova services
tags:
- nova-novnc-git
@ -52,6 +72,8 @@
delay: 2
when:
- nova_get_venv | failed or nova_get_venv | skipped
notify:
- Restart nova services
tags:
- nova-pip-packages

View File

@ -13,10 +13,28 @@
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Remove old git directory
file:
path: "/usr/share/spice-html5"
state: "absent"
- name: Remove existing directory if it is not a git repo or it is dirty
shell: |
EXIT_CODE=0
FOLDER_PATH="/usr/share/spice-html5"
if [[ -e ${FOLDER_PATH} ]]; then
if [[ ! -d "${FOLDER_PATH}/.git" ]]; then
echo "${FOLDER_PATH} is not a git repo, deleting..."
EXIT_CODE=2
elif test -n "$(cd ${FOLDER_PATH}; git status --porcelain)"; then
echo "${FOLDER_PATH} is a dirty git repo, deleting..."
EXIT_CODE=2
fi
if [[ "${EXIT_CODE}" == "2" ]]; then
rm -rf ${FOLDER_PATH}
fi
fi
exit ${EXIT_CODE}
args:
executable: /bin/bash
register: existing_dir_cleanup
changed_when: existing_dir_cleanup.rc == 2
failed_when: existing_dir_cleanup.rc not in [0,2]
tags:
- nova-spice-git
@ -33,5 +51,7 @@
until: git_clone|success
retries: 5
delay: 2
notify:
- Restart nova services
tags:
- nova-spice-git