[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [hyades-dev] raserver versioning


Kim,

1. Currently, the only way to determine the version is to look at the serviceconfig.xml file. I think it is reasonable to have a feature opened to add the -version functionality.

2. Programmatically, there is a way to query the RAServer/plugins versions starting from Hyades 3.0.1. Below is a simple example for querying the "o.e.h.datacollection" version. This can also be used to query any <Option> defined inside any pluginconfig.xml file.

import org.eclipse.hyades.internal.execution.local.common.SetNVPairCommand;
import org.eclipse.hyades.internal.execution.local.control.NodeFactory;
import org.eclipse.hyades.internal.execution.local.control.Node;

public class TestPropertyListFromClient {
        public static void main(String[] args) {
                String hostname = "purple";
                int port = 10002;
                String name = "org.eclipse.hyades.datacollection"; // Include all <Option> with name this name
                String type = "version"; // Include all <Option> with this type

                if(args.length > 0) {
                        hostname = args[0];
                }

                log("Connecting to host: " + hostname);
                try {
                        Node node = NodeFactory.createNode(hostname);
                        node.connect(port);
                        log("Connected");
                        SetNVPairCommand[] values = node.getPropertyValues(name, type);
                        if(values != null) {
                                for(int i = 0; i < values.length; i++) {
                                        log("From test node");
                                        log("\tValue: " + values[i].getValue());
                                }
                        }

                }
                catch(Exception e) {
                        e.printStackTrace();
                }

                log("Test case finished");
        }

        private static void log(String str) {
                System.out.println(str);
        }
}





Before I file a feature request about this, I thought I should ask whether
there's already a solution available that I just haven't stumbled across:

1. How does a user of RAServer determine what version it is?

2. How does a client dependent on RAServer determine what version it is
talking to?

I am speaking of versioning here in the sense of 3.0 vs. 3.0.1 vs. 3.1,
etc. As a provider of software on top of the platform, I need to be able
to tell my customers (or have my client software verify) what version of
RAServer they should be running. Think of it as a support issue.

1. It does not appear that RAServer responds to something like -version.
Is there a way ask this question from the command line? In fact, the only
way I could see to determine what version is on disk was looking at the
version attribute in the serviceconfig.xml. This seems a little obscure.

2. As a plugin provider, it would be useful to determine whether or not
the RAServer I'm talking to is the version I'm compatible with. We had an
incident recently where someone inadvertently ended up using a Hyades 3.0
based workbench with a pre-3.0 RAServer. 3.0 is backward compatible, so
the old stuff all still worked, but of course anything dependent on new
functionality (like the agent extensions) did not. This was quite
mystifying for the user. We could have headed off the confusion by
catching this incompatibility during profiling launch and complaining to
the user.

Is there already a way to detect this in the workbench, using the current
(3.0(.1)) interfaces?

Thanks.

-Kim

Kim Coleman
PurifyPlus Development
IBM Rational Software, Cupertino, CA
kcoleman@xxxxxxxxxx


Regards,

Samson Wai
samwai@xxxxxxxxxx