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); }
@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; }