introduce wildcards for <instance>

This commit is contained in:
2021-12-06 14:39:04 +01:00
parent bb3c72acc9
commit f411460c2c
5 changed files with 71 additions and 28 deletions

View File

@ -26,7 +26,7 @@ import shutil
from glob import glob
from os.path import join, abspath, dirname, basename, expanduser, exists, islink
from configparser import ConfigParser
from servicemanager.base import ServiceManager
from servicemanager.base import ServiceManager, UsageError
ENV_KEYS = {
@ -56,16 +56,16 @@ class NicosManager(ServiceManager):
nicos gui <instance>
nicos <instance> (the same as above)
nicos list [<instance>]
nicos start <instance> [<service>]
nicos restart <instance> [<service>]
nicos stop <instance> [<service>]
nicos create <instance> <nr>
nicos create all
nicos list [<instance>] *
nicos start <instance> [<service>] *
nicos restart <instance> [<service>] *
nicos stop <instance> [<service>] *
nicos create <instance> <nr> *
nicos link <instance> (create links to nicos data and scripts)
<service> is one of main, stick, addons
%s
* wildcards allowed, using '.' to replace 0 or more arbitrary characters in <instance>
to be done after the experiment:
nicos copy (copy data and scripts from link)
@ -87,12 +87,14 @@ class NicosManager(ServiceManager):
env['NICOS_PACKAGE'] = basename(dirname(instdir[0]))
def do_create(self, ins, *args):
self.get_info()
if ins == 'all' or ins == 'check':
inslist = list(self.info)
if ins == 'check':
ins_list = self.wildcard(None)
else:
inslist = [ins]
for ins_i in inslist:
ins_list = self.wildcard(ins)
if ins_list is None:
ins_list = [ins]
self.get_info()
for ins_i in ins_list:
env = self.env[ins_i]
base = join(env['NICOS_ROOT'], env['NICOS_PACKAGE'], ins)
nicos_conf = join(base, 'nicos.conf')
@ -238,6 +240,8 @@ class NicosManager(ServiceManager):
return start_dir, env
def prepare_client(self, ins):
if self.wildcard(ins):
raise UsageError('wildcards not allowed')
self.check_running(ins, 'daemon')
env = self.prepare_start(ins, 'daemon')[1]
os.environ.update(env)