#!/usr/bin/env python
#  -*- mode: python; -*-
#============================================================================
# Copyright (C) 2004 Mike Wray <mike.wray@hp.com>
#============================================================================
# Move the IP address from eth0 onto the Xen bridge (xenbr0).
# Only works if the bridge control utils (brctl) have been installed.
#============================================================================

from getopt import getopt

# add fallback path for non-native python path installs if needed
sys.path.append('/usr/lib/python')
sys.path.append('/usr/lib64/python')
from xen.util.Brctl import *

short_options = 'hvqni:b:c'
long_options  = ['help', 'verbose', 'quiet',
                 'interface=', 'bridge=', 'create']

defaults['interface'] = 'eth0'
defaults['bridge'] = 'xenbr0'

def usage():
    print """Usage:
    %s [options]

    Reconfigure routing so that <bridge> has the IP address from
    <interface>. This lets IP carry on working when <interface>
    is attached to <bridge> for virtual networking.
    Uses brctl to add <interface> to <bridge>,
    so this can be run before any domains have been created.
    """ % sys.argv[0]
    print """
    -i, --interface <interface>    interface, default %(interface)s.
    -b, --bridge <bridge>          bridge, default %(bridge)s.
    -c, --create                   create the bridge.
    -v, --verbose                  Print commands.
    -q, --quiet                    Don't print commands.
    -n, --dry-run                  Don't execute commands.
    -h, --help                     Print this help.
    """ % defaults
    sys.exit(1)


def main():
    lopts = set_opts(Opts(defaults))
    lopts.dryrun = 0
    (options, args) = getopt(sys.argv[1:], short_options, long_options)
    if args: usage()
    for k, v in options:
        if k in ['-h', '--help']:
            usage()
        elif k in ['-c', '--create']:
            lopts.create = 1
        elif k in ['-i', '--interface']:
            lopts.interface = v
        elif k in ['-b', '--bridge']:
            lopts.bridge = v
        elif k in ['-q', '--quiet']:
            lopts.verbose = 0
        elif k in ['-v', '--verbose']:
            lopts.verbose = 1
        elif k in ['-n', '--dry-run']:
            lopts.dryrun = 1
    reconfigure(lopts.interface, lopts.bridge)

if __name__ == '__main__':
    main()
