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" <[email protected]> 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 
<[email protected]<mailto:[email protected]>> 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 
<[email protected]<mailto:[email protected]>>
    Sent: Thursday, October 12, 2017 1:17:50 AM
    To: [email protected]<mailto:[email protected]>
    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" 
<[email protected]<mailto:[email protected]>> 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 
<[email protected]<mailto:[email protected]>>
       Sent: Wednesday, October 11, 2017 6:08:10 AM
       To: [email protected]<mailto:[email protected]>
       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
    
       [email protected]<mailto:[email protected]>
       www.shapeblue.com<http://www.shapeblue.com><http://www.shapeblue.com>
       53 Chandos Place, Covent Garden, London  WC2N 4HSUK
       @shapeblue
    
    
    
    
    
    
    [email protected]<mailto:[email protected]>
    www.shapeblue.com<http://www.shapeblue.com>
    53 Chandos Place, Covent Garden, London  WC2N 4HSUK
    @shapeblue
    
    
    
    

Reply via email to