At the moment, I have a cellar setup with just two nodes (meant for testing);
as seen in the dump below: 

  | Id                | Alias          | Host Name    | Port 
--+-------------------+----------------+--------------+----- 
x | 192.168.99.1:5702 | localhost:8182 | 192.168.99.1 | 5702 
  | 192.168.99.1:5701 | localhost:8181 | 192.168.99.1 | 5701 

I have multiple cellar nodes. I am trying to make one node as a master,
which is supposed to expose a management web panel via which I would like to
fetch stats from all the other nodes. For this purpose, I have exposed my
custom implementations of Mbeans involving my business logics. I understand
that these mbeans can be invoked using Jolokia, and I am already doing that.
So, that means, all these different nodes will have Jolokia installed, while
the master node will have Hawtio installed (such that I can connect to slave
nodes via Jolokia API through hawtio panel). 

Right now, I am manually assigning the alias for every node (which refers to
the web endpoint that it exposes via pax.web configuration). This is just a
workaround to simplify my testing procedures.

Desired Process:

I have access to the ClusterManager service via service registry. Thus, I am
able to invoke `clusterManager.listNodes()` and loop through the result in
my MBean. While looping through this, all I get is the basic node info. But,
if it is possible, I would like to parse the `etc/org.ops4j.pax.web.cfg`
file from every node and get the port number (or the value of the property
`org.osgi.service.http.port`).

While retrieving the list of nodes, I would like to get a response as:

{
    "Node 1": {
        "hostname": "192.168.0.100",
        "port": 5701,
        "webPort": "8181",
        "alias": "Data-Node-A"
        "id": "192.168.0.100:5701"
    },
    "Node 2": {
        "hostname": "192.168.0.100",
        "port": 5702,
        "webPort": "8182",
        "alias": "Data-Node-B",
        "id": "192.168.0.100:5702"
    }
}

I am trying to find a way to execute specific commands on a particular node.
For example, I want to execute a command on Node *:5702 from *:5701 such
that *:5702 returns the properties and values of a local configuration file. 

My current method is not optimal, as I am setting the alias(the web endpoint
for jolokia) of a node manually, and based on that I am retrieving my
desired info via my custom mbean. I guess, this is not the best practice.

So far, I have: 

`Set<Node> nodes = clusterManager.listNodes(); `

thus, if I loop through this set of nodes, I would like to retrieve config
settings from local configuration file from every node based on the node ID. 

Do I need to implement something specific to dosgi here? 

Or would it be something similar to the sample code of ping-pong
(https://github.com/apache/karaf-cellar/tree/master/utils/src/main/java/org/apache/karaf/cellar/utils/ping)
from apache-cellar project?

Any input on this would be very helpful.

Regards, 
Cooshal.



--
Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html

Reply via email to