Add an audit unregister option

Allow users to remove audit scripts through a simple CLI call. The
unregister-audit call will remove an audit script from audit.cfg,
thus stopping the execution of all but the currently scheduled audit
scripts.

partially implements blueprint simple api
Change-Id: I1d5328d87b607c2f5cfdaebb7448a11673f38d48
This commit is contained in:
Pranesh Pandurangan 2014-06-10 11:04:46 -07:00
parent b1ca5a4c91
commit 473e2febc0
3 changed files with 47 additions and 0 deletions

View File

@ -60,6 +60,15 @@ def _add_to_list(engine, script_type, script_name, **script_args):
return False return False
def _remove_from_list(engine, script_type, script_name):
backend = _get_backend_from_engine(engine)
try:
backend.remove_script(script_type, script_name)
except Exception:
LOG.exception("Could not remove %s script %s",
script_type, script_name)
def register_audit(args): def register_audit(args):
LOG.info('Registering audit script %s', args.name) LOG.info('Registering audit script %s', args.name)
@ -74,6 +83,14 @@ def register_audit(args):
LOG.info('Registered audit %s', args.name) LOG.info('Registered audit %s', args.name)
def unregister_audit(args):
LOG.info('Unregistering audit script %s', args.name)
if not args.name and args.engine:
LOG.error('Need a audit name and engine to unregister')
return
_remove_from_list(args.engine, 'audit', args.name)
def register_repair(args): def register_repair(args):
LOG.info('Registering repair script %s', args.name) LOG.info('Registering repair script %s', args.name)
@ -151,6 +168,14 @@ def parse():
help='Engine') help='Engine')
register_audit_parser.set_defaults(func=register_audit) register_audit_parser.set_defaults(func=register_audit)
unregister_audit_parser =\
subparsers.add_parser('unregister-audit',
help='Unregister a repair script')
unregister_audit_parser.add_argument('-n', dest='name', action='store',
help='Repair script name')
unregister_audit_parser.add_argument('-e', dest='engine', action='store',
help='Engine')
unregister_audit_parser.set_defaults(func=unregister_audit)
register_repair_parser =\ register_repair_parser =\
subparsers.add_parser('register-repair', subparsers.add_parser('register-repair',
help='Register a repair script') help='Register a repair script')

View File

@ -67,3 +67,7 @@ class Backend(object):
@abc.abstractmethod @abc.abstractmethod
def add_script(self, script_type, data): def add_script(self, script_type, data):
pass pass
@abc.abstractmethod
def remove_script(self, script_type, script_name):
pass

View File

@ -69,3 +69,21 @@ class FileBackend(base.Backend):
def add_script(self, script_type, data): def add_script(self, script_type, data):
script_metadata = self.get_script_cfg(script_type) script_metadata = self.get_script_cfg(script_type)
utils.write_yaml(data, script_metadata) utils.write_yaml(data, script_metadata)
@staticmethod
def remove_script_from_cfg(metadata, name):
scripts = utils.load_yaml(metadata)
try:
scripts.pop(name)
except KeyError:
raise
return scripts
def remove_script(self, script_type, script_name):
try:
script_metadata = self.get_script_cfg(script_type)
final_data = FileBackend.remove_script_from_cfg(script_metadata,
script_name)
utils.write_yaml(final_data, script_metadata, append=False)
except Exception:
raise