source: trunk/CHANGES @ 168

Last change on this file since 168 was 168, checked in by bas, 16 years ago

Updated the documentation

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