#!/usr/bin/env python

# Copyright C 2002-2008 by Isilon Systems, Inc. All rights not expressly
# granted herein are reserved.
# Created in the United States of America.
# 
# This digital media is protected by U.S. and international copyright and
# intellectual property laws. Unless otherwise specified, all information
# and screens appearing as part of this digital medium, including
# software, services, documents, text, images, icons, and logos design;
# the selection, assembly, arrangement, and design thereof; and the code
# that enables its presentation, are the sole property of Isilon Systems,
# Inc.
# 
# Except as otherwise required by applicable law, no part of any
# copyrighted material may be reproduced, modified, translated,
# distributed, published, or transmitted by any means, electronic or
# mechanical, for any purpose, without the prior written consent of Isilon
# Systems. 
#  
# Isilon and Isilon Systems are registered trademarks of Isilon Systems,
# Inc.  Legion is a trademark of Isilon Systems, Inc.  All other
# trademarks and registered trademarks are the property of their
# respective holders.


# This script finds all external-only network interfaces and downs them.

import os
import sys

import isi.app.lib.cluster as clusterlib
import isi.net.flexnet as flx

CMD = "/sbin/ifconfig %s down"
UMOUNTNFS = "/sbin/umount -a -t nfs 2>/dev/null"

def main():
    print "Downing external interfaces..."
    try:
        config = flx.config_load_local()
        cluster = clusterlib.Cluster()
    except Exception, e:
        print >> sys.stderr, "Error loading configuration: %s" % str(e)
        sys.exit(1)
 
    os.system(UMOUNTNFS)

    local_devid = cluster.local() 
    for iface in config.ifaces:
        if (local_devid == iface.id.devid) and not (iface.lni_flags & \
               (flx.IFFLAG_BONDING |  flx.IFFLAG_INTERNAL)):
            os.system(CMD % iface.nic_name)

if __name__ == '__main__':
    main()
