From a419c0fb6d0456a058462ea31f76fbdbeac63d99 Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Thu, 7 Feb 2008 14:15:25 -0500 Subject: Trimming more stuff out. --- certmaster/minion/modules/netapp/README | 8 -- certmaster/minion/modules/netapp/TODO | 5 - certmaster/minion/modules/netapp/__init__.py | 0 certmaster/minion/modules/netapp/common.py | 49 --------- certmaster/minion/modules/netapp/snap.py | 49 --------- certmaster/minion/modules/netapp/vol/__init__.py | 128 ----------------------- certmaster/minion/modules/netapp/vol/clone.py | 46 -------- 7 files changed, 285 deletions(-) delete mode 100644 certmaster/minion/modules/netapp/README delete mode 100644 certmaster/minion/modules/netapp/TODO delete mode 100644 certmaster/minion/modules/netapp/__init__.py delete mode 100644 certmaster/minion/modules/netapp/common.py delete mode 100644 certmaster/minion/modules/netapp/snap.py delete mode 100644 certmaster/minion/modules/netapp/vol/__init__.py delete mode 100644 certmaster/minion/modules/netapp/vol/clone.py (limited to 'certmaster/minion/modules/netapp') diff --git a/certmaster/minion/modules/netapp/README b/certmaster/minion/modules/netapp/README deleted file mode 100644 index 5ecb205..0000000 --- a/certmaster/minion/modules/netapp/README +++ /dev/null @@ -1,8 +0,0 @@ -This module is meant to be installed on a minion which is configured -as an admin host for one or more NetApp filers. Since we can't get -our funcy awesomeness on the actual filer the admin host will have to do. - -Requirements: - -- passphraseless ssh key access from root on the netapp admin minion - to root on the target filer diff --git a/certmaster/minion/modules/netapp/TODO b/certmaster/minion/modules/netapp/TODO deleted file mode 100644 index 25d914c..0000000 --- a/certmaster/minion/modules/netapp/TODO +++ /dev/null @@ -1,5 +0,0 @@ -Wrap every possible NetApp command :) - -I'm only going to do the ones that are important to me. If you have -some that are important to you, feel free to submit patches to -func-list@redhat.com and harness the power of open source! diff --git a/certmaster/minion/modules/netapp/__init__.py b/certmaster/minion/modules/netapp/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/certmaster/minion/modules/netapp/common.py b/certmaster/minion/modules/netapp/common.py deleted file mode 100644 index 979c95c..0000000 --- a/certmaster/minion/modules/netapp/common.py +++ /dev/null @@ -1,49 +0,0 @@ -## -## NetApp Filer 'common' Module -## -## Copyright 2008, Red Hat, Inc -## John Eckersberg -## -## This software may be freely redistributed under the terms of the GNU -## general public license. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -## - -import re -import sub_process - -SSH = '/usr/bin/ssh' -SSH_USER = 'root' -SSH_OPTS = '-o forwardagent=no' -class GenericSSHError(Exception): pass -class NetappCommandError(Exception): pass - -def ssh(host, cmdargs, input=None, user=SSH_USER): - cmdline = [SSH, SSH_OPTS, "%s@%s" % (user, host)] - cmdline.extend(cmdargs) - - cmd = sub_process.Popen(cmdline, - executable=SSH, - stdin=sub_process.PIPE, - stdout=sub_process.PIPE, - stderr=sub_process.PIPE, - shell=False) - - (out, err) = cmd.communicate(input) - - if cmd.wait() != 0: - raise GenericSSHError, err - else: - return out + err - -def check_output(regex, output): - #strip newlines - output = output.replace('\n', ' ') - if re.search(regex, output): - return True - else: - raise NetappCommandError, output - diff --git a/certmaster/minion/modules/netapp/snap.py b/certmaster/minion/modules/netapp/snap.py deleted file mode 100644 index 8f3f209..0000000 --- a/certmaster/minion/modules/netapp/snap.py +++ /dev/null @@ -1,49 +0,0 @@ -## -## NetApp Filer 'snap' Module -## -## Copyright 2008, Red Hat, Inc -## John Eckersberg -## -## This software may be freely redistributed under the terms of the GNU -## general public license. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -## - -import re -from func.minion.modules import func_module -from func.minion.modules.netapp.common import * - -class Snap(func_module.FuncModule): - - # Update these if need be. - version = "0.0.1" - api_version = "0.0.1" - description = "Interface to the 'snap' command" - - def create(self, filer, vol, snap): - """ - TODO: Document me ... - """ - regex = """creating snapshot...""" - cmd_opts = ['snap', 'create', vol, snap] - output = ssh(filer, cmd_opts) - return check_output(regex, output) - - def delete(self, filer, vol, snap): - """ - TODO: Document me ... - """ - regex = """deleting snapshot...""" - cmd_opts = ['snap', 'delete', vol, snap] - output = ssh(filer, cmd_opts) - return check_output(regex, output) - - def list(self, filer, vol): - """ - TODO: Document me ... - """ - return True - diff --git a/certmaster/minion/modules/netapp/vol/__init__.py b/certmaster/minion/modules/netapp/vol/__init__.py deleted file mode 100644 index 14ce0ac..0000000 --- a/certmaster/minion/modules/netapp/vol/__init__.py +++ /dev/null @@ -1,128 +0,0 @@ -## -## NetApp Filer 'Vol' Module -## -## Copyright 2008, Red Hat, Inc -## John Eckersberg -## -## This software may be freely redistributed under the terms of the GNU -## general public license. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -## - -import re -from func.minion.modules import func_module -from func.minion.modules.netapp.common import * - -class Vol(func_module.FuncModule): - - # Update these if need be. - version = "0.0.1" - api_version = "0.0.1" - description = "Interface to the 'vol' command" - - def create(self, filer, vol, aggr, size): - """ - TODO: Document me ... - """ - regex = """Creation of volume .* has completed.""" - cmd_opts = ['vol', 'create', vol, aggr, size] - output = ssh(filer, cmd_opts) - return check_output(regex, output) - - def destroy(self, filer, vol): - """ - TODO: Document me ... - """ - regex = """Volume .* destroyed.""" - cmd_opts = ['vol', 'destroy', vol, '-f'] - output = ssh(filer, cmd_opts) - return check_output(regex, output) - - def offline(self, filer, vol): - """ - TODO: Document me ... - """ - regex = """Volume .* is now offline.""" - cmd_opts = ['vol', 'offline', vol] - output = ssh(filer, cmd_opts) - return check_output(regex, output) - - def online(self, filer, vol): - """ - TODO: Document me ... - """ - regex = """Volume .* is now online.""" - cmd_opts = ['vol', 'online', vol] - output = ssh(filer, cmd_opts) - return check_output(regex, output) - - def status(self, filer, vol=None): - """ - TODO: Document me ... - """ - cmd_opts = ['vol', 'status'] - output = ssh(filer, cmd_opts) - - output = output.replace(',', ' ') - lines = output.split('\n')[1:] - - vols = [] - current_vol = {} - for line in lines: - tokens = line.split() - if len(tokens) >= 2 and tokens[1] in ('online', 'offline', 'restricted'): - if current_vol: vols.append(current_vol) - current_vol = {'name': tokens[0], - 'state': tokens[1], - 'status': [foo for foo in tokens[2:] if '=' not in foo], - 'options': [foo for foo in tokens[2:] if '=' in foo]} - else: - current_vol['status'].extend([foo for foo in tokens if '=' not in foo]) - current_vol['options'].extend([foo for foo in tokens if '=' in foo]) - vols.append(current_vol) - - if vol: - try: - return [foo for foo in vols if foo['name'] == vol][0] - except: - raise NetappCommandError, "No such volume: %s" % vol - else: - return vols - - def size(self, filer, vol, delta=None): - """ - TODO: Document me ... - """ - stat_regex = """vol size: Flexible volume .* has size .*.""" - resize_regex = """vol size: Flexible volume .* size set to .*.""" - cmd_opts = ['vol', 'size', vol] - - if delta: - cmd_opts.append(delta) - output = ssh(filer, cmd_opts) - return check_output(resize_regex, output) - else: - output = ssh(filer, cmd_opts) - check_output(stat_regex, output) - return output.split()[-1][:-1] - - def options(self, filer, args): - """ - TODO: Document me ... - """ - pass - - def rename(self, filer, args): - """ - TODO: Document me ... - """ - pass - - def restrict(self, filer, args): - """ - TODO: Document me ... - """ - pass diff --git a/certmaster/minion/modules/netapp/vol/clone.py b/certmaster/minion/modules/netapp/vol/clone.py deleted file mode 100644 index 715d8a8..0000000 --- a/certmaster/minion/modules/netapp/vol/clone.py +++ /dev/null @@ -1,46 +0,0 @@ -## -## NetApp Filer 'vol.clone' Module -## -## Copyright 2008, Red Hat, Inc -## John Eckersberg -## -## This software may be freely redistributed under the terms of the GNU -## general public license. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -## - -import re -from func.minion.modules import func_module -from func.minion.modules.netapp.common import * - -class Clone(func_module.FuncModule): - - # Update these if need be. - version = "0.0.1" - api_version = "0.0.1" - description = "Interface to the 'vol' command" - - def create(self, filer, vol, parent, snap): - """ - TODO: Document me ... - """ - regex = """Creation of clone volume .* has completed.""" - cmd_opts = ['vol', 'clone', 'create', vol, '-b', parent, snap] - output = ssh(filer, cmd_opts) - return check_output(regex, output) - - def split(self, filer, vol): - """ - TODO: Document me ... - """ - # only worry about 'start' now, I don't terribly care to automate the rest - regex = """Clone volume .* will be split from its parent.""" - cmd_opts = ['vol', 'clone', 'split', 'start', vol] - output = ssh(filer, cmd_opts) - return check_output(regex, output) - - - -- cgit