Hi Paul,
I thought Pillar data didn't auto refresh to the minions unless via a highstate or refresh command, if so why is the minion right but the master wrong?
You are using salt-call to get the pillar on the minion. salt-call always uses a fresh pillar (as it
directly communicates with the master and not the local minion daemon,
so it does not have a cached copy of the pillar that it can use).
The
minion daemon on the other hand has a cached copy of the pillar and
uses this unless you call pillar.items. The pillar.item module function
(as well as pillar.raw and pillar.get) use the cached version of
the pillar.
To refresh the cached version of the pillar data, you
have to use saltutil.refresh_pillar (that gets
automatically called on a state.highstate). Unless you call this module
function (saltutil.refresh_pillar), pillar.item, pillar.raw and pillar.get all use the cached
version of the pillar, even after you called pillar.items.
Calling pillar.items with an argument is actually
deprecated. Internally it just redirects to pillar.item. That is why pillar.items with or without arguments behaves
differently.
( see https://github.com/saltstack/salt/blob/develop/salt/modules/pillar.py#L104-L105
)