From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6047 invoked by alias); 16 Feb 2009 14:28:28 -0000 Received: (qmail 6041 invoked by alias); 16 Feb 2009 14:28:27 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_46,SPF_HELO_PASS X-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_46,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion.fedora.phx.redhat.com Subject: fence-agents: master - fence_lpar: Fix 'list' operation for HMC v3 To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: fence-agents.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 5afd5af37b31abc7c2198940796fd3bd9b03d621 X-Git-Newrev: 96e27b8d2247d64abc53633ba81cc0cff474d668 From: =?utf-8?q?Marek_Gr=C3=A1c?= Message-Id: <20090216142801.1461812026F@lists.fedorahosted.org> Date: Mon, 16 Feb 2009 14:28:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q1/txt/msg00460.txt.bz2 Gitweb: http://git.fedorahosted.org/git/fence-agents.git?p=fence-agents.git;a=commitdiff;h=96e27b8d2247d64abc53633ba81cc0cff474d668 Commit: 96e27b8d2247d64abc53633ba81cc0cff474d668 Parent: 5afd5af37b31abc7c2198940796fd3bd9b03d621 Author: Marek 'marx' Grac AuthorDate: Mon Feb 16 15:26:28 2009 +0100 Committer: Marek 'marx' Grac CommitterDate: Mon Feb 16 15:26:28 2009 +0100 fence_lpar: Fix 'list' operation for HMC v3 --- fence/agents/lpar/fence_lpar.py | 57 ++++++++++++++++++++++++++------------ 1 files changed, 39 insertions(+), 18 deletions(-) diff --git a/fence/agents/lpar/fence_lpar.py b/fence/agents/lpar/fence_lpar.py index 53f8f60..a5a769a 100644 --- a/fence/agents/lpar/fence_lpar.py +++ b/fence/agents/lpar/fence_lpar.py @@ -80,33 +80,54 @@ def set_power_status(conn, options): def get_lpar_list(conn, options): outlets = { } - try: - conn.send("lssyscfg -r lpar -m " + options["-s"] + - " -F name:state\n") - conn.log_expect(options, options["-c"], POWER_TIMEOUT) + if options["-H"] == "3": + try: + conn.send("query_partition_names -m " + options["-s"] + "\n") + conn.log_expect(options, options["-c"], POWER_TIMEOUT) - ## We have to remove first line (command) and last line (part of new prompt) - #### - res = re.search("^.+?\n(.*)\n.*$", conn.before, re.S) + ## We have to remove first 3 lines (command + header) and last line (part of new prompt) + #### + res = re.search("^.+?\n(.+?\n){2}(.*)\n.*$", conn.before, re.S) - if res == None: - fail_usage("Unable to parse output of list command") + if res == None: + fail_usage("Unable to parse output of list command") - lines = res.group(1).split("\n") - for x in lines: - s = x.split(":") - outlets[s[0]] = ("", s[1]) - except pexpect.EOF: - fail(EC_CONNECTION_LOST) - except pexpect.TIMEOUT: - fail(EC_TIMED_OUT) + lines = res.group(2).split("\n") + for x in lines: + outlets[x.rstrip()] = ("", "") + except pexpect.EOF: + fail(EC_CONNECTION_LOST) + except pexpect.TIMEOUT: + fail(EC_TIMED_OUT) + elif options["-H"] == "4": + try: + conn.send("lssyscfg -r lpar -m " + options["-s"] + + " -F name:state\n") + conn.log_expect(options, options["-c"], POWER_TIMEOUT) + + ## We have to remove first line (command) and last line (part of new prompt) + #### + res = re.search("^.+?\n(.*)\n.*$", conn.before, re.S) + + if res == None: + fail_usage("Unable to parse output of list command") + + lines = res.group(1).split("\n") + for x in lines: + s = x.split(":") + outlets[s[0]] = ("", s[1]) + except pexpect.EOF: + fail(EC_CONNECTION_LOST) + except pexpect.TIMEOUT: + fail(EC_TIMED_OUT) return outlets def main(): device_opt = [ "help", "version", "agent", "quiet", "verbose", "debug", "action", "ipaddr", "login", "passwd", "passwd_script", - "secure", "partition", "managed", "hmc_version", "cmd_prompt" ] + "secure", "partition", "managed", "hmc_version", "cmd_prompt", + "separator" ] options = check_input(device_opt, process_input(device_opt))