From be564316c7c4deaad090bfc0bc79c460965cb1d6 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 25 Nov 2014 00:51:23 +0100 Subject: Bundler: add modification support to Bundle dependencies Bundle dependencies are now realized with RequiredBundle and support inheritance of the modification flag. This requires new client support and will only work with clients >= 1.4.0pre2. --- testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'testsuite') diff --git a/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py b/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py index cfb379c40..dbed50ddb 100644 --- a/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py +++ b/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py @@ -74,7 +74,7 @@ class TestBundler(TestPlugin, TestStructure, TestXMLDirectoryBacked): lxml.etree.SubElement(expected['xinclude'], "Path", name="/test") has_dep = lxml.etree.Element("Bundle") - lxml.etree.SubElement(has_dep, "Bundle", name="is_dep") + lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_dep") lxml.etree.SubElement(has_dep, "Package", name="foo") b.bundles['has_dep'].XMLMatch.return_value = has_dep expected['has_dep'] = lxml.etree.Element("Bundle", name="has_dep") -- cgit v1.2.3-1-g7c22 From 84b180e2fddcb5563adca33ed6feb3fd991dfde2 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 25 Nov 2014 16:14:43 +0100 Subject: testsuite: add test for modification inheritance --- .../Testlib/TestServer/TestPlugins/TestBundler.py | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'testsuite') diff --git a/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py b/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py index dbed50ddb..db2a91227 100644 --- a/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py +++ b/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py @@ -3,6 +3,7 @@ import sys import lxml.etree from mock import Mock, MagicMock, patch from Bcfg2.Server.Plugins.Bundler import * +from Bcfg2.version import Bcfg2VersionInfo # add all parent testsuite directories to sys.path to allow (most) # relative imports in python 2.4 @@ -75,10 +76,14 @@ class TestBundler(TestPlugin, TestStructure, TestXMLDirectoryBacked): has_dep = lxml.etree.Element("Bundle") lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_dep") + lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_mod_dep", + modification="inherit") lxml.etree.SubElement(has_dep, "Package", name="foo") b.bundles['has_dep'].XMLMatch.return_value = has_dep expected['has_dep'] = lxml.etree.Element("Bundle", name="has_dep") lxml.etree.SubElement(expected['has_dep'], "Package", name="foo") + lxml.etree.SubElement(expected['has_dep'], "Bundle", + name="is_mod_dep") is_dep = lxml.etree.Element("Bundle") lxml.etree.SubElement(is_dep, "Package", name="bar") @@ -94,6 +99,7 @@ class TestBundler(TestPlugin, TestStructure, TestXMLDirectoryBacked): metadata = Mock() metadata.bundles = ["error", "xinclude", "has_dep", "indep"] + metadata.version_info = Bcfg2VersionInfo('1.4.0') rv = b.BuildStructures(metadata) self.assertEqual(len(rv), 4) @@ -109,3 +115,33 @@ class TestBundler(TestPlugin, TestStructure, TestXMLDirectoryBacked): b.bundles['error'].XMLMatch.assert_called_with(metadata) self.assertFalse(b.bundles['skip'].XMLMatch.called) + + def test_BuildStructuresOldClient(self): + b = self.get_obj() + b.bundles = dict(has_dep=Mock()) + expected = dict() + + has_dep = lxml.etree.Element("Bundle") + lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_dep") + lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_mod_dep", + modification="inherit") + lxml.etree.SubElement(has_dep, "Package", name="foo") + b.bundles['has_dep'].XMLMatch.return_value = has_dep + expected['has_dep'] = lxml.etree.Element("Bundle", name="has_dep") + lxml.etree.SubElement(expected['has_dep'], "Package", name="foo") + + metadata = Mock() + metadata.bundles = ["has_dep"] + metadata.version_info = Bcfg2VersionInfo('1.3.0') + + rv = b.BuildStructures(metadata) + self.assertEqual(len(rv), len(metadata.bundles)) + for bundle in rv: + name = bundle.get("name") + self.assertIsNotNone(name, + "Bundle %s was not built" % name) + self.assertIn(name, expected, + "Unexpected bundle %s was built" % name) + self.assertXMLEqual(bundle, expected[name], + "Bundle %s was not built correctly" % name) + b.bundles[name].XMLMatch.assert_called_with(metadata) -- cgit v1.2.3-1-g7c22 From d4ae5e04739d9a8e0732dd35ee28c14b0ff96957 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 25 Nov 2014 17:56:16 +0100 Subject: Bundler: modification is now the boolean inherit_modification --- testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'testsuite') diff --git a/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py b/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py index db2a91227..1bf208c3e 100644 --- a/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py +++ b/testsuite/Testsrc/Testlib/TestServer/TestPlugins/TestBundler.py @@ -77,7 +77,7 @@ class TestBundler(TestPlugin, TestStructure, TestXMLDirectoryBacked): has_dep = lxml.etree.Element("Bundle") lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_dep") lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_mod_dep", - modification="inherit") + inherit_modification="true") lxml.etree.SubElement(has_dep, "Package", name="foo") b.bundles['has_dep'].XMLMatch.return_value = has_dep expected['has_dep'] = lxml.etree.Element("Bundle", name="has_dep") @@ -124,7 +124,7 @@ class TestBundler(TestPlugin, TestStructure, TestXMLDirectoryBacked): has_dep = lxml.etree.Element("Bundle") lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_dep") lxml.etree.SubElement(has_dep, "RequiredBundle", name="is_mod_dep", - modification="inherit") + inherit_modification="true") lxml.etree.SubElement(has_dep, "Package", name="foo") b.bundles['has_dep'].XMLMatch.return_value = has_dep expected['has_dep'] = lxml.etree.Element("Bundle", name="has_dep") -- cgit v1.2.3-1-g7c22