D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
saltstack
/
salt
/
lib
/
python3.10
/
site-packages
/
salt
/
states
/
Filename :
zcbuildout.py
back
Copy
""" Management of zc.buildout ========================= This module is inspired from minitage's buildout maker (https://github.com/minitage/minitage/blob/master/src/minitage/core/makers/buildout.py) .. versionadded:: 2016.3.0 .. note:: This state module is beta; the API is subject to change and no promise as to performance or functionality is yet present Available Functions ------------------- - built .. code-block:: yaml installed1 buildout.installed: - name: /path/to/buildout installed2 buildout.installed: - name: /path/to/buildout - parts: - a - b - python: /path/to/pythonpath/bin/python - unless: /bin/test_something_installed - onlyif: /bin/test_else_installed """ import logging import sys # Define the module's virtual name __virtualname__ = "buildout" log = logging.getLogger(__name__) def __virtual__(): """ Only load if zc.buildout libs available """ if "buildout.buildout" in __salt__: return __virtualname__ return (False, "buildout module could not be loaded") INVALID_RESPONSE = "Unexpected response from docker" VALID_RESPONSE = "" NOTSET = object() MAPPING_CACHE = {} FN_CACHE = {} def __salt(fn): if fn not in FN_CACHE: FN_CACHE[fn] = __salt__[fn] return FN_CACHE[fn] def _ret_status( exec_status=None, name="", comment="", result=None, quiet=False, changes=None ): if not changes: changes = {} if exec_status is None: exec_status = {} if exec_status: if result is None: result = exec_status["status"] scomment = exec_status.get("comment", None) if scomment: comment += "\n" + scomment out = exec_status.get("out", "") if not quiet: if out: if isinstance(out, str): comment += "\n" + out outlog = exec_status.get("outlog", None) if outlog: if isinstance(outlog, str): comment += "\n" + outlog return { "changes": changes, "result": result, "name": name, "comment": comment, } def _valid(exec_status=None, name="", comment="", changes=None): return _ret_status( exec_status=exec_status, comment=comment, name=name, changes=changes, result=True, ) def _invalid(exec_status=None, name="", comment="", changes=None): return _ret_status( exec_status=exec_status, comment=comment, name=name, changes=changes, result=False, ) def installed( name, config="buildout.cfg", quiet=False, parts=None, user=None, env=(), buildout_ver=None, test_release=False, distribute=None, new_st=None, offline=False, newest=False, python=sys.executable, debug=False, verbose=False, unless=None, onlyif=None, use_vt=False, loglevel="debug", **kwargs ): """ Install buildout in a specific directory It is a thin wrapper to modules.buildout.buildout name directory to execute in quiet do not output console & logs config buildout config to use (default: buildout.cfg) parts specific buildout parts to run user user used to run buildout as .. versionadded:: 2014.1.4 env environment variables to set when running buildout_ver force a specific buildout version (1 | 2) test_release buildout accept test release new_st Forcing use of setuptools >= 0.7 distribute use distribute over setuptools if possible offline does buildout run offline python python to use debug run buildout with -D debug flag onlyif Only execute cmd if statement on the host return 0 unless Do not execute cmd if statement on the host return 0 newest run buildout in newest mode verbose run buildout in verbose mode (-vvvvv) use_vt Use the new salt VT to stream output [experimental] loglevel loglevel for buildout commands """ ret = {} if "group" in kwargs: log.warning("Passing 'group' is deprecated, just remove it") output_loglevel = kwargs.get("output_loglevel", None) if output_loglevel and not loglevel: log.warning( "Passing 'output_loglevel' is deprecated, please use loglevel instead" ) try: test_release = int(test_release) except ValueError: test_release = None func = __salt("buildout.buildout") kwargs = dict( directory=name, config=config, parts=parts, runas=user, env=env, buildout_ver=buildout_ver, test_release=test_release, distribute=distribute, new_st=new_st, offline=offline, newest=newest, python=python, debug=debug, verbose=verbose, onlyif=onlyif, unless=unless, use_vt=use_vt, loglevel=loglevel, ) ret.update(_ret_status(func(**kwargs), name, quiet=quiet)) return ret