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/states/ |
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/states/postgres_extension.py |
""" Management of PostgreSQL extensions =================================== A module used to install and manage PostgreSQL extensions. .. code-block:: yaml adminpack: postgres_extension.present .. versionadded:: 2014.7.0 """ import logging from salt.modules import postgres log = logging.getLogger(__name__) def __virtual__(): """ Only load if the postgres module is present """ if "postgres.create_extension" not in __salt__: return ( False, "Unable to load postgres module. Make sure `postgres.bins_dir` is set.", ) return True def present( name, if_not_exists=None, schema=None, ext_version=None, from_version=None, user=None, maintenance_db=None, db_user=None, db_password=None, db_host=None, db_port=None, ): """ Ensure that the named extension is present. .. note:: Before you can use the state to load an extension into a database, the extension's supporting files must be already installed. For more information about all of these options see ``CREATE EXTENSION`` SQL command reference in the PostgreSQL documentation. name The name of the extension to be installed if_not_exists Add an ``IF NOT EXISTS`` parameter to the DDL statement schema Schema to install the extension into ext_version Version to install from_version Old extension version if already installed user System user all operations should be performed on behalf of maintenance_db Database to act on db_user Database username if different from config or default db_password User password if any password for a specified user db_host Database host if different from config or default db_port Database port if different from config or default """ ret = { "name": name, "changes": {}, "result": True, "comment": f"Extension {name} is already present", } db_args = { "maintenance_db": maintenance_db, "runas": user, "user": db_user, "password": db_password, "host": db_host, "port": db_port, } # check if extension exists mode = "create" mtdata = __salt__["postgres.create_metadata"]( name, schema=schema, ext_version=ext_version, **db_args ) # The extension is not present, install it! toinstall = postgres._EXTENSION_NOT_INSTALLED in mtdata if toinstall: mode = "install" toupgrade = False if postgres._EXTENSION_INSTALLED in mtdata: for flag in [postgres._EXTENSION_TO_MOVE, postgres._EXTENSION_TO_UPGRADE]: if flag in mtdata: toupgrade = True mode = "upgrade" cret = None if toinstall or toupgrade: if __opts__["test"]: ret["result"] = None if mode: ret["comment"] = "Extension {} is set to be {}ed".format( name, mode ).replace("eed", "ed") return ret cret = __salt__["postgres.create_extension"]( name=name, if_not_exists=if_not_exists, schema=schema, ext_version=ext_version, from_version=from_version, **db_args, ) if cret: if mode.endswith("e"): suffix = "d" else: suffix = "ed" ret["comment"] = f"The extension {name} has been {mode}{suffix}" ret["changes"][name] = f"{mode.capitalize()}{suffix}" elif cret is not None: ret["comment"] = f"Failed to {mode} extension {name}" ret["result"] = False return ret def absent( name, if_exists=None, restrict=None, cascade=None, user=None, maintenance_db=None, db_user=None, db_password=None, db_host=None, db_port=None, ): """ Ensure that the named extension is absent. name Extension name of the extension to remove if_exists Add if exist slug restrict Add restrict slug cascade Drop on cascade user System user all operations should be performed on behalf of maintenance_db Database to act on db_user Database username if different from config or default db_password User password if any password for a specified user db_host Database host if different from config or default db_port Database port if different from config or default """ ret = {"name": name, "changes": {}, "result": True, "comment": ""} db_args = { "maintenance_db": maintenance_db, "runas": user, "host": db_host, "user": db_user, "port": db_port, "password": db_password, } # check if extension exists and remove it exists = __salt__["postgres.is_installed_extension"](name, **db_args) if exists: if __opts__["test"]: ret["result"] = None ret["comment"] = f"Extension {name} is set to be removed" return ret if __salt__["postgres.drop_extension"]( name, if_exists=if_exists, restrict=restrict, cascade=cascade, **db_args ): ret["comment"] = f"Extension {name} has been removed" ret["changes"][name] = "Absent" return ret else: ret["result"] = False ret["comment"] = f"Extension {name} failed to be removed" return ret else: ret["comment"] = "Extension {} is not present, so it cannot be removed".format( name ) return ret