source: trunk/CHANGES @ 187

Last change on this file since 187 was 187, checked in by bas, 15 years ago

New build system for rpm package, thanks to Michel Jouvin

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