use zmq.IPC_PATH_MAX_LEN constant

less code duplication
better language
This commit is contained in:
Godefroid Chapelle 2013-01-25 13:58:43 +01:00
parent 119c1bc2ac
commit 7b84c70477
3 changed files with 27 additions and 41 deletions

View File

@ -30,7 +30,7 @@ except ImportError:
# Import salt libs # Import salt libs
from salt.exceptions import ( from salt.exceptions import (
AuthenticationError, CommandExecutionError, CommandNotFoundError, AuthenticationError, CommandExecutionError, CommandNotFoundError,
SaltInvocationError, SaltReqTimeoutError, SaltSystemExit SaltInvocationError, SaltReqTimeoutError
) )
import salt.client import salt.client
import salt.crypt import salt.crypt
@ -631,25 +631,9 @@ class Minion(object):
) )
else: else:
epub_uri = 'ipc://{0}'.format(epub_sock_path) epub_uri = 'ipc://{0}'.format(epub_sock_path)
salt.utils.check_ipc_path_max_len(epub_uri)
epull_uri = 'ipc://{0}'.format(epull_sock_path) epull_uri = 'ipc://{0}'.format(epull_sock_path)
for uri in (epub_uri, epull_uri): salt.utils.check_ipc_path_max_len(epull_uri)
if uri.startswith('tcp://'):
# This check only applies to IPC sockets
continue
# The socket path is limited to 107 characters on Solaris and
# Linux, and 103 characters on BSD-based systems.
# Let's fail at the lower level so no system checks are
# required.
if len(uri) > 103:
raise SaltSystemExit(
'The socket path length is more that what ZMQ allows. '
'The length of {0!r} is more than 103 characters. '
'Either try to reduce the length of this setting\'s '
'path or switch to TCP; In the configuration file set '
'"ipc_mode: tcp"'.format(
uri
)
)
log.debug( log.debug(
'{0} PUB socket URI: {1}'.format( '{0} PUB socket URI: {1}'.format(
self.__class__.__name__, epub_uri self.__class__.__name__, epub_uri

View File

@ -20,6 +20,7 @@ import datetime
import platform import platform
import tempfile import tempfile
import subprocess import subprocess
import zmq
from calendar import month_abbr as months from calendar import month_abbr as months
try: try:
@ -32,7 +33,9 @@ except ImportError:
# Import salt libs # Import salt libs
import salt.minion import salt.minion
import salt.payload import salt.payload
from salt.exceptions import SaltClientError, CommandNotFoundError from salt.exceptions import (
SaltClientError, CommandNotFoundError, SaltSystemExit
)
# Do not use these color declarations, use get_colors() # Do not use these color declarations, use get_colors()
@ -795,3 +798,18 @@ def is_linux():
Simple function to return if a host is Linux or not Simple function to return if a host is Linux or not
''' '''
return sys.platform.startswith('linux') return sys.platform.startswith('linux')
def check_ipc_path_max_len(uri):
# The socket path is limited to 107 characters on Solaris and
# Linux, and 103 characters on BSD-based systems.
if zmq.IPC_PATH_MAX_LEN and len(uri) > zmq.IPC_PATH_MAX_LEN:
raise SaltSystemExit(
'The socket path is longer than allowed by OS. '
'{0!r} is longer than {1} characters. '
'Either try to reduce the length of this setting\'s '
'path or switch to TCP; in the configuration file, '
'set "ipc_mode: tcp".'.format(
uri, zmq.IPC_PATH_MAX_LEN
)
)

View File

@ -29,8 +29,8 @@ import zmq
import salt.payload import salt.payload
import salt.loader import salt.loader
import salt.state import salt.state
import salt.utils
from salt._compat import string_types from salt._compat import string_types
from salt.exceptions import SaltSystemExit
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -57,10 +57,12 @@ class SaltEvent(object):
sock_dir, sock_dir,
'master_event_pub.ipc' 'master_event_pub.ipc'
)) ))
salt.utils.check_ipc_path_max_len(puburi)
pulluri = 'ipc://{0}'.format(os.path.join( pulluri = 'ipc://{0}'.format(os.path.join(
sock_dir, sock_dir,
'master_event_pull.ipc' 'master_event_pull.ipc'
)) ))
salt.utils.check_ipc_path_max_len(pulluri)
else: else:
if kwargs.get('ipc_mode', '') == 'tcp': if kwargs.get('ipc_mode', '') == 'tcp':
puburi = 'tcp://127.0.0.1:{0}'.format( puburi = 'tcp://127.0.0.1:{0}'.format(
@ -74,29 +76,12 @@ class SaltEvent(object):
sock_dir, sock_dir,
'minion_event_{0}_pub.ipc'.format(id_hash) 'minion_event_{0}_pub.ipc'.format(id_hash)
)) ))
salt.utils.check_ipc_path_max_len(puburi)
pulluri = 'ipc://{0}'.format(os.path.join( pulluri = 'ipc://{0}'.format(os.path.join(
sock_dir, sock_dir,
'minion_event_{0}_pull.ipc'.format(id_hash) 'minion_event_{0}_pull.ipc'.format(id_hash)
)) ))
for uri in (puburi, pulluri): salt.utils.check_ipc_path_max_len(pulluri)
if uri.startswith('tcp://'):
# This check only applies to IPC sockets
continue
# The socket path is limited to 107 characters on Solaris and
# Linux, and 103 characters on BSD-based systems.
# Let's fail at the lower level so no system checks are
# required.
if len(uri) > 103:
raise SaltSystemExit(
'The socket path length is more that what ZMQ allows. '
'The length of {0!r} is more than 103 characters. '
'Either try to reduce the length of this setting\'s '
'path or switch to TCP; In the configuration file set '
'"ipc_mode: tcp"'.format(
uri
)
)
log.debug( log.debug(
'{0} PUB socket URI: {1}'.format(self.__class__.__name__, puburi) '{0} PUB socket URI: {1}'.format(self.__class__.__name__, puburi)
) )
@ -105,7 +90,6 @@ class SaltEvent(object):
) )
return puburi, pulluri return puburi, pulluri
def subscribe(self, tag): def subscribe(self, tag):
''' '''
Subscribe to events matching the passed tag. Subscribe to events matching the passed tag.