mirror of
https://github.com/saltstack/salt.git
synced 2025-04-16 09:40:20 +00:00
Remove deprecated code
This commit is contained in:
parent
f35ae268aa
commit
3b24505b3a
15 changed files with 1 additions and 917 deletions
|
@ -89,7 +89,6 @@ execution modules
|
|||
cabal
|
||||
capirca_acl
|
||||
cassandra_cql
|
||||
cassandra_mod
|
||||
celery
|
||||
ceph
|
||||
chassis
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
salt.modules.cassandra_mod
|
||||
==========================
|
||||
|
||||
.. automodule:: salt.modules.cassandra_mod
|
||||
:members:
|
|
@ -13,10 +13,8 @@ returner modules
|
|||
appoptics_return
|
||||
carbon_return
|
||||
cassandra_cql_return
|
||||
cassandra_return
|
||||
couchbase_return
|
||||
couchdb_return
|
||||
django_return
|
||||
elasticsearch_return
|
||||
etcd_return
|
||||
highstate_return
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
salt.returners.cassandra_return
|
||||
===============================
|
||||
|
||||
.. automodule:: salt.returners.cassandra_return
|
||||
:members:
|
|
@ -1,5 +0,0 @@
|
|||
salt.returners.django_return
|
||||
============================
|
||||
|
||||
.. automodule:: salt.returners.django_return
|
||||
:members:
|
|
@ -132,7 +132,7 @@ Execution ``salt.modules`` (:ref:`index <all-salt.modules>`) ``
|
|||
Executor ``salt.executors`` (:ref:`index <all-salt.executors>`) ``executors`` ``executor_dirs``
|
||||
File Server ``salt.fileserver`` (:ref:`index <file-server>`) ``fileserver`` ``fileserver_dirs``
|
||||
Grain ``salt.grains`` (:ref:`index <all-salt.grains>`) ``grains`` ``grains_dirs``
|
||||
Log Handler ``salt.log.handlers`` (:ref:`index <external-logging-handlers>`) ``log_handlers`` ``log_handlers_dirs``
|
||||
Log Handler ``salt.log_handlers`` (:ref:`index <external-logging-handlers>`) ``log_handlers`` ``log_handlers_dirs``
|
||||
Matcher ``salt.matchers`` ``matchers`` ``matchers_dirs``
|
||||
Metaproxy ``salt.metaproxy`` ``metaproxy`` [#no-fs]_ ``metaproxy_dirs``
|
||||
Net API ``salt.netapi`` (:ref:`index <all-netapi-modules>`) ``netapi`` [#no-fs]_ ``netapi_dirs``
|
||||
|
|
|
@ -4,67 +4,16 @@
|
|||
|
||||
Salt's logging handlers
|
||||
"""
|
||||
|
||||
import logging
|
||||
import logging.handlers
|
||||
import queue as _queue
|
||||
import sys
|
||||
from collections import deque
|
||||
|
||||
from salt._logging.mixins import ExcInfoOnLogLevelFormatMixin
|
||||
from salt.utils.versions import warn_until_date
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TemporaryLoggingHandler(logging.NullHandler):
|
||||
"""
|
||||
This logging handler will store all the log records up to its maximum
|
||||
queue size at which stage the first messages stored will be dropped.
|
||||
|
||||
Should only be used as a temporary logging handler, while the logging
|
||||
system is not fully configured.
|
||||
|
||||
Once configured, pass any logging handlers that should have received the
|
||||
initial log messages to the function
|
||||
:func:`TemporaryLoggingHandler.sync_with_handlers` and all stored log
|
||||
records will be dispatched to the provided handlers.
|
||||
|
||||
.. versionadded:: 0.17.0
|
||||
"""
|
||||
|
||||
def __init__(self, level=logging.NOTSET, max_queue_size=10000):
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"Please stop using '{name}.TemporaryLoggingHandler'. "
|
||||
"'{name}.TemporaryLoggingHandler' will go away after "
|
||||
"{{date}}.".format(name=__name__),
|
||||
)
|
||||
super().__init__(level=level)
|
||||
self.__messages = deque(maxlen=max_queue_size)
|
||||
|
||||
def handle(self, record):
|
||||
self.acquire()
|
||||
self.__messages.append(record)
|
||||
self.release()
|
||||
|
||||
def sync_with_handlers(self, handlers=()):
|
||||
"""
|
||||
Sync the stored log records to the provided log handlers.
|
||||
"""
|
||||
if not handlers:
|
||||
return
|
||||
|
||||
while self.__messages:
|
||||
record = self.__messages.popleft()
|
||||
for handler in handlers:
|
||||
if handler.level > record.levelno:
|
||||
# If the handler's level is higher than the log record one,
|
||||
# it should not handle the log record
|
||||
continue
|
||||
handler.handle(record)
|
||||
|
||||
|
||||
class StreamHandler(ExcInfoOnLogLevelFormatMixin, logging.StreamHandler):
|
||||
"""
|
||||
Stream handler which properly handles exc_info on a per handler basis
|
||||
|
@ -214,33 +163,3 @@ class WatchedFileHandler(
|
|||
"""
|
||||
Watched file handler which properly handles exc_info on a per handler basis
|
||||
"""
|
||||
|
||||
|
||||
class QueueHandler(
|
||||
ExcInfoOnLogLevelFormatMixin, logging.handlers.QueueHandler
|
||||
): # pylint: disable=no-member,inconsistent-mro
|
||||
def __init__(self, queue): # pylint: disable=useless-super-delegation
|
||||
super().__init__(queue)
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"Please stop using '{name}.QueueHandler' and instead "
|
||||
"use 'logging.handlers.QueueHandler'. "
|
||||
"'{name}.QueueHandler' will go away after "
|
||||
"{{date}}.".format(name=__name__),
|
||||
)
|
||||
|
||||
def enqueue(self, record):
|
||||
"""
|
||||
Enqueue a record.
|
||||
|
||||
The base implementation uses put_nowait. You may want to override
|
||||
this method if you want to use blocking, timeouts or custom queue
|
||||
implementations.
|
||||
"""
|
||||
try:
|
||||
self.queue.put_nowait(record)
|
||||
except _queue.Full:
|
||||
sys.stderr.write(
|
||||
"[WARNING ] Message queue is full, "
|
||||
'unable to write "{}" to log.\n'.format(record)
|
||||
)
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
"""
|
||||
:codeauthor: Pedro Algarvio (pedro@algarvio.me)
|
||||
|
||||
|
||||
salt.log
|
||||
~~~~~~~~
|
||||
|
||||
This is where Salt's logging gets set up. Currently, the required imports
|
||||
are made to assure backwards compatibility.
|
||||
"""
|
||||
|
||||
# pylint: disable = no-name-in-module
|
||||
|
||||
# Import several classes/functions from salt.log.setup for backwards compatibility
|
||||
from salt._logging import LOG_LEVELS, SORTED_LEVEL_NAMES
|
||||
from salt.log.setup import (
|
||||
is_console_configured,
|
||||
is_logfile_configured,
|
||||
is_logging_configured,
|
||||
is_temp_logging_configured,
|
||||
set_logger_level,
|
||||
setup_console_logger,
|
||||
setup_logfile_logger,
|
||||
setup_temp_logger,
|
||||
)
|
||||
from salt.utils.versions import warn_until_date
|
||||
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"Please stop using '{name}' and instead use 'salt._logging'. "
|
||||
"'{name}' will go away after {{date}}.".format(name=__name__),
|
||||
stacklevel=3,
|
||||
)
|
|
@ -1,20 +0,0 @@
|
|||
import logging
|
||||
|
||||
from salt._logging.handlers import (
|
||||
FileHandler,
|
||||
QueueHandler,
|
||||
RotatingFileHandler,
|
||||
StreamHandler,
|
||||
SysLogHandler,
|
||||
TemporaryLoggingHandler,
|
||||
WatchedFileHandler,
|
||||
)
|
||||
from salt.utils.versions import warn_until_date
|
||||
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"Please stop using '{name}' and instead use 'salt._logging.handlers'. "
|
||||
"'{name}' will go away after {{date}}.".format(name=__name__),
|
||||
)
|
||||
|
||||
NullHandler = logging.NullHandler
|
|
@ -1,17 +0,0 @@
|
|||
# pylint: disable=unused-import
|
||||
from salt._logging.mixins import (
|
||||
ExcInfoOnLogLevelFormatMixin as ExcInfoOnLogLevelFormatMixIn,
|
||||
)
|
||||
from salt._logging.mixins import LoggingGarbageMixin as LoggingGarbageMixIn
|
||||
from salt._logging.mixins import LoggingMixinMeta as LoggingMixInMeta
|
||||
from salt._logging.mixins import LoggingProfileMixin as LoggingProfileMixIn
|
||||
from salt._logging.mixins import LoggingTraceMixin as LoggingTraceMixIn
|
||||
from salt.utils.versions import warn_until_date
|
||||
|
||||
# pylint: enable=unused-import
|
||||
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"Please stop using '{name}' and instead use 'salt._logging.mixins'. "
|
||||
"'{name}' will go away after {{date}}.".format(name=__name__),
|
||||
)
|
|
@ -1,201 +0,0 @@
|
|||
# pylint: disable=unused-import
|
||||
from functools import wraps
|
||||
|
||||
from salt._logging.handlers import (
|
||||
FileHandler,
|
||||
QueueHandler,
|
||||
RotatingFileHandler,
|
||||
StreamHandler,
|
||||
SysLogHandler,
|
||||
WatchedFileHandler,
|
||||
)
|
||||
from salt._logging.impl import (
|
||||
LOG_COLORS,
|
||||
LOG_LEVELS,
|
||||
LOG_VALUES_TO_LEVELS,
|
||||
SORTED_LEVEL_NAMES,
|
||||
SaltColorLogRecord,
|
||||
SaltLogRecord,
|
||||
)
|
||||
from salt._logging.impl import set_log_record_factory as setLogRecordFactory
|
||||
from salt.utils.versions import warn_until_date
|
||||
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"Please stop using '{name}' and instead use 'salt._logging'. "
|
||||
"'{name}' will go away after {{date}}. Do note however that "
|
||||
"'salt._logging' is now considered a non public implementation "
|
||||
"and is subject to change without deprecations.".format(name=__name__),
|
||||
stacklevel=4,
|
||||
)
|
||||
|
||||
|
||||
def _deprecated_warning(func):
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"Please stop using 'salt.log.setup.{name}()' as it no longer does anything and "
|
||||
"will go away after {{date}}.".format(name=func.__qualname__),
|
||||
stacklevel=4,
|
||||
)
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def is_console_configured():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def is_logfile_configured():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def is_logging_configured():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def is_temp_logging_configured():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def is_mp_logging_listener_configured():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def is_mp_logging_configured():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def is_extended_logging_configured():
|
||||
pass
|
||||
|
||||
|
||||
class SaltLogQueueHandler(QueueHandler):
|
||||
"""
|
||||
Subclassed just to differentiate when debugging
|
||||
"""
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def getLogger(name):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def setup_temp_logger(log_level="error"):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def setup_console_logger(log_level="error", log_format=None, date_format=None):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def setup_logfile_logger(
|
||||
log_path,
|
||||
log_level="error",
|
||||
log_format=None,
|
||||
date_format=None,
|
||||
max_bytes=0,
|
||||
backup_count=0,
|
||||
):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def setup_extended_logging(opts):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def get_multiprocessing_logging_queue():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def set_multiprocessing_logging_queue(queue):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def get_multiprocessing_logging_level():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def set_multiprocessing_logging_level(log_level):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def set_multiprocessing_logging_level_by_opts(opts):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def setup_multiprocessing_logging(queue=None):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def shutdown_console_logging():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def shutdown_logfile_logging():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def shutdown_temp_logging():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def shutdown_multiprocessing_logging():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def shutdown_multiprocessing_logging_listener(daemonizing=False):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def set_logger_level(logger_name, log_level="error"):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def patch_python_logging_handlers():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def __process_multiprocessing_logging_queue(opts, queue):
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def __remove_null_logging_handler():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def __remove_queue_logging_handler():
|
||||
pass
|
||||
|
||||
|
||||
@_deprecated_warning
|
||||
def __remove_temp_logging_handler():
|
||||
pass
|
|
@ -1,218 +0,0 @@
|
|||
"""
|
||||
|
||||
.. warning::
|
||||
|
||||
The `cassandra` module is deprecated in favor of the `cassandra_cql`
|
||||
module.
|
||||
|
||||
Cassandra NoSQL Database Module
|
||||
|
||||
:depends: - pycassa Cassandra Python adapter
|
||||
:configuration:
|
||||
The location of the 'nodetool' command, host, and thrift port needs to be
|
||||
specified via pillar::
|
||||
|
||||
cassandra.nodetool: /usr/local/bin/nodetool
|
||||
cassandra.host: localhost
|
||||
cassandra.thrift_port: 9160
|
||||
"""
|
||||
|
||||
import logging
|
||||
|
||||
import salt.utils.path
|
||||
from salt.utils.versions import warn_until_date
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
HAS_PYCASSA = False
|
||||
try:
|
||||
from pycassa.system_manager import SystemManager
|
||||
|
||||
HAS_PYCASSA = True
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
|
||||
def __virtual__():
|
||||
"""
|
||||
Only load if pycassa is available and the system is configured
|
||||
"""
|
||||
if not HAS_PYCASSA:
|
||||
return (
|
||||
False,
|
||||
"The cassandra execution module cannot be loaded: pycassa not installed.",
|
||||
)
|
||||
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"The cassandra returner is broken and deprecated, and will be removed"
|
||||
" after {date}. Use the cassandra_cql returner instead",
|
||||
)
|
||||
|
||||
if HAS_PYCASSA and salt.utils.path.which("nodetool"):
|
||||
return "cassandra"
|
||||
return (
|
||||
False,
|
||||
"The cassandra execution module cannot be loaded: nodetool not found.",
|
||||
)
|
||||
|
||||
|
||||
def _nodetool(cmd):
|
||||
"""
|
||||
Internal cassandra nodetool wrapper. Some functions are not
|
||||
available via pycassa so we must rely on nodetool.
|
||||
"""
|
||||
nodetool = __salt__["config.option"]("cassandra.nodetool")
|
||||
host = __salt__["config.option"]("cassandra.host")
|
||||
return __salt__["cmd.run_stdout"]("{} -h {} {}".format(nodetool, host, cmd))
|
||||
|
||||
|
||||
def _sys_mgr():
|
||||
"""
|
||||
Return a pycassa system manager connection object
|
||||
"""
|
||||
thrift_port = str(__salt__["config.option"]("cassandra.THRIFT_PORT"))
|
||||
host = __salt__["config.option"]("cassandra.host")
|
||||
return SystemManager("{}:{}".format(host, thrift_port))
|
||||
|
||||
|
||||
def compactionstats():
|
||||
"""
|
||||
Return compactionstats info
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.compactionstats
|
||||
"""
|
||||
return _nodetool("compactionstats")
|
||||
|
||||
|
||||
def version():
|
||||
"""
|
||||
Return the cassandra version
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.version
|
||||
"""
|
||||
return _nodetool("version")
|
||||
|
||||
|
||||
def netstats():
|
||||
"""
|
||||
Return netstats info
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.netstats
|
||||
"""
|
||||
return _nodetool("netstats")
|
||||
|
||||
|
||||
def tpstats():
|
||||
"""
|
||||
Return tpstats info
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.tpstats
|
||||
"""
|
||||
return _nodetool("tpstats")
|
||||
|
||||
|
||||
def info():
|
||||
"""
|
||||
Return cassandra node info
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.info
|
||||
"""
|
||||
return _nodetool("info")
|
||||
|
||||
|
||||
def ring():
|
||||
"""
|
||||
Return cassandra ring info
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.ring
|
||||
"""
|
||||
return _nodetool("ring")
|
||||
|
||||
|
||||
def keyspaces():
|
||||
"""
|
||||
Return existing keyspaces
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.keyspaces
|
||||
"""
|
||||
sys = _sys_mgr()
|
||||
return sys.list_keyspaces()
|
||||
|
||||
|
||||
def column_families(keyspace=None):
|
||||
"""
|
||||
Return existing column families for all keyspaces
|
||||
or just the provided one.
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.column_families
|
||||
salt '*' cassandra.column_families <keyspace>
|
||||
"""
|
||||
sys = _sys_mgr()
|
||||
ksps = sys.list_keyspaces()
|
||||
|
||||
if keyspace:
|
||||
if keyspace in ksps:
|
||||
return list(sys.get_keyspace_column_families(keyspace).keys())
|
||||
else:
|
||||
return None
|
||||
else:
|
||||
ret = {}
|
||||
for kspace in ksps:
|
||||
ret[kspace] = list(sys.get_keyspace_column_families(kspace).keys())
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def column_family_definition(keyspace, column_family):
|
||||
"""
|
||||
Return a dictionary of column family definitions for the given
|
||||
keyspace/column_family
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' cassandra.column_family_definition <keyspace> <column_family>
|
||||
|
||||
"""
|
||||
sys = _sys_mgr()
|
||||
|
||||
try:
|
||||
return vars(sys.get_keyspace_column_families(keyspace)[column_family])
|
||||
except Exception: # pylint: disable=broad-except
|
||||
log.debug("Invalid Keyspace/CF combination")
|
||||
return None
|
|
@ -1,96 +0,0 @@
|
|||
"""
|
||||
.. warning::
|
||||
|
||||
The `cassandra` returner is deprecated in favor of the `cassandra_cql`
|
||||
returner.
|
||||
|
||||
Return data to a Cassandra ColumnFamily
|
||||
|
||||
Here's an example Keyspace / ColumnFamily setup that works with this
|
||||
returner::
|
||||
|
||||
create keyspace salt;
|
||||
use salt;
|
||||
create column family returns
|
||||
with key_validation_class='UTF8Type'
|
||||
and comparator='UTF8Type'
|
||||
and default_validation_class='UTF8Type';
|
||||
|
||||
Required python modules: pycassa
|
||||
|
||||
To use the cassandra returner, append '--return cassandra' to the salt command. ex:
|
||||
|
||||
salt '*' test.ping --return cassandra
|
||||
"""
|
||||
|
||||
|
||||
import logging
|
||||
|
||||
import salt.utils.jid
|
||||
from salt.utils.versions import warn_until_date
|
||||
|
||||
try:
|
||||
import pycassa # pylint: disable=import-error
|
||||
|
||||
HAS_PYCASSA = True
|
||||
except ImportError:
|
||||
HAS_PYCASSA = False
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
__opts__ = {
|
||||
"cassandra.servers": ["localhost:9160"],
|
||||
"cassandra.keyspace": "salt",
|
||||
"cassandra.column_family": "returns",
|
||||
"cassandra.consistency_level": "ONE",
|
||||
}
|
||||
|
||||
# Define the module's virtual name
|
||||
__virtualname__ = "cassandra"
|
||||
|
||||
|
||||
def __virtual__():
|
||||
if not HAS_PYCASSA:
|
||||
return False, "Could not import cassandra returner; pycassa is not installed."
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"The cassandra returner is broken and deprecated, and will be removed"
|
||||
" after {date}. Use the cassandra_cql returner instead",
|
||||
)
|
||||
return __virtualname__
|
||||
|
||||
|
||||
def returner(ret):
|
||||
"""
|
||||
Return data to a Cassandra ColumnFamily
|
||||
"""
|
||||
|
||||
consistency_level = getattr(
|
||||
pycassa.ConsistencyLevel, __opts__["cassandra.consistency_level"]
|
||||
)
|
||||
|
||||
pool = pycassa.ConnectionPool(
|
||||
__opts__["cassandra.keyspace"], __opts__["cassandra.servers"]
|
||||
)
|
||||
ccf = pycassa.ColumnFamily(
|
||||
pool,
|
||||
__opts__["cassandra.column_family"],
|
||||
write_consistency_level=consistency_level,
|
||||
)
|
||||
|
||||
columns = {"fun": ret["fun"], "id": ret["id"]}
|
||||
if isinstance(ret["return"], dict):
|
||||
for key, value in ret["return"].items():
|
||||
columns["return.{}".format(key)] = str(value)
|
||||
else:
|
||||
columns["return"] = str(ret["return"])
|
||||
|
||||
log.debug(columns)
|
||||
ccf.insert(ret["jid"], columns)
|
||||
|
||||
|
||||
def prep_jid(nocache=False, passed_jid=None): # pylint: disable=unused-argument
|
||||
"""
|
||||
Do any work necessary to prepare a JID, including sending a custom id
|
||||
"""
|
||||
return passed_jid if passed_jid is not None else salt.utils.jid.gen_jid(__opts__)
|
|
@ -1,103 +0,0 @@
|
|||
"""
|
||||
.. deprecated:: 3006.0
|
||||
|
||||
.. warning::
|
||||
|
||||
This module has been deprecated and will be removed after January 2024.
|
||||
|
||||
A returner that will inform a Django system that
|
||||
returns are available using Django's signal system.
|
||||
|
||||
https://docs.djangoproject.com/en/dev/topics/signals/
|
||||
|
||||
It is up to the Django developer to register necessary
|
||||
handlers with the signals provided by this returner
|
||||
and process returns as necessary.
|
||||
|
||||
The easiest way to use signals is to import them from
|
||||
this returner directly and then use a decorator to register
|
||||
them.
|
||||
|
||||
An example Django module that registers a function called
|
||||
'returner_callback' with this module's 'returner' function:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import salt.returners.django_return
|
||||
from django.dispatch import receiver
|
||||
|
||||
@receiver(salt.returners.django_return, sender=returner)
|
||||
def returner_callback(sender, ret):
|
||||
print('I received {0} from {1}'.format(ret, sender))
|
||||
|
||||
"""
|
||||
# Import Python libraries
|
||||
|
||||
import logging
|
||||
|
||||
# Import Salt libraries
|
||||
import salt.returners
|
||||
import salt.utils.jid
|
||||
from salt.utils.versions import warn_until_date
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
HAS_DJANGO = False
|
||||
|
||||
try:
|
||||
from django import dispatch # pylint: disable=E0611
|
||||
|
||||
HAS_DJANGO = True
|
||||
except ImportError:
|
||||
HAS_DJANGO = False
|
||||
|
||||
# Define this module's virtual name
|
||||
__virtualname__ = "django"
|
||||
|
||||
|
||||
def __virtual__():
|
||||
warn_until_date(
|
||||
"20240101",
|
||||
"The django returner is broken and deprecated, and will be removed"
|
||||
" after {date}.",
|
||||
)
|
||||
if not HAS_DJANGO:
|
||||
return False, "Could not import django returner; django is not installed."
|
||||
return True
|
||||
|
||||
|
||||
def returner(ret):
|
||||
"""
|
||||
Signal a Django server that a return is available
|
||||
"""
|
||||
signaled = dispatch.Signal(providing_args=["ret"]).send(sender="returner", ret=ret)
|
||||
|
||||
for signal in signaled:
|
||||
log.debug(
|
||||
"Django returner function 'returner' signaled %s which responded with %s",
|
||||
signal[0],
|
||||
signal[1],
|
||||
)
|
||||
|
||||
|
||||
def save_load(jid, load, minions=None):
|
||||
"""
|
||||
Save the load to the specified jid
|
||||
"""
|
||||
signaled = dispatch.Signal(providing_args=["jid", "load"]).send(
|
||||
sender="save_load", jid=jid, load=load
|
||||
)
|
||||
|
||||
for signal in signaled:
|
||||
log.debug(
|
||||
"Django returner function 'save_load' signaled %s which responded with %s",
|
||||
signal[0],
|
||||
signal[1],
|
||||
)
|
||||
|
||||
|
||||
def prep_jid(nocache=False, passed_jid=None):
|
||||
"""
|
||||
Do any work necessary to prepare a JID, including sending a custom ID
|
||||
"""
|
||||
return passed_jid if passed_jid is not None else salt.utils.jid.gen_jid(__opts__)
|
|
@ -1,129 +0,0 @@
|
|||
"""
|
||||
:codeauthor: Rupesh Tare <rupesht@saltstack.com>
|
||||
|
||||
Test cases for salt.modules.cassandra_mod
|
||||
"""
|
||||
|
||||
import pytest
|
||||
|
||||
import salt.modules.cassandra_mod as cassandra
|
||||
from tests.support.mock import MagicMock, patch
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def configure_loader_modules():
|
||||
return {cassandra: {}}
|
||||
|
||||
|
||||
def test_compactionstats():
|
||||
"""
|
||||
Test for Return compactionstats info
|
||||
"""
|
||||
mock = MagicMock(return_value="A")
|
||||
with patch.object(cassandra, "_nodetool", mock):
|
||||
assert cassandra.compactionstats() == "A"
|
||||
|
||||
|
||||
def test_version():
|
||||
"""
|
||||
Test for Return the cassandra version
|
||||
"""
|
||||
mock = MagicMock(return_value="A")
|
||||
with patch.object(cassandra, "_nodetool", mock):
|
||||
assert cassandra.version() == "A"
|
||||
|
||||
|
||||
def test_netstats():
|
||||
"""
|
||||
Test for Return netstats info
|
||||
"""
|
||||
mock = MagicMock(return_value="A")
|
||||
with patch.object(cassandra, "_nodetool", mock):
|
||||
assert cassandra.netstats() == "A"
|
||||
|
||||
|
||||
def test_tpstats():
|
||||
"""
|
||||
Test for Return tpstats info
|
||||
"""
|
||||
mock = MagicMock(return_value="A")
|
||||
with patch.object(cassandra, "_nodetool", mock):
|
||||
assert cassandra.tpstats() == "A"
|
||||
|
||||
|
||||
def test_info():
|
||||
"""
|
||||
Test for Return cassandra node info
|
||||
"""
|
||||
mock = MagicMock(return_value="A")
|
||||
with patch.object(cassandra, "_nodetool", mock):
|
||||
assert cassandra.info() == "A"
|
||||
|
||||
|
||||
def test_ring():
|
||||
"""
|
||||
Test for Return ring info
|
||||
"""
|
||||
mock = MagicMock(return_value="A")
|
||||
with patch.object(cassandra, "_nodetool", mock):
|
||||
assert cassandra.ring() == "A"
|
||||
|
||||
|
||||
def test_keyspaces():
|
||||
"""
|
||||
Test for Return existing keyspaces
|
||||
"""
|
||||
mock_keyspaces = ["A", "B", "C", "D"]
|
||||
|
||||
class MockSystemManager:
|
||||
def list_keyspaces(self):
|
||||
return mock_keyspaces
|
||||
|
||||
mock_sys_mgr = MagicMock(return_value=MockSystemManager())
|
||||
|
||||
with patch.object(cassandra, "_sys_mgr", mock_sys_mgr):
|
||||
assert cassandra.keyspaces() == mock_keyspaces
|
||||
|
||||
|
||||
def test_column_families():
|
||||
"""
|
||||
Test for Return existing column families for all keyspaces
|
||||
"""
|
||||
mock_keyspaces = ["A", "B"]
|
||||
|
||||
class MockSystemManager:
|
||||
def list_keyspaces(self):
|
||||
return mock_keyspaces
|
||||
|
||||
def get_keyspace_column_families(self, keyspace):
|
||||
if keyspace == "A":
|
||||
return {"a": "saltines", "b": "biscuits"}
|
||||
if keyspace == "B":
|
||||
return {"c": "cheese", "d": "crackers"}
|
||||
|
||||
mock_sys_mgr = MagicMock(return_value=MockSystemManager())
|
||||
|
||||
with patch.object(cassandra, "_sys_mgr", mock_sys_mgr):
|
||||
assert cassandra.column_families("Z") is None
|
||||
assert cassandra.column_families("A") == ["a", "b"]
|
||||
assert cassandra.column_families() == {"A": ["a", "b"], "B": ["c", "d"]}
|
||||
|
||||
|
||||
def test_column_family_definition():
|
||||
"""
|
||||
Test for Return a dictionary of column family definitions for the given
|
||||
keyspace/column_family
|
||||
"""
|
||||
|
||||
class MockSystemManager:
|
||||
def get_keyspace_column_families(self, keyspace):
|
||||
if keyspace == "A":
|
||||
return {"a": object, "b": object}
|
||||
if keyspace == "B":
|
||||
raise Exception
|
||||
|
||||
mock_sys_mgr = MagicMock(return_value=MockSystemManager())
|
||||
|
||||
with patch.object(cassandra, "_sys_mgr", mock_sys_mgr):
|
||||
assert cassandra.column_family_definition("A", "a") == vars(object)
|
||||
assert cassandra.column_family_definition("B", "a") is None
|
Loading…
Add table
Reference in a new issue