source: trunk/CHANGES @ 140

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

CHANGES changed

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