@Override
  public Iterable<VM> listNodes() {
    Builder<VM> builder = ImmutableSet.builder();
    for (Resource org1 : client.listOrgs()) {
      Org org = client.getBrowsingClient().getOrg(org1.getId());
      for (Resource vdc : org.getVDCs()) {
        VDC VDC = client.getBrowsingClient().getVDCInOrg(org.getId(), vdc.getId());
        for (Resource vApp :
            Iterables.filter(
                VDC.getResourceEntities(),
                new Predicate<Resource>() {

                  @Override
                  public boolean apply(Resource arg0) {
                    return VCloudMediaType.VAPP_XML.equals(arg0.getType());
                  }
                })) {
          builder.add(
              client
                  .getBrowsingClient()
                  .getVMInVDC(org.getId(), vdc.getId(), vApp.getId(), withPowerState()));
        }
      }
    }
    return builder.build();
  }
 @Override
 public Iterable<Network> listLocations() {
   Builder<Network> builder = ImmutableSet.builder();
   for (Resource org1 : client.listOrgs()) {
     Org org = client.getBrowsingClient().getOrg(org1.getId());
     for (Resource vdc : org.getVDCs()) {
       VDC VDC = client.getBrowsingClient().getVDCInOrg(org.getId(), vdc.getId());
       // optionally constrain locations
       if (email != null && VDC.getDescription().indexOf(email) != -1) continue;
       for (Resource network : VDC.getAvailableNetworks()) {
         builder.add(
             client
                 .getBrowsingClient()
                 .getNetworkInVDC(org.getId(), vdc.getId(), network.getId()));
       }
     }
   }
   return builder.build();
 }