X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fdird.c;h=2f2092df402779f226bd43051d1820bbf2419850;hb=2af18872b7aec25d0ab4bc9342e0287bdace2151;hp=42f12216c6ad90f823168c22efdecac18e4b5037;hpb=217e5ed47147cd420ed0799a96868a561bfd6b57;p=bacula%2Fbacula diff --git a/bacula/src/dird/dird.c b/bacula/src/dird/dird.c index 42f12216c6..2f2092df40 100644 --- a/bacula/src/dird/dird.c +++ b/bacula/src/dird/dird.c @@ -37,6 +37,19 @@ #include "bacula.h" #include "dird.h" +#ifdef HAVE_PYTHON + +#undef _POSIX_C_SOURCE +#include + +#include "lib/pythonlib.h" + +/* Imported Functions */ +extern PyObject *job_getattr(PyObject *self, char *attrname); +extern int job_setattr(PyObject *self, char *attrname, PyObject *value); + +#endif /* HAVE_PYTHON */ + /* Forward referenced subroutines */ void terminate_dird(int sig); static bool check_resources(); @@ -126,6 +139,9 @@ int main (int argc, char *argv[]) bool test_config = false; char *uid = NULL; char *gid = NULL; +#ifdef HAVE_PYTHON + init_python_interpreter_args python_args; +#endif /* HAVE_PYTHON */ start_heap = sbrk(0); setlocale(LC_ALL, ""); @@ -266,15 +282,23 @@ int main (int argc, char *argv[]) FDConnectTimeout = (int)director->FDConnectTimeout; SDConnectTimeout = (int)director->SDConnectTimeout; - #if !defined(HAVE_WIN32) signal(SIGHUP, reload_config); #endif init_console_msg(working_directory); - init_python_interpreter(director->name(), director->scripts_directory, - "DirStartUp"); +#ifdef HAVE_PYTHON + python_args.progname = director->name(); + python_args.scriptdir = director->scripts_directory; + python_args.modulename = "DirStartUp"; + python_args.configfile = configfile; + python_args.workingdir = director->working_directory; + python_args.job_getattr = job_getattr; + python_args.job_setattr = job_setattr; + + init_python_interpreter(&python_args); +#endif /* HAVE_PYTHON */ set_thread_concurrency(director->MaxConcurrentJobs * 2 + 4 /* UA */ + 4 /* sched+watchdog+jobsvr+misc */); @@ -288,6 +312,8 @@ int main (int argc, char *argv[]) init_job_server(director->MaxConcurrentJobs); + dbg_add_hook(_db_print_dbg); /* used to debug B_DB connexion after fatal signal */ + // init_device_resources(); Dmsg0(200, "wait for next job\n"); @@ -507,7 +533,7 @@ void reload_config(int sig) * Hook all active jobs so that they release this table */ foreach_jcr(jcr) { - if (jcr->JobType != JT_SYSTEM) { + if (jcr->get_JobType() != JT_SYSTEM) { reload_table[table].job_count++; job_end_push(jcr, reload_job_end_cb, (void *)((long int)table)); njobs++; @@ -936,6 +962,7 @@ static bool check_catalog() db_create_storage_record(NULL, db, &sr); store->StorageId = sr.StorageId; /* set storage Id */ if (!sr.created) { /* if not created, update it */ + sr.AutoChanger = store->autochanger; db_update_storage_record(NULL, db, &sr); }