@Override
public Set<Resource> getResources(Request request, Predicate predicate)
throws SystemException, UnsupportedPropertyException,
NoSuchResourceException, NoSuchParentResourceException {
final OperatingSystemRequest operatingSystemRequest = getRequest(PredicateHelper
.getProperties(predicate));
Set<String> requestedIds = getRequestPropertyIds(request, predicate);
Set<OperatingSystemResponse> responses = getResources(new Command<Set<OperatingSystemResponse>>() {
@Override
public Set<OperatingSystemResponse> invoke() throws AmbariException {
return getManagementController().getStackOperatingSystems(
Collections.singleton(operatingSystemRequest));
}
});
Set<Resource> resources = new HashSet<Resource>();
for (OperatingSystemResponse response : responses) {
Resource resource = new ResourceImpl(Resource.Type.OperatingSystem);
setResourceProperty(resource, STACK_NAME_PROPERTY_ID,
operatingSystemRequest.getStackName(), requestedIds);
setResourceProperty(resource, STACK_VERSION_PROPERTY_ID,
operatingSystemRequest.getStackVersion(), requestedIds);
setResourceProperty(resource, OS_TYPE_PROPERTY_ID,
response.getOsType(), requestedIds);
resources.add(resource);