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
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
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