From fd0edb194cbf82cd4c647cbbbd9867f2540275f7 Mon Sep 17 00:00:00 2001 From: Mathieu Parent Date: Tue, 12 Feb 2019 14:45:13 +0100 Subject: [PATCH] git_pillar: Fix all_saltenvs on base env --- salt/utils/gitfs.py | 2 +- tests/integration/pillar/test_git_pillar.py | 181 ++++++++++++++++++++ 2 files changed, 182 insertions(+), 1 deletion(-) diff --git a/salt/utils/gitfs.py b/salt/utils/gitfs.py index 2138e76d31c1..e69b2e6c283d 100644 --- a/salt/utils/gitfs.py +++ b/salt/utils/gitfs.py @@ -3002,7 +3002,7 @@ def checkout(self): if repo.branch == '__env__' and hasattr(repo, 'all_saltenvs'): env = self.opts.get('pillarenv') \ or self.opts.get('saltenv') \ - or self.opts.get('git_pillar_base') + or 'base' elif repo.env: env = repo.env else: diff --git a/tests/integration/pillar/test_git_pillar.py b/tests/integration/pillar/test_git_pillar.py index 5d9a374f6e50..9ade88840bf9 100644 --- a/tests/integration/pillar/test_git_pillar.py +++ b/tests/integration/pillar/test_git_pillar.py @@ -488,6 +488,33 @@ def test_all_saltenvs(self): 'nested_dict': {'dev': True}}} ) + def test_all_saltenvs_base(self): + ''' + Test all_saltenvs parameter with base pillarenv. + ''' + ret = self.get_pillar('''\ + file_ignore_regex: [] + file_ignore_glob: [] + git_pillar_provider: gitpython + cachedir: {cachedir} + extension_modules: {extmods} + ext_pillar: + - git: + - __env__ {url_extra_repo}: + - all_saltenvs: master + - __env__ {url}: + - mountpoint: nowhere + ''') + self.assertEqual( + ret, + {'branch': 'master', + 'motd': 'The force will be with you. Always.', + 'mylist': ['master'], + 'mydict': {'master': True, + 'nested_list': ['master'], + 'nested_dict': {'master': True}}} + ) + @destructiveTest @skipIf(NO_MOCK, NO_MOCK_REASON) @@ -1742,6 +1769,103 @@ def test_all_saltenvs(self, grains): ''') self.assertEqual(ret, expected) + @requires_system_grains + def test_all_saltenvs_base(self, grains): + ''' + Test all_saltenvs parameter. + ''' + expected = {'branch': 'master', + 'motd': 'The force will be with you. Always.', + 'mylist': ['master'], + 'mydict': {'master': True, + 'nested_list': ['master'], + 'nested_dict': {'master': True} + } + } + + # Test with passphraseless key and global credential options + ret = self.get_pillar('''\ + file_ignore_regex: [] + file_ignore_glob: [] + git_pillar_provider: pygit2 + git_pillar_pubkey: {pubkey_nopass} + git_pillar_privkey: {privkey_nopass} + cachedir: {cachedir} + extension_modules: {extmods} + ext_pillar: + - git: + - __env__ {url_extra_repo}: + - all_saltenvs: master + - __env__ {url}: + - mountpoint: nowhere + ''') + self.assertEqual(ret, expected) + + # Test with passphraseless key and per-repo credential options + ret = self.get_pillar('''\ + file_ignore_regex: [] + file_ignore_glob: [] + git_pillar_provider: pygit2 + cachedir: {cachedir} + extension_modules: {extmods} + ext_pillar: + - git: + - __env__ {url_extra_repo}: + - all_saltenvs: master + - pubkey: {pubkey_nopass} + - privkey: {privkey_nopass} + - __env__ {url}: + - mountpoint: nowhere + - pubkey: {pubkey_nopass} + - privkey: {privkey_nopass} + ''') + self.assertEqual(ret, expected) + + if grains['os_family'] == 'Debian': + # passphrase-protected currently does not work here + return + + # Test with passphrase-protected key and global credential options + ret = self.get_pillar('''\ + file_ignore_regex: [] + file_ignore_glob: [] + git_pillar_provider: pygit2 + git_pillar_pubkey: {pubkey_withpass} + git_pillar_privkey: {privkey_withpass} + git_pillar_passphrase: {passphrase} + cachedir: {cachedir} + extension_modules: {extmods} + ext_pillar: + - git: + - __env__ {url_extra_repo}: + - all_saltenvs: master + - __env__ {url}: + - mountpoint: nowhere + ''') + self.assertEqual(ret, expected) + + # Test with passphrase-protected key and per-repo credential options + ret = self.get_pillar('''\ + file_ignore_regex: [] + file_ignore_glob: [] + git_pillar_provider: pygit2 + cachedir: {cachedir} + extension_modules: {extmods} + ext_pillar: + - git: + - __env__ {url_extra_repo}: + - all_saltenvs: master + - pubkey: {pubkey_nopass} + - privkey: {privkey_nopass} + - passphrase: {passphrase} + - __env__ {url}: + - mountpoint: nowhere + - pubkey: {pubkey_nopass} + - privkey: {privkey_nopass} + - passphrase: {passphrase} + ''') + self.assertEqual(ret, expected) + @skipIf(NO_MOCK, NO_MOCK_REASON) @skipIf(_windows_or_mac(), 'minion is windows or mac') @@ -2119,6 +2243,33 @@ def test_all_saltenvs(self): 'nested_dict': {'dev': True}}} ) + def test_all_saltenvs_base(self): + ''' + Test all_saltenvs parameter with base pillarenv. + ''' + ret = self.get_pillar('''\ + file_ignore_regex: [] + file_ignore_glob: [] + git_pillar_provider: pygit2 + cachedir: {cachedir} + extension_modules: {extmods} + ext_pillar: + - git: + - __env__ {url_extra_repo}: + - all_saltenvs: master + - __env__ {url}: + - mountpoint: nowhere + ''') + self.assertEqual( + ret, + {'branch': 'master', + 'motd': 'The force will be with you. Always.', + 'mylist': ['master'], + 'mydict': {'master': True, + 'nested_list': ['master'], + 'nested_dict': {'master': True}}} + ) + @skipIf(NO_MOCK, NO_MOCK_REASON) @skipIf(_windows_or_mac(), 'minion is windows or mac') @@ -2719,3 +2870,33 @@ def test_all_saltenvs(self): 'nested_list': ['dev'], 'nested_dict': {'dev': True}}} ) + + def test_all_saltenvs_base(self): + ''' + Test all_saltenvs parameter with base pillarenv. + ''' + ret = self.get_pillar('''\ + file_ignore_regex: [] + file_ignore_glob: [] + git_pillar_provider: pygit2 + git_pillar_user: {user} + git_pillar_password: {password} + git_pillar_insecure_auth: True + cachedir: {cachedir} + extension_modules: {extmods} + ext_pillar: + - git: + - __env__ {url_extra_repo}: + - all_saltenvs: master + - __env__ {url}: + - mountpoint: nowhere + ''') + self.assertEqual( + ret, + {'branch': 'master', + 'motd': 'The force will be with you. Always.', + 'mylist': ['master'], + 'mydict': {'master': True, + 'nested_list': ['master'], + 'nested_dict': {'master': True}}} + )