| 1 |  |  | """ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  | Enarksh | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  | Copyright 2013-2016 Set Based IT Consultancy | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  | Licence MIT | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  | """ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  | from enarksh.C import C | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  | from enarksh.controller.Schedule import Schedule | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 |  |  |  | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 11 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 12 |  |  | class NodeActionMessageBaseEventHandler: | 
            
                                                                        
                            
            
                                    
            
            
                | 13 |  |  |     """ | 
            
                                                                        
                            
            
                                    
            
            
                | 14 |  |  |     A base event handler for a NodeActionMessage or received events. | 
            
                                                                        
                            
            
                                    
            
            
                | 15 |  |  |     """ | 
            
                                                                        
                            
            
                                    
            
            
                | 16 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 17 |  |  |     # ------------------------------------------------------------------------------------------------------------------ | 
            
                                                                        
                            
            
                                    
            
            
                | 18 |  |  |     @staticmethod | 
            
                                                                        
                            
            
                                    
            
            
                | 19 |  |  |     def base_handle(controller, response, sch_id, rnd_id, act_id): | 
            
                                                                        
                            
            
                                    
            
            
                | 20 |  |  |         """ | 
            
                                                                        
                            
            
                                    
            
            
                | 21 |  |  |         Handles a NodeActionMessage received event. | 
            
                                                                        
                            
            
                                    
            
            
                | 22 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 23 |  |  |         :param enarksh.controller.Controller.Controller controller: The controller. | 
            
                                                                        
                            
            
                                    
            
            
                | 24 |  |  |         :param dict response: The response to the client. | 
            
                                                                        
                            
            
                                    
            
            
                | 25 |  |  |         :param int sch_id: The ID of the schedule. | 
            
                                                                        
                            
            
                                    
            
            
                | 26 |  |  |         :param int rnd_id: The ID of the node. | 
            
                                                                        
                            
            
                                    
            
            
                | 27 |  |  |         :param int act_id: The ID of the requested action. | 
            
                                                                        
                            
            
                                    
            
            
                | 28 |  |  |         """ | 
            
                                                                        
                            
            
                                    
            
            
                | 29 |  |  |         schedule = controller.get_schedule_by_sch_id(sch_id) | 
            
                                                                        
                            
            
                                    
            
            
                | 30 |  |  |         if schedule: | 
            
                                                                        
                            
            
                                    
            
            
                | 31 |  |  |             actions = schedule.request_possible_node_actions(rnd_id) | 
            
                                                                        
                            
            
                                    
            
            
                | 32 |  |  |         else: | 
            
                                                                        
                            
            
                                    
            
            
                | 33 |  |  |             actions = Schedule.get_response_template() | 
            
                                                                        
                            
            
                                    
            
            
                | 34 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 35 |  |  |         if act_id not in actions['actions'] or not actions['actions'][act_id]['act_enabled']: | 
            
                                                                        
                            
            
                                    
            
            
                | 36 |  |  |             response['ret'] = -1 | 
            
                                                                        
                            
            
                                    
            
            
                | 37 |  |  |             response['message'] = 'Not a valid action' | 
            
                                                                        
                            
            
                                    
            
            
                | 38 |  |  |         else: | 
            
                                                                        
                            
            
                                    
            
            
                | 39 |  |  |             schedule = controller.get_schedule_by_sch_id(sch_id) | 
            
                                                                        
                            
            
                                    
            
            
                | 40 |  |  |             reload = schedule.request_node_action(rnd_id, act_id) | 
            
                                                                        
                            
            
                                    
            
            
                | 41 |  |  |             if reload: | 
            
                                                                        
                            
            
                                    
            
            
                | 42 |  |  |                 # Schedule must be reloaded. | 
            
                                                                        
                            
            
                                    
            
            
                | 43 |  |  |                 schedule = controller.reload_schedule(schedule.sch_id) | 
            
                                                                        
                            
            
                                    
            
            
                | 44 |  |  |                 # A reload is only required when the schedule is been triggered. However, this trigger is lost by | 
            
                                                                        
                            
            
                                    
            
            
                | 45 |  |  |                 # reloading the schedule. So, resend the trigger. | 
            
                                                                        
                            
            
                                    
            
            
                | 46 |  |  |                 schedule.request_node_action(schedule.get_activate_node().rnd_id, act_id) | 
            
                                                                        
                            
            
                                    
            
            
                | 47 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 48 |  |  |             if act_id == C.ENK_ACT_ID_TRIGGER: | 
            
                                                                        
                            
            
                                    
            
            
                | 49 |  |  |                 response['new_run'] = 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 50 |  |  |  | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 51 |  |  | # ---------------------------------------------------------------------------------------------------------------------- | 
            
                                                        
            
                                    
            
            
                | 52 |  |  |  |