- Release Notes for Bacula 1.37.1
+ Release Notes for Bacula 2.5.28
- Bacula code: Total files = 398 Total lines = 117,151 (*.h *.c *.in)
+ Bacula code: Total files = 522 Total lines = 203,305 (*.h *.c *.in)
+This Director and Storage daemon must be upgraded at the same time,
+but they should be compatible with all 2.4.x File daemons, unless you
+use some of the new features that affect the FD. In other words, you should
+not have to upgrade all your File daemons when you upgrade. There is
+no database upgrade needed from version 2.4.x. However, the next
+BETA release will require a database upgrade.
-Major Changes:
-- Preliminary Python Event support has been added. See below for
- configuration.
- A Python script will be called at particular points or conditions
- in Bacula called Events. The currently defined Events are called:
+================== Warning !!!!!! ==========================
- StartJob, EndJob, NewVolume
+New Catalog format :
+--------------------
- Where StartJob is called before the RunBeforeJob, EndJob is called after
- RunAfterJob, and NewVolume, is called before all other "methods" of
- obtaining a new Volume name, when one is needed.
+This BETA release of Bacula uses a new catalog format. We provide a set of
+script that permit to convert a 2.4.x (version 10) catalog to 2.5.x (version
+11). If you are using already a 2.5 version, you need to drop the JobHistory
+table before upgrading your catalog (if you are using the new "long term
+statistics" module, you can upgrade this table like with the Job table, see
+upgrade_<database>_table script).
- The Python script of the same name as the Event name (but with a .py)
- is called from the Scripts Directory (a directive defined in the
- Director resource). Note, both the Filename, and the name of
- the function in the file must correspond to the Event name.
+The upgrade operation will convert an essential field of the File table, and
+this operation will take TIME and will DOUBLE THE SIZE of your
+catalog temporarily. Depending on your catalog backend, you won't be able to run jobs
+during this period. For example, a 3 million files catalog will take 2mins to
+upgrade on a normal machine. Don't forget to backup it before executing the
+script.
- Once the Python script gets control, it can have access to Bacula
- variables by doing:
- import bacula
+New configure option :
+----------------------
- The script is called with one argument, typically called j. This
- argument *must* be passed unchanged to each bacula function. The
- format of the call is slightly different for reading Bacula
- variable and for writing bacula variables. See below.
+This BETA release of Bacula 2.5.x development code uses libtool
+to generate the Bacula libraries as shared objects rather than
+being directly linked in as in prior versions. This means that
+the Bacula shared objects, must either be in a shared object
+directory known to the loader or they must be in the directory
+where the Bacula binaries are installed. It is also possible
+to explicitly specify the libraries directory on the ./configure
+line (--libdir=/full-path/dir), but this should not be necessary.
- Bacula variables can be read with:
+If you have problems with libtool or you wish to use the old
+way of building static libraries, you can do so by disabling
+libtool on the configure command line with:
- bacula.get(j, "Variable-name")
+ ./configure --disable-libtool
+==============================================================
- where j is the argument passed to the function, and Variable-name
- is on of the following:
+This release includes large number of new features and changes.
+It should be more or less compatible with previous xx.conf files
+and File daemons providing that you are not using any of the new
+features.
- JoId, Client, Pool, Storage, Catalog, MediaType, NumVols, DirName,
- Level, Type, Job, JobName, JobStatus
+Please see the New Features chapter of the new manual, which documents
+some but not all the new features (we are still working on it):
- Bacula varibles can be set using Python keyword arguments:
+http://www.bacula.org/manuals/en/concepts/concepts/New_Features.html
+
+The ChangeLog has more details.
- bacula.set(jcr=j, VolumeName="xyz")
- The two currently implemented writable "variables" are:
-
- VolumeName and JobReport
-
- Example:
-
-== File EndJob.py ===
-import bacula
-
-def EndJob(j):
- jobid = bacula.get(j, "JobId")
- client = bacula.get(j, "Client")
- bacula.set(jcr=j, JobReport="EndJob output: JobId=%d Client=%s.\n" % (jobid, client))
- return 1
-====
-
-== File NewVolume.py ===
-import bacula
-
-def NewVolume(j):
- jobid = bacula.get(j, "JobId")
- print "JobId=", jobid
- client = bacula.get(j, "Client")
- print "Client=" + client
- numvol = bacula.get(j, "NumVols");
- print "NumVols=", numvol
- bacula.set(jcr=j, JobReport="New Volume set for Job.\n")
- bacula.set(jcr=j, VolumeName="TestA-001")
- return 1
-====
-
-
-New Directives:
-- Scripts Directory = <directory> name. Defines the directory from
- which Bacula scripts will be called for events. In fact, Bacula
- appends this name to the standard Python list of search directories,
- so the script could also be in any of the Python system directories.
-- In FileSet, you can exclude backing up of hardlinks (if you have
- a lot, it can be very expensive), by using:
- HardLinks = no
- in the Options section. Patch supplied by David R Bosso. Thanks.
-
-New Commands:
-- "python restart" restarts the Python interpreter. Rather brutal, make
- sure no Python scripts are running. This permits you to change
- a Python script and get Bacula to use the new script.
-
-Items to note!!!
-- You must add --with-python=[DIR] to the configure command line
- if you want Python support. Python 2.2 and 2.3 should be automatically
- detected if in the standard place.
-- With Python 2.2 version, the link of the Director gets a few linker
- warnings due to the fact that Python pulls in some old non-secure
- libraries.
-- With Python 2.3, there are a few compiler warnings.
-
-Other Items: