Skip to content

Commit 416b2bb

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

3 files changed

Lines changed: 60 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: 39 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,8 @@ 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": {},
566580
"extension_modules": "",
567581
"fileserver_backend": "",
568582
"cachedir": "",
@@ -661,6 +675,8 @@ def test_malformed_pillar_sls(mock_list_states):
661675

662676
def test_includes_override_sls():
663677
opts = {
678+
"file_client": "local",
679+
"pillar": {},
664680
"optimization_order": [0, 1, 2],
665681
"renderer": "json",
666682
"renderer_blacklist": [],
@@ -669,7 +685,7 @@ def test_includes_override_sls():
669685
"pillar_roots": {},
670686
"file_roots": {},
671687
"extension_modules": "",
672-
"fileserver_backend": "roots",
688+
"fileserver_backend": ["roots"],
673689
"cachedir": "",
674690
}
675691
grains = {
@@ -723,16 +739,18 @@ def test_includes_override_sls():
723739

724740
def test_topfile_order():
725741
opts = {
742+
"file_client": "local",
743+
"pillar": {},
726744
"optimization_order": [0, 1, 2],
727745
"renderer": "yaml",
728746
"renderer_blacklist": [],
729747
"renderer_whitelist": [],
730748
"state_top": "",
731-
"pillar_roots": [],
749+
"pillar_roots": {},
732750
"extension_modules": "",
733751
"saltenv": "base",
734-
"file_roots": [],
735-
"fileserver_backend": "roots",
752+
"file_roots": {},
753+
"fileserver_backend": ["roots"],
736754
"cachedir": "",
737755
}
738756
grains = {
@@ -897,6 +915,8 @@ def test_relative_include(tmp_path):
897915
file=f,
898916
)
899917
opts = {
918+
"file_client": "local",
919+
"pillar": {},
900920
"optimization_order": [0, 1, 2],
901921
"renderer": "yaml",
902922
"renderer_blacklist": [],
@@ -905,10 +925,10 @@ def test_relative_include(tmp_path):
905925
"pillar_roots": {"base": [str(tmp_path)]},
906926
"extension_modules": "",
907927
"saltenv": "base",
908-
"file_roots": [],
928+
"file_roots": {},
909929
"file_ignore_regex": None,
910930
"file_ignore_glob": None,
911-
"fileserver_backend": "roots",
931+
"fileserver_backend": ["roots"],
912932
"cachedir": "",
913933
}
914934
grains = {
@@ -938,6 +958,8 @@ def test_relative_include(tmp_path):
938958

939959
def test_missing_include(tmp_path):
940960
opts = {
961+
"file_client": "local",
962+
"pillar": {},
941963
"optimization_order": [0, 1, 2],
942964
"renderer": "yaml",
943965
"renderer_blacklist": [],
@@ -946,10 +968,10 @@ def test_missing_include(tmp_path):
946968
"pillar_roots": {"base": [str(tmp_path)]},
947969
"extension_modules": "",
948970
"saltenv": "base",
949-
"file_roots": [],
971+
"file_roots": {},
950972
"file_ignore_regex": None,
951973
"file_ignore_glob": None,
952-
"fileserver_backend": "roots",
974+
"fileserver_backend": ["roots"],
953975
"cachedir": "",
954976
}
955977
grains = {
@@ -1126,16 +1148,18 @@ def test_pillar_send_extra_minion_data_from_config(tmp_pki, grains):
11261148

11271149
def test_include(tmp_path):
11281150
opts = {
1151+
"file_client": "local",
1152+
"pillar": {},
11291153
"optimization_order": [0, 1, 2],
11301154
"renderer": "yaml",
11311155
"renderer_blacklist": [],
11321156
"renderer_whitelist": [],
11331157
"state_top": "",
1134-
"pillar_roots": [],
1158+
"pillar_roots": {},
11351159
"extension_modules": "",
11361160
"saltenv": "base",
1137-
"file_roots": [],
1138-
"fileserver_backend": "roots",
1161+
"file_roots": {},
1162+
"fileserver_backend": ["roots"],
11391163
"cachedir": "",
11401164
}
11411165
grains = {

0 commit comments

Comments
 (0)