[SCM] Samba Shared Repository - branch master updated
Martin Schwenke
martins at samba.org
Tue Jul 20 05:30:01 UTC 2021
The branch, master has been updated
via b724c1e6a66 utils: Avoid pylint warning
via 319e27343d7 utils: Reformat lines that are longer than 80 columns
via 98c7a38b711 utils: Tweak exception handling to stop flake8 complaining
via 12d3e215a60 utils: Simplify log level logic, drop global variable
via e323d16a9d1 utils: Inline defaults and help strings
via af5aecced12 utils: Move argument processing into function and call from main()
via e66637a079c utils: Reorder imports so that standard imports are first
via bd0b2bb6ee9 utils: Clean up ctdb_etcd_lock using autopep8
via 939aed04982 utils: Use Python 3
from d961830cb59 examples: Make winreg.py sample work with python3 in current master
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit b724c1e6a660eb6b9ceaf3c81d6dac0b0562206d
Author: Martin Schwenke <martin at meltin.net>
Date: Tue Apr 27 15:45:17 2021 +1000
utils: Avoid pylint warning
pylint warns:
Use lazy % formatting in logging functions
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
Autobuild-User(master): Martin Schwenke <martins at samba.org>
Autobuild-Date(master): Tue Jul 20 05:29:18 UTC 2021 on sn-devel-184
commit 319e27343d7ee5f7f6045a19747ba85fb4bef768
Author: Martin Schwenke <martin at meltin.net>
Date: Tue Apr 27 15:37:43 2021 +1000
utils: Reformat lines that are longer than 80 columns
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
commit 98c7a38b711d38ac756ca7e34769eb277904f7d0
Author: Martin Schwenke <martin at meltin.net>
Date: Tue Apr 27 14:56:20 2021 +1000
utils: Tweak exception handling to stop flake8 complaining
Don't bother with "as e" to avoid warning about unused variable.
Don't use bare "except:" (though pylint still complains about this
version).
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
commit 12d3e215a6096fc9862642b98dd8bca1421f2cae
Author: Martin Schwenke <martin at meltin.net>
Date: Wed May 26 11:18:04 2021 +1000
utils: Simplify log level logic, drop global variable
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
commit e323d16a9d11c63640fca186c6f5a29360fb3c7b
Author: Martin Schwenke <martin at meltin.net>
Date: Tue Apr 27 14:50:15 2021 +1000
utils: Inline defaults and help strings
Removes an unnecessary level of indirection: defaults and help strings
are now where they are expected. Also removes some global variables.
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
commit af5aecced12a8f6a9259602f8ddf3662fe6c1ba0
Author: Martin Schwenke <martin at meltin.net>
Date: Wed May 26 10:57:07 2021 +1000
utils: Move argument processing into function and call from main()
Removes the need for the global variables currently associated with
this processing. Also removes unnecessarily double-handling the
defaults, which are assigned to the global variables and set via
add_argument().
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
commit e66637a079c070d29c685b6315e5427679dc778a
Author: Martin Schwenke <martin at meltin.net>
Date: Tue Apr 27 13:00:49 2021 +1000
utils: Reorder imports so that standard imports are first
Avoids numerous pylint warnings.
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
commit bd0b2bb6ee9d03a259e7d7e9f4397f4dbe3f1b91
Author: Martin Schwenke <martin at meltin.net>
Date: Tue Apr 27 12:59:17 2021 +1000
utils: Clean up ctdb_etcd_lock using autopep8
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
commit 939aed0498269df3c1e012f3b68c314b583f25bd
Author: Martin Schwenke <martin at meltin.net>
Date: Tue Apr 27 15:46:14 2021 +1000
utils: Use Python 3
Due to the number of flake8 and pylint warnings it is unclear if the
source has Python 3 incompatibilities. These will be cleaned up in
subsequent commits.
Signed-off-by: "L.P.H. van Belle" <belle at bazuin.nl>
Reviewed-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Jose A. Rivera <jarrpa at samba.org>
-----------------------------------------------------------------------
Summary of changes:
ctdb/utils/etcd/ctdb_etcd_lock | 275 +++++++++++++++++++++--------------------
1 file changed, 140 insertions(+), 135 deletions(-)
Changeset truncated at 500 lines:
diff --git a/ctdb/utils/etcd/ctdb_etcd_lock b/ctdb/utils/etcd/ctdb_etcd_lock
index 000c6bb7208..5e722267cd3 100755
--- a/ctdb/utils/etcd/ctdb_etcd_lock
+++ b/ctdb/utils/etcd/ctdb_etcd_lock
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -52,157 +52,162 @@ parameters, see here: https://github.com/jplana/python-etcd/
"""
import signal
import time
-import etcd
import sys
import os
import argparse
import logging
import subprocess
-# Globals ---------------------------------------------------------------------
-#
-defaults = { 'config': os.path.join(
- os.getenv('CTDB_BASE', '/usr/local/etc/ctdb'),
- 'etcd'),
- 'verbose' : 0,
- }
-helpmsg = { 'config': 'Configuration file to use. The default behavior ' + \
- 'is to look is the base CTDB configuration ' + \
- 'directory, which can be overwritten by setting the' + \
- 'CTDB_BASE environment variable, for a file called' + \
- '\'etcd\'. Default value is ' + defaults['config'],
- 'verbose' : 'Display verbose output to stderr. Default is no output.',
- }
-
-log_levels = { 0: logging.ERROR,
- 1: logging.WARNING,
- 2: logging.DEBUG,
- }
-
-config_file = defaults['config']
-verbose = defaults['verbose']
+import etcd
# Helper Functions ------------------------------------------------------------
#
+
+
+def process_args():
+ '''Process command-line arguments and return them.
+ '''
+ parser = argparse.ArgumentParser(
+ description=__doc__,
+ epilog='',
+ formatter_class=argparse.RawDescriptionHelpFormatter)
+ parser.add_argument('-v', '--verbose',
+ action='count',
+ help='Display verbose output to stderr. '
+ 'Default is no output.',
+ default=0,
+ )
+ parser.add_argument('-c', '--config',
+ action='store',
+ help='Configuration file to use. The default behavior '
+ 'is to look is the base CTDB configuration '
+ 'directory, which can be overwritten by setting '
+ 'the CTDB_BASE environment variable, for a file '
+ 'called \'etcd\'. Default value is %(default)s.',
+ default=os.path.join(os.getenv('CTDB_BASE',
+ '/usr/local/etc/ctdb'),
+ 'etcd'),
+ )
+ args = parser.parse_args()
+
+ return args
+
+
+def setup_logging(verbose):
+ '''Setup logging based on specified verbosity.
+ '''
+
+ log_levels = [logging.ERROR, logging.WARNING, logging.DEBUG]
+ logging.basicConfig(level=log_levels[min(verbose, len(log_levels)-1)])
+
+
def sigterm_handler(signum, frame):
- """Handler for SIGTERM signals.
- """
- sys.exit()
+ """Handler for SIGTERM signals.
+ """
+ sys.exit()
+
def print_nonl(out):
- """Dumb shortcut for printing to stdout with no newline.
- """
- sys.stdout.write(str(out))
- sys.stdout.flush()
+ """Dumb shortcut for printing to stdout with no newline.
+ """
+ sys.stdout.write(str(out))
+ sys.stdout.flush()
+
def int_or_not(s):
- """Try to convert input to an integer.
- """
- try:
- return int(s)
- except ValueError:
- return s
+ """Try to convert input to an integer.
+ """
+ try:
+ return int(s)
+ except ValueError:
+ return s
# Mainline --------------------------------------------------------------------
#
+
+
def main():
- global config_file
- global verbose
-
- logging.basicConfig(level=log_levels[verbose])
-
- # etcd config defaults
- etcd_config = {
- 'port' : 2379,
- 'locks_dir' : '_ctdb',
- 'lock_ttl' : 9,
- 'lock_refresh': 2,
- }
- # Find and read etcd config file
- etcd_client_params = (
- 'host',
- 'port',
- 'srv_domain',
- 'version_prefix',
- 'read_timeout',
- 'allow_redirect',
- 'protocol',
- 'cert',
- 'ca_cert',
- 'username',
- 'password',
- 'allow_reconnect',
- 'use_proxies',
- 'expected_cluster_id',
- 'per_host_pool_size',
- )
- if os.path.isfile(config_file):
- f = open(config_file, 'r')
- for line in f:
- (key, value) = line.split("=",1)
- etcd_config[key.strip()] = int_or_not(value.strip())
-
- # Minor hack: call out to shell to retrieve CTDB netbios name and PNN.
- tmp = subprocess.Popen("testparm -s --parameter-name 'netbios name'; \
+ args = process_args()
+
+ setup_logging(args.verbose)
+
+ # etcd config defaults
+ etcd_config = {
+ 'port': 2379,
+ 'locks_dir': '_ctdb',
+ 'lock_ttl': 9,
+ 'lock_refresh': 2,
+ }
+ # Find and read etcd config file
+ etcd_client_params = (
+ 'host',
+ 'port',
+ 'srv_domain',
+ 'version_prefix',
+ 'read_timeout',
+ 'allow_redirect',
+ 'protocol',
+ 'cert',
+ 'ca_cert',
+ 'username',
+ 'password',
+ 'allow_reconnect',
+ 'use_proxies',
+ 'expected_cluster_id',
+ 'per_host_pool_size',
+ )
+ if os.path.isfile(args.config):
+ f = open(args.config, 'r')
+ for line in f:
+ (key, value) = line.split("=", 1)
+ etcd_config[key.strip()] = int_or_not(value.strip())
+
+ # Minor hack: call out to shell to retrieve CTDB netbios name and PNN.
+ tmp = subprocess.Popen("testparm -s --parameter-name 'netbios name'; \
ctdb pnn",
- shell=True,
- universal_newlines=True,
- stdout=subprocess.PIPE
- ).stdout.read().strip()
- nb_name, pnn = tmp.split()
-
- # Try to get and hold the lock
- try:
- client = etcd.Client(**{k: etcd_config[k] for k in \
- set(etcd_client_params).intersection(etcd_config)})
- lock = etcd.Lock(client, etcd_config['locks_dir'] + "/" + nb_name)
- lock._uuid = lock._uuid + "_" + pnn
- logging.debug("Updated lock UUID: " + lock.uuid)
- ppid = os.getppid()
- while True:
- lock.acquire(blocking=False, lock_ttl=etcd_config['lock_ttl'])
- if lock.is_acquired:
- print_nonl(0)
- else:
- locks = "No locks found."
+ shell=True,
+ universal_newlines=True,
+ stdout=subprocess.PIPE
+ ).stdout.read().strip()
+ nb_name, pnn = tmp.split()
+
+ # Try to get and hold the lock
+ try:
+ client = etcd.Client(
+ **{k: etcd_config[k] for k in
+ set(etcd_client_params).intersection(etcd_config)})
+ lock = etcd.Lock(client, etcd_config['locks_dir'] + "/" + nb_name)
+ lock._uuid = lock._uuid + "_" + pnn
+ logging.debug("Updated lock UUID: %s", lock.uuid)
+ ppid = os.getppid()
+ while True:
+ lock.acquire(blocking=False, lock_ttl=etcd_config['lock_ttl'])
+ if lock.is_acquired:
+ print_nonl(0)
+ else:
+ locks = "No locks found."
+ if logging.getLogger().getEffectiveLevel() == logging.DEBUG:
+ keys = client.read(lock.path, recursive=True)
+ if keys is not None:
+ locks = "Existing locks:\n "
+ locks += '\n '.join(
+ (child.key + ": " + child.value for child in
+ keys.children))
+ logging.debug("Lock contention. %s", locks)
+ print_nonl(1)
+ break
+ os.kill(ppid, 0)
+ time.sleep(etcd_config['lock_refresh'])
+ except (OSError, SystemExit):
+ if lock is not None and lock.is_acquired:
+ lock.release()
+ except Exception:
+ print_nonl(3)
if logging.getLogger().getEffectiveLevel() == logging.DEBUG:
- keys = client.read(lock.path, recursive=True)
- if keys is not None:
- locks = "Existing locks:\n "
- locks += '\n '.join((child.key + ": " + child.value for child in keys.children))
- logging.debug("Lock contention. " + locks)
- print_nonl(1)
- break
- os.kill(ppid, 0)
- time.sleep(etcd_config['lock_refresh'])
- except (OSError, SystemExit) as e:
- if lock is not None and lock.is_acquired:
- lock.release()
- except:
- print_nonl(3)
- if logging.getLogger().getEffectiveLevel() == logging.DEBUG:
- raise
-
-if __name__== "__main__":
- signal.signal(signal.SIGTERM, sigterm_handler)
-
- parser = argparse.ArgumentParser(
- description=__doc__,
- epilog='',
- formatter_class=argparse.RawDescriptionHelpFormatter )
- parser.add_argument( '-v', '--verbose',
- action='count',
- help=helpmsg['verbose'],
- default=defaults['verbose'],
- )
- parser.add_argument( '-c', '--config',
- action='store',
- help=helpmsg['config'],
- default=defaults['config'],
- )
- args = parser.parse_args()
-
- config_file = args.config
- verbose = args.verbose if args.verbose <= 2 else 2
-
- main()
+ raise
+
+
+if __name__ == "__main__":
+ signal.signal(signal.SIGTERM, sigterm_handler)
+
+ main()
--
Samba Shared Repository
More information about the samba-cvs
mailing list