Bug 1503447

Summary: [downstream clone - 3.6.13 ELS] Running engine-host-update.py does not work with RHVH / RHEVH hosts
Product: Red Hat Enterprise Virtualization Manager Reporter: Sandro Bonazzola <sbonazzo>
Component: ovirt-engineAssignee: Nobody <nobody>
Status: CLOSED EOL QA Contact: meital avital <mavital>
Severity: medium Docs Contact:
Priority: medium    
Version: 3.6.10CC: bugs, cshao, danken, jbelka, lsurette, lsvaty, lveyde, rbalakri, Rhev-m-bugs, srevivo, ykaul, ylavi
Target Milestone: ---Keywords: ZStream
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1472812 Environment:
Last Closed: 2017-10-18 08:53:56 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Integration RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1472812    
Bug Blocks:    

Description Sandro Bonazzola 2017-10-18 07:07:15 UTC
+++ This bug was initially created as a clone of Bug #1472812 +++

Description of problem:
Running engine-host-update.py for RHVH hosts

Version-Release number of selected component (if applicable):
ovirt-engine-4.1.4.2-0.1.el7.noarch

How reproducible:
100%

Steps to Reproduce:
1. run `./engine-host-update.py --insecure --engine=localhost --username=admin@internal --password=mypass` --host=rhevh

Actual results:
RHVH host is reinstalled. Updates still available.

Expected results:
When host is upgraded properly.

--- Additional comment from Yaniv Lavi (Dary) on 2017-07-31 05:11:17 EDT ---

Which version is the RHVH host are you trying to update?

--- Additional comment from Lukas Svaty on 2017-07-31 05:47:11 EDT ---

It was upgrade 4.1.3 -> 4.1.4 candidate.
However problem is not in host, rather in the utility, current flow:

1. Deactivate host
2. Reinstall host
3. Activate host

Reinstall host uses this code:

host.install(
            ovirtsdk.xml.params.Action(
                ssh=ovirtsdk.xml.params.SSH(
                    authentication_method='publickey'
                ),
                host=ovirtsdk.xml.params.Host(override_iptables=True),
            )
        )

My wild guess:
This method reinstalls the current image
a) for rhel hosts installs the packages and redeploy vdsm/libvirt..., which is correct
b)for rhevh it I believe it just reinstalls the current image, even that new image is available. For new image to be installed, upgrade should be used, not install/reinstall.

--- Additional comment from Yaniv Lavi (Dary) on 2017-08-07 05:06:07 EDT ---

Do we want to fix this?
When is the Ansible to do this planned to be released?

--- Additional comment from Dan Kenigsberg on 2017-08-21 08:32:58 EDT ---

(In reply to Yaniv Lavi (Dary) from comment #3)
> Do we want to fix this?

I do. Most of our install base is using RHVH.

> When is the Ansible to do this planned to be released?

4.1.6, according to Bug 1473535

--- Additional comment from Yaniv Lavi (Dary) on 2017-08-30 05:11:08 EDT ---

Making this work with the vintage node is more critical, than RHVH.

--- Additional comment from Jiri Belka on 2017-08-31 05:39:42 EDT ---

(In reply to Yaniv Lavi (Dary) from comment #5)
> Making this work with the vintage node is more critical, than RHVH.

I talked to mperina@ and he clarified how 'install' works.

1. first 'host.install' action does check what is host type:
   - if EL host, it _only_ installs packages which should are defined in
     host-deploy code
   - if node (and legacy?) it supposes it has all packages available

2. even "installing" packages on EL host does _NOT_ update all packages. These
   are defined in the DB (PackageNamesForCheckUpdate), thus simple 'host.install'
   won't update all packages in (PackageNamesForCheckUpdate).

3. for node/ngn I suppose 'host.install' does not touch any packaging and
   upgrade-manager updates 'ovirt-node-ng-image-update'
   ('OvirtNodePackageNamesForCheckUpdate' in DB) to update node/ngn.

Thus to update node/ngn (and to correct vds_type if it has been wrong) it would need to to reinstall ('host.install') and tell upgrade-manager to upgrade it as well.

--- Additional comment from Lev Veyde on 2017-09-26 10:34:06 EDT ---

Hi Lukas,

Can you please test my latest patch to see if that solves the issue for you?

--- Additional comment from Lukas Svaty on 2017-09-27 03:58:57 EDT ---

Moving needinfo to Jirka

--- Additional comment from Jiri Belka on 2017-10-03 11:25:09 EDT ---

- do not reinstall rhevh (legacy) it causes confusing message in engine events. rhevh (legacy) is distributed as an iso, please move 'if vdsType in ('rhev-h', 'RHEV_H'):' a little bit up

Host dell-r210ii-13 installation in progress . Failed to install fluentd packages.Please check the log for details.

Host dell-r210ii-13 installation in progress . Vintage node, skipping kernel arguments..

Host dell-r210ii-13 installation in progress . Cannot validate host name settings, reason: resolved host does not match any of the local addresses.

--- Additional comment from Jiri Belka on 2017-10-03 11:32:29 EDT ---

...
Performing RHEVH (Legacy) upgrade...
	Installing........................
	Rebooting............................................................*.*.*.*.*Error: RuntimeError('Unable to complete the reinstall operational, host is in mode: non_responsive',)

imo it should make another attempt to get host status, it is quite often that host is a little bit in non-responsive state after upgrade

--- Additional comment from Jiri Belka on 2017-10-04 04:05:44 EDT ---

this works incorrectly for RHVH (ngn or aka ovirt-node).

it does host.install, that's useless and does not update anything.

508            if vdsType in ('rhev-h', 'RHEV_H'):
509                print('Performing RHEVH (Legacy) upgrade...')
510                upgradeRHevhhost(api, name)
511            verifyHost(api, name)

but...

Processing Host: dell-r210ii-04
Type: ovirt_node
        Moving host to the maintenance.
        Host moved to maintenance.
        Installing........
        ^^^ why?

        Installed.
        ^^^ not upgraded anyting!

        Activating host..
        Host activated.
Requering the host type, type: ovirt_node
        Verifying that host stays up..................
        Verified.
Closed connection.

#6 was ignored here. summary:

- for rhel7 hosts, host.install is ok
- for rhevh legacy, host.upgrade should be used, no host.install at all!
- for rhvh/ovirt-node (ngn), host.upgrade probably with this time without iso

current implementation is bogus.

--- Additional comment from Lev Veyde on 2017-10-16 13:18:12 EDT ---

Fixed the issues for RHEVH legacy, working to fix the issues for the oVirt NGN as well.

Comment 1 Yaniv Lavi 2017-10-18 08:53:56 UTC
Will not be included in the code base for 3.6.z.
Will be in the KBase for this process.