source: trunk/CHANGES @ 143

Last change on this file since 143 was 143, checked in by bas, 18 years ago

src/PBSQuery.py:

  • Added some functions get_version() for server, get_nodes for jobs
  • Property svn:keywords set to Id
File size: 9.6 KB
Line 
1=========== Version 2.9.X
2        -  Function pbs.pbs_geterrmsg does not exits any more is
3           replaced by pbs.error():
4                errno, text = pbs.error()
5                print errno, text
6           Reported by: pk at q-leap dot com
7           Fixed by   : Bas van der Vlies
8
9        - PBSQuery.py rewrite make use of UserDict module.
10          Suggested by: Ramon Bastiaans
11          Fixed by    : Bas van der Vlies
12
13        - PBSQuery.py
14           * Added get_version() for server class, returns the version of
15             the batch server
16           * Added get_nodes() for job class, returns a list of nodes on
17             which the job is run
18
19=========== Version 2.9.2
20        - The function pbs_rescquery() did not work. Fixed it
21        - The function avail(), did not work fixed it
22        - The functions pbs_rescreserve and pbs_rescrelease did not work
23          fixed it
24
25        - Fixed a bug in new_rack_pbsmon.py. Counting of serial
26          nodes was wrong and state down has topmost priority
27
28=========== Version 2.9.0
29        - Added support for new torque build system 2.1.0
30        - Added new_rack_pbsmon.py
31          Authors: Walter de Jong & Bas van der Vlies
32
33=========== Version 2.8.2
34
35Configure has a new option:
36        --with-pbsdir=PATH
37
38If set it will use PATH specified as argument to
39find the pbs/torque libraries. If unset it will use
40some useful defaults to find the libaries.
41Suggested by: Troy Baer
42
43PBSQuery.py:
44        - If we can not make a connection with the server
45          then raise an exception and let the programmer
46          decides what to do.
47
48pbs_python.spec:
49        - It can now handle mode bits
50          Author: Martin Pels from SARA
51       
52=========== Version 2.8.0
53
54setup.py:
55        - Added /usr/lib to PBS_LIB_DIR
56
57pbs.py:
58        - Added new function "pbs.error()". This function checks if
59          an error has occured with a pbs function, eg:
60            task_id = pbs.pbs_submit(c, attrl, "A.tsk", 'NULL', 'NULL')
61            error_number, err_txt = pbs.error()
62            if error_number:
63                print error_number, err_txt
64
65          prints the following message if script A.tsk does not exists:
66            15042 (qsub) cannot access script file
67
68pbs_python.spec:
69        - to make rpm packages from the source package, initial version
70        Author: Martin Pels from SARA
71
72README:
73        - Now requires python 2.1 and higher
74        - Explain how to build DEBIAN package
75
76=========== Version 2.7.10
77
78PBSQuery.py:
79        Fixed an error. You always got all resources from eg nodes
80        even when you supplied an attribute list where you only
81        requested the 'state' of the node.
82
83        Updated the inline python documentation
84
85=========== Version 2.7.9
86
87Fixed an error the previous version was in DEBUG mode. So
88you get an lot undesired output on the screen.
89
90debian package now also generated a package with the write
91version info.
92
93=========== Version 2.7.8
94
95Setup.py:
96        Can also handle ROCKS installations + the version
97        info is now the same as pbs.py
98        Thanks to: Roy Dragseth
99
100=========== Version 2.7.7
101
102PBSQuery module:
103  It can now be used in daemon programs. The pbs_server closes
104  the connection after an certain amount of time. This is fixed,
105  before every query there is an new connection and if the query
106  is finished the connection is closed.
107 
108=========== Version 2.7.6
109
110Now setup.py can also handle old Oscar Installations.
111Thanks To: Robin Humble
112
113Fixed an print statement fix in new_interface.py:
114Thanks To: Robin Humble
115
116Made some improvements for PBSQuery module:
117        - Updated the documentation
118        - Added the has_key() function to all
119          PBSObjects. So that the behaviour is similar to
120          an dictionary
121          Suggested By: Ramon Bastiaans
122       
123=========== Version 2.7.5
124 Added PBSQuery module.  This module requires pbs.py and it a simple module
125 for querying the pbs server. The documentation is in the module. Use for
126 example ipython to read it.
127
128 Written By: Roy Dragseth
129             Bas van der Vlies
130
131 eg: ( see also examples/new_interface.py)
132
133 from PBSQuery import PBSQuery
134 p = PBSQuery()
135
136 jobs = p.getjobs()
137 for name, job in jobs.items()
138        print job
139
140=========== Version 2.7.4
141 New versions fixes an bug in function pbs.pbs_statnode().
142 Reported by: Keith Poirier
143
144 Configure support:
145 Contributed By: Yaroslav Halchenko
146
147 Debian package support:
148 Contributed By: Yaroslav Halchenko
149
150 Added Support for Debuging the interface, You must edit pbs_wrap.c
151 and search for SARA_DEBUG:
152        #define SARA_DEBUG 1
153 Implemented by: Ramon Bastiaans
154
155 examples/pbsmon.py:
156        - Fixed an error when regex fails to determine node number,
157          no status was displayed
158        - It will now display and 'j' if the node is free for the batch
159          system and a job runs on the node (SMP-systems).
160 Changed by: Bas van der Vlies
161
162 examples/rack_pbsmon.py:
163        - An pbsmon that display node info per rack
164        - Edit the rack_pbsmon.py to adjust the values. It requires
165          that hostname contains rack and node id's,
166          eg: gb-r<number>n<number>
167 Contributed by: Walter de Jong
168
169=========== Version 2.7.3
170 The name SPBS is changed to the new name TORQUE (Tera-scale Open-source
171 Resource and QUEing manager).
172
173 The interface support OPENPBS and TORQUE.
174
175=========== Version 2.7.2
176 Some minor changes to include files. Now the Scalable PBS keywords
177 are also supported ( server attribute names: node_ping_rate and
178 node_check_rate). This does not interfere with the openpbs software.
179
180 pbsmon.py could not handle an one node cluster. Fixed it.
181
182=========== Version 2.7
183 Forgot to wrap the pbs_statfree() function. So we could not free
184 allocated memory from functions that return 'struct batch_status *'
185 like pbs_statjob().
186
187 pbsmon.py can now handle 2 and 3 digit hostnames. Patch supplied by
188 Daniel Olson
189
190=========== Version 2.6.1
191 Setup.py now checks if all openpbs libraries are installed to compile the
192 package.
193
194=========== Version 2.6
195
196 Fixed a bug in the pbs python module. Forgot to map the pbs_statjob()
197 function. This bug prevented to pass 'struct attrl' variables to this
198 function. Thanks to Evelyn Shiu for reporting this bug.
199
200
201=========== Version 2.5
202 Added the OpenPbs logging functions (log.h and liblog.a). There
203 is an example in the examples directory: logpbs.py
204
205 Fixed a bug in examples/resmom_info.py used the default port for
206 pbs_resmon if getservbyname fails.
207
208 Fixed a bug in resmom code. If the user has no permissions to query
209 the pbs_mom daemon a empty string is returned. Now we check for
210 the empty string. So we do not get a python exception.
211
212 Fixed a bug in setup.py forgot the exit statement when we did not
213 find the pbs libraries.
214
215=========== Version 2.3
216 Bugfix in the pbsnodes-a.py. Forgot to import the sys module.
217
218 Removed some obsolete code.
219
220 As for now we make use of the distutils module. So the package
221 is automatically compiled and installed in proper directories, usage:
222    python setup.py install
223 This requires that the package 'distutils' must be installed. As for
224 version 1.6 and higher it is in the distribution.
225
226 Added a function that prints the pbs python interface version. So we
227 can check if we have the right interface version:
228 import pbs
229 print pbs.version()
230 
231
232=========== Version 2.2
233
234In this release we can query the pbs_mom daemon with the aid of
235resource management functions:
236   pbs.openrm()
237   pbs.closerm()
238   pbs.downrm()
239   pbs.configrm()
240   pbs.addreq()
241   pbs.allreq()
242   pbs.flushreq()
243   pbs.activereq()
244   pbs.fullresp()
245   pbs.getreq()
246
247There is also a python function:
248   pbs.get_mom_values(id, [list]):
249     id   - connection id of pbs.openrm(node-name, port-number)
250     list - Is a optional paramter. A list of resource keywords
251
252   If 'list' is not supplied then this function will get the values
253   for the standard resource keywords, eg uname, loadave, .. + 'arch'
254   depended keywords. The arch feature is only implemented for linux,
255   but it can easily be ported to other oses.
256
257   if 'list' is supplied then we only fetch values for the keywords
258   that are in the list.
259
260   The function returns a dictonary. The keys are the resource keywords.
261
262   See 'resmom_info.py' for a example of this new feature.
263
264=========== Version 2.0
265
266The previous version was a simple interface above the PBS C API LIB.  This
267interface has gone a major changes. The most noticeable change is  that
268the functions accept/return Python lists instead of C-lists.  So you can now
269use standard Python syntax for manipulating Python lists. If you are familar
270with the Python syntax then you will appreciate this new interface.
271
272NOTE:
273  This interface is NOT compatible with the old one
274
275Here are some guidelines to convert your code to the new one:
276
277The constructors for the struct has gone a major change:
278  old code:
279    temp = pbs.new_attrl();
280    attrl_p = pbs.attrlPtr(temp)
281    attrl_p.name = 'state'
282
283  new_code:
284     attr_l = pbs.new_attrl(1)   // Creates a list of attrl structs length 1
285     attr_l[0].name = 'state'
286
287
288The pbs_stat functions returns Python lists instead of C-lists. There is
289NO next field anymore:
290  old_code:
291    temp = pbs.new_attrl();
292    attrl_p = pbs.attrlPtr(temp)
293    attrl_p.this = 'NULL'
294
295    nodes = pbs.pbs_statnode(con, "", attrl_p, "NULL")
296
297    while nodes.this != 'NULL':
298      print nodes.name
299
300      node_attrl = nodes.attribs
301      while node_attrl.this != 'NULL':
302        print '\t', node_attrl.name, '=', node_attrl.value
303        node_attrl = node_attrl.next
304
305    nodes = nodes.next
306
307
308  new_code:
309    nodes = pbs.pbs_statnode(con, "", "NULL", "NULL")
310    for node in nodes:
311      print node.name
312      for attrib in node.attribs:
313        print '\t', attrib.name, '=', attrib.value
314
315Another advantage is you can use the print statement to show the
316connect of attrl and attropl classes:
317   attr_l = pbs.new_attrl(2)
318   attr_l[0].name = 'bas'
319   attr_l[0].value = 'van der Vlies'
320
321   print  attr_l[0]
322   >> (bas,,van der Vlies)
323   
324I hope these examples illustrate the changes. If you specify a wrong type
325for a function then function wil raise a Python exception.
Note: See TracBrowser for help on using the repository browser.