All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Price <anprice@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH] gfs2_lockcapture: Fix condition where dlm lockspaces parsing failed
Date: Wed, 16 Sep 2015 11:56:24 +0100	[thread overview]
Message-ID: <55F94AD8.3010105@redhat.com> (raw)
In-Reply-To: <1441983591-6318-1-git-send-email-sbradley@redhat.com>

On 11/09/15 15:59, sbradley at redhat.com wrote:
> From: Shane Bradley <sbradley@redhat.com>
>
> The output of `dlm_tool ls` was not parsed correctly on dlm_tool version 3.0 or
> higher. The patch now parses correctly `dlm_tool ls` output from version 2.0 or
> higher.
>
> Signed-off-by: Shane Bradley <sbradley@redhat.com>
> ---
>   gfs2/scripts/gfs2_lockcapture |   35 ++++++++++++++++++++++-------------
>   1 files changed, 22 insertions(+), 13 deletions(-)
>
> diff --git a/gfs2/scripts/gfs2_lockcapture b/gfs2/scripts/gfs2_lockcapture
> index 8839818..5fe92bc 100644
> --- a/gfs2/scripts/gfs2_lockcapture
> +++ b/gfs2/scripts/gfs2_lockcapture
> @@ -5,7 +5,7 @@ systems and DLM.
>
>   @author    : Shane Bradley
>   @contact   : sbradley at redhat.com
> - at version   : 0.9
> + at version   : 0.95

Not 0.10?

>   @copyright : GPLv2
>   """
>   import sys
> @@ -658,24 +658,25 @@ def getClusterNode(listOfGFS2Names):
>       else:
>           return None
>
> -
> -def getDLMToolDLMLockspaces():
> +def parse_dlm_ls(dlm_ls):
>       """
>       This function returns the names of all the dlm lockspace names found with the
> -    command: "dlm_tool ls".
> +    commands "dlm_tool ls" or "group_tool ls" output.
>
>       @return: A list of all the dlm lockspace names.
>       @rtype: Array
>       """
>       dlmLockspaces = []
> -    stdout = runCommandOutput("dlm_tool", ["ls"])
> -    if (not stdout == None):
> -        stdout = stdout.replace("dlm lockspaces\n", "")
> +    if (not dlm_ls == None):
> +        dlm_ls = dlm_ls.replace("dlm lockspaces\n", "")
>           dlmToolLSKeys = ["name", "id", "flags", "change", "members"]
>           # Split on newlines
> -        stdoutSections = stdout.split("\n\n")
> -        for section in stdoutSections:
> +        dlm_lsSections = dlm_ls.split("\n\n")
> +        for section in dlm_lsSections:
>               # Create tmp map to hold data
> +            if (section.startswith("fence domain")):
> +                # Not concerned with fence information.
> +                continue
>               dlmToolLSMap = dict.fromkeys(dlmToolLSKeys)
>               lines = section.split("\n")
>               for line in lines:
> @@ -699,9 +700,15 @@ def getGroupToolDLMLockspaces():
>       stdout = runCommandOutput("group_tool", ["ls"])
>       if (not stdout == None):
>           lines = stdout.split("\n")
> -        for line in lines:
> -            if (line.startswith("dlm")):
> -                dlmLockspaces.append(line.split()[2])
> +        if (len(lines) > 0):
> +            if (lines[0].startswith("type")):
> +                # Then running cman-2.0
> +                for line in lines:
> +                    if (line.startswith("dlm")):
> +                        dlmLockspaces.append(line.split()[2])
> +            else:
> +                # Then running cman-3.0 and uses same sorta output as `dlm_tool ls`.
> +                dlmLockspaces = parse_dlm_ls(stdout)
>       return dlmLockspaces
>
>   def getDLMLockspaces():
> @@ -713,8 +720,10 @@ def getDLMLockspaces():
>       """
>       message = "Gathering the DLM Lockspace Names."
>       logging.getLogger(MAIN_LOGGER_NAME).debug(message)
> -    dlmLockspaces = getDLMToolDLMLockspaces()
> +    dlmLockspaces = parse_dlm_ls(runCommandOutput("dlm_tool", ["ls"]))
>       if (not len(dlmLockspaces) > 0):
> +        message = "There was no dlm lockspaces found with the \"dlm_tool ls\" command.  Trying with the \"group_tool ls\" command."
> +        logging.getLogger(MAIN_LOGGER_NAME).debug(message)
>           dlmLockspaces = getGroupToolDLMLockspaces()
>       return dlmLockspaces
>
>

Coding style aside, the patch looks fine to me.

Cheers,
Andy



      reply	other threads:[~2015-09-16 10:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-11 14:59 [Cluster-devel] [PATCH] gfs2_lockcapture: Fix condition where dlm lockspaces parsing failed sbradley
2015-09-16 10:56 ` Andrew Price [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55F94AD8.3010105@redhat.com \
    --to=anprice@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.