Bug 1289585

Summary: [Upgrade][Gluster] Host moves to Non operational after vdsm upgrade due to a missing gluster-cli package
Product: [oVirt] vdsm Reporter: Gil Klein <gklein>
Component: GeneralAssignee: Allon Mureinik <amureini>
Status: CLOSED CANTFIX QA Contact: Aharon Canan <acanan>
Severity: high Docs Contact:
Priority: unspecified    
Version: 4.17.11CC: amureini, bugs, nsoffer
Target Milestone: ovirt-3.6.3Flags: gklein: ovirt-3.6.z?
gklein: blocker?
rule-engine: planning_ack?
rule-engine: devel_ack?
rule-engine: testing_ack?
Target Release: 4.17.11   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: storage
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-12-10 09:58:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Storage RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1285700    
Attachments:
Description Flags
supervdsm log
none
vdsm log
none
engine log none

Description Gil Klein 2015-12-08 13:48:54 UTC
Description of problem:
When upgrading an host which has a gluster SD, from vdsm 4.16.x to 4.17.x, it moved to a "Non operational" state.

Version-Release number of selected component (if applicable):
Upgrade: vdsm-4.16.30-1.el7ev.x86_64 to: vdsm-4.17.12-0.el7ev.noarch


How reproducible:
100%


Steps to Reproduce:
1. Install a RHEV host with vdsm-4.16.30-1.el7ev.x86_64
2. Add a gluster SD
3. Upgrade the host to vdsm-4.17.12-0.el7ev.noarch

Actual results:
Host moves to Non operational due to this (supervdsm.log)

MainProcess|jsonrpc.Executor/3::ERROR::2015-12-08 15:40:06,683::supervdsmServer::118::SuperVdsm.ServerCallback::(wrapper) Error in wrapper
Traceback (most recent call last):
  File "/usr/share/vdsm/supervdsmServer", line 116, in wrapper
    res = func(*args, **kwargs)
  File "/usr/share/vdsm/supervdsmServer", line 531, in wrapper
    return func(*args, **kwargs)
  File "/usr/share/vdsm/gluster/cli.py", line 489, in volumeInfo
    command = _getGlusterVolCmd() + ["info"]
  File "/usr/share/vdsm/gluster/cli.py", line 45, in _getGlusterVolCmd
    return [_glusterCommandPath.cmd, "--mode=script", "volume"]
  File "/usr/lib/python2.7/site-packages/vdsm/utils.py", line 915, in cmd
    self.name)
OSError: [Errno 2] No such file or directory: gluster

Expected results:
Host should move to "Up" state

Additional info:
Can be easily workaround by "yum install glusterfs-cli"

Comment 1 Gil Klein 2015-12-08 13:51:58 UTC
Created attachment 1103610 [details]
supervdsm log

Comment 2 Gil Klein 2015-12-08 13:52:33 UTC
Created attachment 1103611 [details]
vdsm log

Comment 3 Gil Klein 2015-12-08 13:54:13 UTC
Created attachment 1103612 [details]
engine log

Comment 4 Sahina Bose 2015-12-09 13:58:14 UTC
vdsm should have a Requires on glusterfs-cli. 

Nir, I think this was not added due to the package not being available on ppc, IIRC. But what about other arch?

Comment 5 Nir Soffer 2015-12-09 16:54:28 UTC
(In reply to Sahina Bose from comment #4)
> vdsm should have a Requires on glusterfs-cli. 
> 
> Nir, I think this was not added due to the package not being available on
> ppc, IIRC. But what about other arch?

Vdsm was converted to noarch package, so we don't have any way now to
require arch specific packages.

I have set of patches fixing this here:
https://gerrit.ovirt.org/42490

It was created for ceph packages, but will serve also gluster package
when it is done.

Comment 6 Allon Mureinik 2015-12-10 09:58:21 UTC
For the upstream VDSM project, VDSM requires glusterfs-cli (see 766a54776555e6303b4ceae593c41bbfb0c764ae and b9b06b6342829b29ab29dc9d2a972712133c3a34).

On RHEV, we cannot require glusterfs-cli, as its not delivered in the rhel-server channel - only in rhel-optional or RHGS' channel.
Therefore, the only thing we can do is have a release note, which we already provided in bug 922744.

Comment 7 Nir Soffer 2016-03-09 21:54:12 UTC
This should be fixed on master:
https://github.com/oVirt/vdsm/commit/3151a9e34899f047b1ed615c8ec7d591ea9e3145

gluster command line is *not* required now. When it exists, we can provide
validation of gluster volume configuration, and add automatically backup
servers. When it is not available, the system should behave in the same way
as in 3.5.