%PDF- %PDF-
Direktori : /usr/lib/python2.7/site-packages/salt/states/ |
Current File : //usr/lib/python2.7/site-packages/salt/states/logrotate.py |
# -*- coding: utf-8 -*- ''' Module for managing logrotate. .. versionadded:: 2017.7.0 ''' # Import Python libs from __future__ import absolute_import, print_function, unicode_literals # Import Salt libs from salt.ext import six _DEFAULT_CONF = '/etc/logrotate.conf' # Define the module's virtual name __virtualname__ = 'logrotate' # Define a function alias in order not to shadow built-in's __func_alias__ = { 'set_': 'set' } def __virtual__(): ''' Load only on minions that have the logrotate module. ''' if 'logrotate.show_conf' in __salt__: return __virtualname__ return False def _convert_if_int(value): ''' Convert to an int if necessary. :param str value: The value to check/convert. :return: The converted or passed value. :rtype: bool|int|str ''' try: value = int(six.text_type(value)) except ValueError: pass return value def set_(name, key, value, setting=None, conf_file=_DEFAULT_CONF): ''' Set a new value for a specific configuration line. :param str key: The command or block to configure. :param str value: The command value or command of the block specified by the key parameter. :param str setting: The command value for the command specified by the value parameter. :param str conf_file: The logrotate configuration file. Example of usage with only the required arguments: .. code-block:: yaml logrotate-rotate: logrotate.set: - key: rotate - value: 2 Example of usage specifying all available arguments: .. code-block:: yaml logrotate-wtmp-rotate: logrotate.set: - key: /var/log/wtmp - value: rotate - setting: 2 - conf_file: /etc/logrotate.conf ''' ret = {'name': name, 'changes': dict(), 'comment': six.text_type(), 'result': None} try: if setting is None: current_value = __salt__['logrotate.get'](key=key, conf_file=conf_file) else: current_value = __salt__['logrotate.get'](key=key, value=value, conf_file=conf_file) except (AttributeError, KeyError): current_value = False if setting is None: value = _convert_if_int(value) if current_value == value: ret['comment'] = "Command '{0}' already has value: {1}".format(key, value) ret['result'] = True elif __opts__['test']: ret['comment'] = "Command '{0}' will be set to value: {1}".format(key, value) ret['changes'] = {'old': current_value, 'new': value} else: ret['changes'] = {'old': current_value, 'new': value} ret['result'] = __salt__['logrotate.set'](key=key, value=value, conf_file=conf_file) if ret['result']: ret['comment'] = "Set command '{0}' value: {1}".format(key, value) else: ret['comment'] = "Unable to set command '{0}' value: {1}".format(key, value) return ret setting = _convert_if_int(setting) if current_value == setting: ret['comment'] = "Block '{0}' command '{1}' already has value: {2}".format(key, value, setting) ret['result'] = True elif __opts__['test']: ret['comment'] = "Block '{0}' command '{1}' will be set to value: {2}".format(key, value, setting) ret['changes'] = {'old': current_value, 'new': setting} else: ret['changes'] = {'old': current_value, 'new': setting} ret['result'] = __salt__['logrotate.set'](key=key, value=value, setting=setting, conf_file=conf_file) if ret['result']: ret['comment'] = "Set block '{0}' command '{1}' value: {2}".format(key, value, setting) else: ret['comment'] = "Unable to set block '{0}' command '{1}' value: {2}".format(key, value, setting) return ret