Mike, absolutely right and I would usually just say "okay revert" but in this case I want to look to fix forward. This commit is an attempt to make network types more pluggable. So let me see if I can find a solution. I had trusted on the smoke tests to pick this up.
On Thu, Oct 12, 2017 at 10:50 PM, Tutkowski, Mike <mike.tutkow...@netapp.com > wrote: > It looks like this commit broke support for Basic Zones: > > a06530d (Daan: Can you look into this?) > > 4.10 > > @Override > protected boolean canHandle(NetworkOffering offering, DataCenter dc) { > // this guru handles system Direct pod based network > if (dc.getNetworkType() == NetworkType.Basic && > isMyTrafficType(offering.getTrafficType())) { > return true; > } else { > s_logger.trace("We only take care of Guest Direct Pod based > networks"); > return false; > } > } > > master > > @Override > protected boolean canHandle(NetworkOffering offering, DataCenter dc, > PhysicalNetwork physnet) { > // this guru handles system Direct pod based network > if (dc.getNetworkType() == NetworkType.Basic && > isMyTrafficType(offering.getTrafficType()) && > isMyIsolationMethod(physnet)) { > return true; > } else { > s_logger.trace("We only take care of Guest Direct Pod based > networks"); > return false; > } > } > > isMyIsolationMethod(physnet) fails (new to master): > > protected boolean isMyIsolationMethod(PhysicalNetwork > physicalNetwork) { > for (IsolationMethod m : _isolationMethods) { > if (physicalNetwork.getIsolationMethods().contains(m.toString())) > { > return true; > } > } > return false; > } > > _isolationMethods = new IsolationMethod[] { new IsolationMethod("VLAN") }; > > _isolationMethods is only of size = 1 and m.toString() returns “VLAN” > whereas physicalNetwork.getIsolationMethods() is of size = 0. This method > returns false and none of the network gurus can support the creation of a > Basic Zone. > > On 10/12/17, 7:03 AM, "Tutkowski, Mike" <mike.tutkow...@netapp.com> wrote: > > Yes, I can debug it more. I’m in the middle of some other task at the > moment, so I might not be able to get to it until later this evening. In > the meanwhile, I figured I’d send out the previous e-mail in case it might > sound like something one of our networking devs recognize. :) Thanks! > > On Oct 12, 2017, at 12:18 AM, Rohit Yadav <rohit.ya...@shapeblue.com< > mailto:rohit.ya...@shapeblue.com>> wrote: > > Hi Mike, > > > I think you can repeat the process with 4.10 and compare with master > as to which NetworkGuru is supposed to design and return you a network, > then you can do some git log tracing to find what was changed and why the > respective network guru is not returning a network. It could be > environment/config issue or change/regression in code. > > > For local/nfs storage, and all three hypervisor no major regression > was seen in last trillian smoke test runs. > > > - Rohit > > ________________________________ > From: Tutkowski, Mike <mike.tutkow...@netapp.com<mailto: > mike.tutkow...@netapp.com>> > Sent: Thursday, October 12, 2017 1:17:50 AM > To: dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org> > Subject: Re: Can't create Basic Zone with master > > Hi Rohit, > > I walked through the debugger with this and now have more info: > > The following network gurus are leveraged to create networks > successfully: > > PublicNetworkGuru > PodBasedNetworkGuru > ControlNetworkGuru > StorageNetworkGuru > > Once the zone-creation wizard reaches the “Enabling Security Group > provider” part, NetworkOrchestrator.setupNetwork is again invoked and > this time throws an exception. > > It walks through all of its network gurus and none of them returns a > pointer to a Network object. > > for (final NetworkGuru guru : networkGurus) { > final Network network = guru.design(offering, plan, > predefined, owner); > if (network == null) { > continue; > } > > Since no Network object was returned, the list of Network objects is > empty and an exception is thrown. > > Thanks, > Mike > > On 10/11/17, 1:44 AM, "Rohit Yadav" <rohit.ya...@shapeblue.com<mailto: > rohit.ya...@shapeblue.com>> wrote: > > Mike, > > > Can you re-deploy a fresh environment and see what's failing, > stepping through the workflow. The specific line it's throwing exception is > caused when there are no network (network size is 0) setup: > > > https://github.com/apache/cloudstack/blob/master/engine/ > orchestration/src/org/apache/cloudstack/engine/orchestration/ > NetworkOrchestrator.java#L715 > > > - Rohit > > ________________________________ > From: Tutkowski, Mike <mike.tutkow...@netapp.com<mailto: > mike.tutkow...@netapp.com>> > Sent: Wednesday, October 11, 2017 6:08:10 AM > To: dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org> > Subject: Can't create Basic Zone with master > > Hi, > > I was trying to run the managed-storage regression test suite on PR > 2018 (https://github.com/apache/cloudstack/pull/2081) when I realized I > couldn’t create a Basic Zone (using XenServer) with that code. > > I then took a step back from that PR and tried to create a Basic > Zone (again, with XenServer) using master (specifically f1c01a5). > > After this didn’t work, I tried with the tag 4.10.0.0 (9d2893d) and > it worked. > > As such, it appears somewhere along the way that we have introduced > code into master that has broken the use case of creating a Basic Zone (at > least with XenServer). > > It seems to be networking related. > > Here is the stack trace I’m getting: > > ERROR [c.c.a.ApiServer] (qtp708058685-279:ctx-a3ea1e98 > ctx-b18fc696) (logid:ce86e7d9) unhandled exception executing api command: > [Ljava.lang.String;@50361bfa > com.cloud.utils.exception.CloudRuntimeException: Unable to convert > network offering with specified id to network profile > at org.apache.cloudstack.engine.orchestration.NetworkOrchestrator. > setupNetwork(NetworkOrchestrator.java:715) > at org.apache.cloudstack.engine.orchestration. > NetworkOrchestrator$10.doInTransaction(NetworkOrchestrator.java:2296) > at org.apache.cloudstack.engine.orchestration. > NetworkOrchestrator$10.doInTransaction(NetworkOrchestrator.java:2250) > at com.cloud.utils.db.Transaction$2.doInTransaction( > Transaction.java:50) > at com.cloud.utils.db.Transaction.execute(Transaction.java:40) > at com.cloud.utils.db.Transaction.execute(Transaction.java:47) > at org.apache.cloudstack.engine.orchestration.NetworkOrchestrator. > createGuestNetwork(NetworkOrchestrator.java:2250) > at com.cloud.network.NetworkServiceImpl$4.doInTransaction( > NetworkServiceImpl.java:1411) > at com.cloud.network.NetworkServiceImpl$4.doInTransaction( > NetworkServiceImpl.java:1359) > at com.cloud.utils.db.Transaction.execute(Transaction.java:40) > at com.cloud.network.NetworkServiceImpl.commitNetwork( > NetworkServiceImpl.java:1359) > at com.cloud.network.NetworkServiceImpl.createGuestNetwork( > NetworkServiceImpl.java:1322) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:62) > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at org.springframework.aop.support.AopUtils. > invokeJoinpointUsingReflection(AopUtils.java:333) > at org.springframework.aop.framework.ReflectiveMethodInvocation. > invokeJoinpoint(ReflectiveMethodInvocation.java:190) > at org.springframework.aop.framework.ReflectiveMethodInvocation. > proceed(ReflectiveMethodInvocation.java:157) > at org.apache.cloudstack.network.contrail.management. > EventUtils$EventInterceptor.invoke(EventUtils.java:107) > at org.springframework.aop.framework.ReflectiveMethodInvocation. > proceed(ReflectiveMethodInvocation.java:168) > at com.cloud.event.ActionEventInterceptor.invoke( > ActionEventInterceptor.java:51) > at org.springframework.aop.framework.ReflectiveMethodInvocation. > proceed(ReflectiveMethodInvocation.java:168) > at org.springframework.aop.interceptor.ExposeInvocationInterceptor. > invoke(ExposeInvocationInterceptor.java:92) > at org.springframework.aop.framework.ReflectiveMethodInvocation. > proceed(ReflectiveMethodInvocation.java:179) > at org.springframework.aop.framework.JdkDynamicAopProxy. > invoke(JdkDynamicAopProxy.java:213) > at com.sun.proxy.$Proxy231.createGuestNetwork(Unknown Source) > at org.apache.cloudstack.api.command.admin.network. > CreateNetworkCmdByAdmin.execute(CreateNetworkCmdByAdmin.java:58) > at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:150) > at com.cloud.api.ApiServer.queueCommand(ApiServer.java:728) > at com.cloud.api.ApiServer.handleRequest(ApiServer.java:552) > at com.cloud.api.ApiServlet.processRequestInContext( > ApiServlet.java:297) > at com.cloud.api.ApiServlet$1.run(ApiServlet.java:129) > at org.apache.cloudstack.managed.context.impl. > DefaultManagedContext$1.call(DefaultManagedContext.java:56) > at org.apache.cloudstack.managed.context.impl. > DefaultManagedContext.callWithContext(DefaultManagedContext.java:103) > at org.apache.cloudstack.managed.context.impl. > DefaultManagedContext.runWithContext(DefaultManagedContext.java:53) > at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:126) > at com.cloud.api.ApiServlet.doGet(ApiServlet.java:88) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) > at org.eclipse.jetty.servlet.ServletHolder.handle( > ServletHolder.java:812) > at org.eclipse.jetty.servlet.ServletHandler$CachedChain. > doFilter(ServletHandler.java:1669) > at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter. > doFilter(WebSocketUpgradeFilter.java:189) > at org.eclipse.jetty.servlet.ServletHandler$CachedChain. > doFilter(ServletHandler.java:1652) > at org.eclipse.jetty.servlet.ServletHandler.doHandle( > ServletHandler.java:585) > at org.eclipse.jetty.server.handler.ScopedHandler.handle( > ScopedHandler.java:143) > at org.eclipse.jetty.security.SecurityHandler.handle( > SecurityHandler.java:577) > at org.eclipse.jetty.server.session.SessionHandler. > doHandle(SessionHandler.java:223) > at org.eclipse.jetty.server.handler.ContextHandler. > doHandle(ContextHandler.java:1127) > at org.eclipse.jetty.servlet.ServletHandler.doScope( > ServletHandler.java:515) > at org.eclipse.jetty.server.session.SessionHandler. > doScope(SessionHandler.java:185) > at org.eclipse.jetty.server.handler.ContextHandler. > doScope(ContextHandler.java:1061) > at org.eclipse.jetty.server.handler.ScopedHandler.handle( > ScopedHandler.java:141) > at org.eclipse.jetty.server.handler.ContextHandlerCollection. > handle(ContextHandlerCollection.java:215) > at org.eclipse.jetty.server.handler.HandlerCollection. > handle(HandlerCollection.java:110) > at org.eclipse.jetty.server.handler.HandlerWrapper.handle( > HandlerWrapper.java:97) > at org.eclipse.jetty.server.Server.handle(Server.java:499) > at org.eclipse.jetty.server.HttpChannel.handle( > HttpChannel.java:311) > at org.eclipse.jetty.server.HttpConnection.onFillable( > HttpConnection.java:258) > at org.eclipse.jetty.io.AbstractConnection$2.run( > AbstractConnection.java:544) > at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob( > QueuedThreadPool.java:635) > at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run( > QueuedThreadPool.java:555) > at java.lang.Thread.run(Thread.java:745) > > Any of our networking gurus want to take a look at this? > > Thanks! > Mike > > rohit.ya...@shapeblue.com<mailto:rohit.ya...@shapeblue.com> > www.shapeblue.com<http://www.shapeblue.com><http://www. > shapeblue.com> > 53 Chandos Place, Covent Garden, London WC2N 4HSUK > @shapeblue > > > > > > > rohit.ya...@shapeblue.com<mailto:rohit.ya...@shapeblue.com> > www.shapeblue.com<http://www.shapeblue.com> > 53 Chandos Place, Covent Garden, London WC2N 4HSUK > @shapeblue > > > > > > -- Daan