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

# Content
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 batchsystem=self._Server.getresult("site_info", "jobcon", "WHERE host_name='"+self.hostname+"'").strip()
91 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()