python/pyosaf/utils/clm/__init__.py |  31 +++++++++-------
 python/samples/clm-listener         |  69 -------------------------------------
 python/samples/clm-tool             |  14 +++---
 3 files changed, 24 insertions(+), 90 deletions(-)


Correct typos in the clm-tool sample application and in the clm utils library 
according to review comments. Also fix the list of added and removed clm nodes 
to contain ClusterNode with the full information provided by clm but without 
any need for C marshalling.

diff --git a/python/pyosaf/utils/clm/__init__.py 
b/python/pyosaf/utils/clm/__init__.py
--- a/python/pyosaf/utils/clm/__init__.py
+++ b/python/pyosaf/utils/clm/__init__.py
@@ -52,8 +52,6 @@ def track_callback(c_notification_buffer
     if track_function:
         added   = []
         removed = []
-        changed = []
-        all     = []
 
         step = c_step
 
@@ -68,19 +66,30 @@ def track_callback(c_notification_buffer
                 else:
                     i = i + 1
 
-                node_name = notification.clusterNode.nodeName
+                clm_cluster_node = notification.clusterNode
+                cluster_node = 
cluster_node_instance_from_clm_cluster_node(clm_cluster_node)
 
                 if notification.clusterChange == 
saClm.eSaClmClusterChangesT.SA_CLM_NODE_JOINED:
-                    added.append(node_name)
+                    added.append(cluster_node)
 
                 elif notification.clusterChange == 
saClm.eSaClmClusterChangesT.SA_CLM_NODE_LEFT:
-                    removed.append(node_name)
+                    removed.append(cluster_node)
 
-        track_function(all, added, removed, changed)
+        track_function(added, removed)
 
 def node_get_callback(*args):
     pass
 
+def cluster_node_instance_from_clm_cluster_node(clm_cluster_node):
+    return ClusterNode(node_id=clm_cluster_node.nodeId,
+                       node_address=clm_cluster_node.nodeAddress,
+                       node_name=clm_cluster_node.nodeName,
+                       
execution_environment=clm_cluster_node.executionEnvironment,
+                       member=clm_cluster_node.member,
+                       boot_timestamp=clm_cluster_node.bootTimestamp,
+                       initial_view_number=clm_cluster_node.initialViewNumber)
+
+
 class ClusterNode:
 
     def __init__(self, node_id, node_address, node_name, execution_environment,
@@ -131,14 +140,8 @@ def get_members():
         notification = notification_buffer.notification[i]
         clusterNode  = notification.clusterNode
 
-        node = ClusterNode(node_id=clusterNode.nodeId,
-                           node_address=clusterNode.nodeAddress,
-                           node_name=clusterNode.nodeName,
-                           
execution_environment=clusterNode.executionEnvironment,
-                           member=clusterNode.member,
-                           boot_timestamp=clusterNode.bootTimestamp,
-                           initial_view_number=clusterNode.initialViewNumber)
+        node = cluster_node_instance_from_clm_cluster_node(clusterNode)
 
-    cluster_nodes.append(node)
+        cluster_nodes.append(node)
 
     return cluster_nodes
diff --git a/python/samples/clm-listener b/python/samples/clm-listener
deleted file mode 100755
--- a/python/samples/clm-listener
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-
-import argparse
-import sys
-
-from subprocess import Popen, PIPE
-
-from pyosaf import saAis, saClm, saImm
-
-from pyosaf.utils import immoi, clm
-
-def dn_to_vm_name(vm_dn):
-    return vm_dn.split(',')[0].split('=')[1]
-
-def print_members(members):
-
-    for node in members:
-        if node.member:
-            vm_name    = dn_to_vm_name(node.node_name)
-            ip_address = node.node_address_value
-
-            print "  - %s  %s" % (vm_name, ip_address)
-
-def membership_change(all, added, removed, changed):
-    print "Info: Received cluster membership update"
-
-    for vm_dn in added:
-        vm_name = dn_to_vm_name(vm_dn)
-
-        print "INFO: % joined the cluster" % vm_name
-
-    for vm_dn in removed:
-        vm_name = dn_to_vm_name(vm_dn)
-
-        print "INFO: %s left the cluster" % vm_name
-
-
-if __name__ == "__main__":
-
-    # Parse command line arguments
-    parser = argparse.ArgumentParser(
-        description='Listens to changes to objects of the given classes')
-
-    group = parser.add_mutually_exclusive_group(required=True)
-
-    group.add_argument('--snapshot', action="store_true",
-                        help='shows a snapshot of the current membership list')
-    group.add_argument('--listen', action="store_true", help='listens to 
changes to all classes')
-
-    args = parser.parse_args()
-
-    # Initialize the CLM service
-    clm.initialize(track_fn=membership_change)
-
-    if args.snapshot:
-        print "-" * 10 + " Members " + "-"*10
-
-        members = clm.get_members()
-
-        print_members(members)
-
-        sys.exit(0)
-
-    # Start tracking
-    clm.track()
-
-    # Do dispatch forever
-    while True:
-        clm.saClmDispatch(clm.HANDLE, 
saAis.eSaDispatchFlagsT.SA_DISPATCH_BLOCKING)
diff --git a/python/samples/clm-tool b/python/samples/clm-tool
--- a/python/samples/clm-tool
+++ b/python/samples/clm-tool
@@ -5,7 +5,7 @@ import sys
 
 from pyosaf import saAis, saClm, saImm
 
-from pyosaf.utils import immoi, clm
+from pyosaf.utils import clm
 
 def dn_to_vm_name(vm_dn):
     return vm_dn.split(',')[0].split('=')[1]
@@ -19,16 +19,16 @@ def print_members(members):
 
             print "  - %s  %s" % (vm_name, ip_address)
 
-def membership_change(all, added, removed, changed):
+def membership_change(added, removed):
     print "Info: Received cluster membership update"
 
-    for vm_dn in added:
-        vm_name = dn_to_vm_name(vm_dn)
+    for node in added:
+        vm_name = dn_to_vm_name(node.node_name)
 
-        print "INFO: % joined the cluster" % vm_name
+        print "INFO: %s joined the cluster" % vm_name
 
-    for vm_dn in removed:
-        vm_name = dn_to_vm_name(vm_dn)
+    for node in removed:
+        vm_name = dn_to_vm_name(node.node_name)
 
         print "INFO: %s left the cluster" % vm_name
 

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to