From 1f8693a7226108b1d25bbee6cb6f08b154e8c269 Mon Sep 17 00:00:00 2001
From: Matt Coddington <coddington@gmail.com>
Date: Tue, 7 Feb 2012 17:29:55 -0500
Subject: [PATCH] case-based exceptions only on OS's where we know they are
 needed always use -g instead of --gid when passing arg to groupmod

---
 conf/type/__group/explorer/gshadow |  9 +++++----
 conf/type/__group/gencode-remote   | 20 ++++++++++----------
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/conf/type/__group/explorer/gshadow b/conf/type/__group/explorer/gshadow
index 2c0c0e8c..e3c2dd6c 100755
--- a/conf/type/__group/explorer/gshadow
+++ b/conf/type/__group/explorer/gshadow
@@ -22,11 +22,12 @@
 #
 
 name=$__object_id
-os="$($__explorer/os)"
+os_version="$($__explorer/os_version)"
 
-case "$os" in
-   centos|fedora|redhat)
-      grep "^${name}:" /etc/gshadow || true
+case "$os_version" in
+   "Red Hat Enterprise Linux Server release "[45]*|"CentOS release "[45]*)
+      # TODO: find a way to get this information
+      echo "$os_version does not have getent gshadow"
    ;;
    *)
       getent gshadow "$name" || true
diff --git a/conf/type/__group/gencode-remote b/conf/type/__group/gencode-remote
index 9a283207..2b4774ab 100755
--- a/conf/type/__group/gencode-remote
+++ b/conf/type/__group/gencode-remote
@@ -23,31 +23,31 @@
 #
 
 name="$__object_id"
-os="$(cat "$__global/explorer/os")"
+os_version="$(cat "$__global/explorer/os_version")"
 
 cd "$__object/parameter"
 if grep -q "^${name}:" "$__object/explorer/group"; then
    for property in $(ls .); do
       new_value="$(cat "$property")"
-      # argument to pass the groupmod command for this property (os-specific
-      # exceptions are listed in the case statement below)
+      # argument to pass the groupmod command for this property (exceptions
+      # are made in the case statement below)
       proparg="--$property"
 
       case "$property" in
          password)
             current_value="$(awk -F: '{ print $2 }' < "$__object/explorer/gshadow")"
-            case "$os" in
-               centos|fedora|redhat)
-                  echo "group/$name: $os groupmod does not support password modification" >&2
-                  continue
+            case "$os_version" in
+               "Red Hat Enterprise Linux Server release "[45]*|"CentOS release "[45]*)
+                  # TODO: Use gpasswd?  Need to fix gshadow explorer first.
+                  echo "group/$name: '$os_version' groupmod does not support password modification" >&2
+                  exit 1
                ;;
             esac
          ;;
          gid)
+            # set to -g to support older redhat/centos
+            proparg="-g"
             current_value="$(awk -F: '{ print $3 }' < "$__object/explorer/group")"
-            case "$os" in
-               centos|fedora|redhat) proparg="-g" ;;
-            esac
          ;;
       esac