Beispiel #1
0
def rollback(env, baseDir, connectConfig=None):
    if connectConfig is None:
        connectConfig = conn_config.retrieveConnectionConfigurationFor(
            env, baseDir)
        security.prompt_password_if_empty(connectConfig)

    current_release_number = common_dml.select_release_number(connectConfig)

    scripts = dir_struct.all_rollback_scripts_sorted_desc(baseDir)
    for script in scripts:
        patch_release_number = common_dml.determine_patch_applied_recently(
            connectConfig, script, current_release_number)
        if patch_release_number == current_release_number:
            patch_type = common_dml.determine_patch_type_if_already_applied(
                connectConfig, script)
            if patch_type in ('PATCH', 'BASELINE'):
                print "Applying rollback: " + script.getName()
                apply_rollback(connectConfig, script)
                common_dml.update_patch_metadata_entry(connectConfig, script,
                                                       current_release_number,
                                                       'ROLLBACK')
                continue
            elif patch_type == 'ROLLBACK':
                # do nothing
                continue
            else:
                # do nothing
                continue
    def test_rollback_scripts_reverse_order(self):
        scripts = all_rollback_scripts_sorted_desc("tests/impl")

        self.assertEqual("tests/impl/patches/2/rollback", scripts[0].getPath())
        self.assertEqual("test-d.sql", scripts[0].getName())

        self.assertEqual("tests/impl/patches/2/rollback", scripts[1].getPath())
        self.assertEqual("test-c.sql", scripts[1].getName())

        self.assertEqual("tests/impl/patches/1/rollback", scripts[2].getPath())
        self.assertEqual("test-b.sql", scripts[2].getName())

        self.assertEqual("tests/impl/patches/1/rollback", scripts[3].getPath())
        self.assertEqual("test-a.sql", scripts[3].getName())

        return
Beispiel #3
0
    def test_rollback_scripts_reverse_order(self):
        scripts = all_rollback_scripts_sorted_desc('tests/impl')

        self.assertEqual('tests/impl/patches/2/rollback', scripts[0].getPath())
        self.assertEqual('test-d.sql', scripts[0].getName())

        self.assertEqual('tests/impl/patches/2/rollback', scripts[1].getPath())
        self.assertEqual('test-c.sql', scripts[1].getName())

        self.assertEqual('tests/impl/patches/1/rollback', scripts[2].getPath())
        self.assertEqual('test-b.sql', scripts[2].getName())

        self.assertEqual('tests/impl/patches/1/rollback', scripts[3].getPath())
        self.assertEqual('test-a.sql', scripts[3].getName())

        return
Beispiel #4
0
def rollback(env, baseDir, connectConfig = None):
    if connectConfig is None:
        connectConfig = conn_config.retrieveConnectionConfigurationFor(env, baseDir)
        security.prompt_password_if_empty(connectConfig)

    current_release_number = common_dml.select_release_number(connectConfig)

    scripts = dir_struct.all_rollback_scripts_sorted_desc(baseDir)
    for script in scripts:
        patch_release_number = common_dml.determine_patch_applied_recently(connectConfig, script, current_release_number)
        if patch_release_number == current_release_number:
            patch_type = common_dml.determine_patch_type_if_already_applied(connectConfig, script)
            if patch_type in ('PATCH', 'BASELINE'):
                print "Applying rollback: " + script.getName()
                apply_rollback(connectConfig, script)
                common_dml.update_patch_metadata_entry(connectConfig, script, current_release_number, 'ROLLBACK')
                continue
            elif patch_type == 'ROLLBACK':
                # do nothing
                continue
            else:
                # do nothing
                continue