Bug 863105

Summary: REST API: unable to add vlan network over bond using setupnetworks
Product: Red Hat Enterprise Virtualization Manager Reporter: Avi Tal <atal>
Component: ovirt-engine-restapiAssignee: Moti Asayag <masayag>
Status: CLOSED CURRENTRELEASE QA Contact: Yaniv Kaul <ykaul>
Severity: urgent Docs Contact:
Priority: high    
Version: 3.1.0CC: dyasny, ecohen, iheim, jkt, mkolesni, mpastern, Rhev-m-bugs, sgrinber, srevivo, ykaul
Target Milestone: ---Keywords: Regression, Reopened
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard: network
Fixed In Version: SI21 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-12-04 19:59:40 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Network RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
engine log none

Description Avi Tal 2012-10-04 12:59:16 UTC
Created attachment 621633 [details]
engine log

Description of problem:
Adding Vlan over bond Failed if vlan id is 0.
vlan id 0 means untagged packet.
Having a vlan id 0 is common use case when user would like to treat vlan interface as the interface it self.

note: It was fully supported in rhevm 3.0

Problem:
try to configure vlan (id=0) over bond with setupnetworks:
SEND:
<action>
 <host_nics>
  <host_nic>
   <name>eth0</name>
   <network id="ef0930ab-3b7c-445f-bced-2e1d3f068f61"/>
   <boot_protocol>dhcp</boot_protocol>
  </host_nic>
  <host_nic>
   <name>bond0</name>
   <bonding>
    <options>
     <option name="mode" value="1"/>
    </options>
    <slaves>
     <host_nic id="a11f32cb-8931-4d46-981d-15e431467725">
     </host_nic>
     <host_nic id="aaf02414-eb9f-40dc-aca6-9c02809b56ca">
     </host_nic>
    </slaves>
   </bonding>
   <boot_protocol>none</boot_protocol>
  </host_nic>
  <host_nic>
   <name>bond0.0</name>
   <network id="ec2427d3-221e-4bc2-871b-e8cb81b47b89"/>
  </host_nic>
 </host_nics>
</action>


RECEIVE:
<fault>
    <reason>Operation Failed</reason>
    <detail>[- General command validation failure.]</detail>
</fault>


Bakcend Exception:
2012-10-04 12:38:57,198 WARN  [org.jboss.resteasy.core.SynchronousDispatcher] (ajp-/127.0.0.1:8009-10) failed to execute: org.ovirt.engine.api.restapi.resource.BaseBackendResource$WebFaultException
        at org.ovirt.engine.api.restapi.resource.BaseBackendResource.handleError(BaseBackendResource.java:219) [restapi-jaxrs.jar:]
        at org.ovirt.engine.api.restapi.resource.BackendResource.performAction(BackendResource.java:153) [restapi-jaxrs.jar:]
        at org.ovirt.engine.api.restapi.resource.BackendHostNicsResource.setupNetworks(BackendHostNicsResource.java:333) [restapi-jaxrs.jar:]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_05-icedtea]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_05-icedtea]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_05-icedtea]
        at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_05-icedtea]
        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:152) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:106) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:147) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:91) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs.jar:2.3.3.Final-redhat-1]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec.jar:1.0.1.Final-redhat-1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb.jar:]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb.jar:]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb.jar:]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:489) [jbossweb.jar:]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web.jar:7.1.2.Final-redhat-1]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb.jar:]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb.jar:]
        at org.jboss.web.rewrite.RewriteValve.invoke(RewriteValve.java:466) [jbossweb.jar:]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb.jar:]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb.jar:]
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:505) [jbossweb.jar:]
        at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:452) [jbossweb.jar:]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931) [jbossweb.jar:]
        at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_05-icedtea]

Comment 1 Michael Pasternak 2012-10-04 13:05:56 UTC
vlan id 0 is invalid, 

Normal Range IDs: 1 – 1005
Extended Range IDs: 1006 – 4094

Comment 2 Moti Asayag 2012-10-04 13:30:18 UTC
Michael, regardless the vlan tag values which are being enforced by adding/editing network, there is a bug here:

You cannot attach a vlan over bond since the list of slaves is being sent as shallow list of nics - see more information on the patch commit message.

See the suggested patch to address this:

http://gerrit.ovirt.org/8359

Comment 3 Avi Tal 2012-10-04 20:30:22 UTC
vlan id 0 is not Invalid!
It is reserved just like 1002 to 1005 (which are reserved for Token Ring and FDDI VLANs) so lets remove/not support them as well.

Well few reasons we should support these vlans:
1. if RHEL support these vlans configuration, we should.
2. vlan 0 represent untagging and commonly used by RHEV clients (i got this information from GSS back in the days. when users like to add the physical interface to VM even though it contain vlan interfaces.)
3. the formal range of 802.1Q is 0 to 4096 (including reserved IDs).
4. * this is backward compatibility, 3.0 support vlan id 0 over bond.
5. One of the main issues here is that, this exception occurred only above bonded interface but it works on regular interface.

BTW, reserved IDs aren't blocks from using in Local Area Network.

(In reply to comment #1)
> vlan id 0 is invalid, 
> 
> Normal Range IDs: 1 – 1005
> Extended Range IDs: 1006 – 4094

Comment 6 Mike Kolesnik 2012-10-11 08:43:10 UTC
The previous patch didn't address slaves by name only, this one will:
http://gerrit.ovirt.org/8490

Comment 8 Avi Tal 2012-10-24 08:16:36 UTC
verify on SI21.1 - PASS