Bug 1463477 - [Docs][RFE] Document osinfo files meaning and customization [NEEDINFO]
[Docs][RFE] Document osinfo files meaning and customization
Status: NEW
Product: Red Hat Enterprise Virtualization Manager
Classification: Red Hat
Component: Documentation (Show other bugs)
4.1.2
x86_64 Linux
unspecified Severity medium
: ovirt-4.3.0
: ---
Assigned To: rhev-docs@redhat.com
rhev-docs@redhat.com
: FutureFeature
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2017-06-20 23:08 EDT by Ribu Tho
Modified: 2018-01-15 20:57 EST (History)
13 users (show)

See Also:
Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: Docs
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
tjelinek: needinfo? (inetkach)
tjelinek: needinfo? (dcadzow)


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Knowledge Base (Solution) 3132091 None None None 2017-08-03 19:57 EDT

  None (edit)
Description Ribu Tho 2017-06-20 23:08:18 EDT
Description of problem:

Webadmin portal show an error when clicking on any of the VM's in the Virtual Machine tabs. 

Version-Release number of selected component (if applicable):

ovirt-engine-4.1.2.3-0.1.el7.noarch
rhevm-4.1.2.3-0.1.el7.noarch

How reproducible:

Tried to run the same steps as the customer case , however didn't receive the error . 

Steps to Reproduce:

1. Do an engine backup and then restore it 

2. Login to the GUI >> Virtual Machines tab 

3. Click on any of VM's and throws the error. 


Actual results:

Uncaught exception occurred. Please try reloading the page. Details: (TypeError) __gwt$exception: <skipped>: lib(...) is null
Please have your administrator check the UI logs

Expected results:

The VM info showing up correctly without any errors or exceptions. 


Additional info:
Comment 5 Yaniv Kaul 2017-06-21 03:05:08 EDT
Hi,

Could you please install the webadmin debuginfo package, restart ovirt-engine and reproduce? This will give a deciphered stack in UI.log.
Comment 6 Ribu Tho 2017-06-21 03:14:39 EDT
Hi,

The package for debuginfo mentioned below have been already installed and the UI.log has been captured after this. 

ovirt-engine-userportal-debuginfo-4.1.2.3-0.1.el7.noarch
ovirt-engine-webadmin-portal-debuginfo-4.1.2.3-0.1.el7.noarch
Comment 7 Yaniv Kaul 2017-06-21 03:19:08 EDT
(In reply to Ribu Tho from comment #6)
> Hi,
> 
> The package for debuginfo mentioned below have been already installed and
> the UI.log has been captured after this. 
> 
> ovirt-engine-userportal-debuginfo-4.1.2.3-0.1.el7.noarch
> ovirt-engine-webadmin-portal-debuginfo-4.1.2.3-0.1.el7.noarch

Correct. Pasting deciphered stack here so it can be google'd:
2017-06-19 15:18:25,766+02 ERROR [org.ovirt.engine.ui.frontend.server.gwt.OvirtRemoteLoggingService] (default task-46) [] Uncaught exception: com.google.gwt.event.shared.UmbrellaException: Exception caught: (TypeError) 
 __gwt$exception: <skipped>: iib(...) is null
	at java.lang.Throwable.fillInStackTrace(Throwable.java:114) [rt.jar:1.8.0_131]
	at java.lang.RuntimeException.RuntimeException(RuntimeException.java:32) [rt.jar:1.8.0_131]
	at com.google.web.bindery.event.shared.UmbrellaException.UmbrellaException(UmbrellaException.java:70) [gwt-servlet.jar:]
	at com.google.gwt.event.shared.UmbrellaException.UmbrellaException(UmbrellaException.java:25) [gwt-servlet.jar:]
	at com.google.gwt.event.shared.HandlerManager.$fireEvent(HandlerManager.java:117) [gwt-servlet.jar:]
	at com.google.gwt.view.client.SelectionChangeEvent.fire(SelectionChangeEvent.java:67) [gwt-servlet.jar:]
	at org.ovirt.engine.ui.common.widget.table.OrderedMultiSelectionModel.$resolveChanges(OrderedMultiSelectionModel.java:115)
	at org.ovirt.engine.ui.common.widget.table.OrderedMultiSelectionModel.fireSelectionChangeEvent(OrderedMultiSelectionModel.java:108)
	at com.google.gwt.view.client.SelectionModel$AbstractSelectionModel$1.execute(SelectionModel.java:128) [gwt-servlet.jar:]
	at com.google.gwt.core.client.impl.SchedulerImpl.runScheduledTasks(SchedulerImpl.java:164) [gwt-servlet.jar:]
	at com.google.gwt.core.client.impl.SchedulerImpl.$flushFinallyCommands(SchedulerImpl.java:270) [gwt-servlet.jar:]
	at com.google.gwt.core.client.impl.Impl.exit(Impl.java:378) [gwt-servlet.jar:]
	at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:335) [gwt-servlet.jar:]
	at Unknown.Ix/<(Unknown Source)
	at Unknown.anonymous(Unknown Source)
Caused by: com.google.gwt.core.client.JavaScriptException: (TypeError) 
 __gwt$exception: <skipped>: iib(...) is null
	at org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider.$hasSpiceSupport(AsyncDataProvider.java:2696)
	at org.ovirt.engine.ui.uicommonweb.models.vms.SpiceConsoleModel.canBeSelected(SpiceConsoleModel.java:147)
	at org.ovirt.engine.ui.uicommonweb.models.ConsolesBase.$setDefaultSelectedProtocol(ConsolesBase.java:66)
	at org.ovirt.engine.ui.uicommonweb.models.VmConsolesImpl.VmConsolesImpl(VmConsolesImpl.java:9)
	at org.ovirt.engine.ui.uicommonweb.models.ConsolesFactory.$getVmConsolesForVm(ConsolesFactory.java:29)
	at org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel.$isConsoleCommandsExecutionAllowed(VmListModel.java:2028)
	at org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel.$updateActionsAvailability(VmListModel.java:1957)
	at org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel.selectedItemsChanged(VmListModel.java:1941)
	at org.ovirt.engine.ui.uicommonweb.models.ListModel.$setSelectedItems(ListModel.java:61)
	at org.ovirt.engine.ui.common.uicommon.model.DataBoundTabModelProvider.$setSelectedItems(DataBoundTabModelProvider.java:85)
	at org.ovirt.engine.ui.webadmin.section.main.presenter.AbstractMainTabWithDetailsPresenter$1.onSelectionChange(AbstractMainTabWithDetailsPresenter.java:53)
	at com.google.gwt.view.client.SelectionChangeEvent.dispatch(SelectionChangeEvent.java:98) [gwt-servlet.jar:]
	at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:76) [gwt-servlet.jar:]
	at com.google.web.bindery.event.shared.SimpleEventBus.$doFire(SimpleEventBus.java:173) [gwt-servlet.jar:]
	... 11 more

2017-06-19 15:18:29,943+02 ERROR [org.ovirt.engine.ui.frontend.server.gwt.OvirtRemoteLoggingService] (default task-51) [] Permutation name: 596C8575FE23654C3CFB8B5741B36A36
2017-06-19 15:18:29,945+02 ERROR [org.ovirt.engine.ui.frontend.server.gwt.OvirtRemoteLoggingService] (default task-51) [] Uncaught exception: com.google.gwt.core.client.JavaScriptException: (TypeError) 
 __gwt$exception: <skipped>: iib(...) is null
	at org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider.$hasSpiceSupport(AsyncDataProvider.java:2696)
	at org.ovirt.engine.ui.uicommonweb.models.vms.SpiceConsoleModel.canBeSelected(SpiceConsoleModel.java:147)
	at org.ovirt.engine.ui.uicommonweb.models.ConsolesBase.$setDefaultSelectedProtocol(ConsolesBase.java:66)
	at org.ovirt.engine.ui.uicommonweb.models.VmConsolesImpl.VmConsolesImpl(VmConsolesImpl.java:9)
	at org.ovirt.engine.ui.uicommonweb.models.ConsolesFactory.$getVmConsolesForVm(ConsolesFactory.java:29)
	at org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel.$isConsoleCommandsExecutionAllowed(VmListModel.java:2028)
	at org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel.$updateActionsAvailability(VmListModel.java:1957)
	at org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel.onSelectedItemChanged(VmListModel.java:1934)
	at org.ovirt.engine.ui.uicommonweb.models.SearchableListModel.$setItems(SearchableListModel.java:677)
	at org.ovirt.engine.ui.uicommonweb.models.SearchableListModel.setItems(SearchableListModel.java:677)
	at org.ovirt.engine.ui.uicommonweb.models.SearchableListModel$SetItemsAsyncQuery$1.$onSuccess(SearchableListModel.java:839)
	at org.ovirt.engine.ui.uicommonweb.models.SearchableListModel$SetItemsAsyncQuery$1.onSuccess(SearchableListModel.java:839)
	at org.ovirt.engine.ui.frontend.Frontend$2.$onSuccess(Frontend.java:233) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.Frontend$2.onSuccess(Frontend.java:233) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.OperationProcessor$2.$onSuccess(OperationProcessor.java:139) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.OperationProcessor$2.onSuccess(OperationProcessor.java:139) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.GWTRPCCommunicationProvider$3$1.$onSuccess(GWTRPCCommunicationProvider.java:160) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.GWTRPCCommunicationProvider$3$1.onSuccess(GWTRPCCommunicationProvider.java:160) [frontend.jar:]
	at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:198) [gwt-servlet.jar:]
	at com.google.gwt.http.client.Request.$fireOnResponseReceived(Request.java:237) [gwt-servlet.jar:]
	at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:409) [gwt-servlet.jar:]
	at Unknown.XHf/c.onreadystatechange<(Unknown Source)
	at com.google.gwt.core.client.impl.Impl.apply(Impl.java:296) [gwt-servlet.jar:]
	at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:335) [gwt-servlet.jar:]
	at Unknown.Ix/<(Unknown Source)
	at Unknown.anonymous(Unknown Source)
Comment 8 Yaniv Kaul 2017-06-21 03:22:28 EDT
Ribu, a simple google for hasSpiceSupport led me to https://bugzilla.redhat.com/show_bug.cgi?id=1434941 - can you check if it resembles in any way the situation? Where is the backup of the engine coming from?
Comment 24 Tomas Jelinek 2017-07-31 10:25:32 EDT
@Sandro: is there something in backup/restore which could take care of also backuping / restoring the osinfo files? Or at least to check on restore that some of the VMs are referencing OS IDs which are defined in a file which is not in this setup?
Comment 25 Igor Netkachev 2017-07-31 13:46:20 EDT
Tomas,

I have ran some tests and I can confirm that in 3.6, 4.0 and 4.1 engine-backup actually includes custom files under /etc/ovirt-engine/osinfo.conf.d/ in backup archive (/etc/ovirt-engine/osinfo.conf.d/README suggests to "Create your own configuration to override product defaults." in this specific directory). IMHO it is expected that file /etc/ovirt-engine/osinfo.conf.d/00-defaults.properties (whic is a symlink actually pointing to /usr/share/ovirt-engine/conf/osinfo-defaults.properties) gets overwritten upon engine upgrade with newer version, so one should not add custom records to that file and instead one should create custom properties files under /etc/ovirt-engine/osinfo.conf.d/ . I have also updated KCS https://access.redhat.com/solutions/797463 to reflect this.

I could not find anything related to osinfo files in RHV Administration Guide, shouldn't we add anything about it?


--
Kind Regards,
Igor Netkachev
Technical Support Engineer
Red Hat Global Support Services
Comment 26 Tomas Jelinek 2017-08-01 06:13:47 EDT
> 
> I could not find anything related to osinfo files in RHV Administration
> Guide, shouldn't we add anything about it?

I have found this in https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.1/html/virtual_machine_management_guide/sect-using_sysprep_to_automate_the_configuration_of_virtual_machines:

<copy paste>
The override file must be created under /etc/ovirt-engine/osinfo.conf.d/, have a filename that puts it after /etc/ovirt-engine/osinfo.conf.d/00-defaults.properties, and ends in .properties. For example, /etc/ovirt-engine/osinfo.conf.d/10-productkeys.properties. The last file will have precedence and override any other previous file. 
</copy paste>

But it would deserve a more generic location since it is not only about sysprep but a generic OS configuration.

@Lucy: I remotely remember we were discussing in context of cloud-init documentation to move this information to a more generic location - but Im not sure now. Can you please comment on it?

> 
> 
> --
> Kind Regards,
> Igor Netkachev
> Technical Support Engineer
> Red Hat Global Support Services
Comment 27 Lucy Bopf 2017-08-15 04:02:31 EDT
(In reply to Tomas Jelinek from comment #26)
> > 
> > I could not find anything related to osinfo files in RHV Administration
> > Guide, shouldn't we add anything about it?
> 
> I have found this in
> https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.1/
> html/virtual_machine_management_guide/sect-
> using_sysprep_to_automate_the_configuration_of_virtual_machines:
> 
> <copy paste>
> The override file must be created under /etc/ovirt-engine/osinfo.conf.d/,
> have a filename that puts it after
> /etc/ovirt-engine/osinfo.conf.d/00-defaults.properties, and ends in
> .properties. For example,
> /etc/ovirt-engine/osinfo.conf.d/10-productkeys.properties. The last file
> will have precedence and override any other previous file. 
> </copy paste>
> 
> But it would deserve a more generic location since it is not only about
> sysprep but a generic OS configuration.
> 
> @Lucy: I remotely remember we were discussing in context of cloud-init
> documentation to move this information to a more generic location - but Im
> not sure now. Can you please comment on it?

I think you may have discussed this with Megan in bug 1125853. Megan, do you have any thoughts about the location of the information?
Comment 28 Megan Lewis 2017-08-23 01:34:20 EDT
Hi Lucy, 

I just reviewed 1125853, and its related bugs, but I don't remember discussing changing the location of the content about the override file. We did talk about where the new section on sysprep (including that content) would be best. As to changing the location as the information is relevant to both sysprep and cloud-init either we could just add the content into the cloud-init section (which would create duplication) or we could make a generic introduction section to both the sysprep and cloud-init sections (including any generic information like this) and then nest those sections under it (but that might create too much nesting). But I'm not sure because neither location doesn't also bring some issues. 

Thanks, 
Megan
Comment 29 Tomas Jelinek 2017-08-24 04:34:31 EDT
OK, so it seems the osinfo itself is not documented properly. The https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.1/html/virtual_machine_management_guide/sect-using_sysprep_to_automate_the_configuration_of_virtual_machines talks about it, but I think a full section on the osinfo files would be beneficial.

Turning this into a docs bug
Comment 30 Derek 2017-08-28 20:28:33 EDT
There's not enough info here for us to proceed (can't find the specifics in the solution (comment 25) and need to know what a "full section" would entail.  Would like to convene a meeting to review the plan for source input and/or whether this should be a technical solution or a doc solution.
Comment 31 Tomas Jelinek 2017-08-29 03:56:53 EDT
@Derek: first I'll try to summarize some info here, than you can schedule a mtg if you feel it is needed:

- the osinfo is a config file located in /etc/ovirt-engine/osinfo.conf.d/00-defaults.properties
- it is a file which is used to configure some operating system specific options
- it contains quite a low level informations about them written in a rather technical way (for example: os.other.devices.display.protocols.value = spice/qxl,vnc/vga,vnc/qxl,vnc/cirrus)
- normally, the user is not encouraged to alter this values
- however, there is a supported way how to customize this configurations described in Comment 26
- there are two types of configuration here:
  1: the ones which come directly from the operating system / engine version itself (e.g. the maximum memory size for windows 2003). No one should touch this...
  2: the ones which can be customized (normally only the windows product key)

There are basically 2 valid reasons to customize the osinfo:
1: configure the product key (this is why is it documented currently in that section)
2: add new operating system (e.g. some debian or whatever)

It is not a critical thing to document it since the user is not really encouraged to touch it, however since there is a supported way how to customize this file, I think it would be good to explain it in some generic place to avoid what happened to the customer in this bug.

Note You need to log in before you can comment on or make changes to this bug.