[
https://issues.apache.org/jira/browse/JCLOUDS-471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14037472#comment-14037472
]
Christopher Dancy edited comment on JCLOUDS-471 at 6/19/14 4:23 PM:
--------------------------------------------------------------------
Found a possible corner case. When calling 'ComputeService.createNodesInGroup'
an NPE is thrown on the 'FloatingAPI.create()' call here:
https://github.com/jclouds/jclouds/blob/4c74b497547e42b8bdc94dbae3d4cd94ff3945d6/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/AllocateAndAddFloatingIpToNode.java
Code snippet here:
NovaTemplateOptions options =
NovaTemplateOptions.Builder.
autoAssignFloatingIp(true).
blockUntilRunning(true).
securityGroupNames(securityGroups);
Template template =
computeServiceContext.getComputeService().templateBuilder().
imageId(imageID).
hardwareId(hardwareID).
options(options).
build();
Set<NodeMetadata> groupNodes =
(Set<NodeMetadata>)computeServiceContext.getComputeService().createNodesInGroup(groupName,
count, template);
There does not seem to be a way, at least that I'm aware of, to pass in the
floating-ip-pool-name for the 'createNodesInGroup' call. I would assume that an
option inside TemplateOptions, something like
'TemplateOptions.autoAssignFloatingIpPoolName(String)', would be available but
I can't find anything. I've posted the stacktrace below of me attempting to
create 2 nodes.
Exception in thread "main" org.jclouds.compute.RunNodesException: error running
2 nodes group(dancc-testing) location(RegionOne)
image(f436ed68-722d-4918-bb34-5c0e5e7523b8) size(3)
options({securityGroupNames=[test_allow_all], configDrive=false})
Execution failures:
1) ExecutionException on dancc-testing-305:
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at
com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
at
com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
at
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:98)
at
org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:1)
at com.google.common.util.concurrent.Futures$1.apply(Futures.java:711)
at
com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:849)
... 3 more
2) ExecutionException on dancc-testing-94b:
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at
com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
at
com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
at
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:98)
at
org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:1)
at com.google.common.util.concurrent.Futures$1.apply(Futures.java:711)
at
com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:849)
... 3 more
2 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:37)
at com.sun.proxy.$Proxy58.createNodesInGroup(Unknown Source)
at
com.pega.vm.client.VMAdministratorImpl.provisionVirtualMachines(VMAdministratorImpl.java:196)
at com.pega.vm.client.Testing.main(Testing.java:29)
was (Author: [email protected]):
Found a possible corner case. When calling 'ComputeService.createNodesInGroup'
an NPE is thrown on the 'FloatingAPI.create()' call here:
https://github.com/jclouds/jclouds/blob/4c74b497547e42b8bdc94dbae3d4cd94ff3945d6/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/AllocateAndAddFloatingIpToNode.java
Code snippet here:
NovaTemplateOptions options =
NovaTemplateOptions.Builder.
autoAssignFloatingIp(true).
blockUntilRunning(true).
securityGroupNames(securityGroups);
Template template =
computeServiceContext.getComputeService().templateBuilder().
imageId(imageID).
hardwareId(hardwareID).
options(options).
build();
Set<NodeMetadata> groupNodes =
(Set<NodeMetadata>)computeServiceContext.getComputeService().createNodesInGroup(groupName,
count, template);
There does not seem to be a way, at least that I'm aware of, to pass in the
floating-ip-pool-name for the 'createNodesInGroup' call. I would assume that an
option inside TemplateOptions, something like
'TemplateOptions.autoAssignFloatingIpPoolName(String)', would be available but
I can't find anything. I've posted the stacktrace below of me attempting to
create 2 nodes.
Exception in thread "main" org.jclouds.compute.RunNodesException: error running
2 nodes group(dancc-testing) location(RegionOne)
image(f436ed68-722d-4918-bb34-5c0e5e7523b8) size(3)
options({securityGroupNames=[test_allow_all], configDrive=false})
Execution failures:
1) ExecutionException on dancc-testing-305:
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at
com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
at
com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
at
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:98)
at
org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:1)
at com.google.common.util.concurrent.Futures$1.apply(Futures.java:711)
at
com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:849)
... 3 more
2) ExecutionException on dancc-testing-94b:
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at
com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
at
com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
at
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:98)
at
org.jclouds.openstack.nova.v2_0.compute.functions.AllocateAndAddFloatingIpToNode.apply(AllocateAndAddFloatingIpToNode.java:1)
at com.google.common.util.concurrent.Futures$1.apply(Futures.java:711)
at
com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:849)
... 3 more
2 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:37)
at com.sun.proxy.$Proxy58.createNodesInGroup(Unknown Source)
at
com.pega.vm.client.VMAdministratorImpl.provisionVirtualMachines(VMAdministratorImpl.java:196)
at com.pega.vm.client.Testing.main(Testing.java:29)
> FloatingIPApi.create() does not work, pool needed
> -------------------------------------------------
>
> Key: JCLOUDS-471
> URL: https://issues.apache.org/jira/browse/JCLOUDS-471
> Project: jclouds
> Issue Type: Bug
> Components: jclouds-compute
> Affects Versions: 1.6.1
> Environment: OpenStack Havana
> [root@rdohavana ~]# nova --version
> 2.15.0
> [root@rdohavana ~]# neutron --version
> 2.3.1
> Reporter: Radek Skokan
> Assignee: Jeremy Daggett
> Priority: Minor
>
> The org.jclouds.openstack.nova.v2_0.extensions.create() method fails and
> OpenStack's nova api.log contains
> {code}
> 2014-02-16 18:29:30.605 2918 DEBUG neutronclient.client [-] RESP:{'date':
> 'Sun, 16 Feb 2014 17:29:30 GMT', 'status': '200', 'content-length': '16',
> 'content-type': 'application/json; charset=UTF-8', 'content-location':
> 'http://172.16.2.154:9696/v2.0/networks.json?router%3Aexternal=True&name=nova&fields=id'}
> {"networks": []}
> http_log_resp
> /usr/lib/python2.6/site-packages/neutronclient/common/utils.py:179
> 2014-02-16 18:29:30.606 2918 ERROR nova.api.openstack
> [req-bf3afd86-e1cb-4549-8c87-1036757a97ef 08ba127f0d6842279f9db8e8bc6977e9
> 943fc35af6c3475b9a77e55374452741] Caught error: Floating ip pool not found.
> ...
> 2014-02-16 18:29:30.606 2918 TRACE nova.api.openstack File
> "/usr/lib/python2.6/site-packages/nova/network/neutronv2/api.py", line 810,
> in _get_floating_ip_pool_id_by_name_or_id
> 2014-02-16 18:29:30.606 2918 TRACE nova.api.openstack raise
> exception.FloatingIpPoolNotFound()
> 2014-02-16 18:29:30.606 2918 TRACE nova.api.openstack FloatingIpPoolNotFound:
> Floating ip pool not found.
> 2014-02-16 18:29:30.606 2918 TRACE nova.api.openstack
> 2014-02-16 18:29:30.627 2918 INFO nova.api.openstack
> [req-bf3afd86-e1cb-4549-8c87-1036757a97ef 08ba127f0d6842279f9db8e8bc6977e9
> 943fc35af6c3475b9a77e55374452741]
> http://172.16.2.154:8774/v2/943fc35af6c3475b9a77e55374452741/os-floating-ips
> returned with HTTP 404
> 2014-02-16 18:29:30.628 2918 DEBUG nova.api.openstack.wsgi
> [req-bf3afd86-e1cb-4549-8c87-1036757a97ef 08ba127f0d6842279f9db8e8bc6977e9
> 943fc35af6c3475b9a77e55374452741] Returning 404 to user:
> FloatingIpPoolNotFound: Floating ip pool not found. __call__
> /usr/lib/python2.6/site-packages/nova/api/openstack/wsgi.py:1224
> 2014-02-16 18:29:30.629 2918 INFO nova.osapi_compute.wsgi.server
> [req-bf3afd86-e1cb-4549-8c87-1036757a97ef 08ba127f0d6842279f9db8e8bc6977e9
> 943fc35af6c3475b9a77e55374452741] 172.16.2.111 "POST
> /v2/943fc35af6c3475b9a77e55374452741/os-floating-ips HTTP/1.1" status: 404
> len: 315 time: 0.0420260
> {code}
> It is because create() provides no floating IP pool name to OpenStack, which
> is required.
> A workaround is to use allocateFromPool(String poolName)
--
This message was sent by Atlassian JIRA
(v6.2#6252)