source: trunk/CHANGES @ 138

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

CHANGES

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