Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-26083

Jenkins jcloud pluging fails to get and assign floating ip on openstack

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      I tried today to integrate jenkins with our openstack deployment (based on Juno) and everythings went smooth until it had to add a floating ip to the instances. At that point i get null pointer exception:

      javax.servlet.ServletException: java.lang.RuntimeException: org.jclouds.compute.RunNodesException: error running 1 node group(fedora) location(RegionOne) image(39211c85-d56e-4ca1-b5b7-b36fa91c6e71) size(2) options({scriptPresent=true, securityGroups=[default], userMetadata={Name=fedora}, networks=[6c10f075-b6c1-4767-8a55-794d3d777a2d], userData=[B@10dcaa84, configDrive=false})
      Execution failures:
      
      1) ExecutionException on fedora-bc0:
      java.util.concurrent.ExecutionException: java.lang.NullPointerException
      	at shaded.com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
      	at shaded.com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
      	at shaded.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
      	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:125)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
      	at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.NullPointerException
      	at org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:100)
      	at org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:53)
      	at shaded.com.google.common.util.concurrent.Futures$1.apply(Futures.java:711)
      	at shaded.com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:849)
      	... 3 more
      
      
      1 error[s]
      Node failures:
      
      0 error[s]
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
      	at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
      	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
      	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
      	at org.eclipse.jetty.server.Server.handle(Server.java:370)
      	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
      	at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
      	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
      	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
      	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
      	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
      	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
      	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
      	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
      	at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.RuntimeException: org.jclouds.compute.RunNodesException: error running 1 node group(fedora) location(RegionOne) image(39211c85-d56e-4ca1-b5b7-b36fa91c6e71) size(2) options({scriptPresent=true, securityGroups=[default], userMetadata={Name=fedora}, networks=[6c10f075-b6c1-4767-8a55-794d3d777a2d], userData=[B@10dcaa84, configDrive=false})
      Execution failures:
      
      1) ExecutionException on fedora-bc0:
      java.util.concurrent.ExecutionException: java.lang.NullPointerException
      	at shaded.com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
      	at shaded.com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
      	at shaded.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
      	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:125)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
      	at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.NullPointerException
      	at org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:100)
      	at org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:53)
      	at shaded.com.google.common.util.concurrent.Futures$1.apply(Futures.java:711)
      	at shaded.com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:849)
      	... 3 more
      
      
      1 error[s]
      Node failures:
      
      0 error[s]
      	at shaded.com.google.common.base.Throwables.propagate(Throwables.java:160)
      	at jenkins.plugins.jclouds.compute.JCloudsSlaveTemplate.destroyBadNodesAndPropagate(JCloudsSlaveTemplate.java:347)
      	at jenkins.plugins.jclouds.compute.JCloudsSlaveTemplate.get(JCloudsSlaveTemplate.java:336)
      	at jenkins.plugins.jclouds.compute.JCloudsSlaveTemplate.provisionSlave(JCloudsSlaveTemplate.java:191)
      	at jenkins.plugins.jclouds.compute.JCloudsCloud.doProvision(JCloudsCloud.java:281)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
      	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
      	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
      	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	... 48 more
      Caused by: org.jclouds.compute.RunNodesException: error running 1 node group(fedora) location(RegionOne) image(39211c85-d56e-4ca1-b5b7-b36fa91c6e71) size(2) options({scriptPresent=true, securityGroups=[default], userMetadata={Name=fedora}, networks=[6c10f075-b6c1-4767-8a55-794d3d777a2d], userData=[B@10dcaa84, configDrive=false})
      Execution failures:
      
      1) ExecutionException on fedora-bc0:
      java.util.concurrent.ExecutionException: java.lang.NullPointerException
      	at shaded.com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
      	at shaded.com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
      	at shaded.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
      	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:125)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
      	at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.NullPointerException
      	at org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:100)
      	at org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:53)
      	at shaded.com.google.common.util.concurrent.Futures$1.apply(Futures.java:711)
      	at shaded.com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:849)
      	... 3 more
      
      
      1 error[s]
      Node failures:
      
      0 error[s]
      	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:227)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:40)
      	at com.sun.proxy.$Proxy91.createNodesInGroup(Unknown Source)
      	at jenkins.plugins.jclouds.compute.JCloudsSlaveTemplate.get(JCloudsSlaveTemplate.java:334)
      	... 60 more
      

      In Openstack Juno you have to specify the floating ip pool name, despite the fact that pool name param is optional:

      nova floating-ip-create ncit_pub
      

      I attached the settings I used for the jcloud configuration.

      Thanks

        Attachments

          Activity

          Hide
          cmluciano Christopher Luciano added a comment -

          I'm having the same problem with similar settings. Did you ever resolve this Andrew Bayer ?

          Show
          cmluciano Christopher Luciano added a comment - I'm having the same problem with similar settings. Did you ever resolve this Andrew Bayer ?
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Arun Suresh
          Path:
          jclouds-plugin/src/main/java/jenkins/plugins/jclouds/compute/JCloudsSlaveTemplate.java
          http://jenkins-ci.org/commit/jclouds-plugin/f24c07ea3934eab9f7a35f7d0d193270e4a45915
          Log:
          JENKINS-26083 Fix floating ip bug on openstack

          Previously, setting autoAssingFloatingIp option to true
          threw a NullPointerException.
          Calling the method shouldAutoAssignFloatingIp() fixes
          this problem.

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Arun Suresh Path: jclouds-plugin/src/main/java/jenkins/plugins/jclouds/compute/JCloudsSlaveTemplate.java http://jenkins-ci.org/commit/jclouds-plugin/f24c07ea3934eab9f7a35f7d0d193270e4a45915 Log: JENKINS-26083 Fix floating ip bug on openstack Previously, setting autoAssingFloatingIp option to true threw a NullPointerException. Calling the method shouldAutoAssignFloatingIp() fixes this problem.
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Fritz Elfert
          Path:
          jclouds-plugin/src/main/java/jenkins/plugins/jclouds/compute/JCloudsSlaveTemplate.java
          http://jenkins-ci.org/commit/jclouds-plugin/e7c71927368d493d594b845bf6a83921e1c6b505
          Log:
          Merge pull request #88 from arunsure/master

          JENKINS-26083 Fix floating ip bug on openstack

          Compare: https://github.com/jenkinsci/jclouds-plugin/compare/bbd95de3b65c...e7c71927368d

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Fritz Elfert Path: jclouds-plugin/src/main/java/jenkins/plugins/jclouds/compute/JCloudsSlaveTemplate.java http://jenkins-ci.org/commit/jclouds-plugin/e7c71927368d493d594b845bf6a83921e1c6b505 Log: Merge pull request #88 from arunsure/master JENKINS-26083 Fix floating ip bug on openstack Compare: https://github.com/jenkinsci/jclouds-plugin/compare/bbd95de3b65c...e7c71927368d
          Hide
          felfert Fritz Elfert added a comment - - edited

          Merged https://github.com/jenkinsci/jclouds-plugin/pull/88

          Should be fixed in git now. For those who build it themselves, please try out latest master.

          Show
          felfert Fritz Elfert added a comment - - edited Merged https://github.com/jenkinsci/jclouds-plugin/pull/88 Should be fixed in git now. For those who build it themselves, please try out latest master.
          Hide
          kleini Marcus Klein added a comment -

          I tried out the latest master. Assigning floating IPs to node works now as expected.
          But another problem appears now here. Allocating floating IPs still does not work. As stated in the initial description a floating IP pool name needs to be given to the allocate request. The allocation request without a floating IP pool name returns a 404 error from the OpenStack API:

          T 2015/12/11 14:54:32.130121 192.168.32.26:52800 -> 10.20.31.200:8774 [AP]
          POST /v2/7829521236b143d2a6778e09ba588ec0/os-floating-ips HTTP/1.1..Accept: application/json..X-Auth-Token: 8b595861d20a4439a7a2c10c40f0fa56..User-Agent
          : jclouds/1.9.1 java/1.7.0_91..Content-Type: application/json..Host: controller-test.os.open-xchange.com:8774..Connection: keep-alive..Content-Length: 2
          ....

          T 2015/12/11 14:54:32.130179 192.168.32.26:52800 -> 10.20.31.200:8774 [AP]
          {}

          I noticed that the org.jclouds.openstack.nova.v2_0.compute.options.NovaTemplateOptions.floatingIpPoolNames never gets filled when Jenkins starts up and uses the JClouds plugin for the first time. So for OpenStack this needs to initialized. The request for that looks like this:

          T 2015/12/11 15:10:04.302749 192.168.32.26:53526 -> 10.20.31.200:8774 [AP]
          GET /v2/7829521236b143d2a6778e09ba588ec0/os-floating-ip-pools HTTP/1.1..Host: controller-test.os.open-xchange.com:8774..Connection: keep-alive..User-Age
          nt: python-novaclient..Accept-Encoding: gzip, deflate..Accept: application/json..X-Auth-Token: fe5cbfa85d2f4fa6acd2e41b95952889....

          T 2015/12/11 15:10:04.672083 10.20.31.200:8774 -> 192.168.32.26:53526 [AP]
          HTTP/1.1 200 OK..Content-Type: application/json..Content-Length: 44..X-Compute-Request-Id: req-c7630be4-07f9-4abb-a88d-f9ca41872229..Date: Fri, 11 Dec 2
          015 14:10:04 GMT..Connection: keep-alive....{"floating_ip_pools": [

          {"name": "dmz-net"}

          ]}

          Another possible option is to provide a configuration text parameter where floating IP pools should be listed. Best would be to have a checkbox asking if JClouds should allocate floating IPs from all available floating IP pools - with above request to list floating IP pools - or from a configured list.

          Show
          kleini Marcus Klein added a comment - I tried out the latest master. Assigning floating IPs to node works now as expected. But another problem appears now here. Allocating floating IPs still does not work. As stated in the initial description a floating IP pool name needs to be given to the allocate request. The allocation request without a floating IP pool name returns a 404 error from the OpenStack API: T 2015/12/11 14:54:32.130121 192.168.32.26:52800 -> 10.20.31.200:8774 [AP] POST /v2/7829521236b143d2a6778e09ba588ec0/os-floating-ips HTTP/1.1..Accept: application/json..X-Auth-Token: 8b595861d20a4439a7a2c10c40f0fa56..User-Agent : jclouds/1.9.1 java/1.7.0_91..Content-Type: application/json..Host: controller-test.os.open-xchange.com:8774..Connection: keep-alive..Content-Length: 2 .... T 2015/12/11 14:54:32.130179 192.168.32.26:52800 -> 10.20.31.200:8774 [AP] {} I noticed that the org.jclouds.openstack.nova.v2_0.compute.options.NovaTemplateOptions.floatingIpPoolNames never gets filled when Jenkins starts up and uses the JClouds plugin for the first time. So for OpenStack this needs to initialized. The request for that looks like this: T 2015/12/11 15:10:04.302749 192.168.32.26:53526 -> 10.20.31.200:8774 [AP] GET /v2/7829521236b143d2a6778e09ba588ec0/os-floating-ip-pools HTTP/1.1..Host: controller-test.os.open-xchange.com:8774..Connection: keep-alive..User-Age nt: python-novaclient..Accept-Encoding: gzip, deflate..Accept: application/json..X-Auth-Token: fe5cbfa85d2f4fa6acd2e41b95952889.... T 2015/12/11 15:10:04.672083 10.20.31.200:8774 -> 192.168.32.26:53526 [AP] HTTP/1.1 200 OK..Content-Type: application/json..Content-Length: 44..X-Compute-Request-Id: req-c7630be4-07f9-4abb-a88d-f9ca41872229..Date: Fri, 11 Dec 2 015 14:10:04 GMT..Connection: keep-alive....{"floating_ip_pools": [ {"name": "dmz-net"} ]} Another possible option is to provide a configuration text parameter where floating IP pools should be listed. Best would be to have a checkbox asking if JClouds should allocate floating IPs from all available floating IP pools - with above request to list floating IP pools - or from a configured list.
          Hide
          kleini Marcus Klein added a comment -

          Same issue is described here for jclouds API: https://issues.apache.org/jira/browse/JCLOUDS-471

          Show
          kleini Marcus Klein added a comment - Same issue is described here for jclouds API: https://issues.apache.org/jira/browse/JCLOUDS-471
          Hide
          kleini Marcus Klein added a comment -

          The necessary request seems to be available in jclouds: org.jclouds.openstack.nova.v2_0.extensions.FloatingIPPoolApi

          Show
          kleini Marcus Klein added a comment - The necessary request seems to be available in jclouds: org.jclouds.openstack.nova.v2_0.extensions.FloatingIPPoolApi
          Hide
          felfert Fritz Elfert added a comment -

          Fixed in v2.9

          Show
          felfert Fritz Elfert added a comment - Fixed in v2.9

            People

            • Assignee:
              felfert Fritz Elfert
              Reporter:
              dobre2010 Razvan Dobre
            • Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: