JCLOUDS-607: ComputeService.createNodesInGroup throws NPE on FloatingIPA...

Addresses possible returned null value from 'FloatingIPApi.create()'. If upon check we find null then throw InsufficientResourcesException. This in turn will make a second check at IP allocation by iterating through 'FloatingIPApi.list()' and grabbing an available IP. If this subsequent call fails then re-throw InsufficientResourcesException.
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);
         }
      }