Add simplifications in slapconsole : fetch master_url and certificate, and create new slap instance

parent 1ea9443a
......@@ -25,5 +25,81 @@
#
##############################################################################
import slapos.slap.slap
import sys
from optparse import OptionParser, Option
import ConfigParser
class Parser(OptionParser):
"""
Parse all arguments.
"""
def __init__(self, usage=None, version=None):
"""
Initialize all options possibles.
"""
OptionParser.__init__(self, usage=usage, version=version,
option_list=[
Option("-u", "--master_url",
default=None,
action="store",
help="Url of SlapOS Master to use."),
Option("-k", "--key_file",
action="store",
help="SSL Authorisation key file."),
Option("-c", "--cert_file",
action="store",
help="SSL Authorisation certificate file.")
])
#TODO option list
def check_args(self):
"""
Check arguments
"""
(options, args) = self.parse_args()
if len(args) != 1:
self.error("Incorrect number of arguments")
return options, args[0]
class Config:
def setConfig(self, option_dict, configuration_file_path):
"""
Set options given by parameters.
"""
# Set options parameters
for option, value in option_dict.__dict__.items():
setattr(self, option, value)
# Load configuration file
configuration_parser = ConfigParser.SafeConfigParser()
configuration_parser.read(configuration_file_path)
# Merges the arguments and configuration
for section in ("slapos",):
configuration_dict = dict(configuration_parser.items(section))
for key in configuration_dict:
if not getattr(self, key, None):
setattr(self, key, configuration_dict[key])
if not self.master_url:
raise ValueError('master-url is required.')
def run():
usage = "usage: %s [options] CONFIGURATION_FILE" % sys.argv[0]
# Parse arguments
config = Config()
config.setConfig(*Parser(usage=usage).check_args())
slap = slapos.slap.slap()
slap.initializeConnection('https://slap.vifib.com',
key_file=config.key_file, cert_file=config.cert_file)
local = globals()
local['slap'] = slap
__import__("code").interact(banner="", local=globals())
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment