golden hour
/opt/saltstack/salt/lib/python3.10/site-packages/salt/pillar
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
50.98 KB
Del
OK
__pycache__
-
Del
OK
azureblob.py
13.88 KB
Del
OK
cmd_json.py
787 B
Del
OK
cmd_yaml.py
893 B
Del
OK
cmd_yamlex.py
674 B
Del
OK
cobbler.py
1.64 KB
Del
OK
confidant.py
3.29 KB
Del
OK
consul_pillar.py
11.61 KB
Del
OK
csvpillar.py
1.85 KB
Del
OK
digicert.py
1007 B
Del
OK
django_orm.py
7.74 KB
Del
OK
ec2_pillar.py
10.08 KB
Del
OK
etcd_pillar.py
4.04 KB
Del
OK
extra_minion_data_in_pillar.py
2.18 KB
Del
OK
file_tree.py
18.03 KB
Del
OK
foreman.py
3.66 KB
Del
OK
git_pillar.py
19.61 KB
Del
OK
gpg.py
560 B
Del
OK
hg_pillar.py
3.2 KB
Del
OK
hiera.py
846 B
Del
OK
http_json.py
3.37 KB
Del
OK
http_yaml.py
3.08 KB
Del
OK
libvirt.py
5.78 KB
Del
OK
makostack.py
21.99 KB
Del
OK
mongo.py
6.05 KB
Del
OK
mysql.py
3.76 KB
Del
OK
nacl.py
744 B
Del
OK
netbox.py
36.22 KB
Del
OK
neutron.py
2.41 KB
Del
OK
nodegroups.py
1.7 KB
Del
OK
pepa.py
20.99 KB
Del
OK
pillar_ldap.py
10.82 KB
Del
OK
postgres.py
2.82 KB
Del
OK
puppet.py
846 B
Del
OK
reclass_adapter.py
4 KB
Del
OK
redismod.py
3.28 KB
Del
OK
rethinkdb_pillar.py
4.71 KB
Del
OK
s3.py
14.4 KB
Del
OK
saltclass.py
1.49 KB
Del
OK
sql_base.py
16.51 KB
Del
OK
sqlcipher.py
3.42 KB
Del
OK
sqlite3.py
2.67 KB
Del
OK
stack.py
22.92 KB
Del
OK
svn_pillar.py
5.74 KB
Del
OK
varstack_pillar.py
1.1 KB
Del
OK
vault.py
6.54 KB
Del
OK
venafi.py
966 B
Del
OK
virtkey.py
586 B
Del
OK
vmware_pillar.py
16.83 KB
Del
OK
Edit: http_json.py
""" A module that adds data to the Pillar structure retrieved by an http request Configuring the HTTP_JSON ext_pillar ==================================== Set the following Salt config to setup http json result as external pillar source: .. code-block:: yaml ext_pillar: - http_json: url: http://example.com/api/minion_id namespace: 'subkey' username: username password: password header_dict: None auth: None You can pass additional parameters, they will be added to the http.query call :py:func:`utils.http.query function <salt.utils.http.query>`: .. versionchanged:: 3006.0 If namespace is defined, the data will be added under the specified subkeys in the Pillar structure. If the with_grains parameter is set, grain keys wrapped in can be provided (wrapped in <> brackets) in the url in order to populate pillar data based on the grain value. .. code-block:: yaml ext_pillar: - http_json: url: http://example.com/api/<nodename> with_grains: True .. versionchanged:: 2018.3.0 If %s is present in the url, it will be automatically replaced by the minion_id: .. code-block:: yaml ext_pillar: - http_json: url: http://example.com/api/%s Module Documentation ==================== """ import logging import re import urllib.parse log = logging.getLogger(__name__) def __virtual__(): return True def ext_pillar( minion_id, pillar, url, with_grains=False, header_dict=None, auth=None, username=None, password=None, namespace=None, ): # pylint: disable=W0613 """ Read pillar data from HTTP response. :param str url: Url to request. :param bool with_grains: Whether to substitute strings in the url with their grain values. :param dict header_dict: Extra headers to send :param auth: special auth if needed :param str username: username for auth :param str pasword: password for auth :param str namespace: (Optional) A pillar key to namespace the values under. .. versionadded:: 3006.0 :return: A dictionary of the pillar data to add. :rtype: dict """ url = url.replace("%s", urllib.parse.quote(minion_id)) grain_pattern = r"<(?P<grain_name>.*?)>" if with_grains: # Get the value of the grain and substitute each grain # name for the url-encoded version of its grain value. for match in re.finditer(grain_pattern, url): grain_name = match.group("grain_name") grain_value = __salt__["grains.get"](grain_name, None) if not grain_value: log.error("Unable to get minion '%s' grain: %s", minion_id, grain_name) return {} grain_value = urllib.parse.quote(str(grain_value)) url = re.sub("<{}>".format(grain_name), grain_value, url) log.debug("Getting url: %s", url) data = __salt__["http.query"]( url=url, decode=True, decode_type="json", header_dict=header_dict, auth=auth, username=username, password=password, ) if "dict" in data: if namespace: return {namespace: data["dict"]} else: return data["dict"] log.error("Error on minion '%s' http query: %s\nMore Info:\n", minion_id, url) for key in data: log.error("%s: %s", key, data[key]) return {}
Save