CSV_FILE_NAME = 'default_user.csv'
CONFIG_MODULE_NAME = 'config'
-EXECUTE_MODULE_NAME = 'execute'
CONST_BINDCTL_HELP = """
usage: <module name> <command name> [param1 = value1 [, param2 = value2]]
Type Tab character to get the hint of module/command/parameters.
# Convert parameter value according parameter spec file.
# Ignore check for commands belongs to module 'config' or 'execute
if cmd.module != CONFIG_MODULE_NAME and\
- cmd.module != EXECUTE_MODULE_NAME:
+ cmd.module != command_sets.EXECUTE_MODULE_NAME:
for param_name in cmd.params:
param_spec = command_info.get_param_with_name(param_name).param_spec
try:
self._handle_help(cmd)
elif cmd.module == CONFIG_MODULE_NAME:
self.apply_config_cmd(cmd)
- elif cmd.module == EXECUTE_MODULE_NAME:
+ elif cmd.module == command_sets.EXECUTE_MODULE_NAME:
self.apply_execute_cmd(cmd)
else:
self.apply_cmd(cmd)
except IOError as ioe:
print("Error: " + str(ioe))
return
- elif command.command == 'init_authoritative_server':
- commands = command_sets.init_auth_server
+ elif command_sets.has_command_set(command.command):
+ commands = command_sets.get_commands(command.command)
else:
# Should not be reachable; parser should've caught this
raise Exception("Unknown execute command type " + command.command)
import pprint
from optparse import OptionParser, OptionValueError
import isc.util.process
+import command_sets
isc.util.process.rename()
tool.add_module_info(module)
-def prepare_execute_commands(tool):
- # common parameter
- param_show = ParamInfo(name="show", type="string", optional=True,
- desc="Show the list of commands without executing them")
-
- # The command module
- module = ModuleInfo(name=EXECUTE_MODULE_NAME,
- desc="Execute a given set of commands")
-
- # Command to execute a file
- cmd = CommandInfo(name="file", desc="Read commands from file")
- param = ParamInfo(name="filename", type="string", optional=False,
- desc="File to read the set of commands from.")
- cmd.add_param(param)
- cmd.add_param(param_show)
- module.add_command(cmd)
-
- cmd = CommandInfo(name="init_authoritative_server", desc=
- "Configure and run a basic Authoritative server, with default "
- "SQLite3 backend, and xfrin and xfrout functionality")
- cmd.add_param(param_show)
- cmd.add_param(ParamInfo(name="show", type="string", optional=True,
- desc="Show the list of commands without executing them"))
- module.add_command(cmd)
-
- tool.add_module_info(module)
-
def check_port(option, opt_str, value, parser):
if (value < 0) or (value > 65535):
raise OptionValueError('%s requires a port number (0-65535)' % opt_str)
tool = BindCmdInterpreter(server_addr, pem_file=options.cert_chain,
csv_file_dir=options.csv_file_dir)
prepare_config_commands(tool)
- prepare_execute_commands(tool)
+ command_sets.prepare_execute_commands(tool)
result = tool.run()
sys.exit(result)
# This file provides a built-in set of 'execute' commands, for common
# functions, such as adding an initial auth server
# These sets must have an associated CommandInfo defined in
-# bindctl_main.py.in, in prepare_execute_commands
-
-init_auth_server = [
-'!echo adding Authoritative server component',
-'config add /Boss/components b10-auth',
-'config set /Boss/components/b10-auth/kind needed',
-'config set /Boss/components/b10-auth/special auth',
-'!echo adding Xfrin component',
-'config add /Boss/components b10-xfrin',
-'config set /Boss/components/b10-xfrin/address Xfrin',
-'config set /Boss/components/b10-xfrin/kind dispensable',
-'!echo adding Xfrout component',
-'config add /Boss/components b10-xfrout',
-'config set /Boss/components/b10-xfrout/address Xfrout',
-'config set /Boss/components/b10-xfrout/kind dispensable',
-'!echo adding Zone Manager component',
-'config add /Boss/components b10-zonemgr',
-'config set /Boss/components/b10-zonemgr/address Zonemgr',
-'config set /Boss/components/b10-zonemgr/kind dispensable',
-'!echo Components added. Please enter "config commit" to finalize initial'+
-' setup and run the components.'
-]
+# bindctl_main.py.in, in prepare_execute_commands, and
+# a handler in
+
+from bindctl.moduleinfo import *
+# The name of the 'virtual' command set execution module in bindctl
+EXECUTE_MODULE_NAME = 'execute'
+
+# This is a map of command names to lists
+command_sets = {
+ 'init_authoritative_server': {
+ 'description':
+ 'Configure and run a basic Authoritative server, with default '+
+ 'SQLite3 backend, and xfrin and xfrout functionality',
+ 'commands':
+ [
+ '!echo adding Authoritative server component',
+ 'config add /Boss/components b10-auth',
+ 'config set /Boss/components/b10-auth/kind needed',
+ 'config set /Boss/components/b10-auth/special auth',
+ '!echo adding Xfrin component',
+ 'config add /Boss/components b10-xfrin',
+ 'config set /Boss/components/b10-xfrin/address Xfrin',
+ 'config set /Boss/components/b10-xfrin/kind dispensable',
+ '!echo adding Xfrout component',
+ 'config add /Boss/components b10-xfrout',
+ 'config set /Boss/components/b10-xfrout/address Xfrout',
+ 'config set /Boss/components/b10-xfrout/kind dispensable',
+ '!echo adding Zone Manager component',
+ 'config add /Boss/components b10-zonemgr',
+ 'config set /Boss/components/b10-zonemgr/address Zonemgr',
+ 'config set /Boss/components/b10-zonemgr/kind dispensable',
+ '!echo Components added. Please enter "config commit" to finalize'+
+ 'initial setup and run the components.'
+ ]
+ }
+}
+
+def has_command_set(name):
+ return name in command_sets
+
+def get_commands(name):
+ return command_sets[name]['commands']
+
+def get_description(name):
+ return command_sets[name]['description']
+
+# For each
+def prepare_execute_commands(tool):
+ """This function is called by bindctl_main, and sets up the commands
+ defined here for use in bindctl."""
+ # common parameter
+ param_show = ParamInfo(name="show", type="string", optional=True,
+ desc="Show the list of commands without executing them")
+
+ # The command module
+ module = ModuleInfo(name=EXECUTE_MODULE_NAME,
+ desc="Execute a given set of commands")
+
+ # Command to execute a file
+ cmd = CommandInfo(name="file", desc="Read commands from file")
+ param = ParamInfo(name="filename", type="string", optional=False,
+ desc="File to read the set of commands from.")
+ cmd.add_param(param)
+ cmd.add_param(param_show)
+ module.add_command(cmd)
+
+ # and loop through all command sets defined above
+ for name in command_sets:
+ cmd = CommandInfo(name=name, desc=get_description(name))
+ cmd.add_param(param_show)
+ module.add_command(cmd)
+
+ tool.add_module_info(module)
+