From f6ef7d04a2505a5fc3f7af6c5113455134aec94a Mon Sep 17 00:00:00 2001
From: Chad Kerner <ckerner@illinois.edu>
Date: Fri, 26 Jan 2018 00:17:34 -0600
Subject: [PATCH] Added logic to get the name of the node that is the cluster
 master. It sets the Cluster.cluster_manager variable to True if so, else
 False.

---
 setup.py |  2 +-
 ssapi.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/setup.py b/setup.py
index 60b81ed..ccca809 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from distutils.core import setup
 
 setup( name = 'ssapi',
-       version = '0.9',
+       version = '1.00',
        py_modules = [ 'ssapi' ],
      )
 
diff --git a/ssapi.py b/ssapi.py
index 5d36e46..4893782 100755
--- a/ssapi.py
+++ b/ssapi.py
@@ -28,6 +28,7 @@ from subprocess import Popen, PIPE
 import sys
 import shlex
 import time
+import socket
 
 
 def run_cmd( cmdstr=None ):
@@ -154,9 +155,61 @@ class Cluster:
     def __init__( self ):
         self.debug = 0
         self.get_cluster_info()
+        self.is_node_cluster_manager()
         self.nsds = Nsds()
         self.gpfsdevs = self.nsds.return_gpfs_devices()
 
+    def get_manager_info( self ):
+        """
+        This routine parses the mmlsmgr command.
+        """
+        self.manager_info = {}
+        cmd_out = run_cmd("/usr/lpp/mmfs/bin/mmlsmgr")
+
+    def get_cluster_manager( self ):
+        """
+        This routine parses the mmlsmgr command.
+        """
+        self.cluster_manager = {}
+        cmd_out = run_cmd("/usr/lpp/mmfs/bin/mmlsmgr -c")
+        for line in cmd_out.splitlines():
+            line.rstrip()
+
+            # Ignore blank lines
+            if not line:
+               continue
+
+            if 'Cluster manager node' in line:
+               line = line.translate(None, '()')
+               ipaddr = line.split()[3]
+               nodename = line.split()[4]
+               self.cluster_manager['node'] = nodename
+               self.cluster_manager['ip'] = ipaddr
+
+    def is_node_cluster_manager( self ):
+        """
+        Check to see if this node is the cluster manager.
+        """
+        self.cluster_manager = {}
+        cmd_out = run_cmd("/usr/lpp/mmfs/bin/mmlsmgr -c")
+        for line in cmd_out.splitlines():
+            line.rstrip()
+
+            # Ignore blank lines
+            if not line:
+               continue
+
+            if 'Cluster manager node' in line:
+               line = line.translate(None, '()')
+               ipaddr = line.split()[3]
+               nodename = line.split()[4]
+               local_host = socket.gethostname()
+               if nodename in local_host:
+                  self.cluster_manager = True
+               else:
+                  self.cluster_manager = False
+
+
     def get_cluster_info( self ):
         """
         This routine parses the mmlscluster command.
-- 
GitLab