#!/usr/bin/python
import argparse, os
try:
    # Python 3
    from configparser import ConfigParser
except:
    # Python 2
    from ConfigParser import ConfigParser

# Get all the parameters
params = argparse.ArgumentParser(description="NBD server configuration updater")
params.add_argument("--add", nargs=2, metavar=("NAME","PATH"), help="Add/update an entry")
params.add_argument("--remove", nargs=1, metavar=("PATH"), help="Remove an entry")
args = params.parse_args()

parser=ConfigParser()
if "/etc/nbd-server/config" not in parser.read("/etc/nbd-server/config"):
    if not os.path.exists("/etc/nbd-server/config"):
        print("Creating new configuration file")
    else:
        raise Exception("Unable to parse config")

if "generic" not in parser.sections():
    parser.add_section("generic")
    parser.set('generic', 'user', 'nobody')
    parser.set('generic', 'group', 'nogroup')
    parser.set('generic', 'oldstyle', 'false')


if args.add:
    if args.add[0] == 'generic':
        raise Exception("Export can't be called generic")

    if args.add[0] in parser.sections():
        print("Updating entry")
    else:
        print("Adding new entry")
        parser.add_section(args.add[0])

    parser.set(args.add[0], "exportname", args.add[1])
    parser.set(args.add[0], "readonly", 'true')

if args.remove:
    if args.remove[0] == 'generic':
        raise Exception("Export can't be called generic")

    if args.remove[0] not in parser.sections():
        print("Entry doesn't exist")
    else:
        print("Removing entry")
        parser.remove_section(args.remove[0])

config=open("/etc/nbd-server/config","w+")
parser.write(config)
config.close()
