003 File Manager
Current Path:
/usr/local/lib/python3.8/site-packages/salt/pillar
usr
/
local
/
lib
/
python3.8
/
site-packages
/
salt
/
pillar
/
📁
..
📄
__init__.py
(48.72 KB)
📁
__pycache__
📄
azureblob.py
(13.88 KB)
📄
cmd_json.py
(787 B)
📄
cmd_yaml.py
(893 B)
📄
cmd_yamlex.py
(674 B)
📄
cobbler.py
(1.64 KB)
📄
confidant.py
(3.29 KB)
📄
consul_pillar.py
(11.61 KB)
📄
csvpillar.py
(1.85 KB)
📄
digicert.py
(1007 B)
📄
django_orm.py
(7.74 KB)
📄
ec2_pillar.py
(10.12 KB)
📄
etcd_pillar.py
(2.36 KB)
📄
extra_minion_data_in_pillar.py
(2.18 KB)
📄
file_tree.py
(18.03 KB)
📄
foreman.py
(3.66 KB)
📄
git_pillar.py
(19.61 KB)
📄
gpg.py
(560 B)
📄
hg_pillar.py
(3.19 KB)
📄
hiera.py
(846 B)
📄
http_json.py
(2.43 KB)
📄
http_yaml.py
(2.43 KB)
📄
libvirt.py
(5.78 KB)
📄
makostack.py
(21.99 KB)
📄
mongo.py
(5.6 KB)
📄
mysql.py
(3.76 KB)
📄
nacl.py
(744 B)
📄
netbox.py
(29.5 KB)
📄
neutron.py
(2.41 KB)
📄
nodegroups.py
(1.7 KB)
📄
pepa.py
(20.98 KB)
📄
pillar_ldap.py
(10.95 KB)
📄
postgres.py
(2.82 KB)
📄
puppet.py
(846 B)
📄
reclass_adapter.py
(4 KB)
📄
redismod.py
(3.28 KB)
📄
rethinkdb_pillar.py
(4.71 KB)
📄
s3.py
(14.4 KB)
📄
saltclass.py
(1.49 KB)
📄
sql_base.py
(15.38 KB)
📄
sqlcipher.py
(3.42 KB)
📄
sqlite3.py
(2.67 KB)
📄
stack.py
(22.07 KB)
📄
svn_pillar.py
(5.74 KB)
📄
varstack_pillar.py
(1.1 KB)
📄
vault.py
(4.03 KB)
📄
venafi.py
(966 B)
📄
virtkey.py
(586 B)
📄
vmware_pillar.py
(16.83 KB)
Editing: mysql.py
""" Retrieve Pillar data by doing a MySQL query MariaDB provides Python support through the MySQL Python package. Therefore, you may use this module with both MySQL or MariaDB. This module is a concrete implementation of the sql_base ext_pillar for MySQL. :maturity: new :depends: python-mysqldb :platform: all Configuring the mysql ext_pillar ================================ Use the 'mysql' key under ext_pillar for configuration of queries. MySQL configuration of the MySQL returner is being used (mysql.db, mysql.user, mysql.pass, mysql.port, mysql.host) for database connection info. Required python modules: MySQLdb Complete example ================ .. code-block:: yaml mysql: user: 'salt' pass: 'super_secret_password' db: 'salt_db' port: 3306 ssl: cert: /etc/mysql/client-cert.pem key: /etc/mysql/client-key.pem ext_pillar: - mysql: fromdb: query: 'SELECT col1,col2,col3,col4,col5,col6,col7 FROM some_random_table WHERE minion_pattern LIKE %s' depth: 5 as_list: True with_lists: [1,3] """ import logging from contextlib import contextmanager from salt.pillar.sql_base import SqlBaseExtPillar # Set up logging log = logging.getLogger(__name__) try: # Trying to import MySQLdb import MySQLdb import MySQLdb.cursors import MySQLdb.converters except ImportError: try: # MySQLdb import failed, try to import PyMySQL import pymysql pymysql.install_as_MySQLdb() import MySQLdb import MySQLdb.cursors import MySQLdb.converters except ImportError: MySQLdb = None def __virtual__(): """ Confirm that a python mysql client is installed. """ return bool(MySQLdb), "No python mysql client installed." if MySQLdb is None else "" class MySQLExtPillar(SqlBaseExtPillar): """ This class receives and processes the database rows from MySQL. """ @classmethod def _db_name(cls): return "MySQL" def _get_options(self): """ Returns options used for the MySQL connection. """ defaults = { "host": "localhost", "user": "salt", "pass": "salt", "db": "salt", "port": 3306, "ssl": {}, } _options = {} _opts = __opts__.get("mysql", {}) for attr in defaults: if attr not in _opts: log.debug("Using default for MySQL %s", attr) _options[attr] = defaults[attr] continue _options[attr] = _opts[attr] return _options @contextmanager def _get_cursor(self): """ Yield a MySQL cursor """ _options = self._get_options() conn = MySQLdb.connect( host=_options["host"], user=_options["user"], passwd=_options["pass"], db=_options["db"], port=_options["port"], ssl=_options["ssl"], ) cursor = conn.cursor() try: yield cursor except MySQLdb.DatabaseError as err: log.exception("Error in ext_pillar MySQL: %s", err.args) finally: conn.close() def extract_queries(self, args, kwargs): # pylint: disable=useless-super-delegation """ This function normalizes the config block into a set of queries we can use. The return is a list of consistently laid out dicts. """ return super().extract_queries(args, kwargs) def ext_pillar(minion_id, pillar, *args, **kwargs): """ Execute queries against MySQL, merge and return as a dict """ return MySQLExtPillar().fetch(minion_id, pillar, *args, **kwargs)
Upload File
Create Folder