TL;DR

For management clients it is tedious and awkward to read resources / attributes in big domains (e.g. return the state of all running servers across all hosts which are part of server group "foo"). Today this requires to setup multiple composite operations *on the client* which need to be executed in a specific order. This proposal suggests a new operation which collects all relevant information *on the server* and returns only the relevant data in one go to the client.

--------------------

# Background:

In the admin console we often need to read specific attributes across a domain or across a deeply nested resource: 

- List all enabled data sources of the current profile 
- Show the port offset of all running servers across all hosts
- Get all users which belong to role Operator

Even for small domains with two server groups and a small number of servers this procedure is awkward and error prone. What makes it even more difficult is the asynchronous nature of the admin console. Soon you end up in a deeply nested callback-hell. Besides that these 'queries' lead to poor performance for big domains with tens of groups, hosts and servers. 

# Proposal / Prototype

The GitHub repository at [1] contains a more detailed description of the problem statement and a working prototype. This includes details such as how to address the requested resources, how the information is retrieved and how to handle errors. 

The proposal also includes a way to filter and reduce the resources against a list of attributes and values *before* the response is sent to the client. 

[1] https://github.com/hpehl/map-reduce 

---
Harald Pehl
JBoss by Red Hat
http://hpehl.info