Repository: stratos Updated Branches: refs/heads/stratos-4.1.x 755a15b1d -> 353554754
Fix validations when executing topology event extensions Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/35355475 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/35355475 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/35355475 Branch: refs/heads/stratos-4.1.x Commit: 35355475406cf2f1b709c6693cc43a0b69c2e503 Parents: 0b52db8 Author: Akila Perera <[email protected]> Authored: Fri Sep 18 15:55:37 2015 +0530 Committer: Akila Perera <[email protected]> Committed: Fri Sep 18 15:56:12 2015 +0530 ---------------------------------------------------------------------- .../cartridge.agent/cartridge.agent/agent.py | 8 ++-- .../cartridge.agent/cartridge.agent/entity.py | 1 - .../modules/event/eventhandler.py | 46 +++++++++++--------- 3 files changed, 30 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/35355475/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py index 7b5dfaa..5298f07 100644 --- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py +++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py @@ -218,11 +218,12 @@ class CartridgeAgent(threading.Thread): def on_member_initialized(self, msg): self.__log.debug("Member initialized event received: %r" % msg.payload) + event_obj = MemberInitializedEvent.create_from_json(msg.payload) if not TopologyContext.topology.initialized: return - self.__event_handler.on_member_initialized_event() + self.__event_handler.on_member_initialized_event(event_obj) def on_member_activated(self, msg): self.__log.debug("Member activated event received: %r" % msg.payload) @@ -251,12 +252,13 @@ class CartridgeAgent(threading.Thread): def on_complete_topology(self, msg): event_obj = CompleteTopologyEvent.create_from_json(msg.payload) if not TopologyContext.topology.initialized: - self.__log.debug("Complete topology event received") + self.__log.debug("Topology initialized from complete topology event") TopologyContext.update(event_obj.topology) + TopologyContext.topology.initialized = True self.__event_handler.on_complete_topology_event(event_obj) else: TopologyContext.update(event_obj.topology) - self.__log.debug("Topology context updated [topology] %r" % event_obj.topology.json_str) + self.__log.debug("Topology context updated with [topology] %r" % event_obj.topology.json_str) def on_member_started(self, msg): self.__log.debug("Member started event received: %r" % msg.payload) http://git-wip-us.apache.org/repos/asf/stratos/blob/35355475/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/entity.py ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/entity.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/entity.py index d02f670..a198529 100644 --- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/entity.py +++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/entity.py @@ -507,7 +507,6 @@ class TopologyContext: @staticmethod def update(topology): TopologyContext.topology = topology - TopologyContext.topology.initialized = True class Tenant: http://git-wip-us.apache.org/repos/asf/stratos/blob/35355475/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 14f3b09..66e0e66 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 @@ -175,15 +175,17 @@ 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) - - self.__log.debug("Member initialized %s", member_initialized) - if member_initialized: - # Set cartridge agent as initialized since member is available and it is in initialized state - Config.initialized = True + if not Config.initialized: + member_initialized = self.is_member_initialized_in_topology( + service_name_in_payload, + cluster_id_in_payload, + member_id_in_payload) + + if member_initialized: + # Set cartridge agent as initialized since member is available and it is in initialized state + Config.initialized = True + self.__log.info("Member initialized [member id] %s, [cluster-id] %s, [service] %s", + (member_id_in_payload, cluster_id_in_payload, service_name_in_payload)) topology = complete_topology_event.get_topology() service = topology.get_service(service_name_in_payload) @@ -199,26 +201,28 @@ class EventHandler: self.execute_event_extendables(constants.COMPLETE_TOPOLOGY_EVENT, plugin_values) - def on_member_initialized_event(self): + def on_member_initialized_event(self, member_initialized_event): """ Member initialized event is sent by cloud controller once volume attachment and ip address allocation is completed successfully :return: """ self.__log.debug("Processing Member initialized event...") - service_name_in_payload = Config.service_name cluster_id_in_payload = Config.cluster_id member_id_in_payload = Config.member_id - member_exists = self.member_exists_in_topology(service_name_in_payload, cluster_id_in_payload, - member_id_in_payload) - - self.__log.debug("Member exists: %s" % member_exists) - - if member_exists: - Config.initialized = True - self.markMemberAsInitialized(service_name_in_payload, cluster_id_in_payload, member_id_in_payload) + if not Config.initialized and member_id_in_payload == member_initialized_event.member_id: + member_exists = self.member_exists_in_topology(service_name_in_payload, cluster_id_in_payload, + member_id_in_payload) + self.__log.debug("Member exists: %s" % member_exists) + if member_exists: + Config.initialized = True + self.markMemberAsInitialized(service_name_in_payload, cluster_id_in_payload, member_id_in_payload) + self.__log.info("Instance marked as initialized on member initialized event") + else: + raise Exception("Member [member-id] %s not found in topology while processing member initialized " + "event. [Topology] %s" % (member_id_in_payload, TopologyContext.get_topology())) self.execute_event_extendables(constants.MEMBER_INITIALIZED_EVENT, {}) @@ -379,10 +383,10 @@ class EventHandler: """ try: input_values = EventHandler.add_common_input_values(input_values) - input_values["EVENT"] = event except Exception as e: self.__log.error("Error while adding common input values for event extendables: %s" % e) - + input_values["EVENT"] = event + self.__log.info("Executing extensions for [event] %s with [input values] %s" % (event, input_values)) # Execute the extension self.execute_extension_for_event(event, input_values) # Execute the plugins
