Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1595857

Summary: Add input validation for FenceProxyDefaultPreferences in engine-config
Product: [oVirt] ovirt-engine Reporter: Slava <volga629>
Component: Tools.ConfigAssignee: Eli Mesika <emesika>
Status: CLOSED CURRENTRELEASE QA Contact: Ondra Machacek <omachace>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 4.2.4.5CC: bugs, lsvaty, michal.skrivanek, mperina, omachace, volga629
Target Milestone: ovirt-4.2.5Flags: rule-engine: ovirt-4.2+
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-07-31 15:31:51 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Infra RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
New host dialog opened without any problem in latest 4.2 none

Description Slava 2018-06-27 15:18:03 UTC
Description of problem:

When trying add new host or edit existing host ui generate exception.

Screenshot

https://www.dropbox.com/s/ikgiba04qlwvazj/ovirt-new-host.png?dl=0


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

ovirt-engine-4.2.4.5-1.el7.noarch


How reproducible:

100%

Steps to Reproduce:
1. Login to web ui
2. Navigate to Compute ~> Hosts
3. Try add new or edit existing one by using right corner buttons  

Actual results:

Screenshot

https://www.dropbox.com/s/ikgiba04qlwvazj/ovirt-new-host.png?dl=0

Expected results:

Be able to add new host and edit existing.

Additional info:

Ui ovirt-engine log 

2018-06-27 10:10:40,420-05 ERROR [org.ovirt.engine.ui.frontend.server.gwt.OvirtRemoteLoggingService] (default task-25) [] Permutation name: 8820D472A8895322FFCA74A62B4845FF
2018-06-27 10:10:40,421-05 ERROR [org.ovirt.engine.ui.frontend.server.gwt.OvirtRemoteLoggingService] (default task-25) [] Uncaught exception: java.lang.IllegalArgumentException: Invalid value 'engine'
	at java.lang.Throwable.Throwable(Throwable.java:64) [rt.jar:1.8.0_171]
	at java.lang.Exception.Exception(Exception.java:28) [rt.jar:1.8.0_171]
	at java.lang.RuntimeException.RuntimeException(RuntimeException.java:28) [rt.jar:1.8.0_171]
	at Unknown.new aHf(webadmin-0.js)
	at org.ovirt.engine.core.common.businessentities.pm.FenceProxySourceType.forValue(FenceProxySourceType.java:46) [common.jar:]
	at org.ovirt.engine.ui.uicommonweb.models.hosts.HostModel.$setPmProxyPreferences(HostModel.java:441)
	at org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel$lambda$30$Type.onSuccess(HostListModel.java:794)
	at org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider.$getConfigFromCache(AsyncDataProvider.java:2180)
	at org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider.$getDefaultPmProxyPreferences(AsyncDataProvider.java:1833)
	at org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel.$lambda$10(HostListModel.java:777)
	at org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel$lambda$10$Type.onSuccess(HostListModel.java:777)
	at org.ovirt.engine.ui.frontend.Frontend$1.$onSuccess(Frontend.java:227) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.Frontend$1.onSuccess(Frontend.java:227) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.OperationProcessor$1.$onSuccess(OperationProcessor.java:133) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.OperationProcessor$1.onSuccess(OperationProcessor.java:133) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.GWTRPCCommunicationProvider$5$1.$onSuccess(GWTRPCCommunicationProvider.java:270) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.GWTRPCCommunicationProvider$5$1.onSuccess(GWTRPCCommunicationProvider.java:270) [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:233) [gwt-servlet.jar:]
	at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:409) [gwt-servlet.jar:]
	at Unknown.eval(webadmin-0.js)
	at com.google.gwt.core.client.impl.Impl.apply(Impl.java:236) [gwt-servlet.jar:]
	at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:275) [gwt-servlet.jar:]
	at Unknown.eval(webadmin-0.js)

Comment 1 Ondra Machacek 2018-06-28 12:58:14 UTC
Do we support 'engine' as FenceProxySourceType ?

Comment 2 Slava 2018-06-30 19:51:54 UTC
Might be it can help identify the issue.
I tried enable fence and Power Management with RestAPI
And get error as following 

URL

ovirt-engine/api/hosts/UUID/fence

DATA

<action>
<fence_type>status</fence_type>
<power_management>enabled</power_management>
<status>on</status>
<pm_proxies>
	<type>dc</type>
</pm_proxies>
</action>  

RESULT

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<fault>
    <detail>invalid value 'engine'</detail>
    <reason>Operation Failed</reason>
</fault>

Comment 3 Slava 2018-06-30 20:10:36 UTC
error in engine.log 


2018-06-30 15:08:13,782-05 ERROR [org.ovirt.engine.core.bll.GetVdsFenceStatusQuery] (default task-42) [c67d7318-1ced-45aa-bef3-f059c81fc30f] Exception: java.lang.IllegalArgumentException: Invalid value 'engine'
	at org.ovirt.engine.core.common.businessentities.pm.FenceProxySourceType.forValue(FenceProxySourceType.java:58) [common.jar:]
	at org.ovirt.engine.core.common.utils.pm.FenceProxySourceTypeHelper.parseFromString(FenceProxySourceTypeHelper.java:27) [common.jar:]
	at org.ovirt.engine.core.bll.pm.FenceProxyLocator.getDefaultFenceProxySources(FenceProxyLocator.java:185) [bll.jar:]
	at org.ovirt.engine.core.bll.pm.FenceProxyLocator.getFenceProxySources(FenceProxyLocator.java:88) [bll.jar:]
	at org.ovirt.engine.core.bll.pm.FenceProxyLocator.findProxyHost(FenceProxyLocator.java:62) [bll.jar:]
	at org.ovirt.engine.core.bll.pm.FenceProxyLocator.findProxyHost(FenceProxyLocator.java:54) [bll.jar:]
	at org.ovirt.engine.core.bll.pm.FenceAgentExecutor.fence(FenceAgentExecutor.java:93) [bll.jar:]
	at org.ovirt.engine.core.bll.pm.SingleAgentFenceActionExecutor.getStatus(SingleAgentFenceActionExecutor.java:111) [bll.jar:]
	at org.ovirt.engine.core.bll.pm.SingleAgentFenceActionExecutor.fence(SingleAgentFenceActionExecutor.java:68) [bll.jar:]
	at org.ovirt.engine.core.bll.pm.HostFenceActionExecutor.fence(HostFenceActionExecutor.java:133) [bll.jar:]
	at org.ovirt.engine.core.bll.pm.HostFenceActionExecutor.fence(HostFenceActionExecutor.java:75) [bll.jar:]
	at org.ovirt.engine.core.bll.GetVdsFenceStatusQuery.executeQueryCommand(GetVdsFenceStatusQuery.java:24) [bll.jar:]
	at org.ovirt.engine.core.bll.QueriesCommandBase.executeCommand(QueriesCommandBase.java:106) [bll.jar:]
	at org.ovirt.engine.core.dal.VdcCommandBase.execute(VdcCommandBase.java:33) [dal.jar:]
	at org.ovirt.engine.core.bll.executor.DefaultBackendQueryExecutor.execute(DefaultBackendQueryExecutor.java:14) [bll.jar:]
	at org.ovirt.engine.core.bll.Backend.runQueryImpl(Backend.java:538) [bll.jar:]
	at org.ovirt.engine.core.bll.Backend.runQuery(Backend.java:507) [bll.jar:]
	at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source) [:1.8.0_171]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_171]
	at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_171]
	at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
	at org.jboss.as.weld.ejb.DelegatingInterceptorInvocationContext.proceed(DelegatingInterceptorInvocationContext.java:92) [wildfly-weld-ejb-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.weld.interceptor.proxy.WeldInvocationContext.interceptorChainCompleted(WeldInvocationContext.java:98) [weld-core-impl-2.4.3.Final.jar:2.4.3.Final]
	at org.jboss.weld.interceptor.proxy.WeldInvocationContext.proceed(WeldInvocationContext.java:117) [weld-core-impl-2.4.3.Final.jar:2.4.3.Final]
	at org.ovirt.engine.core.common.di.interceptor.LoggingInterceptor.apply(LoggingInterceptor.java:12) [common.jar:]
	at sun.reflect.GeneratedMethodAccessor65.invoke(Unknown Source) [:1.8.0_171]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_171]
	at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_171]
	at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73) [weld-core-impl-2.4.3.Final.jar:2.4.3.Final]
	at org.jboss.weld.interceptor.proxy.WeldInvocationContext.invokeNext(WeldInvocationContext.java:83) [weld-core-impl-2.4.3.Final.jar:2.4.3.Final]
	at org.jboss.weld.interceptor.proxy.WeldInvocationContext.proceed(WeldInvocationContext.java:115) [weld-core-impl-2.4.3.Final.jar:2.4.3.Final]
	at org.jboss.weld.bean.InterceptorImpl.intercept(InterceptorImpl.java:108) [weld-core-impl-2.4.3.Final.jar:2.4.3.Final]
	at org.jboss.as.weld.ejb.DelegatingInterceptorInvocationContext.proceed(DelegatingInterceptorInvocationContext.java:82) [wildfly-weld-ejb-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.as.weld.interceptors.EjbComponentInterceptorSupport.delegateInterception(EjbComponentInterceptorSupport.java:60)
	at org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.delegateInterception(Jsr299BindingsInterceptor.java:76)
	at org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:88)
	at org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:101)
	at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
	at org.ovirt.engine.core.bll.interceptors.CorrelationIdTrackerInterceptor.aroundInvoke(CorrelationIdTrackerInterceptor.java:13) [bll.jar:]
	at sun.reflect.GeneratedMethodAccessor257.invoke(Unknown Source) [:1.8.0_171]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_171]
	at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_171]
	at org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptor.processInvocation(ManagedReferenceLifecycleMethodInterceptor.java:89)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) [wildfly-ee-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:40)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53)
	at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.component.singleton.SingletonComponentInstanceAssociationInterceptor.processInvocation(SingletonComponentInstanceAssociationInterceptor.java:53) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInNoTx(CMTTxInterceptor.java:264) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.supports(CMTTxInterceptor.java:379) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:244) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
	at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73) [weld-core-impl-2.4.3.Final.jar:2.4.3.Final]
	at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:89)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:47) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.deployment.processors.StartupAwaitInterceptor.processInvocation(StartupAwaitInterceptor.java:22) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:67) [wildfly-ejb3-11.0.0.Final.jar:11.0.0.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:60)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:438)
	at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:609)
	at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:57)
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
	at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53)
	at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:198)
	at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:185)
	at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:81)
	at org.ovirt.engine.core.common.interfaces.BackendLocal$$$view3.runQuery(Unknown Source) [common.jar:]
	at org.ovirt.engine.api.restapi.resource.BackendResource.runQuery(BackendResource.java:82)
	at org.ovirt.engine.api.restapi.resource.BackendResource.doGetEntity(BackendResource.java:134)
	at org.ovirt.engine.api.restapi.resource.BackendResource.getEntity(BackendResource.java:116)
	at org.ovirt.engine.api.restapi.resource.BackendResource.getEntity(BackendResource.java:98)
	at org.ovirt.engine.api.restapi.resource.BackendResource.getEntity(BackendResource.java:90)
	at org.ovirt.engine.api.restapi.resource.BackendHostResource.getFenceStatus(BackendHostResource.java:599)
	at org.ovirt.engine.api.restapi.resource.BackendHostResource.fence(BackendHostResource.java:592)
	at org.ovirt.engine.api.resource.HostResource.doFence(HostResource.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_171]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_171]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_171]
	at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_171]
	at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:138) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:107) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:133) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:101) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:406) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:213) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:228) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.24.Final.jar:3.0.24.Final]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:81)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:274)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchToPath(ServletInitialHandler.java:209)
	at io.undertow.servlet.spec.RequestDispatcherImpl.forwardImpl(RequestDispatcherImpl.java:221)
	at io.undertow.servlet.spec.RequestDispatcherImpl.forwardImplSetup(RequestDispatcherImpl.java:147)
	at io.undertow.servlet.spec.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:111)
	at org.ovirt.engine.api.restapi.invocation.VersionFilter.doFilter(VersionFilter.java:180)
	at org.ovirt.engine.api.restapi.invocation.VersionFilter.doFilter(VersionFilter.java:98)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.api.restapi.invocation.CurrentFilter.doFilter(CurrentFilter.java:117)
	at org.ovirt.engine.api.restapi.invocation.CurrentFilter.doFilter(CurrentFilter.java:72)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.core.aaa.filters.RestApiSessionMgmtFilter.doFilter(RestApiSessionMgmtFilter.java:78) [aaa.jar:]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.core.aaa.filters.EnforceAuthFilter.doFilter(EnforceAuthFilter.java:42) [aaa.jar:]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.core.aaa.filters.SsoRestApiNegotiationFilter.doFilter(SsoRestApiNegotiationFilter.java:84) [aaa.jar:]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.core.aaa.filters.SsoRestApiAuthFilter.doFilter(SsoRestApiAuthFilter.java:47) [aaa.jar:]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.core.aaa.filters.SessionValidationFilter.doFilter(SessionValidationFilter.java:59) [aaa.jar:]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.core.aaa.filters.RestApiSessionValidationFilter.doFilter(RestApiSessionValidationFilter.java:35) [aaa.jar:]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.api.restapi.security.CSRFProtectionFilter.doFilter(CSRFProtectionFilter.java:111)
	at org.ovirt.engine.api.restapi.security.CSRFProtectionFilter.doFilter(CSRFProtectionFilter.java:102)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.ovirt.engine.core.utils.servlet.CORSSupportFilter.doFilter(CORSSupportFilter.java:284) [utils.jar:]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
	at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:326)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:812)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_171]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_171]
	at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_171]

2018-06-30 15:08:13,792-05 ERROR [org.ovirt.engine.api.restapi.resource.AbstractBackendResource] (default task-42) [] Operation Failed: invalid value 'engine'

Comment 4 Martin Perina 2018-07-09 10:09:57 UTC
Eli, please take a look, the FenceProxySourceType should be one of "cluster", "dc" or "other_dc", no other values are allowed there, so no idea how "engine" gets there ...

Comment 5 Eli Mesika 2018-07-11 15:15:17 UTC
please provide the result of the following query :


SELECT vds_name, pm_proxy_preferences from vds_static;


Thanks

Comment 6 Slava 2018-07-11 15:18:36 UTC
postgres=# \c engine 
You are now connected to database "engine" as user "postgres".
engine=# 
engine=# SELECT vds_name, pm_proxy_preferences from vds_static;
      vds_name      | pm_proxy_preferences 
--------------------+----------------------
 ovirt00.colpbx.lan | 
 ovirt01.colpbx.lan | 
(2 rows)

engine=#

Comment 7 Eli Mesika 2018-07-11 17:37:25 UTC
(In reply to Slava from comment #2)
> Might be it can help identify the issue.
> I tried enable fence and Power Management with RestAPI
> And get error as following 
> 
> URL
> 
> ovirt-engine/api/hosts/UUID/fence
> 
> DATA
> 
> <action>
> <fence_type>status</fence_type>
> <power_management>enabled</power_management>
> <status>on</status>
> <pm_proxies>
> 	<type>dc</type>
> </pm_proxies>
> </action>  
> 
> RESULT
> 
> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
> <fault>
>     <detail>invalid value 'engine'</detail>
>     <reason>Operation Failed</reason>
> </fault>


This is improper usage of the API :


First you have to add a fence agent to the host by issuing a POST request for api/hosts/UUID/fenceagents

(You can not enable fencing without having a fence agent defined for the host)

For example :


<agents>
<agent>
<address>1.11.111.1111</address>
<encrypt_options>false</encrypt_options>
<options>
<option>
<name>port</name>
<value>11</value>
 </option>
</options>
<order>1</order>
<port>11</port>
<type>apc_snmp</type>
<username>q</username>
<host href="/ovirt-engine/api/hosts/91349e5e-43c3-4961-b8a9-277fde79ca12" id="91349e5e-43c3-4961-b8a9-277fde79ca12" />
 </agent>
</agents>

Only then you can enable the power management in the host level by sending a PUT request to the hosts (api/hosts)

<host id="<UUID>">
<power_management>
<enabled>true</enabled>
<pm_proxies>
 	<type>dc</type> 
</pm_proxies>
</power_management>
</host>

IMO , this should be closed as NotABug

Martin ?

Comment 8 Slava 2018-07-11 18:42:07 UTC
Yes I did exactly that 


hosts/20a3a8fc-78a4-4ebe-8557-da2f6994a1d7/fenceagents

<agent>
    <type>ilo2</type>
    <order>1</order>
	<address></address>
    <username>Administrator</username>
    <password></password>
    <options>
		<option>
            <name>ssl_insecure</name>
            <value>1</value>
        </option>
		<option>
            <name>tls1.0</name>
            <value>1</value>
        </option>
    </options>
</agent>

then 

ovirt-engine/api/hosts

<host id="20a3a8fc-78a4-4ebe-8557-da2f6994a1d7">
<power_management>
<enabled>true</enabled>
<pm_proxies>
 	<type>dc</type> 
</pm_proxies>
</power_management>
</host>

GET 400

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<fault>
    <detail>Host [name, address] required for add</detail>
    <reason>Incomplete parameters</reason>
</fault>

But main reason impossible edit host page in web ui from error before.

Comment 9 Slava 2018-07-11 18:42:29 UTC
Yes I did exactly that 


hosts/20a3a8fc-78a4-4ebe-8557-da2f6994a1d7/fenceagents

<agent>
    <type>ilo2</type>
    <order>1</order>
	<address></address>
    <username>Administrator</username>
    <password></password>
    <options>
		<option>
            <name>ssl_insecure</name>
            <value>1</value>
        </option>
		<option>
            <name>tls1.0</name>
            <value>1</value>
        </option>
    </options>
</agent>

then 

ovirt-engine/api/hosts

<host id="20a3a8fc-78a4-4ebe-8557-da2f6994a1d7">
<power_management>
<enabled>true</enabled>
<pm_proxies>
 	<type>dc</type> 
</pm_proxies>
</power_management>
</host>

GET 400

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<fault>
    <detail>Host [name, address] required for add</detail>
    <reason>Incomplete parameters</reason>
</fault>

But main reason impossible edit host page in web ui from error before.

Comment 10 Eli Mesika 2018-07-12 11:09:41 UTC
I have followed BZ reproduce instructions and it is working for me as expected.

Comment 11 Eli Mesika 2018-07-16 07:59:26 UTC
Created attachment 1459063 [details]
New host dialog opened without any problem in latest 4.2

Comment 12 Slava 2018-07-16 12:43:47 UTC
Hello Eli,
Here are ui.log with error. That happening when I try edit existing host  


2018-07-16 07:41:44,960-05 ERROR [org.ovirt.engine.ui.frontend.server.gwt.OvirtRemoteLoggingService] (default task-50) [] Permutation name: 8820D472A8895322FFCA74A62B4845FF
2018-07-16 07:41:44,961-05 ERROR [org.ovirt.engine.ui.frontend.server.gwt.OvirtRemoteLoggingService] (default task-50) [] Uncaught exception: java.lang.IllegalArgumentException: Invalid value 'engine'
	at java.lang.Throwable.Throwable(Throwable.java:64) [rt.jar:1.8.0_171]
	at java.lang.Exception.Exception(Exception.java:28) [rt.jar:1.8.0_171]
	at java.lang.RuntimeException.RuntimeException(RuntimeException.java:28) [rt.jar:1.8.0_171]
	at Unknown.new aHf(webadmin-0.js)
	at org.ovirt.engine.core.common.businessentities.pm.FenceProxySourceType.forValue(FenceProxySourceType.java:46) [common.jar:]
	at org.ovirt.engine.ui.uicommonweb.models.hosts.HostModel.$setPmProxyPreferences(HostModel.java:441)
	at org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel$lambda$30$Type.onSuccess(HostListModel.java:794)
	at org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider.$getConfigFromCache(AsyncDataProvider.java:2180)
	at org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider.$getDefaultPmProxyPreferences(AsyncDataProvider.java:1833)
	at org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel.$lambda$10(HostListModel.java:777)
	at org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel$lambda$10$Type.onSuccess(HostListModel.java:777)
	at org.ovirt.engine.ui.frontend.Frontend$1.$onSuccess(Frontend.java:227) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.Frontend$1.onSuccess(Frontend.java:227) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.OperationProcessor$1.$onSuccess(OperationProcessor.java:133) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.OperationProcessor$1.onSuccess(OperationProcessor.java:133) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.GWTRPCCommunicationProvider$5$1.$onSuccess(GWTRPCCommunicationProvider.java:270) [frontend.jar:]
	at org.ovirt.engine.ui.frontend.communication.GWTRPCCommunicationProvider$5$1.onSuccess(GWTRPCCommunicationProvider.java:270) [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:233) [gwt-servlet.jar:]
	at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:409) [gwt-servlet.jar:]
	at Unknown.eval(webadmin-0.js)
	at com.google.gwt.core.client.impl.Impl.apply(Impl.java:236) [gwt-servlet.jar:]
	at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:275) [gwt-servlet.jar:]
	at Unknown.eval(webadmin-0.js)

Comment 13 Eli Mesika 2018-07-18 10:27:31 UTC
Please provide the output of the following query 


select * from vdc_options where option_name = 'FenceProxyDefaultPreferences';


Thanks

Comment 14 Slava 2018-07-18 13:39:10 UTC
engine=# select * from vdc_options where option_name = 'FenceProxyDefaultPreferences';
 option_id |         option_name          |   option_value    | version 
-----------+------------------------------+-------------------+---------
        64 | FenceProxyDefaultPreferences | engine,dc,cluster | general
(1 row)

engine=#

Comment 15 Eli Mesika 2018-07-18 16:05:07 UTC
(In reply to Slava from comment #14)
> engine=# select * from vdc_options where option_name =
> 'FenceProxyDefaultPreferences';
>  option_id |         option_name          |   option_value    | version 
> -----------+------------------------------+-------------------+---------
>         64 | FenceProxyDefaultPreferences | engine,dc,cluster | general
> (1 row)
> 
> engine=#

"engine" is not a valid value for this config key 

valid values are a comma separated string of any of the following values according to their priority for proxy host lookup  

"cluster"
"dc"
"other_dc"

However, assuming that you changed the default config settings for this key using the configuration tool, we should add validation checks that prevents such a change.

This BZ could be changed to solve this validation issue or can be closed and a new bug can be opened to solve the validation issue.

Comment 16 Martin Perina 2018-07-23 12:14:26 UTC
It got to 4.2.5.2 build, retargeting

Comment 18 Sandro Bonazzola 2018-07-31 15:31:51 UTC
This bugzilla is included in oVirt 4.2.5 release, published on July 30th 2018.

Since the problem described in this bug report should be
resolved in oVirt 4.2.5 release, it has been closed with a resolution of CURRENT RELEASE.

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