[Et-mgmt-commits-list] [SCM] virt-factory branch, master now at 30a9c5d518771c5002b62d43a802a797af6972b4

Scott Seago sseago at redhat.com
Wed Jun 6 23:03:07 UTC 2007


Hello,

This is an automated email from the git hooks/update script, it was
generated because a ref change was pushed to the repository.

Updating branch, master,
       via  30a9c5d518771c5002b62d43a802a797af6972b4 (commit)
       via  ddf01861c7a27b00603f42e293bd81ac7acde22c (commit)
       via  481a0b049907ab1f7b081de3a00365e7375d62fb (commit)
       via  aceaff882217ec31c28268cde1521c260b638903 (commit)
       via  a2b30ccc857bab2f3e7bb5a15066b0acdf63af88 (commit)
       via  f961f801e21ac05ea2163974f0895888ed3eb0e1 (commit)
       via  709e059d236e0bd8335410474441cfe16a886b56 (commit)
       via  c849c727ede06b3030e5ff557f561a6a5b5426cb (commit)
       via  0fd1acd6accd0e13705c28895704c40cbd095193 (commit)
      from  08aaf946c23e17bb6131f56cdd169f833d9a3c4f (commit)

- Log -----------------------------------------------------------------
commit 30a9c5d518771c5002b62d43a802a797af6972b4
Merge: ddf0186... 08aaf94...
Author: Scott Seago <sseago at redhat.com>
Date:   Wed Jun 6 19:01:22 2007 -0400

    Merge with git+ssh://g-sseago@et.redhat.com/git/virt-factory

commit ddf01861c7a27b00603f42e293bd81ac7acde22c
Author: Scott Seago <sseago at redhat.com>
Date:   Wed Jun 6 19:00:55 2007 -0400

    final changes for upgrades.

commit 481a0b049907ab1f7b081de3a00365e7375d62fb
Merge: aceaff8... 032bb9f...
Author: Scott Seago <sseago at redhat.com>
Date:   Wed Jun 6 16:02:46 2007 -0400

    Merge with git+ssh://g-sseago@et.redhat.com/git/virt-factory

commit aceaff882217ec31c28268cde1521c260b638903
Author: Scott Seago <sseago at redhat.com>
Date:   Wed Jun 6 16:02:31 2007 -0400

    initial upgrade schema

commit a2b30ccc857bab2f3e7bb5a15066b0acdf63af88
Merge: f961f80... 8bf3c44...
Author: Scott Seago <sseago at redhat.com>
Date:   Wed Jun 6 14:11:17 2007 -0400

    Merge with git+ssh://g-sseago@et.redhat.com/git/virt-factory

commit f961f801e21ac05ea2163974f0895888ed3eb0e1
Merge: 709e059... 38c41af...
Author: Scott Seago <sseago at redhat.com>
Date:   Wed Jun 6 12:43:21 2007 -0400

    Merge with git+ssh://g-sseago@et.redhat.com/git/virt-factory

commit 709e059d236e0bd8335410474441cfe16a886b56
Author: Scott Seago <sseago at redhat.com>
Date:   Wed Jun 6 12:43:06 2007 -0400

    most of the changes to get upgrade bits working with vf_create_db -- more
    coming

commit c849c727ede06b3030e5ff557f561a6a5b5426cb
Merge: 0fd1acd... b6d0b8a...
Author: Scott Seago <sseago at redhat.com>
Date:   Tue Jun 5 23:24:37 2007 -0400

    Merge with git+ssh://g-sseago@et.redhat.com/git/virt-factory

commit 0fd1acd6accd0e13705c28895704c40cbd095193
Author: Scott Seago <sseago at redhat.com>
Date:   Tue Jun 5 16:54:09 2007 -0400

    removed old upgrade file
-----------------------------------------------------------------------

Diffstat:
 service/db/schema/upgrade/0001.py               |  171 +++++++++++++++++++++++
 service/db/schema/upgrade/bootstrap-upgrade.sql |   17 ---
 service/db/schema/upgrade/upgrades.conf         |    4 +-
 service/db/vf_create_db                         |    9 +-
 service/db_upgrade/db_upgrade.py                |  131 +++++++++++++-----
 service/scripts/vf_import                       |    3 +-
 service/server/db.py                            |   18 ++-
 service/setup.py                                |    4 +
 service/virt-factory-server.spec                |    3 +
 9 files changed, 295 insertions(+), 65 deletions(-)

diff --git a/service/db/schema/upgrade/0001.py b/service/db/schema/upgrade/0001.py
new file mode 100644
index 0000000..6641c38
--- /dev/null
+++ b/service/db/schema/upgrade/0001.py
@@ -0,0 +1,171 @@
+from sqlalchemy import *
+from migrate import *
+from migrate.changeset import *
+
+from datetime import datetime
+
+meta = BoundMetaData(migrate_engine)
+tables = []
+
+tables.append(Table('users', meta,
+    Column('id', Integer, Sequence('userid'), primary_key=True),
+    Column('username', String(255), nullable=False, unique=True),
+    Column('password', String(255), nullable=False),
+    Column('first', String(255)),
+    Column('middle', String(255)),
+    Column('last', String(255)),
+    Column('description', String(255)),
+    Column('email', String(255)),
+    useexisting=True,
+))
+      
+tables.append(Table('distributions', meta,
+    Column('id', Integer, Sequence('distid'), primary_key=True),
+    Column('kernel', String(255)),
+    Column('initrd', String(255)),
+    Column('options', String(255)),
+    Column('kickstart', String(255)),
+    Column('name', String(255), unique=True),
+    Column('architecture', Integer),
+    Column('kernel_options', String(255)),
+    Column('kickstart_metadata', String(255)),
+    useexisting=True,
+))
+
+tables.append(Table('profiles', meta,
+    Column('id', Integer, Sequence('profileid'), primary_key=True),
+    Column('name', String(255), unique=True),
+    Column('version', String(255)),
+    Column('distribution_id',
+        Integer, 
+        ForeignKey('distributions.id', ondelete="cascade"), 
+        nullable=False),
+    Column('virt_storage_size', Integer),
+    Column('virt_ram', Integer),
+    Column('kickstart_metadata', String(255)),
+    Column('kernel_options', String(255)),
+    Column('valid_targets', Integer),
+    Column('is_container', Integer),
+    Column('puppet_classes', TEXT),
+    useexisting=True,
+))
+
+tables.append(Table('machines', meta,
+    Column('id', Integer, Sequence('machineid'), primary_key=True),
+    Column('hostname', String(255)),
+    Column('ip_address', String(255)),
+    Column('registration_token', String(255)),
+    Column('architecture', Integer),
+    Column('processor_speed', Integer),
+    Column('processor_count', Integer),
+    Column('memory', Integer),
+    Column('kernel_options', String(255)),
+    Column('kickstart_metadata', String(255)),
+    Column('list_group', String(255)),
+    Column('mac_address', String(255)),
+    Column('is_container', Integer),
+    Column('profile_id',
+        Integer,
+        ForeignKey('profiles.id', ondelete="cascade"), 
+        nullable=False),
+    Column('puppet_node_diff', TEXT),
+    Column('netboot_enabled', Integer),
+    Column('is_locked', Integer),
+    useexisting=True,
+))
+ 
+tables.append(Table('deployments', meta,
+    Column('id', Integer, Sequence('deploymentid'), primary_key=True),
+    Column('hostname', String(255)),
+    Column('ip_address', String(255)),
+    Column('registration_token', String(255)),
+    Column('mac_address', String(255)),
+    Column('machine_id',
+        Integer, 
+        ForeignKey('machines.id', ondelete="cascade"),
+        nullable=False),
+    Column('profile_id',
+        Integer,
+        ForeignKey('profiles.id', ondelete="cascade"),
+        nullable=False),
+    Column('state', Integer),
+    Column('display_name', String(255)),
+    Column('puppet_node_diff', TEXT),
+    Column('netboot_enabled', Integer),
+    Column('is_locked', Integer),
+    useexisting=True,
+))
+
+tables.append(Table('regtokens', meta,
+    Column('id', Integer, Sequence('regtokenid'), primary_key=True),
+    Column('token', String(255)),
+    Column('profile_id', Integer, ForeignKey('profiles.id')),
+    Column('uses_remaining', Integer),
+    useexisting=True,
+))
+
+tables.append(Table('sessions', meta,
+    Column('id', Integer, Sequence('ssnid'), primary_key=True),
+    Column('session_token', String(255), nullable=False, unique=True),
+    Column('user_id', 
+        Integer, 
+        ForeignKey('users.id', ondelete="cascade"), 
+        nullable=False),
+    Column('session_timestamp',
+        DateTime, 
+        nullable=False,
+        default=datetime.utcnow()),
+    useexisting=True,
+))
+
+tables.append(Table('tasks', meta, 
+    Column('id', Integer, Sequence('taskid'), primary_key=True),
+    Column('user_id',
+        Integer,
+        ForeignKey('users.id', ondelete="cascade"), 
+        nullable=False),
+    Column('action_type', Integer, nullable=False),
+    Column('machine_id',
+        Integer, 
+        ForeignKey('machines.id', ondelete="cascade"), 
+        nullable=False),
+    Column('deployment_id', 
+        Integer, 
+        ForeignKey('deployments.id', ondelete="cascade"), 
+        nullable=False),
+    Column('state', Integer, nullable=False),
+    Column('time',
+        DateTime, 
+        nullable=False,
+        default=datetime.utcnow()),
+    useexisting=True,
+))
+
+tables.append(Table('events', meta,
+          Column('id', Integer, Sequence('eventid'), primary_key=True),
+          Column('time', Integer, nullable=False),
+          Column('user_id',
+                 Integer, 
+                 ForeignKey('users.id', ondelete="cascade"), 
+                 nullable=False),
+          Column('machine_id', Integer, ForeignKey('machines.id')),
+          Column('deployment_id', Integer, ForeignKey('deployments.id')),
+          Column('profile_id', Integer, ForeignKey('profiles.id')),
+          Column('severity', Integer, nullable=False),
+          Column('category', String(255), nullable=False),
+          Column('action', String(255), nullable=False),
+          Column('user_comment', String(255)),
+    useexisting=True,
+))
+
+def upgrade():
+    for t in tables:
+        t.create(checkfirst=True)
+    
+
+def downgrade():
+    mylist = list(tables)
+    mylist.reverse()
+    for t in mylist:
+        t.drop(checkfirst=True)
+    
diff --git a/service/db/schema/upgrade/bootstrap-upgrade.sql b/service/db/schema/upgrade/bootstrap-upgrade.sql
deleted file mode 100644
index a438f20..0000000
--- a/service/db/schema/upgrade/bootstrap-upgrade.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-CREATE TABLE schema_versions (
-  id                  INTEGER PRIMARY KEY,
-  version             INTEGER,
-  git_tag             VARCHAR(100),
-  install_timestamp   REAL NOT NULL,
-  status              VARCHAR(20) NOT NULL,
-  notes               VARCHAR(4000)
-);
-
-create table upgrade_log_messages (
-  id                  INTEGER PRIMARY KEY,
-  action              VARCHAR(50),
-  message_type        VARCHAR(50), --info, warning, error
-  message_timestamp   REAL NOT NULL,
-  message             VARCHAR(4000)
-);
-
diff --git a/service/db/schema/upgrade/upgrades.conf b/service/db/schema/upgrade/upgrades.conf
index d31b7ae..052d8b8 100644
--- a/service/db/schema/upgrade/upgrades.conf
+++ b/service/db/schema/upgrade/upgrades.conf
@@ -1,3 +1,3 @@
 [upgrade.0001]
-notes=Initial upgrade creates the required tables for the upgrade infrastructure
-files=bootstrap-upgrade.sql
+notes=Initial schema creation
+files=0001.py
diff --git a/service/db/vf_create_db b/service/db/vf_create_db
index 0acba30..4a4d03b 100755
--- a/service/db/vf_create_db
+++ b/service/db/vf_create_db
@@ -5,6 +5,7 @@ import random
 import sys
 import distutils.sysconfig
 import os
+import shutil
 
 sys.path.append("%s/virt-factory" % distutils.sysconfig.get_python_lib())
 from server import db as vfdb
@@ -38,6 +39,8 @@ CREATE_SCHEMA_SQL = """
     GRANT ALL ON DATABASE %(DATABASE)s TO %(username)s;
 """
 
+MIGRATE_REPOSITORY = "/var/lib/virt-factory/db/migrate_repository"
+
 def mkpasswd():
     """
     Generates a random password using /dev/urandom and saves it in PW_FILE,
@@ -56,6 +59,8 @@ def createdb(drop=True):
     # FIXME: error handling
     if drop:
        subprocess.call(["/usr/bin/dropdb",DATABASE])
+       if os.path.exists(MIGRATE_REPOSITORY):
+           shutil.rmtree(MIGRATE_REPOSITORY)
     subprocess.call(["/usr/bin/createdb",DATABASE])
 
 def setupdb(username,password):
@@ -98,6 +103,7 @@ def populatedb():
     pwf.close()
     connstr = "postgres://%(user)s:%(pass)s at localhost/virtfactory" 
     connvars = { "user": USERNAME, "pass" : pw }
+    
  
     database = vfdb.Database(connstr % connvars)
     # database.drop() -- don't do this, user might run by accident
@@ -223,8 +229,7 @@ if __name__ == "__main__":
        populatedb()
 
        print "- initializing upgrade path"
-       # FIXME -- commenting this out until this code can run with the postgres acct
-       # initialize_upgrade_path()
+       initialize_upgrade_path()
 
        print "- dB setup complete"
        # the existance of this file keeps the db script from running again the next
diff --git a/service/db_upgrade/db_upgrade.py b/service/db_upgrade/db_upgrade.py
index 559c7ba..e56ead6 100644
--- a/service/db_upgrade/db_upgrade.py
+++ b/service/db_upgrade/db_upgrade.py
@@ -20,18 +20,27 @@ import ConfigParser
 from codes import *
 import config_data
 
-import re, sys
+import os, re, sys
 from subprocess import *
 
 from server import logger
-logger.logfilepath = "/var/lib/virt-factory/vf_upgrade_db.log"
 
 import shutil
 import string
 
 MIGRATE = "/usr/bin/migrate"
 UPGRADE_DIR = "/usr/share/virt-factory/db_schema/upgrade/"
-REPOSITORY = "/var/lib/virt-factory/migrate_repository"
+REPOSITORY = "/var/lib/virt-factory/db/migrate_repository"
+
+def interpolate_url_password(url):
+    if url is None:
+        raise SQLException(comment="no connection string specified")
+    if url.find("%(password)s") != -1:
+        pwfile = open("/etc/virt-factory/db/dbaccess")
+        read_pw = pwfile.read()
+        pwfile.close()
+        url = url % { "password" : read_pw }
+    return url
 
 class Upgrade(object):
     def __init__(self):
@@ -46,11 +55,11 @@ class Upgrade(object):
         self.config = config_result
 
     def __setup_db(self):
-        self.dbpath = self.config["databases"]["secondary"]
+        self.dbpath = interpolate_url_password(self.config["databases"]["primary"])
 
     def __init_log(self):
         # lets see what happens when we c&p the stuff from server.py 
-        log = logger.Logger()
+        log = logger.Logger("/var/log/virt-factory/db/vf_upgrade_db.log")
         self.logger = log.logger
 
     def __setup_upgrade_config(self):
@@ -63,18 +72,19 @@ class Upgrade(object):
         for section in self.upgrade_sections:
             version = int(section[8:])
             if (version != expected_version):
-                raise ValueError("error loading upgrades from upgrades.conf. Version " + str(expected_version) + " was not found.")
+                raise ValueError("error loading upgrades from upgrades.conf. Version " + str(expected_version) + " was not found.(" + str(version) + ")")
             files = self.upgrade_config.get(section, "files").split()
             numfiles = len(files)
             for onefile in files:
-                pymatch = re.search('.py$', filename)
+                pymatch = re.search('.py$', onefile)
                 if (pymatch and (numfiles > 1)):
                     raise ValueError("invalid upgrade files specified for version " + str(version) + "Only one script allowed for python upgrades.")
-                sqlmatch = re.search('-(\w+)-((up|down)grade).sql$', filename)
+                sqlmatch = re.search('-(\w+)-((up|down)grade).sql$', onefile)
                 if (not (pymatch or sqlmatch)):
-                    raise ValueError("invalid upgrade files specified for version " + str(version) + "script " + filename + " must be a python file or a sqlfile in the form upgradename-dbname-(up|down)grade.sql")
+                    raise ValueError("invalid upgrade files specified for version " + str(version) + "script " + onefile + " must be a python file or a sqlfile in the form upgradename-dbname-(up|down)grade.sql")
 
             self.versions[version] = section
+            expected_version += 1
 
     def get_loaded_schema_version(self):
         """
@@ -94,19 +104,61 @@ class Upgrade(object):
         """
         return self.versions.keys()[-1]
 
-    def run_upgrades(self):
+    def run_upgrades(self, version_str = None):
         """
         Apply each upgrade with a version number greater than the current schema version.
+        and less than the specified upgrade version
         """
         fs_version = self.get_installed_schema_version()
         db_version = self.get_loaded_schema_version()
-        self.commit_versions(true)
+        if (version_str):
+            new_version = int(version_str)
+            if ((new_version > fs_version) or (new_version < db_version)):
+                raise ValueError("upgrade version " + str(new_version) +
+                                 " must be between " + str(db_version) +
+                                 " and " + str(fs_version))
+        else:
+            new_version = fs_version
 
-        if (fs_version > db_version):
-            print "upgrading to version ", fs_version
-            output = self.migrate_cmd("upgrade", [self.dbpath, REPOSITORY, version])
+        if (new_version > db_version):
+            print "upgrading to version ", new_version
 
-    def commit_versions(self, test_first):
+        repo_version = self.get_repository_schema_version()
+        for version in self.versions.keys():
+            if (version > new_version):
+                break
+            if (version > repo_version):
+                print "testing/loading version ", version
+                files = self.upgrade_config.get(self.versions[version], "files").split()
+                for upgrade_file in files:
+                    pymatch = re.search('.py$', upgrade_file)
+                    sqlmatch = re.search('-(\w+)-((up|down)grade).sql$', upgrade_file)
+                    
+                    tmpfilename = "/tmp/migrate-" + os.path.basename(upgrade_file)
+                    shutil.copy(UPGRADE_DIR + upgrade_file, tmpfilename)
+                    if pymatch:
+                        print self.migrate_cmd("test", [tmpfilename, REPOSITORY, self.dbpath])
+                        print self.migrate_cmd("commit", [tmpfilename, REPOSITORY, str(version)])
+                    elif sqlmatch:
+                        print self.migrate_cmd("commit", [tmpfilename, REPOSITORY, sqlmatch.group(1), sqlmatch.group(2), str(version)])
+
+            if (version > db_version):
+                print self.migrate_cmd("upgrade", [self.dbpath, REPOSITORY, str(version)])
+
+    def run_downgrades(self, version):
+        """
+        Downgrade the database to the specified version
+        """
+        db_version = self.get_loaded_schema_version()
+        new_version = int(version)
+        if ((new_version > db_version) or (new_version < 0)):
+            raise ValueError("downgrade version " + str(new_version) +
+                             " must be between 0 and " + str(db_version))
+        if (new_version < db_version):
+            print "downgrading to version ", new_version
+            print self.migrate_cmd("downgrade", [self.dbpath, REPOSITORY, str(new_version)])
+
+    def commit_versions(self):
         fs_version = self.get_installed_schema_version()
         repo_version = self.get_repository_schema_version()
 
@@ -115,17 +167,15 @@ class Upgrade(object):
                 print "testing/loading version ", version
                 files = self.upgrade_config.get(self.versions[version], "files").split()
                 for upgrade_file in files:
-                    pymatch = re.search('.py$', filename)
-                    sqlmatch = re.search('-(\w+)-((up|down)grade).sql$', filename)
+                    pymatch = re.search('.py$', upgrade_file)
+                    sqlmatch = re.search('-(\w+)-((up|down)grade).sql$', upgrade_file)
                     
-                    tmpfilename = "/tmp/migrate-" + os.path.basename(filename)
-                    shutil.copy(filename, tmpfilename)
+                    tmpfilename = "/tmp/migrate-" + os.path.basename(upgrade_file)
+                    shutil.copy(UPGRADE_DIR + upgrade_file, tmpfilename)
                     if pymatch:
-                        if test_first:
-                            output = self.migrate_cmd("test", [tmpfilename, REPOSITORY, self.dbpath])
-                        output = self.migrate_cmd("commit", [tmpfilename, REPOSITORY, version])
+                        print self.migrate_cmd("commit", [tmpfilename, REPOSITORY, str(version)])
                     elif sqlmatch:
-                        output = self.migrate_cmd("commit", [tmpfilename, REPOSITORY, sqlmatch.group(1), sqlmatch.group(2), version])
+                        print self.migrate_cmd("commit", [tmpfilename, REPOSITORY, sqlmatch.group(1), sqlmatch.group(2), str(version)])
 
     def initialize_schema_version(self):
         """
@@ -134,11 +184,11 @@ class Upgrade(object):
         """
 
         # create a new repository
-        self.migrate_cmd("create", [REPOSITORY, "virt-factory repository"])
+        print self.migrate_cmd("create", [REPOSITORY, "virt-factory repository"])
         # add upgrade scripts to repo
-        self.commit_versions(false)
+        self.commit_versions()
         # add the database
-        self.migrate_cmd("version_control", [self.dbpath, REPOSITORY, str(self.get_loaded_schema_version())])
+        print self.migrate_cmd("version_control", [self.dbpath, REPOSITORY, str(self.get_installed_schema_version())])
 
     def migrate_cmd(self, command, args):
         """
@@ -147,19 +197,18 @@ class Upgrade(object):
         sent to stdout), log the error output and throw an exception
         """
         cmdline = [MIGRATE, command] + args
-        self.logger.info("calling " + cmdline.join(' '))
+        self.logger.info("calling " + ' '.join(cmdline))
         
         pipe = Popen(cmdline, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
         cmd_output = pipe.stdout.read().strip()
         error_msg = pipe.stderr.read().strip()
         exitCode = pipe.wait()
-        if (len(error_msg > 0) or exitCode != 0):
-            self.logger.error("error in running " + cmdline)
+        if (exitCode != 0):
+            self.logger.error("error in running " + ' '.join(cmdline))
             self.logger.error(error_msg)
             raise Exception(error_msg)
         else:
             self.logger.info("returned " + cmd_output)
-        print cmd_output
         return cmd_output
     
 def main(argv):
@@ -174,21 +223,35 @@ def main(argv):
     parser.add_option("-i", "--initialize",
                   dest="initialize", action="store_true", default=False,
                   help="If specified, initialize the schema version field in the database and exit without attempting an upgrade.")
+    parser.add_option("-u", "--upgrade",
+                  dest="upgrade", default=None,
+                  help="Upgrade to a particular schema version")
+    parser.add_option("-d", "--downgrade",
+                  dest="downgrade",
+                  help="Downgrade to a particular schema version")
 
     (options, args) = parser.parse_args()
     upgrade = Upgrade()
+
     if (options.query):
         if (options.query in ["d", "db"]):
             print upgrade.get_loaded_schema_version()
         elif  (options.query in ["r", "repository"]):
+            # currently printting is done 
             print upgrade.get_repository_schema_version()
         elif  (options.query in ["p", "package"]):
             print upgrade.get_installed_schema_version()
-    if (options.initialize):
+    elif (options.initialize):
         upgrade.initialize_schema_version()
-    if (not (options.query or options.initialize)):
-        print "upgrading..."
-        upgrade.run_upgrades()
+    elif (options.downgrade):
+        print "downgrading to version " + options.downgrade
+        upgrade.run_downgrades(options.downgrade)
+    else:
+        if (options.upgrade):
+            print "upgrading to version " + options.upgrade
+        else:
+            print "upgrading to latest version "
+        upgrade.run_upgrades(options.upgrade)
 
 
 
diff --git a/service/scripts/vf_import b/service/scripts/vf_import
index e2ad139..f0f61d9 100755
--- a/service/scripts/vf_import
+++ b/service/scripts/vf_import
@@ -54,7 +54,6 @@ sys.path.append("%s/virt-factory" % distutils.sysconfig.get_python_lib())
 
 from server.codes import *
 from server import logger
-logger.logfilepath = "/var/log/virt-factory/vf_import.log"
 from server.modules import distribution
 from server.modules import profile
 from server.modules import provisioning
@@ -88,7 +87,7 @@ class VirtFactoryImporter:
        self.module_name = module_name
        self.module_dir = module_dir
        self.manifest = manifest
-       log = logger.Logger()
+       log = logger.Logger("/var/log/virt-factory/vf_import.log")
        self.logger = log.logger
        self.profile = parse(self.module_dir + '/' + self.module_name + "/profile.xml")
 
diff --git a/service/server/db.py b/service/server/db.py
index 6daf23d..c122775 100644
--- a/service/server/db.py
+++ b/service/server/db.py
@@ -314,6 +314,15 @@ mappers =\
 ormbindings =\
     dict([(m.class_,[c.name for c in m.local_table.columns]) for m in mappers ])
 
+def interpolate_url_password(url):
+    if url is None:
+        raise SQLException(comment="no connection string specified")
+    if url.find("%(password)s") != -1:
+        pwfile = open("/etc/virt-factory/db/dbaccess")
+        read_pw = pwfile.read()
+        pwfile.close()
+        url = url % { "password" : read_pw }
+    return url
 
 class Database:
     """
@@ -331,14 +340,7 @@ class Database:
         @type url: string 
         """
         Database.primary = self
-        if url is None:
-            raise SQLException(comment="no connection string specified")
-        if url.find("%(password)s") != -1:
-            pwfile = open("/etc/virt-factory/db/dbaccess")
-            read_pw = pwfile.read()
-            pwfile.close()
-            url = url % { "password" : read_pw }
-        global_connect(url, echo=True)
+        global_connect(interpolate_url_password(url), echo=True)
         
     def create(self):
         """
diff --git a/service/setup.py b/service/setup.py
index 4b63a64..b375399 100644
--- a/service/setup.py
+++ b/service/setup.py
@@ -19,7 +19,9 @@ if __name__ == "__main__":
         wwwpath    = "/var/www/%s" % NAME
         initpath   = "/etc/init.d/"
         logpath    = "/var/log/%s/" % NAME
+        logpathdb  = "/var/log/%s/db/" % NAME
 	settingspath = "/var/lib/%s/" % NAME
+        migraterepopath = "/var/lib/%s/db/" % NAME
 	schemapath = "/usr/share/%s/db_schema/" % NAME
 	upgradepath = schemapath + "upgrade/"
 	puppetpath = "/usr/share/%s/puppet-config/" % NAME
@@ -57,6 +59,8 @@ if __name__ == "__main__":
 			      (etcpath, ["settings"]),
 			      (etcpathdb, []),
 			      (logpath, []),
+			      (logpathdb, []),
+			      (migraterepopath, []),
 			      (upgradepath, ["db/schema/upgrade/upgrades.conf"] + 
 					     glob.glob("db/schema/upgrade/*.sql") + 
 					     glob.glob("db/schema/upgrade/*.py")),
diff --git a/service/virt-factory-server.spec b/service/virt-factory-server.spec
index 7890923..f890722 100644
--- a/service/virt-factory-server.spec
+++ b/service/virt-factory-server.spec
@@ -51,6 +51,7 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT
 %{_bindir}/vf_gen_profile_stub
 /etc/init.d/virt-factory-server
 %dir /var/lib/virt-factory
+%dir %attr(755,postgres,postgres) /var/lib/virt-factory/db
 %config(noreplace) /etc/virt-factory/settings
 # kickstart templaces
 %config(noreplace) /var/lib/virt-factory/kick-fc6.ks
@@ -68,6 +69,7 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT
 %dir /usr/share/virt-factory/db_schema/upgrade
 /usr/share/virt-factory/db_schema/upgrade/upgrades.conf
 /usr/share/virt-factory/db_schema/upgrade/*.sql
+/usr/share/virt-factory/db_schema/upgrade/*.py*
 %dir /usr/share/virt-factory/puppet-config
 /etc/puppet/manifests/site.pp
 /usr/share/virt-factory/puppet-config/puppetmaster
@@ -78,6 +80,7 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT
 /usr/share/virt-factory/profile-template/vf-profile-template.spec
 /usr/share/virt-factory/profile-template/init.pp
 %dir /var/log/virt-factory
+%dir %attr(755,postgres,postgres) /var/log/virt-factory/db
 %defattr(2770,postgres,postgres)
 %dir /etc/virt-factory/db
 

hooks/update
---
Git Source Code Management System
hooks/update refs/heads/master \
  08aaf946c23e17bb6131f56cdd169f833d9a3c4f \
  30a9c5d518771c5002b62d43a802a797af6972b4




More information about the Et-mgmt-commits-list mailing list