ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/GridCatService.py
Revision: 1.2
Committed: Wed Sep 13 14:25:38 2006 UTC (18 years, 7 months ago) by gutsche
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_1_5_0_pre2, CRAB_1_4_2, CRAB_1_5_0_pre1, CRAB_1_4_1, CRAB_1_4_1_pre2, CRAB_1_4_1_pre1, CRAB_1_4_0, CRAB_1_4_0_pre4, CRAB_1_4_0_pre3, CRAB_1_4_0_pre2, CRAB_1_4_0_pre1, CRAB_1_3_0, CRAB_1_3_0_pre6, CRAB_1_3_0_pre5, CRAB_1_3_0_pre4, CRAB_1_3_0_pre3, HEAD_20092006
Branch point for: branch_1_4_1
Changes since 1.1: +1 -1 lines
Log Message:
changed batch system GridCat lookup for OSG to accomodate for sites in which hostname==sitename

File Contents

# User Rev Content
1 gutsche 1.1 #!/usr/bin/env python
2     """
3     _GridCatService_
4    
5     GridCat interface class that wraps the XMLRPC UI
6    
7     """
8    
9     import xmlrpclib
10     import sys
11    
12     class GridCatService:
13     """
14     _GridCatService_
15    
16     GridCat interface class generic interface class for no specific site
17    
18     """
19     def __init__(self, gridCatURL):
20     self._URL = gridCatURL
21     try:
22     self._Server = xmlrpclib.Server(self._URL)
23     except StandardError, ex:
24     #print ""
25     msg = "Unable to connect to GridCat Server:\n"
26     msg += "%s\n" % self._URL
27     msg += "Error:\n%s\n" % str(ex)
28     raise RuntimeError, msg
29    
30    
31    
32     def hostnames(self):
33     """
34     _hostnames_
35    
36     list hostnames
37     """
38     hostList = self._Server.hostnames().split()
39     return hostList
40    
41    
42     def sitenames(self):
43     """
44     _sitenames_
45    
46     return a list of sitenames
47     """
48     siteList = self._Server.sitenames().split()
49     return siteList
50    
51    
52    
53    
54    
55     class GridCatHostService(GridCatService):
56     """
57     _GridCatHostService_
58    
59     Specialisation of GridCatService that deals only with a single
60     host, provided as a FQDN on instantiation
61    
62     """
63     def __init__(self, serverURL, hostname):
64     GridCatService.__init__(self, serverURL)
65     self.hostname = hostname
66     if hostname not in self.hostnames():
67     msg = "GridCatService @ %s\n" % serverURL
68     msg += "Does not know about host: %s\n" % hostname
69     raise RuntimeError, msg
70     sitename= self._Server.getresult("sites","name","WHERE cs_gatekeeper_hostname='"+hostname+"'").strip()
71     self.sitename = sitename
72     if sitename not in self.sitenames():
73     msg = "GridCatService @ %s\n" % serverURL
74     msg += "Does not know about site: %s\n" % sitename
75     raise RuntimeError, msg
76    
77     def batchSystem(self):
78     """
79     _batchJobmanager_
80    
81     Default batch execution job manager
82     """
83     #contact = self.gatekeeper()
84     #contact += "/jobmanager-"
85     #sitename= self._Server.getresult("sites","name","WHERE cs_gatekeeper_hostname='"+self.hostname+"'").strip()
86     # "site_info", "jobcon", self.sitename).strip()
87     #return contact
88     #print "sitename ",sitename
89    
90 gutsche 1.2 batchsystem=self._Server.getresult("site_info", "jobcon", "WHERE host_name='"+self.hostname+"'").strip()
91 gutsche 1.1 return batchsystem
92    
93     class GridCatSiteService(GridCatService):
94     """
95     _GridCatSiteService_
96    
97     Specialisation of GridCatService that deals only with a single
98     site, provided as a sitename on instantiation
99    
100     """
101     def __init__(self, serverURL, sitename):
102     GridCatService.__init__(self, serverURL)
103     self.sitename = sitename
104     if sitename not in self.sitenames():
105     msg = "GridCatService @ %s\n" % serverURL
106     msg += "Does not know about site: %s\n" % sitename
107     raise RuntimeError, msg
108    
109    
110     def jobmanagers(self):
111     """
112     _jobmanagers_
113    
114     return a list of jobmanagers for this site
115     """
116     jobmgrs = self._Server.jobmanagers(self.sitename)
117     jobmgrs = jobmgrs.split(",")
118     result = []
119     for item in jobmgrs:
120     result.append(item.strip())
121     return result
122    
123     def gatekeeper(self):
124     """
125     _gatekeeper_
126    
127     return the gatekeeper hostname for the site
128     """
129     return self._Server.getsiteresult(
130     'sites', 'cs_gatekeeper_hostname' , self.sitename).strip()
131    
132    
133     #def batchSystem(self):
134     # """
135     # _batchJobmanager_
136    
137     # Default batch execution job manager
138     # """
139     #contact = self.gatekeeper()
140     #contact += "/jobmanager-"
141     #contact += self._Server.getsiteresult(
142     # "site_info", "jobcon", self.sitename).strip()
143     #return contact
144     # self.sitename=
145     # return
146    
147     def batchJobmanager(self):
148     """
149     _batchJobmanager_
150    
151     Default batch execution job manager
152     """
153     contact = self.gatekeeper()
154     contact += "/jobmanager-"
155     contact += self._Server.getsiteresult(
156     "site_info", "jobcon", self.sitename).strip()
157     return contact
158    
159     def utilJobmanager(self):
160     """
161     _utilJobmanager_
162    
163     Default util jobmanager
164    
165     """
166     contact = self.gatekeeper()
167     contact += "/jobmanager-"
168     contact += self._Server.getsiteresult(
169     "site_info", "utilcon", self.sitename).strip()
170     return contact
171    
172     def sitestatus(self):
173     """
174     _sitestatus_
175    
176     return the site status
177     """
178     return self._Server.sitestatus(self.sitename)
179    
180     def authstatus(self):
181     """
182     _authstatus_
183     """
184     return self._Server.teststatus("auth", self.sitename)
185    
186     def directories(self):
187     """
188     _directories_
189    
190     return a dictionary of directory paths for the site
191     """
192     result = {
193     "$app" : None,
194     "$data" : None,
195     "$tmp": None,
196     }
197     result["$app"] = self._Server.getsiteresult('site_info', 'appdir',
198     self.sitename).strip()
199     result["$data"] = self._Server.getsiteresult('site_info', 'datadir',
200     self.sitename).strip()
201     result["$tmp"] = self._Server.getsiteresult('site_info', 'tmpdir',
202     self.sitename).strip()
203    
204     return result
205    
206    
207     if __name__ == '__main__':
208    
209     print GridCatHostService(sys.argv[1],sys.argv[2]).batchSystem()