summaryrefslogtreecommitdiffstats
path: root/func/minion/modules/netapp/common.py
blob: 979c95c02f27811adb72461aef5ed102ebdf1772 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
##
## NetApp Filer 'common' Module
##
## Copyright 2008, Red Hat, Inc
## John Eckersberg <jeckersb@redhat.com>
##
## 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