PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/deb_postgres.py |
""" Module to provide Postgres compatibility to salt for debian family specific tools. """ import logging import shlex import salt.utils.path log = logging.getLogger(__name__) __virtualname__ = "postgres" def __virtual__(): """ Only load this module if the pg_createcluster bin exists """ if salt.utils.path.which("pg_createcluster"): return __virtualname__ return ( False, "postgres execution module not loaded: pg_createcluste command not found.", ) def cluster_create( version, name="main", port=None, locale=None, encoding=None, datadir=None, allow_group_access=None, data_checksums=None, wal_segsize=None, ): """ Adds a cluster to the Postgres server. .. warning: Only works for debian family distros so far. CLI Example: .. code-block:: bash salt '*' postgres.cluster_create '9.3' salt '*' postgres.cluster_create '9.3' 'main' salt '*' postgres.cluster_create '9.3' locale='fr_FR' salt '*' postgres.cluster_create '11' data_checksums=True wal_segsize='32' """ cmd = [salt.utils.path.which("pg_createcluster")] if port: cmd += ["--port", str(port)] if locale: cmd += ["--locale", locale] if encoding: cmd += ["--encoding", encoding] if datadir: cmd += ["--datadir", datadir] cmd += [str(version), name] # initdb-specific options are passed after '--' if allow_group_access or data_checksums or wal_segsize: cmd += ["--"] if allow_group_access is True: cmd += ["--allow-group-access"] if data_checksums is True: cmd += ["--data-checksums"] if wal_segsize: cmd += ["--wal-segsize", wal_segsize] cmdstr = shlex.join(cmd) ret = __salt__["cmd.run_all"](cmdstr, python_shell=False) if ret.get("retcode", 0) != 0: log.error("Error creating a Postgresql cluster %s/%s", version, name) return False return ret def cluster_list(verbose=False): """ Return a list of cluster of Postgres server (tuples of version and name). CLI Example: .. code-block:: bash salt '*' postgres.cluster_list salt '*' postgres.cluster_list verbose=True """ cmd = [salt.utils.path.which("pg_lsclusters"), "--no-header"] ret = __salt__["cmd.run_all"](shlex.join(cmd)) if ret.get("retcode", 0) != 0: log.error("Error listing clusters") cluster_dict = _parse_pg_lscluster(ret["stdout"]) if verbose: return cluster_dict return cluster_dict.keys() def cluster_exists(version, name="main"): """ Checks if a given version and name of a cluster exists. CLI Example: .. code-block:: bash salt '*' postgres.cluster_exists '9.3' salt '*' postgres.cluster_exists '9.3' 'main' """ return f"{version}/{name}" in cluster_list() def cluster_remove(version, name="main", stop=False): """ Remove a cluster on a Postgres server. By default it doesn't try to stop the cluster. CLI Example: .. code-block:: bash salt '*' postgres.cluster_remove '9.3' salt '*' postgres.cluster_remove '9.3' 'main' salt '*' postgres.cluster_remove '9.3' 'main' stop=True """ cmd = [salt.utils.path.which("pg_dropcluster")] if stop: cmd += ["--stop"] cmd += [str(version), name] cmdstr = shlex.join(cmd) ret = __salt__["cmd.run_all"](cmdstr, python_shell=False) # FIXME - return Boolean ? if ret.get("retcode", 0) != 0: log.error("Error removing a Postgresql cluster %s/%s", version, name) else: ret["changes"] = f"Successfully removed cluster {version}/{name}" return ret def _parse_pg_lscluster(output): """ Helper function to parse the output of pg_lscluster """ cluster_dict = {} for line in output.splitlines(): version, name, port, status, user, datadir, log = line.split() cluster_dict[f"{version}/{name}"] = { "port": int(port), "status": status, "user": user, "datadir": datadir, "log": log, } return cluster_dict