Bug 1373700

Summary: LinuxBase.registration is missing
Product: Red Hat Enterprise Linux 7 Reporter: Alois Mahdal <amahdal>
Component: sblim-cmpi-baseAssignee: Vitezslav Crhonek <vcrhonek>
Status: CLOSED NOTABUG QA Contact: qe-baseos-daemons
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.3   
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-09-07 08:12:32 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:

Description Alois Mahdal 2016-09-07 02:08:21 UTC
Description of problem
======================

sblim-cmpi-base does not package LinuxBase.registration, for some reason:

RHEL6 .spec:

    %define SCHEMA %{_datadir}/%{name}/Linux_Base.mof
    %define REGISTRATION %{_datadir}/%{name}/Linux_Base.registration

RHEL7 .spec:

    %global SCHEMA %{_datadir}/%{name}/Linux_Base.mof %{_datadir}/%{name}/Linux_BaseIndication.mof
    %global REGISTRATION %{_datadir}/%{name}/Linux_BaseIndication.registration

This means that the usually recommended registration command will fail:

    [0 root@qeos-68 ~]# /usr/share/sblim-cmpi-base/provider-register.sh -t sfcb -m /usr/share/sblim-cmpi-base/Linux_Base.mof -r /usr/share/sblim-cmpi-base/Linux_Base.registration; echo es=$?
    cat: /usr/share/sblim-cmpi-base/Linux_Base.registration: No such file or directory
    cp: cannot stat ‘/var/tmp/Linux_Base.reg’: No such file or directory
    Error: could not copy registration files 
    Failed to stage provider registration.
    es=1
    [0 root@qeos-68 ~]# 



Version-Release number of selected component
============================================

sblim-cmpi-base-1.6.2-8.el7 (probably also older versions)


How reproducible
================

Always


Steps to Reproduce
==================

 1. run command above


Actual results
==============

Errors, exit status 1


Expected results
================

No errors, exit status 0


Additional info
===============

I'm suspecting f5adb36:

    commit f5adb36e3f637a29305006ba9e149174f58091d7
    Author: REDACTED <redacted>
    Date:   Wed Feb 15 17:37:57 2012 +0100
    [...]
    @@ -90,8 +90,8 @@ rm -rf $RPM_BUILD_ROOT
     %{_datadir}/sblim-testsuite/system/linux/*.sh
     %{_datadir}/sblim-testsuite/system/linux/*.pl

    -%define SCHEMA %{_datadir}/%{name}/Linux_Base.mof
    -%define REGISTRATION %{_datadir}/%{name}/Linux_Base.registration
    +%define SCHEMA %{_datadir}/%{name}/Linux_Base.mof %{_datadir}/%{name}/Linux_BaseIndication.mof
    +%define REGISTRATION %{_datadir}/%{name}/Linux_BaseIndication.registration

     %pre
     function unregister()
    [...]

The same can be observed on with older versions (tested RHEL-7.2), so this is not a (new) regression.

Comment 1 Alois Mahdal 2016-09-07 03:38:59 UTC
FTR: my guess is that the reason this was not found for ~4 years is because it was covered up by bug 1179885 (the missing dependency); causing the code to die too soon to hit this.

Comment 3 Vitezslav Crhonek 2016-09-07 08:12:32 UTC
The provider registers itself automatically during package installation, usually you don't need to invoke the registration manually.

Nevertheless, Linux_BaseIndication.registration contains all necessary information needed for provider registration. It's superset of Linux_Base.registration and we switched to it because of indication support.

The command should look like:

# /usr/share/sblim-cmpi-base/provider-register.sh -t sfcb -m /usr/share/sblim-cmpi-base/Linux_Base.mof -r /usr/share/sblim-cmpi-base/Linux_BaseIndication.registration; echo es=$?
es=0

If you use tog-pegasus, you have to deregister the provider first, because registration of already registered provider fails with this CIMOM:

# /usr/share/sblim-cmpi-base/provider-register.sh -d -t pegasus -m /usr/share/sblim-cmpi-base/Linux_Base.mof -r /usr/share/sblim-cmpi-base/Linux_BaseIndication.registration; echo es=$?
es=0
# /usr/share/sblim-cmpi-base/provider-register.sh -t pegasus -m /usr/share/sblim-cmpi-base/Linux_Base.mof -r /usr/share/sblim-cmpi-base/Linux_BaseIndication.registration; echo es=$?
es=0

I've tested it on RHEL-7.2 and works like a charm with both CIMOMs.

Comment 4 Alois Mahdal 2016-09-07 15:32:11 UTC
Thanks for explanation.

Good to hear we don't have to carry out the registration (in those tests that are just "pure clean" sfcb + cmpi-base);  I was getting "class not found" message on Linux_ComputerSystem so I was suspecting that the registration has to be done manually.

I'll look into that and see if I can reproduce that and what was the problem.

Thanks!