add -x to exclude hosts based on regex match
This commit is contained in:
parent
33a6284084
commit
14b0553b52
10
eoptasks.py
10
eoptasks.py
|
@ -30,6 +30,10 @@
|
|||
# eoptasks -k saas/test/passerelle,ext/test --list-servers
|
||||
# List servers that have saas AND test AND passerelle keywords, OR the
|
||||
# ext AND test keywords.
|
||||
#
|
||||
# eoptasks -k saas/prod -x ^node,^database.node,.*docbow sudo apt install publik-base-theme
|
||||
# Install/upgrade publik-base-theme on all production server of the SaaS excepted
|
||||
# the hypervisor, database, and docbow nodes.
|
||||
|
||||
import argparse
|
||||
import configparser
|
||||
|
@ -96,6 +100,7 @@ def parse_args():
|
|||
parser.add_argument('--command-server-name', dest='command_server_name', type=str)
|
||||
parser.add_argument('--noinput', dest='noinput', action='store_true')
|
||||
parser.add_argument('-k', dest='keywords', type=str)
|
||||
parser.add_argument('-x', dest='exclude', type=str)
|
||||
parser.add_argument('cmd', type=str, nargs='?', default=None)
|
||||
parser.add_argument('args', nargs=argparse.REMAINDER)
|
||||
args = parser.parse_args()
|
||||
|
@ -114,8 +119,13 @@ def filter_servers(servers, args):
|
|||
selected_servers = [x for x in selected_servers if keyword[1:] not in x.keywords]
|
||||
else:
|
||||
selected_servers = servers
|
||||
if args.exclude:
|
||||
for exclude in args.exclude.split(','):
|
||||
regex = re.compile(exclude)
|
||||
selected_servers = [x for x in selected_servers if not regex.match(x.name)]
|
||||
return selected_servers
|
||||
|
||||
|
||||
def status_window(args):
|
||||
session_name = args.session_name
|
||||
curses.setupterm()
|
||||
|
|
Loading…
Reference in New Issue