Skip to content

Commit 71a68b4

Browse files
committed
Address PR #64043 review comments: optimize pillar updates and fix UnboundLocalError
1 parent 2151389 commit 71a68b4

3 files changed

Lines changed: 61 additions & 33 deletions

File tree

salt/matchers/pillar_match.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def match(tgt, delimiter=DEFAULT_TARGET_DELIM, opts=None, minion_id=None):
2121
log.error("Got insufficient arguments for pillar match statement from master")
2222
return False
2323

24+
pillar = {}
2425
if "pillar" in opts:
2526
pillar = opts["pillar"]
2627
elif "ext_pillar" in opts:

salt/pillar/__init__.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,27 +1246,29 @@ def compile_pillar(self, ext=True):
12461246
"""
12471247
Render the pillar data and return
12481248
"""
1249-
top, top_errors = self.get_top()
1250-
if ext:
1251-
if self.opts.get("ext_pillar_first", False):
1252-
self.opts["pillar"], errors = self.ext_pillar(self.pillar_override)
1253-
self.rend = salt.loader.render(self.opts, self.functions)
1254-
matches = self.top_matches(top, reload=True)
1255-
pillar, errors = self.render_pillar(matches, errors=errors)
1256-
pillar = merge(
1257-
self.opts["pillar"],
1258-
pillar,
1259-
self.merge_strategy,
1260-
self.opts.get("renderer", "yaml"),
1261-
self.opts.get("pillar_merge_lists", False),
1262-
)
1263-
else:
1249+
if ext and self.opts.get("ext_pillar_first", False):
1250+
self.opts["pillar"], errors = self.ext_pillar(self.pillar_override)
1251+
self.functions.pack["__pillar__"] = self.opts["pillar"]
1252+
self.rend = salt.loader.render(self.opts, self.functions)
1253+
top, top_errors = self.get_top()
1254+
matches = self.top_matches(top, reload=True)
1255+
pillar, errors = self.render_pillar(matches, errors=errors)
1256+
pillar = merge(
1257+
self.opts["pillar"],
1258+
pillar,
1259+
self.merge_strategy,
1260+
self.opts.get("renderer", "yaml"),
1261+
self.opts.get("pillar_merge_lists", False),
1262+
)
1263+
else:
1264+
top, top_errors = self.get_top()
1265+
if ext:
12641266
matches = self.top_matches(top)
12651267
pillar, errors = self.render_pillar(matches)
12661268
pillar, errors = self.ext_pillar(pillar, errors=errors)
1267-
else:
1268-
matches = self.top_matches(top)
1269-
pillar, errors = self.render_pillar(matches)
1269+
else:
1270+
matches = self.top_matches(top)
1271+
pillar, errors = self.render_pillar(matches)
12701272
errors.extend(top_errors)
12711273
if self.opts.get("pillar_opts", False):
12721274
mopts = dict(self.opts)

tests/pytests/unit/test_pillar.py

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@ def _setup_test_include_sls(tempdir):
257257

258258
def test_ext_pillar_no_extra_minion_data_val_dict():
259259
opts = {
260+
"file_client": "local",
261+
"pillar": {},
260262
"optimization_order": [0, 1, 2],
261263
"renderer": "json",
262264
"renderer_blacklist": [],
@@ -298,6 +300,8 @@ def test_ext_pillar_no_extra_minion_data_val_dict():
298300

299301
def test_ext_pillar_no_extra_minion_data_val_list():
300302
opts = {
303+
"file_client": "local",
304+
"pillar": {},
301305
"optimization_order": [0, 1, 2],
302306
"renderer": "json",
303307
"renderer_blacklist": [],
@@ -335,6 +339,8 @@ def test_ext_pillar_no_extra_minion_data_val_list():
335339

336340
def test_ext_pillar_no_extra_minion_data_val_elem():
337341
opts = {
342+
"file_client": "local",
343+
"pillar": {},
338344
"optimization_order": [0, 1, 2],
339345
"renderer": "json",
340346
"renderer_blacklist": [],
@@ -376,6 +382,8 @@ def test_ext_pillar_no_extra_minion_data_val_elem():
376382

377383
def test_ext_pillar_with_extra_minion_data_val_dict():
378384
opts = {
385+
"file_client": "local",
386+
"pillar": {},
379387
"optimization_order": [0, 1, 2],
380388
"renderer": "json",
381389
"renderer_blacklist": [],
@@ -422,6 +430,8 @@ def test_ext_pillar_with_extra_minion_data_val_dict():
422430

423431
def test_ext_pillar_with_extra_minion_data_val_list():
424432
opts = {
433+
"file_client": "local",
434+
"pillar": {},
425435
"optimization_order": [0, 1, 2],
426436
"renderer": "json",
427437
"renderer_blacklist": [],
@@ -463,6 +473,8 @@ def test_ext_pillar_with_extra_minion_data_val_list():
463473

464474
def test_ext_pillar_with_extra_minion_data_val_elem():
465475
opts = {
476+
"file_client": "local",
477+
"pillar": {},
466478
"optimization_order": [0, 1, 2],
467479
"renderer": "json",
468480
"renderer_blacklist": [],
@@ -507,15 +519,17 @@ def test_ext_pillar_first(tmp_path):
507519
test when using ext_pillar and ext_pillar_first
508520
"""
509521
opts = {
522+
"file_client": "local",
523+
"pillar": {},
510524
"optimization_order": [0, 1, 2],
511525
"renderer": "yaml",
512526
"renderer_blacklist": [],
513527
"renderer_whitelist": [],
514528
"state_top": "",
515-
"pillar_roots": [],
529+
"pillar_roots": {},
516530
"extension_modules": "",
517531
"saltenv": "base",
518-
"file_roots": [],
532+
"file_roots": {},
519533
"ext_pillar_first": True,
520534
"fileserver_backend": "",
521535
"cachedir": "",
@@ -561,8 +575,9 @@ def test_malformed_pillar_sls(mock_list_states):
561575
"renderer_blacklist": [],
562576
"renderer_whitelist": [],
563577
"state_top": "",
564-
"pillar_roots": [],
565-
"file_roots": [],
578+
"pillar_roots": {},
579+
"file_roots": {},
580+
566581
"extension_modules": "",
567582
"fileserver_backend": "",
568583
"cachedir": "",
@@ -661,6 +676,8 @@ def test_malformed_pillar_sls(mock_list_states):
661676

662677
def test_includes_override_sls():
663678
opts = {
679+
"file_client": "local",
680+
"pillar": {},
664681
"optimization_order": [0, 1, 2],
665682
"renderer": "json",
666683
"renderer_blacklist": [],
@@ -669,7 +686,7 @@ def test_includes_override_sls():
669686
"pillar_roots": {},
670687
"file_roots": {},
671688
"extension_modules": "",
672-
"fileserver_backend": "roots",
689+
"fileserver_backend": ["roots"],
673690
"cachedir": "",
674691
}
675692
grains = {
@@ -723,16 +740,18 @@ def test_includes_override_sls():
723740

724741
def test_topfile_order():
725742
opts = {
743+
"file_client": "local",
744+
"pillar": {},
726745
"optimization_order": [0, 1, 2],
727746
"renderer": "yaml",
728747
"renderer_blacklist": [],
729748
"renderer_whitelist": [],
730749
"state_top": "",
731-
"pillar_roots": [],
750+
"pillar_roots": {},
732751
"extension_modules": "",
733752
"saltenv": "base",
734-
"file_roots": [],
735-
"fileserver_backend": "roots",
753+
"file_roots": {},
754+
"fileserver_backend": ["roots"],
736755
"cachedir": "",
737756
}
738757
grains = {
@@ -897,6 +916,8 @@ def test_relative_include(tmp_path):
897916
file=f,
898917
)
899918
opts = {
919+
"file_client": "local",
920+
"pillar": {},
900921
"optimization_order": [0, 1, 2],
901922
"renderer": "yaml",
902923
"renderer_blacklist": [],
@@ -905,10 +926,10 @@ def test_relative_include(tmp_path):
905926
"pillar_roots": {"base": [str(tmp_path)]},
906927
"extension_modules": "",
907928
"saltenv": "base",
908-
"file_roots": [],
929+
"file_roots": {},
909930
"file_ignore_regex": None,
910931
"file_ignore_glob": None,
911-
"fileserver_backend": "roots",
932+
"fileserver_backend": ["roots"],
912933
"cachedir": "",
913934
}
914935
grains = {
@@ -938,6 +959,8 @@ def test_relative_include(tmp_path):
938959

939960
def test_missing_include(tmp_path):
940961
opts = {
962+
"file_client": "local",
963+
"pillar": {},
941964
"optimization_order": [0, 1, 2],
942965
"renderer": "yaml",
943966
"renderer_blacklist": [],
@@ -946,10 +969,10 @@ def test_missing_include(tmp_path):
946969
"pillar_roots": {"base": [str(tmp_path)]},
947970
"extension_modules": "",
948971
"saltenv": "base",
949-
"file_roots": [],
972+
"file_roots": {},
950973
"file_ignore_regex": None,
951974
"file_ignore_glob": None,
952-
"fileserver_backend": "roots",
975+
"fileserver_backend": ["roots"],
953976
"cachedir": "",
954977
}
955978
grains = {
@@ -1126,16 +1149,18 @@ def test_pillar_send_extra_minion_data_from_config(tmp_pki, grains):
11261149

11271150
def test_include(tmp_path):
11281151
opts = {
1152+
"file_client": "local",
1153+
"pillar": {},
11291154
"optimization_order": [0, 1, 2],
11301155
"renderer": "yaml",
11311156
"renderer_blacklist": [],
11321157
"renderer_whitelist": [],
11331158
"state_top": "",
1134-
"pillar_roots": [],
1159+
"pillar_roots": {},
11351160
"extension_modules": "",
11361161
"saltenv": "base",
1137-
"file_roots": [],
1138-
"fileserver_backend": "roots",
1162+
"file_roots": {},
1163+
"fileserver_backend": ["roots"],
11391164
"cachedir": "",
11401165
}
11411166
grains = {

0 commit comments

Comments
 (0)