Esempio n. 1
0
    def _add_script_sql(self, path):
        basename = os.path.basename(path)
        match = self.SQL_FILENAME.match(basename)
        
        if match:
            basename = basename.replace('.sql', '')
            parts = basename.split('_')
            if len(parts) < 3:
                raise exceptions.ScriptError(
                    "Invalid SQL script name %s " % basename + \
                    "(needs to be ###_description_database_operation.sql)")
            version = parts[0]
            op = parts[-1]
            # NOTE(mriedem): check for ibm_db_sa as the database in the name
            if 'ibm_db_sa' in basename:
                if len(parts) == 6:
                    dbms = '_'.join(parts[-4: -1])
                else:
                    raise exceptions.ScriptError(
                        "Invalid ibm_db_sa SQL script name '%s'; "
                        "(needs to be "
                        "###_description_ibm_db_sa_operation.sql)" % basename)
            else:
                dbms = parts[-2]
        else:
            raise exceptions.ScriptError(
                "Invalid SQL script name %s " % basename + \
                "(needs to be ###_description_database_operation.sql)")

        # File the script into a dictionary
        self.sql.setdefault(dbms, {})[op] = script.SqlScript(path)
Esempio n. 2
0
    def run(self, engine, step):
        """Core method of Script file.
        Exectues :func:`update` or :func:`downgrade` functions

        :param engine: SQLAlchemy Engine
        :param step: Operation to run
        :type engine: string
        :type step: int
        """
        if step > 0:
            op = 'upgrade'
        elif step < 0:
            op = 'downgrade'
        else:
            raise exceptions.ScriptError("%d is not a valid step" % step)
        funcname = migrate_ops[op]
        script_func = self._func(funcname)
        try:
            #script_func(engine)
            # Yield messages out
            for message in script_func(engine):
                yield message
        except TypeError:
            warnings.warn("upgrade/downgrade functions must accept engine"
                          " parameter (since version > 0.5.4)")
            raise
Esempio n. 3
0
    def _add_script_sql(self, path):
        basename = os.path.basename(path)
        match = self.SQL_FILENAME.match(basename)
        
        if match:
            basename = basename.replace('.sql', '')
            parts = basename.split('_')
            if len(parts) < 3:
                raise exceptions.ScriptError(
                    "Invalid SQL script name %s " % basename + \
                    "(needs to be ###_description_database_operation.sql)")
            version = parts[0]
            op = parts[-1]
            dbms = parts[-2]
        else:
            raise exceptions.ScriptError(
                "Invalid SQL script name %s " % basename + \
                "(needs to be ###_description_database_operation.sql)")

        # File the script into a dictionary
        self.sql.setdefault(dbms, {})[op] = script.SqlScript(path)
Esempio n. 4
0
    def _add_script_sql(self, path):
        basename = os.path.basename(path)
        match = self.SQL_FILENAME.match(basename)

        if match:
            version, dbms, op = match.group(1), match.group(2), match.group(3)
        else:
            raise exceptions.ScriptError(
                "Invalid SQL script name %s " % basename + \
                "(needs to be ###_database_operation.sql)")

        # File the script into a dictionary
        self.sql.setdefault(dbms, {})[op] = script.SqlScript(path)
Esempio n. 5
0
 def _add_script_py(self, path):
     if self.python is not None:
         raise exceptions.ScriptError('You can only have one Python script '
             'per version, but you have: %s and %s' % (self.python, path))
     self.python = script.PythonScript(path)