From d324f22ed6098c611958f3654697faa4da34c571 Mon Sep 17 00:00:00 2001 From: Victor Hu Date: Thu, 5 Feb 2015 10:55:24 -0500 Subject: [PATCH] Renamed utility softlayer_nas.py to softlayer_storage.py. Extended the utility to support mounting of --type=nas|consistent The consistent performance file storage is the high available storage type on SoftLayer. One we supported multiple types the "nas" in the utility name no longer made sense. --- xCAT-SoftLayer/bin/softlayer_nas.py | 92 ---------------- xCAT-SoftLayer/bin/softlayer_storage.py | 134 ++++++++++++++++++++++++ 2 files changed, 134 insertions(+), 92 deletions(-) delete mode 100755 xCAT-SoftLayer/bin/softlayer_nas.py create mode 100755 xCAT-SoftLayer/bin/softlayer_storage.py diff --git a/xCAT-SoftLayer/bin/softlayer_nas.py b/xCAT-SoftLayer/bin/softlayer_nas.py deleted file mode 100755 index 5a7990eb1..000000000 --- a/xCAT-SoftLayer/bin/softlayer_nas.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/python -""" -Usage: - softlayer_nas.py [--verbose --hostname= --username= --password= --mountpoint= ] (mount | unmount) - softlayer_nas.py [OPTIONS] (mount | unmount) - -Options: - -h --help Show help screen - --version Show version - --verbose Print verbose information - --hostname= SoftLayer Storage hostname - --username= SoftLayer Storage LUN username - --password= SoftLayer Storage LUN password - --mountpoint= The mountpoint to use [default: /mnt/nas] -""" -import os -import sys -import docopt - -path = os.path.dirname(os.path.realpath(__file__)) -path = os.path.realpath(os.path.join(path, '..', 'lib', 'python')) -if path.startswith('/opt'): - # if installed into system path, do not muck with things - sys.path.append(path) - -from xcat import xcatutils - -def mount_nas(hostname, user, passwd, mountPoint): - print "Attempting to mount the NAS at %s" %(mountPoint) - - if xcatutils.isMounted(mountPoint): - raise xcatutils.xCatError("The mount point %s is already in use." %(mountPoint)) - - - cmd = "mount -t cifs //%s/%s -o username=%s,password=%s,rw,nounix,iocharset=utf8,file_mode=0644,dir_mode=0755 %s" %(hostname, user, user, passwd, mountPoint) - out,err = xcatutils.run_command(cmd) - -def unmount_nas(mountPoint): - print "Attempting to unmount the NAS at %s..." %(mountPoint) - - if not xcatutils.isMounted(mountPoint): - raise xcatutils.xCatError("The mount point %s is NOT mounted." %(mountPoint)) - else: - cmd = "umount %s" %(mountPoint) - out,err = xcatutils.run_command(cmd) - - if err: - print "Encountered error while unmounting..." - print err - - -def configure_nas_automount(hostname, user, passwd, mountPoint): - print "\nNote: To configure automount on reboot, add the following into /etc/fstab:" - cmd = "//%s/%s %s cifs defaults,username=%s,password=%s 0 0" %(hostname,user,mountPoint,user,passwd) - print "%s\n" %(cmd) - -def setup_softlayer_nas(): - # verify information before starting - if arguments['--hostname'] is None: - arguments['--hostname'] = xcatutils.getUserInput("Enter the SoftLayer storage hostname") - - if arguments['--username'] is None: - arguments['--username'] = xcatutils.getUserInput("Enter the SoftLayer storage username") - - if arguments['--password'] is None: - arguments['--password'] = xcatutils.getUserInput("Enter the SoftLayer storage password") - - # install prereqs - preReqPackages = ['cifs-utils'] - if arguments['--verbose']: - print "Checking for installed packages: %s" %(preReqPackages) - xcatutils.installPackages(preReqPackages) - - # mount the NAS - mount_nas(arguments['--hostname'],arguments['--username'],arguments['--password'],arguments['--mountpoint']) - - configure_nas_automount(arguments['--hostname'],arguments['--username'],arguments['--password'],arguments['--mountpoint']) - - -if __name__ == '__main__': - try: - arguments = (docopt.docopt(__doc__, version="1.0")) - - if arguments['unmount']: - unmount_nas(arguments['--mountpoint']) - else: - setup_softlayer_nas() - - except docopt.DocoptExit as e: - print e - except xcatutils.xCatError as e: - print "xCatError: %s" %(e) diff --git a/xCAT-SoftLayer/bin/softlayer_storage.py b/xCAT-SoftLayer/bin/softlayer_storage.py new file mode 100755 index 000000000..5c82aa6d4 --- /dev/null +++ b/xCAT-SoftLayer/bin/softlayer_storage.py @@ -0,0 +1,134 @@ +#!/usr/bin/python +""" +Usage: + softlayer_storage.py --type= [--hostname= --username= --password= --mountpoint= ] (mount | unmount) + softlayer_storage.py --type= [options] (mount | unmount) + +Options: + -h --help Show help screen + --version Show version + --type= Type of File Storage to mount ( consistent | nas ) + --hostname= SoftLayer Storage hostname + --username= SoftLayer Storage LUN username + --password= SoftLayer Storage LUN password + --mountpoint= The mountpoint to use [default: /mnt/nas] + +Description: + For consistent performance file storate, make sure the host accessing the + file storage has been authorized through the SoftLayer portal. +""" +import os +import sys +import docopt + +path = os.path.dirname(os.path.realpath(__file__)) +path = os.path.realpath(os.path.join(path, '..', 'lib', 'python')) +if path.startswith('/opt'): + # if installed into system path, do not muck with things + sys.path.append(path) + +from xcat import xcatutils + +def mount_nas_storage(hostname, user, passwd, mountPoint): + print "Attempting to mount the NAS File Storage at %s" %(mountPoint) + + if xcatutils.isMounted(mountPoint): + raise xcatutils.xCatError("The mount point %s is already in use." %(mountPoint)) + + cmd = "mount -t cifs //%s/%s -o username=%s,password=%s,rw,nounix,iocharset=utf8,file_mode=0644,dir_mode=0755 %s" %(hostname, user, user, passwd, mountPoint) + out,err = xcatutils.run_command(cmd) + if err: + raise xcatutils.xCatError("Error when mounting. (%s)" %(err)) + else: + print "Success\n" + + # To help out with automount, print this msg + print "\nNote: To configure automount on reboot, add the following into /etc/fstab:" + cmd = "//%s/%s %s cifs defaults,username=%s,password=%s 0 0" %(hostname,user,mountPoint,user,passwd) + print "%s\n" %(cmd) + +def mount_consistent_storage(hostname, user, mountPoint): + print "Attempting to mount the Consistent Performance File Storage at %s" %(mountPoint) + + if xcatutils.isMounted(mountPoint): + raise xcatutils.xCatError("The mount point %s is already in use." %(mountPoint)) + + cmd = "mount -t nfs4 %s:/%s %s" %(hostname, user, mountPoint) + out,err = xcatutils.run_command(cmd) + if err: + raise xcatutils.xCatError("Error when mounting. (%s)" %(err)) + else: + print "Success\n" + +def unmount_storage(mountPoint): + print "Attempting to unmount the NAS at %s..." %(mountPoint) + + if not xcatutils.isMounted(mountPoint): + raise xcatutils.xCatError("The mount point %s is NOT mounted." %(mountPoint)) + else: + cmd = "umount %s" %(mountPoint) + out,err = xcatutils.run_command(cmd) + + if err: + print "Encountered error while unmounting..." + print err + + +def setup_softlayer_storage(): + # + # set code defaults to consistent file storage options + # + requirePassword=False + preReqPackages = ['nfs-utils','nfs-utils-lib'] + + # + # if NAS is selected as the type, override the code defaults + # + if 'nas' in arguments['--type']: + requirePassword=True + preReqPackages = ['cifs-utils'] + + # + # verify information before starting + # + if arguments['--hostname'] is None: + arguments['--hostname'] = xcatutils.getUserInput("Enter the SoftLayer storage hostname") + + if arguments['--username'] is None: + arguments['--username'] = xcatutils.getUserInput("Enter the SoftLayer storage username") + + if arguments['--password'] is None and requirePassword: + arguments['--password'] = xcatutils.getUserInput("Enter the SoftLayer storage password") + + # + # install prereqs + # + print "Checking for installed packages: %s" %(preReqPackages) + xcatutils.installPackages(preReqPackages) + + # + # mount the file storage + # + if 'nas' in arguments['--type']: + mount_nas_storage(arguments['--hostname'],arguments['--username'],arguments['--password'],arguments['--mountpoint']) + elif 'consistent' in arguments['--type']: + mount_consistent_storage(arguments['--hostname'],arguments['--username'],arguments['--mountpoint']) + + + +if __name__ == '__main__': + try: + arguments = (docopt.docopt(__doc__, version="1.0")) + + if not arguments['--type'] in ('nas', 'consistent'): + raise xcatutils.xCatError("The type=%s is not a supported file system type." %(arguments['--type'])) + + if arguments['unmount']: + unmount_storage(arguments['--mountpoint']) + else: + setup_softlayer_storage() + + except docopt.DocoptExit as e: + print e + except xcatutils.xCatError as e: + print "xCatError: %s" %(e)