[ 
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)

Reply via email to