diff options
Diffstat (limited to 'src/lib/Bcfg2/Server/Admin/Syncdb.py')
-rw-r--r-- | src/lib/Bcfg2/Server/Admin/Syncdb.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Server/Admin/Syncdb.py b/src/lib/Bcfg2/Server/Admin/Syncdb.py new file mode 100644 index 000000000..bff232b05 --- /dev/null +++ b/src/lib/Bcfg2/Server/Admin/Syncdb.py @@ -0,0 +1,36 @@ +import Bcfg2.settings +import Bcfg2.Options +import Bcfg2.Server.Admin +from Bcfg2.Server.SchemaUpdater import update_database, UpdaterError +from django.core.management import setup_environ + +class Syncdb(Bcfg2.Server.Admin.Mode): + __shorthelp__ = ("Sync the Django ORM with the configured database") + __longhelp__ = __shorthelp__ + "\n\nbcfg2-admin syncdb" + __usage__ = "bcfg2-admin syncdb" + options = {'web_configfile': Bcfg2.Options.WEB_CFILE, + 'repo': Bcfg2.Options.SERVER_REPOSITORY} + + def __call__(self, args): + import Bcfg2.Server.Admin + Bcfg2.Server.Admin.Mode.__call__(self, args) + + # Parse options + self.opts = Bcfg2.Options.OptionParser(self.options) + self.opts.parse(args) + + # we have to set up the django environment before we import + # the syncdb command, but we have to wait to set up the + # environment until we've read the config, which has to wait + # until we've parsed options. it's a windy, twisting road. + Bcfg2.settings.read_config(cfile=self.opts['web_configfile'], + repo=self.opts['repo']) + setup_environ(Bcfg2.settings) + import Bcfg2.Server.models + Bcfg2.Server.models.load_models(cfile=self.opts['configfile']) + + try: + update_database() + except UpdaterError: + print("Update failed") + raise SystemExit(-1) |