Hi,
Take a look at the code below.
Malik
praveenesh kumar wrote:
Hello everyone.!!!
Do anyone know how to do programming on globus MDS.. I want to make a
program to get a resource information in my grids..
Can someone tell me how to work with MDS or suggest me some tutorials..??
Thank you,
Praveenesh
=============================================================================================================
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Vector;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
public class GetRuntimeProvenance {
private static final String version =
org.globus.common.Version.getVersion();
private static final String DEFAULT_CTX =
"com.sun.jndi.ldap.LdapCtxFactory";
//************************************************************************************************************************//
private String hostname = "mygrid.mds"; //PUT YOUR MDS HOS HERE
private int port = 1111; // PUT YOUR MDS PORT
HERE
//************************************************************************************************************************//
private String baseDN = "o=grid";
private int scope = SearchControls.SUBTREE_SCOPE;
private int ldapVersion = 3;
private int sizeLimit = 0;
private int timeLimit = 0;
private boolean ldapTrace = true;
// private String saslMech;
private String bindDN;
// private String password;
private String qop = "auth-conf";
private Hashtable<String, String> env;
private LdapContext ctx = null;
public static void main(String[] args) {
GetRuntimeProvenance gis=new GetRuntimeProvenance();
Hashtable<String, Vector<String>> result= gis.getinfo();
}
public Hashtable<String, Vector<String>> getinfo() {
Hashtable<String, Vector<String>> information=new
Hashtable<String, Vector<String>>();
env = new Hashtable();
String url = "ldap://" + hostname + ":" + port;
env.put("java.naming.ldap.version", String.valueOf(ldapVersion));
env.put(Context.INITIAL_CONTEXT_FACTORY, DEFAULT_CTX);
env.put(Context.PROVIDER_URL, url);
if (bindDN != null) {
env.put(Context.SECURITY_PRINCIPAL, bindDN);
}
env.put("javax.security.sasl.client.pkgs",
"org.globus.mds.gsi.jndi");
env.put("javax.security.sasl.qop", qop);
try {
ctx = new InitialLdapContext(env, null);
SearchControls constraints = new SearchControls();
constraints.setSearchScope(scope);
constraints.setCountLimit(sizeLimit);
constraints.setTimeLimit(timeLimit);
// String[] retAttribs={};
String[] retAttribs = { "MdsCpuTotal","GlueCE",
"GlueCEAccessControlBase",
"GlueCEAccessControlBaseRule",
"GlueCEHostingCluster",
"GlueCEInfo",
"GlueCEInfoApplicationDir",
"GlueCEInfoContactString",
"GlueCEInfoDataDir",
"GlueCEInfoDefaultSE",
"GlueCEInfoGatekeeperPort",
"GlueCEInfoHostName",
"GlueCEInfoJobManager",
"GlueCEInfoLRMSType",
"GlueCEInfoLRMSVersion",
"GlueCEInfoTotalCPUs",
"GlueCEName",
"GlueCEPolicy",
"GlueCEPolicyMaxCPUTime",
"GlueCEPolicyMaxRunningJobs",
"GlueCEPolicyMaxTotalJobs",
"GlueCEPolicyMaxWallClockTime",
"GlueCEPolicyPriority",
"GlueCEState",
"GlueCEStateEstimatedResponseTime",
"GlueCEStateFreeCPUs",
"GlueCEStateRunningJobs",
"GlueCEStateStatus",
"GlueCEStateTotalJobs",
"GlueCEStateWaitingJobs",
"GlueCEStateWorstResponseTime",
"GlueCETop",
"GlueCEUniqueID",
"GlueChunkKey",
"GlueCluster",
"GlueClusterName",
"GlueClusterService",
"GlueClusterTop",
"GlueClusterUniqueID",
"GlueForeignKey",
"GlueHostApplicationSoftware",
"GlueHostApplicationSoftwareRunTimeEnvironment",
"GlueHostArchitecture",
"GlueHostArchitecturePlatformType",
"GlueHostArchitectureSMPSize",
"GlueHostBenchmark",
"GlueHostBenchmarkSF00",
"GlueHostBenchmarkSI00",
"GlueHostMainMemory",
"GlueHostMainMemoryRAMSize",
"GlueHostMainMemoryVirtualSize",
"GlueHostNetworkAdapter",
"GlueHostNetworkAdapterInboundIP",
"GlueHostNetworkAdapterOutboundIP",
"GlueHostOperatingSystem",
"GlueHostOperatingSystemName",
"GlueHostOperatingSystemRelease",
"GlueHostOperatingSystemVersion",
"GlueHostProcessor",
"GlueHostProcessorClockSpeed",
"GlueHostProcessorModel",
"GlueHostProcessorVendor",
"GlueInformationService",
"GlueInformationServiceURL",
"GlueKey",
"GlueSchemaVersion",
"GlueSchemaVersionMajor",
"GlueSchemaVersionMinor",
"GlueSite",
"GlueSiteUniqueID",
"GlueSubCluster",
"GlueSubClusterLogicalCPUs",
"GlueSubClusterName",
"GlueSubClusterPhysicalCPUs",
"GlueSubClusterTmpDir",
"GlueSubClusterUniqueID",
"GlueSubClusterWNTmpDir",
"GlueTop"
};
HashMap<String, HashMap<String, String>> mdsinfo=new
HashMap<String, HashMap<String,String>>();
HashMap<String, String> clusterinfo=new HashMap<String,
String>();
constraints.setReturningAttributes(retAttribs);
// NamingEnumeration results = ctx.search(baseDN, "(&)", null);
NamingEnumeration results = ctx.search(baseDN, "(&)",
constraints);
// NamingEnumeration results = ctx.search(baseDN, "(&)", new
SearchControls());
// NamingEnumeration results =ctx.se
while (results.hasMoreElements()){
SearchResult sr=(SearchResult) results.next();
Attributes attrs=sr.getAttributes();
if (attrs.size()>0){
System.out.println("\n=======================================================");
for (NamingEnumeration ae = attrs.getAll();
ae.hasMoreElements();) {
Attribute at;
at = (Attribute) ae.next();
System.out.print("\n"+ at.getID()+"\t=\t");
Enumeration vals = at.getAll();
while (vals.hasMoreElements()) {
String value=vals.nextElement().toString();
clusterinfo.put(at.getID(), value);
System.out.print(value);
}
}
}
}
} catch (Exception e) {
System.err.println("Failed to search: " + e.getMessage());
} finally {
if (ctx != null) {
try {
ctx.close();
} catch (Exception e) {
}
}
}
return information;
}
}