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