> @@ -94,6 +97,12 @@ public boolean apply(FloatingIP arg0) {
>           // try to prevent multiple parallel launches from choosing the same 
> ip.
>           Collections.shuffle(unassignedIps);
>           ip = Iterables.getLast(unassignedIps);
> +         
> +         //if we are still unable to allocate IP, even after iterating 
> through all 
> +         //available, then re-throw IRE as there is nothing left we can do
> +         if(ip == null){
> +         throw new InsufficientResourcesException("Failed to allocate a 
> FloatingIP for node(" + node.getId() + ")",e);
> +         }
>        }
>        logger.debug(">> adding floatingIp(%s) to node(%s)", ip.getIp(), 
> node.getId());

Here is what I'm talking about. Is this the solution we want to go with?

      FloatingIP ip = null;
      try {
         logger.debug(">> allocating or reassigning floating ip for node(%s)", 
node.getId());      
         // throw InsufficientResourcesException on 400 from server or null if 
404 from server
         ip = floatingIpApi.create();
         if(ip == null){
                 ip = allocateIPFromFloatingIPApiList(floatingIpApi);
                 if(ip == null){
                throw new NullPointerException("Failed to allocate a FloatingIP 
for node(" + node.getId() + ")");
                 }
         }
      } catch (InsufficientResourcesException e) {
         logger.trace("<< [%s] allocating a new floating ip for node(%s)", 
e.getMessage(), node.getId());
         logger.trace(">> searching for existing, unassigned floating ip for 
node(%s)", node.getId());
         
         ip = allocateIPFromFloatingIPApiList(floatingIpApi);
         
         // if we are still unable to allocate IP, even after iterating through 
all 
         // available, then re-throw IRE as there is nothing left we can do
         if(ip == null){
            throw new InsufficientResourcesException("Failed to allocate a 
FloatingIP for node(" + node.getId() + ")",e);
         }
      }

---
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds/pull/425/files#r14415348

Reply via email to