Hi Johan,

'interface-handler-inheritance-version' still has that 'InterfaceRO' 
problem :)
     for mo in InstanceIterator('InterfaceRO'):



One more thing about the ping-pong application.
I see that only a list of values of the parameters is passed to the 
application.

root@SC1:~# immadm -o 0 -p paramName:SA_STRING_T:paramValue pingPongId=1

Pong!

INFO: I am pingPongId=1, received arguments ['paramValue']


I think paramName and paramType should also be passed to application.
IMM services supports multiple parameters for admin-operation, those 
parameters can even have the same paramName.


Best Regards,

Hùng Nguyễn - DEK Technologies




------------------------------------------------------------------------

*From:* Johan Martensson
*Sent:* Monday, September 14, 2015 9:31PM
*To:* Hans Nordeback, Mathivanan Naickan, Hung Nguyen, Srikanth Revanuru 
(srikanth.revan...@oracle.com)
*Cc:* Opensaf-devel
*Subject:* [PATCH 15 of 15] pyosaf: Correct sample applications and add 
help text [#1406]

  python/samples/caps                                  |   9 +++++++++
  python/samples/caps-inheritance-impl                 |   9 +++++++++
  python/samples/interface-handler                     |  16 ++++++++++++----
  python/samples/interface-handler-inheritance-version |  13 ++++++++++---
  python/samples/ping-pong                             |   8 ++++++++
  python/samples/ping-pong-inheritance-impl            |   8 ++++++++
  python/samples/time-reporter                         |  12 ++++++++++--
  python/samples/time-reporter-inheritance-impl        |  14 +++++++++++---
  python/samples/users                                 |  11 ++++++++++-
  python/samples/users-inheritance-impl                |  11 ++++++++++-
  10 files changed, 97 insertions(+), 14 deletions(-)


Correct mistakes in the sample applications and add proper help text to all.

diff --git a/python/samples/caps b/python/samples/caps
--- a/python/samples/caps
+++ b/python/samples/caps
@@ -1,6 +1,7 @@
  #!/usr/bin/env python
  
  import itertools
+import argparse
  
  from pyosaf.saAis import eSaAisErrorT
  
@@ -31,6 +32,14 @@ def handle_validate(all_instances, updat
  
  if __name__ == "__main__":
  
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Validates that the lowerCaps and upperCaps attributes
+of instances of the CapsSample class can only contain
+lower case and upper case text respectively.')
+
+    parser.parse_args()
+
      # Create the implementer
      classes = [caps_class_name]
  
diff --git a/python/samples/caps-inheritance-impl 
b/python/samples/caps-inheritance-impl
--- a/python/samples/caps-inheritance-impl
+++ b/python/samples/caps-inheritance-impl
@@ -1,6 +1,7 @@
  #!/usr/bin/env python
  
  import itertools
+import argparse
  
  from pyosaf.saAis import eSaAisErrorT
  
@@ -42,6 +43,14 @@ class Caps(Implementer):
  
  if __name__ == "__main__":
  
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Validates that the lowerCaps and upperCaps attributes
+of instances of the CapsSample class can only contain
+lower case and upper case text respectively.')
+
+    parser.parse_args()
+
      # Create the implementer
      caps_implementer = Caps()
  
diff --git a/python/samples/interface-handler b/python/samples/interface-handler
--- a/python/samples/interface-handler
+++ b/python/samples/interface-handler
@@ -61,7 +61,7 @@ def create_rt_object_for_interface(imple
      implementer.create(mo)
  
  def select_loop(implementer):
-
+    print 'select loop'
      # Get selection object for the implementer
      selection_object = implementer.get_selection_object()
  
@@ -82,16 +82,18 @@ def select_loop(implementer):
  
              # Add objects for new interfaces
              for interface in interfaces:
-                if not immoi.get_object_no_runtime('interfaceId=%s' % 
interface,
-                                                   
class_name=interface_class_name):
+
+                try:
                      create_rt_object_for_interface(implementer, interface)
+                except Exception as err:
+                    pass
  
              # Go through existing objects
              for mo in InstanceIterator('InterfaceRO01'):
                  interface_name = get_interface_name_from_dn(mo.dn)
  
                  # Remove objects for deleted interfaces
-                if not mo.dn in interfaces:
+                if not mo.interfaceId.split('=')[1] in interfaces:
                      implementer.delete(mo.dn)
  
                      continue
@@ -115,6 +117,12 @@ def select_loop(implementer):
  
  if __name__ == "__main__":
  
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Creates a runtime object per network interface on the 
machine and populates the ipv4Addresses and ipv6Addresses attributes.')
+
+    parser.parse_args()
+
      # Create the implementer instance
      interface_implementer = Implementer(name="InterfaceImplementer")
  
diff --git a/python/samples/interface-handler-inheritance-version 
b/python/samples/interface-handler-inheritance-version
--- a/python/samples/interface-handler-inheritance-version
+++ b/python/samples/interface-handler-inheritance-version
@@ -86,16 +86,17 @@ class InterfaceImplementer(Implementer):
  
                  # Add objects for new interfaces
                  for interface in interfaces:
-                    if not immoi.get_object_no_runtime('interfaceId=%s' % 
interface,
-                                                       
class_name=interface_class_name):
+                    try:
                          self.create_rt_object_for_interface(interface)
+                    except Exception as err:
+                        pass
  
                  # Go through existing objects
                  for mo in InstanceIterator('InterfaceRO'):
                      interface_name = self.get_interface_name_from_dn(mo.dn)
  
                      # Remove objects for deleted interfaces
-                    if not mo.dn in interfaces:
+                    if not mo.interfaceId.split('=')[1] in interfaces:
                          self.delete(mo.dn)
  
                          continue
@@ -119,6 +120,12 @@ class InterfaceImplementer(Implementer):
  
  if __name__ == "__main__":
  
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Creates a runtime object per network interface on the 
machine and populates the ipv4Addresses and ipv6Addresses attributes.')
+
+    parser.parse_args()
+
      # Create the implementer
      interface_implementer = InterfaceImplementer()
  
diff --git a/python/samples/ping-pong b/python/samples/ping-pong
--- a/python/samples/ping-pong
+++ b/python/samples/ping-pong
@@ -1,6 +1,7 @@
  #!/usr/bin/env python
  
  import select
+import argparse
  
  from pyosaf.saAis import eSaAisErrorT
  
@@ -37,6 +38,13 @@ def pong(dn, arguments):
  
  if __name__ == '__main__':
  
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Logs and replies to admin operations 0 and 1 towards %s,'
+        ' and replies' % dn)
+
+    parser.parse_args()
+
      # Create the ping-pong instance if it doesn't exist
      if not immom.get(dn):
  
diff --git a/python/samples/ping-pong-inheritance-impl 
b/python/samples/ping-pong-inheritance-impl
--- a/python/samples/ping-pong-inheritance-impl
+++ b/python/samples/ping-pong-inheritance-impl
@@ -1,6 +1,7 @@
  #!/usr/bin/env python
  
  import select
+import argparse
  
  from pyosaf.saAis import eSaAisErrorT
  
@@ -36,6 +37,13 @@ class PingPong(Implementer):
  
  if __name__ == '__main__':
  
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Logs and replies to admin operations 0 and 1 towards %s,'
+        ' and replies' % dn)
+
+    parser.parse_args()
+
      # Create the ping-pong instance if it doesn't exist
      if not immom.get(dn):
  
diff --git a/python/samples/time-reporter b/python/samples/time-reporter
--- a/python/samples/time-reporter
+++ b/python/samples/time-reporter
@@ -2,6 +2,7 @@
  
  import select
  import datetime
+import argparse
  
  from pyosaf.utils import immom, immoi
  from pyosaf.utils.immoi.implementer import Implementer
@@ -45,6 +46,12 @@ def select_loop(implementer):
  
  if __name__ == '__main__':
  
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Keeps the %s object updated with the current time' % dn)
+
+    parser.parse_args()
+
      # Create the implementer instance
      time_implementer = Implementer(name="TimeReporter")
  
@@ -52,8 +59,7 @@ if __name__ == '__main__':
      (hours, minutes, seconds) = get_time()
  
      # Create the time instance if it doesn't exist
-    if not immoi.get_object_no_runtime(dn):
-
+    try:
          obj = ImmObject(class_name=class_name, dn=dn)
  
          obj.hours   = hours
@@ -62,6 +68,8 @@ if __name__ == '__main__':
          obj.timeId  = "timeId=1"
  
          time_implementer.create(obj)
+    except Exception as err:
+        pass
  
      # Start dispatch and time update loop
      select_loop(time_implementer)
diff --git a/python/samples/time-reporter-inheritance-impl 
b/python/samples/time-reporter-inheritance-impl
--- a/python/samples/time-reporter-inheritance-impl
+++ b/python/samples/time-reporter-inheritance-impl
@@ -2,6 +2,7 @@
  
  import select
  import datetime
+import argparse
  
  from pyosaf.utils import immom, immoi
  from pyosaf.utils.immoi.implementer import Implementer
@@ -28,8 +29,7 @@ class TimeReporter(Implementer):
          # Create the time instance if it doesn't exist
          dn = "timeId=%s" % self.time_id
  
-        if not immoi.get_object_no_runtime(dn):
-
+        try:
              now = datetime.datetime.now()
  
              obj = ImmObject(class_name=class_name, dn=dn)
@@ -39,7 +39,9 @@ class TimeReporter(Implementer):
              obj.seconds = now.second
              obj.timeId  = "timeId=%" % self.time_id
  
-            time_implementer.create(obj)
+            self.create(obj)
+        except Exception as err:
+            pass
  
      def enter_dispatch_loop(self):
          '''
@@ -74,6 +76,12 @@ class TimeReporter(Implementer):
  
  if __name__ == '__main__':
  
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Keeps the %s object updated with the current time' % dn)
+
+    parser.parse_args()
+
      # Create the implementer instance
      time_implementer = TimeReporter(time_id=1)
  
diff --git a/python/samples/users b/python/samples/users
--- a/python/samples/users
+++ b/python/samples/users
@@ -6,6 +6,7 @@ from pyosaf.utils.immom.object import Im
  from pyosaf.utils.immoi.implementer import Implementer
  
  import psutil
+import argparse
  
  class_name='UsersSampleClass'
  
@@ -13,7 +14,15 @@ def on_attribute_update(*args):
      return list(set(map(lambda x: x.name, psutil.get_users())))
  
  if __name__ == '__main__':
-
+
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Creates the usersId=1 object and updates its users '
+        'attribute with the current list of logged in users when it\' read '
+        'in IMM.')
+
+    parser.parse_args()
+
      users_implementer = Implementer(on_runtime_values_get=on_attribute_update,
                                      name='UsersImplementer')
  
diff --git a/python/samples/users-inheritance-impl 
b/python/samples/users-inheritance-impl
--- a/python/samples/users-inheritance-impl
+++ b/python/samples/users-inheritance-impl
@@ -6,6 +6,7 @@ from pyosaf.utils.immom.object import Im
  from pyosaf.utils.immoi.implementer import Implementer
  
  import psutil
+import argparse
  
  class_name='UsersSampleClass'
  
@@ -18,7 +19,15 @@ class UsersImplementer(Implementer):
          return list(set(map(lambda x: x.name, psutil.get_users())))
  
  if __name__ == '__main__':
-
+
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(
+        description='Creates the usersId=1 object and updates its users '
+        'attribute with the current list of logged in users when it\' read '
+        'in IMM.')
+
+    parser.parse_args()
+
      users_implementer = UsersImplementer()
  
      try:


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to