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;

   }
}

Reply via email to