@Override
  public Region getRegion(String regionID) throws InternalException, CloudException {
    if (regionID == null || regionID.isEmpty()) {
      return null;
    }

    SearchFilter filter = new SearchFilter();
    FilterCondition equalsUUID = new FilterCondition();
    equalsUUID.setCondition(Condition.IS_EQUAL_TO);
    equalsUUID.setField("resourceUUID");
    equalsUUID.getValue().add(regionID);
    filter.getFilterConditions().add(equalsUUID);

    QueryLimit limit = new QueryLimit();
    limit.setMaxRecords(1);

    try {
      ListResult result = userService.listResources(filter, limit, ResourceType.CLUSTER);

      if (result != null && result.getList() != null && result.getList().size() > 0) {
        return createRegionFromCluster((Cluster) result.getList().get(0));
      }

    } catch (ExtilityException e) {
    }

    return null;
  }
 @Override
 public Collection<Region> listRegions() throws InternalException, CloudException {
   List<Region> regions = new java.util.ArrayList<Region>();
   try {
     List<Object> clusters = userService.listResources(null, null, ResourceType.CLUSTER).getList();
     if (clusters.size() > 0) {
       for (Object obj : clusters) {
         regions.add(createRegionFromCluster((Cluster) obj));
       }
     }
   } catch (ExtilityException e) {
     throw new CloudException(e);
   }
   return regions;
 }
 @Override
 public Collection<DataCenter> listDataCenters(String regionID)
     throws InternalException, CloudException {
   if (regionID == null || regionID.isEmpty()) {
     return null;
   }
   List<DataCenter> dataCenters = new ArrayList<DataCenter>();
   SearchFilter filter = new SearchFilter();
   FilterCondition fc = new FilterCondition();
   fc.setCondition(Condition.IS_EQUAL_TO);
   fc.setField("clusterUUID");
   fc.getValue().add(regionID);
   filter.getFilterConditions().add(fc);
   try {
     List<Object> vdcs = userService.listResources(filter, null, ResourceType.VDC).getList();
     for (Object obj : vdcs) {
       dataCenters.add(createDataCentreFromVDC((Vdc) obj));
     }
   } catch (ExtilityException e) {
     throw new CloudException(e);
   }
   return dataCenters;
 }