public ArrayList<FloatingIP> listFloatingIp() throws RegionException, NeutronException {

    Optional<? extends FloatingIPApi> floatingIPApiExtension =
        neutronApi.getFloatingIPApi(getRegionOne());

    if (floatingIPApiExtension.isPresent()) {
      FloatingIPApi floatingIPApi = floatingIPApiExtension.get();
      return Lists.newArrayList(floatingIPApi.list().concat());
    } else {
      throw new NeutronException("FloatingIp is not present");
    }
  }
 /**
  * Get all unassigned Floating IPs. To get all unassigned Floating IPs from a floating network use
  * {@link #getUnassignedFloatingIPsByNetworkUuid(String)}
  *
  * @return list of all the unassigned {@link FloatingIP} from all floating networks allocated to
  *     this tenant
  */
 private ArrayList<FloatingIP> getUnassignedFloatingIPs() {
   ArrayList<FloatingIP> availableFloatingIPs =
       Lists.newArrayList(
           Iterables.filter(
               floatingIPApi.list().concat().toList(),
               new Predicate<FloatingIP>() {
                 @Override
                 public boolean apply(FloatingIP arg0) {
                   return arg0.getPortId() == null;
                 }
               }));
   return availableFloatingIPs;
 }
 /**
  * Get all unassigned Floating IPs from the given floating network. To get all unassigned Floating
  * IPs from all floating networks use {@link #getUnassignedFloatingIPs()}
  *
  * @param networkUuid the network uuid of the floating network
  * @return list of all unassigned {@link FloatingIP} from the given floating network
  */
 private ArrayList<FloatingIP> getUnassignedFloatingIPsByNetworkUuid(final String networkUuid) {
   if (networkUuid == null || networkUuid.isEmpty()) {
     return null;
   }
   ArrayList<FloatingIP> availableFloatingIPs =
       Lists.newArrayList(
           Iterables.filter(
               floatingIPApi.list().concat().toList(),
               new Predicate<FloatingIP>() {
                 @Override
                 public boolean apply(FloatingIP arg0) {
                   return arg0.getPortId() == null
                       && arg0.getFloatingNetworkId() != null
                       && arg0.getFloatingNetworkId().equals(networkUuid);
                 }
               }));
   return availableFloatingIPs;
 }
  /**
   * Get the {@link FloatingIP} by its Floating IP Address
   *
   * @param floatingIPAddress the Floating IP Address (a.k.a public IP address)
   * @return the {@link FloatingIP} if found, null otherwise
   */
  private FloatingIP getFloatingIPByIPAddress(final String floatingIPAddress) {
    if (!isValidIP(floatingIPAddress)) {
      return null;
    }

    Iterable<FloatingIP> floatingIP =
        Iterables.filter(
            floatingIPApi.list().concat().toList(),
            new Predicate<FloatingIP>() {
              @Override
              public boolean apply(FloatingIP input) {
                return input.getFloatingIpAddress() != null
                    && input.getFloatingIpAddress().equals(floatingIPAddress);
              }
            });
    if (floatingIP.iterator().hasNext()) {
      return floatingIP.iterator().next();
    }
    return null;
  }