Prasanna Santhanam created CLOUDSTACK-3348:
----------------------------------------------

             Summary: network creation fails if serviceCapabilityList not set 
to dedicated for LB when LB is done by VR
                 Key: CLOUDSTACK-3348
                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-3348
             Project: CloudStack
          Issue Type: Bug
      Security Level: Public (Anyone can view this level - this is the default.)
          Components: API, Network Controller
    Affects Versions: 4.2.0
            Reporter: Prasanna Santhanam
            Priority: Blocker
             Fix For: 4.2.0


Steps to reproduce
1. create a network offering from the API and enable it:
"network_offering": {
                                    "name": 'Network offering-VR services',
                                    "displaytext": 'Network offering-VR 
services',
                                    "guestiptype": 'Isolated',
                                    "supportedservices": 
'Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat',
                                    "traffictype": 'GUEST',
                                    "availability": 'Optional',
                                    "serviceProviderList": {
                                            "Dhcp": 'VirtualRouter',
                                            "Dns": 'VirtualRouter',
                                            "SourceNat": 'VirtualRouter',
                                            "PortForwarding": 'VirtualRouter',
                                            "Vpn": 'VirtualRouter',
                                            "Firewall": 'VirtualRouter',
                                            "Lb": 'VirtualRouter',
                                            "UserData": 'VirtualRouter',
                                            "StaticNat": 'VirtualRouter',
                                        },
                                    },
2. create a network from the offering
3. network creation fails with following exception
WARN  [network.lb.LoadBalancingRulesManagerImpl] (793160707@qtp-148431068-14:) 
Failed to create load balancer due to 
java.security.InvalidParameterException: The IP 192.168.2.6 is already used as 
PortForwarding rather than Lb
        at 
com.cloud.network.NetworkModelImpl.canIpUsedForNonConserveService(NetworkModelImpl.java:391)
        at 
com.cloud.network.NetworkModelImpl.checkIpForService(NetworkModelImpl.java:1473)
        at 
com.cloud.network.lb.LoadBalancingRulesManagerImpl.createPublicLoadBalancerRule(LoadBalancingRulesManagerImpl.java:1321)
        at 
com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
        at 
org.apache.cloudstack.api.command.user.loadbalancer.CreateLoadBalancerRuleCmd.create(CreateLoadBalancerRuleCmd.java:281)
        at com.cloud.api.ApiDispatcher.dispatchCreateCmd(ApiDispatcher.java:101)
        at com.cloud.api.ApiServer.queueCommand(ApiServer.java:475)
        at com.cloud.api.ApiServer.handleRequest(ApiServer.java:371)
        at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:304)
        at com.cloud.api.ApiServlet.doGet(ApiServlet.java:66)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
        at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
        at 
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
        at 
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
        at 
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
ERROR [cloud.api.ApiServer] (793160707@qtp-148431068-14:) unhandled exception 
executing api command: createLoadBalancerRule
com.cloud.utils.exception.CloudRuntimeException: Failed to create load balancer 
rule: SSH
        at 
com.cloud.network.lb.LoadBalancingRulesManagerImpl.createPublicLoadBalancerRule(LoadBalancingRulesManagerImpl.java:1350)
        at 
com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
        at 
org.apache.cloudstack.api.command.user.loadbalancer.CreateLoadBalancerRuleCmd.create(CreateLoadBalancerRuleCmd.java:281)
        at com.cloud.api.ApiDispatcher.dispatchCreateCmd(ApiDispatcher.java:101)
        at com.cloud.api.ApiServer.queueCommand(ApiServer.java:475)
        at com.cloud.api.ApiServer.handleRequest(ApiServer.java:371)
        at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:304)
        at com.cloud.api.ApiServlet.doGet(ApiServlet.java:66)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
        at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
        at 
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
        at 
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
        at 
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)


The  same scenario works from the UI since the serviceCapabilityList sets the 
VR to do dedicated LB. but the API doesn't require this. Here's the parsed 
response from the UI.

command:createNetworkOffering
response:json
sessionkey:f5u9C/lyjgqLM5sshzcYGsGCQ+o=
name:test-packaging
displayText:t
guestIpType:Isolated
lbType:publicLb
servicecapabilitylist[0].service:SourceNat
servicecapabilitylist[0].capabilitytype:SupportedSourceNatTypes
servicecapabilitylist[0].capabilityvalue:peraccount
servicecapabilitylist[1].service:lb
servicecapabilitylist[1].capabilitytype:SupportedLbIsolation
servicecapabilitylist[1].capabilityvalue:dedicated
availability:Optional
state:Creating
status:Creating
allocationstate:Creating
supportedServices:Vpn,Dhcp,Dns,Firewall,Lb,SourceNat,StaticNat,PortForwarding
specifyIpRanges:false
specifyVlan:false
isPersistent:false
conservemode:false
serviceProviderList[0].service:Vpn
serviceProviderList[0].provider:VirtualRouter
serviceProviderList[1].service:Dhcp
serviceProviderList[1].provider:VirtualRouter
serviceProviderList[2].service:Dns
serviceProviderList[2].provider:VirtualRouter
serviceProviderList[3].service:Firewall
serviceProviderList[3].provider:VirtualRouter
serviceProviderList[4].service:Lb
serviceProviderList[4].provider:VirtualRouter
serviceProviderList[5].service:SourceNat
serviceProviderList[5].provider:VirtualRouter
serviceProviderList[6].service:StaticNat
serviceProviderList[6].provider:VirtualRouter
serviceProviderList[7].service:PortForwarding
serviceProviderList[7].provider:VirtualRouter
traffictype:GUEST

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to