introduce wildcards for <instance>
This commit is contained in:
28
nicosman.py
28
nicosman.py
@ -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)
|
||||
|
Reference in New Issue
Block a user