Add validations to PCA event handler

Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/0b52db83
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/0b52db83
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/0b52db83

Branch: refs/heads/stratos-4.1.x
Commit: 0b52db83a011cfec8b887ac058aaf5781bb11424
Parents: 755a15b
Author: Akila Perera <[email protected]>
Authored: Fri Sep 18 14:35:43 2015 +0530
Committer: Akila Perera <[email protected]>
Committed: Fri Sep 18 15:56:12 2015 +0530

----------------------------------------------------------------------
 .../modules/event/eventhandler.py               | 64 +++++++++++++-------
 1 file changed, 41 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/0b52db83/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
 
b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
index 9496951..14f3b09 100644
--- 
a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
+++ 
b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
@@ -48,9 +48,10 @@ class EventHandler:
     def create_dummy_interface(self):
         self.__log.debug("Processing lvs dummy interface creation...")
         lvs_vip = Config.lvs_virtual_ip.split("|")
-        self.__log.debug("LVS dummy interface creation values %s %s " 
%(lvs_vip[0], lvs_vip[1]) )
+        self.__log.debug("LVS dummy interface creation values %s %s " % 
(lvs_vip[0], lvs_vip[1]))
         self.execute_event_extendables(constants.CREATE_LVS_DUMMY_INTERFACE,
-                                       {"EVENT": 
constants.CREATE_LVS_DUMMY_INTERFACE, "LVS_DUMMY_VIRTUAL_IP": lvs_vip[0],
+                                       {"EVENT": 
constants.CREATE_LVS_DUMMY_INTERFACE,
+                                        "LVS_DUMMY_VIRTUAL_IP": lvs_vip[0],
                                         "LVS_SUBNET_MASK": lvs_vip[1]})
 
     def on_instance_activated_event(self):
@@ -103,7 +104,7 @@ class EventHandler:
             try:
                 
self.execute_event_extendables(constants.ARTIFACT_UPDATED_EVENT, plugin_values)
             except ValueError:
-                self.__log.exception("Could not execute plugins for artifact 
updated event.")         
+                self.__log.exception("Could not execute plugins for artifact 
updated event: %s" % ValueError)
 
             if subscribe_run:
                 # publish instanceActivated
@@ -121,7 +122,7 @@ class EventHandler:
                 try:
                     update_interval = int(Config.artifact_update_interval)
                 except ValueError:
-                    self.__log.exception("Invalid artifact sync interval 
specified.")
+                    self.__log.exception("Invalid artifact sync interval 
specified: %s" % ValueError)
                     update_interval = 10
 
                 self.__log.info("Artifact updating task enabled, update 
interval: %s seconds" % update_interval)
@@ -186,7 +187,12 @@ class EventHandler:
 
         topology = complete_topology_event.get_topology()
         service = topology.get_service(service_name_in_payload)
+        if service is None:
+            raise Exception("Service not found in topology [service] %s" % 
service_name_in_payload)
+
         cluster = service.get_cluster(cluster_id_in_payload)
+        if cluster is None:
+            raise Exception("Cluster id not found in topology [cluster] %s" % 
cluster_id_in_payload)
 
         plugin_values = {"TOPOLOGY_JSON": json.dumps(topology.json_str),
                          "MEMBER_LIST_JSON": 
json.dumps(cluster.member_list_json)}
@@ -283,7 +289,7 @@ class EventHandler:
         cluster_id_in_payload = Config.cluster_id
         member_id_in_payload = Config.member_id
         member_initialized = 
self.is_member_initialized_in_topology(service_name_in_payload, 
cluster_id_in_payload,
-                                                                 
member_id_in_payload)
+                                                                    
member_id_in_payload)
 
         if not member_initialized:
             self.__log.error("Member has not initialized, failed to execute 
start server event")
@@ -419,8 +425,8 @@ class EventHandler:
                 extension_thread.join()
             else:
                 self.__log.debug("No extensions registered for event %s" % 
event)
-        except OSError:
-            self.__log.warn("No extension was found for event %s" % event)
+        except OSError as e:
+            self.__log.warn("No extension was found for event %s: %s" % 
(event, e))
         except Exception as e:
             self.__log.exception("Error while executing extension for event 
%s: %s" % (event, e))
 
@@ -479,25 +485,31 @@ class EventHandler:
         if self.member_exists_in_topology(service_name, cluster_id, member_id):
             topology = TopologyContext.get_topology()
             service = topology.get_service(service_name)
+            if service is None:
+                raise Exception("Service not found in topology [service] %s" % 
service_name)
+
             cluster = service.get_cluster(cluster_id)
-            found_member = cluster.get_member(member_id)
-            self.__log.debug("Found member: " + found_member.to_json())
-            if found_member.status == MemberStatus.Initialized:
-                return True
+            if cluster is None:
+                raise Exception("Cluster id not found in topology [cluster] 
%s" % cluster_id)
+
+            member = cluster.get_member(member_id)
+            if member is None:
+                raise Exception("Member id not found in topology [member] %s" 
% member_id)
 
+            self.__log.info("Found member: " + member.to_json())
+            if member.status == MemberStatus.Initialized:
+                return True
         return False
 
     def member_exists_in_topology(self, service_name, cluster_id, member_id):
         topology = TopologyContext.get_topology()
         service = topology.get_service(service_name)
         if service is None:
-            self.__log.error("Service not found in topology [service] %s" % 
service_name)
-            return False
+            raise Exception("Service not found in topology [service] %s" % 
service_name)
 
         cluster = service.get_cluster(cluster_id)
         if cluster is None:
-            self.__log.error("Cluster id not found in topology [cluster] %s" % 
cluster_id)
-            return False
+            raise Exception("Cluster id not found in topology [cluster] %s" % 
cluster_id)
 
         activated_member = cluster.get_member(member_id)
         if activated_member is None:
@@ -510,15 +522,15 @@ class EventHandler:
         topology = TopologyContext.get_topology()
         service = topology.get_service(service_name)
         if service is None:
-            self.__log.error("Service not found in topology [service] %s" % 
service_name)
-            return False
+            raise Exception("Service not found in topology [service] %s" % 
service_name)
 
         cluster = service.get_cluster(cluster_id)
         if cluster is None:
-            self.__log.error("Cluster id not found in topology [cluster] %s" % 
cluster_id)
-            return False
+            raise Exception("Cluster id not found in topology [cluster] %s" % 
cluster_id)
 
         member = cluster.get_member(member_id)
+        if member is None:
+            raise Exception("Member id not found in topology [member] %s" % 
member_id)
         member.status = MemberStatus.Initialized
 
     @staticmethod
@@ -543,14 +555,20 @@ class EventHandler:
         plugin_values["LB_IP"] = lb_private_ip if lb_private_ip is not None 
else Config.lb_private_ip
         plugin_values["LB_PUBLIC_IP"] = lb_public_ip if lb_public_ip is not 
None else Config.lb_public_ip
 
-
-
         topology = TopologyContext.get_topology()
         if topology.initialized:
             service = topology.get_service(Config.service_name)
+            if service is None:
+                raise Exception("Service not found in topology [service] %s" % 
Config.service_name)
+
             cluster = service.get_cluster(Config.cluster_id)
-            member_id_in_payload = Config.member_id
-            member = cluster.get_member(member_id_in_payload)
+            if cluster is None:
+                raise Exception("Cluster id not found in topology [cluster] 
%s" % Config.cluster_id)
+
+            member = cluster.get_member(Config.member_id)
+            if member is None:
+                raise Exception("Member id not found in topology [member] %s" 
% Config.member_id)
+
             EventHandler.add_properties(service.properties, plugin_values, 
"SERVICE_PROPERTY")
             EventHandler.add_properties(cluster.properties, plugin_values, 
"CLUSTER_PROPERTY")
             EventHandler.add_properties(member.properties, plugin_values, 
"MEMBER_PROPERTY")

Reply via email to