def test_compare(self): with TemporaryDirectory() as tmpdir: environ['YAML_TMP_DIR'] = tmpdir.dirname environ['YAML_TMP_DIR2'] = tmpdir.dirname manager = Manager(get_config_filename('simple.yaml')) # make sure this was pulled in from the config self.assertEqual(2, manager._executor._max_workers) changes = manager.compare(['in'], ['in'], 'unit.tests.') self.assertEqual([], changes) # Create an empty unit.test zone config with open(join(tmpdir.dirname, 'unit.tests.yaml'), 'w') as fh: fh.write('---\n{}') # compare doesn't use _process_desired_zone and thus doesn't filter # out root NS records, that seems fine/desirable changes = manager.compare(['in'], ['dump'], 'unit.tests.') self.assertEqual(23, len(changes)) # Compound sources with varying support changes = manager.compare(['in', 'nosshfp'], ['dump'], 'unit.tests.') self.assertEqual(22, len(changes)) with self.assertRaises(ManagerException) as ctx: manager.compare(['nope'], ['dump'], 'unit.tests.') self.assertEqual('Unknown source: nope', str(ctx.exception))
def test_compare(self): with TemporaryDirectory() as tmpdir: environ['YAML_TMP_DIR'] = tmpdir.dirname manager = Manager(get_config_filename('simple.yaml')) # make sure this was pulled in from the config self.assertEquals(2, manager._executor._max_workers) changes = manager.compare(['in'], ['in'], 'unit.tests.') self.assertEquals([], changes) # Create an empty unit.test zone config with open(join(tmpdir.dirname, 'unit.tests.yaml'), 'w') as fh: fh.write('---\n{}') changes = manager.compare(['in'], ['dump'], 'unit.tests.') self.assertEquals(20, len(changes)) # Compound sources with varying support changes = manager.compare(['in', 'nosshfp'], ['dump'], 'unit.tests.') self.assertEquals(19, len(changes)) with self.assertRaises(ManagerException) as ctx: manager.compare(['nope'], ['dump'], 'unit.tests.') self.assertEquals('Unknown source: nope', str(ctx.exception))
def main(): parser = ArgumentParser(description=__doc__.split('\n')[1]) parser.add_argument('--config-file', required=True, help='The Manager configuration file to use') parser.add_argument('--a', nargs='+', required=True, help='First source(s) to pull data from') parser.add_argument('--b', nargs='+', required=True, help='Second source(s) to pull data from') parser.add_argument('--zone', default=None, required=True, help='Zone to compare') args = parser.parse_args() manager = Manager(args.config_file) changes = manager.compare(args.a, args.b, args.zone) pprint(changes)
def main(): parser = ArgumentParser(description=__doc__.split('\n')[1]) parser.add_argument( '--config-file', required=True, help='The Manager configuration file to use', ) parser.add_argument( '--a', nargs='+', required=True, help='First source(s) to pull data from', ) parser.add_argument( '--b', nargs='+', required=True, help='Second source(s) to pull data from', ) parser.add_argument('--zone', default=None, required=True, help='Zone to compare') parser.add_argument( '--ignore-prefix', default=None, required=False, help='Record prefix to ignore from list of changes', ) args = parser.parse_args() manager = Manager(args.config_file) changes = manager.compare(args.a, args.b, args.zone) # Filter changes list based on ignore-prefix argument if present if args.ignore_prefix: pattern = args.ignore_prefix changes = [c for c in changes if not c.record.fqdn.startswith(pattern)] pprint(changes) # Exit with non-zero exit code if changes exist if len(changes): sys.exit(1)