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

Reply via email to