コード例 #1
0
  private Resource getPlatform(String hostname) {
    ResourceCriteria criteria = new ResourceCriteria();
    criteria.setFiltersOptional(true);
    criteria.addFilterResourceKey(hostname);
    criteria.addFilterName(hostname);
    criteria.addFilterResourceCategories(ResourceCategory.PLATFORM);
    criteria.fetchResourceType(true);
    criteria.fetchExplicitGroups(true);

    ResourceManagerLocal resourceManager = LookupUtil.getResourceManager();
    PageList<Resource> resources = resourceManager.findResourcesByCriteria(overlord, criteria);

    if (resources.isEmpty()) {
      String msg =
          "Could not find platform with hostname "
              + hostname
              + ". The value that you specify for the "
              + "host argument should match either a platform's resource name and/or its resource key.";
      throw new ResourceNotFoundException(msg);
    }

    return resources.get(0);
  }
コード例 #2
0
  @Override
  public List<Resource> getResourcesAsList(Integer... resourceIds) {
    long start = System.currentTimeMillis();

    ResourceCriteria criteria = new ResourceCriteria();
    // get all of the resources for the supplied ids
    criteria.addFilterIds(resourceIds);
    // filter out any that are not actually in inventory
    criteria.addFilterInventoryStatuses(
        new ArrayList<InventoryStatus>(InventoryStatus.getInInventorySet()));
    // get all of them, don't limit to default paging
    criteria.clearPaging();
    criteria.fetchResourceType(true);
    criteria.fetchPluginConfiguration(true);

    ResourceManagerLocal resourceManager = LookupUtil.getResourceManager();
    Subject overlord = LookupUtil.getSubjectManager().getOverlord();
    List<Resource> result = resourceManager.findResourcesByCriteria(overlord, criteria);

    if (log.isDebugEnabled()) {
      log.debug(
          "Performance: get ResourcesAsList ["
              + resourceIds
              + "], timing ("
              + (System.currentTimeMillis() - start)
              + ")ms");
    }

    // Now do some clean out of stuff the agent does not need
    // Perhaps we should limit the query above to only return relevant stuff

    for (Resource resource : result) {
      cleanoutResource(resource);
    }

    return result;
  }