Changeset - fe1223a12bba
[Not reviewed]
version_5
0 1 0
Dennis Fink - 9 years ago 2015-10-14 22:36:29
dennis.fink@c3l.lu
Open the config file correctly
1 file changed with 7 insertions and 4 deletions:
0 comments (0 inline, 0 general)
ennstatus/cli/commands/config.py
Show inline comments
 
@@ -31,52 +31,55 @@ def show(obj):
 
@config.group(short_help='Configure servers')
 
def server():
 
    pass
 

	
 

	
 
@server.command('add', short_help='Add server')
 
@click.argument('name')
 
@click.option('-i', '--ips', prompt='IPs (comma separated)')
 
@click.password_option()
 
@click.pass_obj
 
def add(obj, name, ips, password):
 

	
 
    config = json.load(obj['config_file'])
 
    with obj['config_file'].open() as f:
 
        config = json.load(f)
 

	
 
    name = name.lower()
 
    ips = [ip.strip() for ip in ips.split(',')]
 

	
 
    if name in config['ENNSTATUS_SERVERS']:
 
        try:
 
            click.confirm('Server already exits! Overwrite?', abort=True)
 
        except click.Abort as e:
 
            raise SystemExit from e
 

	
 
    converted_ips = {ipaddress.ip_address(ip) for ip in ips}
 

	
 
    for ip in converted_ips:
 
        if not check_ip(ip):
 
            raise SystemExit('ip {} is not accepted!'.format(str(ip)))
 

	
 
    config['ENNSTATUS_SERVERS'][name] = {
 
        'IPS': ips,
 
        'PASSWORD': password
 
    }
 

	
 
    with open(obj['config_file'], mode='w', encoding='utf-8') as f:
 
    with obj['config_file'].open(mode='w', encoding='utf-8') as f:
 
        json.dump(config, f, indent=4, sort_keys=True)
 

	
 

	
 
@server.command('delete', short_help='Remove server')
 
@click.argument('name')
 
@click.pass_obj
 
def delete(obj, name):
 

	
 
    config = json.load(obj['config_file'])
 
    with obj['config_file'].open() as f:
 
        config = json.load(f)
 
    name = name.lower()
 

	
 
    try:
 
        del config['ENNSTATUS_SERVERS'][name]
 
    except KeyError:
 
        raise SystemExit('{} does not exists!'.format(name))
 

	
 
    with open(obj['config_file'], mode='w', encoding='utf-8') as f:
 
    with obj['config_file'].open(mode='w', encoding='utf-8') as f:
 
        json.dump(config, f, indent=4, sort_keys=True)
0 comments (0 inline, 0 general)