Bug 1451218

Summary: Installer didn't install Native GlusterFS due to the "g_glusterfs_registry_hosts" is not defined
Product: OpenShift Container Platform Reporter: Wenkai Shi <weshi>
Component: InstallerAssignee: Jose A. Rivera <jarrpa>
Status: CLOSED ERRATA QA Contact: Wenkai Shi <weshi>
Severity: high Docs Contact:
Priority: high    
Version: 3.6.0CC: aos-bugs, jokerman, mmccomas, rcyriac
Target Milestone: ---Keywords: TestBlocker
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: No Doc Update
Doc Text:
undefined
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-08-10 05:24:06 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Wenkai Shi 2017-05-16 07:07:21 UTC
Description of problem:
Install OCP with native glusterfs. During installation, ALL tasks of glusterfs were skipped due to "Conditional check failed". Added some tasks to debug, found out that the variable "g_glusterfs_registry_hosts" is not defined.

Version-Release number of selected component (if applicable):
atomic-openshift-utils-3.6.68-1.git.0.9cbe2b7.el7

How reproducible:
100%

Steps to Reproduce:
1.Install OCP with native glusterfs setting
# cat hosts
...
openshift_hosted_registry_storage_kind=glusterfs
...
[glusterfs]
gulsterfs1.example.com glusterfs_devices="['/dev/vsda']"
glusterfs2.example.com glusterfs_devices="['/dev/vsda']"
glusterfs3.example.com glusterfs_devices="['/dev/vsda']"
...
# ansible-playbook -i hosts -v /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml
2.
3.

Actual results:
# ansible-playbook -i hosts -v /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml
...
TASK [openshift_storage_glusterfs : ...
skipping: [master.example.com] => {
    "changed": false, 
    "skip_reason": "Conditional check failed", 
    "skipped": true
}
...
TASK [openshift_hosted : Wait for registry pods] *******************************
...
fatal: [master.example.com]: FAILED! => {
    "attempts": 60, 
    "changed": false, 
    "failed": true, 
    "results": {
        "cmd": "/usr/bin/oc get pod --selector=docker-registry=default -o json -n default", 
        "results": [
            {
                "apiVersion": "v1", 
                "items": [], 
                "kind": "List", 
                "metadata": {}, 
                "resourceVersion": "", 
                "selfLink": ""
            }
        ], 
        "returncode": 0
    }, 
    "state": "list"
}
...

Installation failed in [openshift_hosted : Wait for registry pods] task because the native glusterfs is not deployed.

Expected results:
Installation succeed

Additional info:
Add some tasks to check the variable.
# cat /usr/share/ansible/openshift-ansible/roles/openshift_storage_glusterfs/tasks/main.yml
---
- name: Create temp directory for doing work in
  command: mktemp -d /tmp/openshift-glusterfs-ansible-XXXXXX
  register: mktemp
  changed_when: False
  check_mode: no

- name: QE Debug g_glusterfs_hosts
  debug: var=g_glusterfs_hosts

- include: glusterfs_config.yml
  when:
  - g_glusterfs_hosts | default([]) | count > 0

- name: QE Debug openshift.hosted.registry.storage
  debug: var=openshift.hosted.registry.storage.kind

- name: QE Debug openshift.hosted.registry.glusterfs.swap
  debug: var=openshift.hosted.registry.glusterfs.swap

- name: QE Debug g_glusterfs_registry_hosts
  debug: var=g_glusterfs_registry_hosts

- include: glusterfs_registry.yml
  when:
  - g_glusterfs_registry_hosts | default([]) | count > 0
  - "openshift.hosted.registry.storage.kind == 'glusterfs' or openshift.hosted.registry.glusterfs.swap"

- name: Delete temp directory
  file:
    name: "{{ mktemp.stdout }}"
    state: absent
  changed_when: False
  check_mode: no
# ansible-playbook -i hosts -v /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml
...
TASK [openshift_storage_glusterfs : QE Debug g_glusterfs_hosts] ****************
Tuesday 16 May 2017  06:18:59 +0000 (0:00:00.324)       0:45:58.665 *********** 

ok: [master.example.com] => {
    "g_glusterfs_hosts": "VARIABLE IS NOT DEFINED!"
}
...
TASK [openshift_storage_glusterfs : QE Debug openshift.hosted.registry.storage] 
Tuesday 16 May 2017  06:19:05 +0000 (0:00:00.112)       0:46:04.621 *********** 
ok: [master.example.com] => {
    "openshift.hosted.registry.storage.kind": "glusterfs"
}

TASK [openshift_storage_glusterfs : QE Debug openshift.hosted.registry.glusterfs.swap] ***
Tuesday 16 May 2017  06:19:06 +0000 (0:00:00.125)       0:46:04.746 *********** 
ok: [master.example.com] => {
    "openshift.hosted.registry.glusterfs.swap": "VARIABLE IS NOT DEFINED!"
}

TASK [openshift_storage_glusterfs : QE Debug g_glusterfs_registry_hosts] *******
Tuesday 16 May 2017  06:19:06 +0000 (0:00:00.121)       0:46:04.868 *********** 
ok: [master.example.com] => {
    "g_glusterfs_registry_hosts": "VARIABLE IS NOT DEFINED!"
}
...

Comment 1 Wenkai Shi 2017-06-14 07:08:27 UTC
This bug is block all CNS relate testing.

Comment 2 Jose A. Rivera 2017-06-14 18:58:52 UTC
Should be resolved by https://github.com/openshift/openshift-ansible/pull/4245

Comment 4 Wenkai Shi 2017-06-21 05:43:53 UTC
Verified with version openshift-ansible-3.6.121-1.git.0.ed0b72c.el7, installation succeed, CNS as registry backend storage works well.

Comment 6 errata-xmlrpc 2017-08-10 05:24:06 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2017:1716