source: trunk1/pbs_swig/distro/CHANGES @ 120

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

distro/examples/new_rack_pbsmon.py:

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