Commit 97331a1171f1da8d3f3f91ff8629ec1dd4e71144

Authored by Etienne Pallier
1 parent 55831fe5
Exists in dev

Simplification des MODE_CHOICES ET STATUS_CHOICES dans AgentSurvey et dans Agent - CLEANUP

src/core/pyros_django/agent/Agent.py
@@ -607,7 +607,7 @@ class Agent: @@ -607,7 +607,7 @@ class Agent:
607 self.unit = None 607 self.unit = None
608 self.TEST_COMMANDS = None 608 self.TEST_COMMANDS = None
609 609
610 - #print(AgentSurvey.MODE_IDLE) 610 + #print(AgentSurvey.MODE_CHOICES.IDLE)
611 #sys.exit() 611 #sys.exit()
612 612
613 # Agent is by default in mode ATTENTIVE (most active mode) 613 # Agent is by default in mode ATTENTIVE (most active mode)
@@ -642,7 +642,7 @@ class Agent: @@ -642,7 +642,7 @@ class Agent:
642 642
643 self.TEST_COMMANDS = iter(self.TEST_COMMANDS_LIST) 643 self.TEST_COMMANDS = iter(self.TEST_COMMANDS_LIST)
644 ##self.RUN_IN_THREAD = RUN_IN_THREAD 644 ##self.RUN_IN_THREAD = RUN_IN_THREAD
645 - self._set_status(AgentSurvey.STATUS_LAUNCH) 645 + self._set_status(AgentSurvey.STATUS_CHOICES.LAUNCHED)
646 ####self._set_idle() 646 ####self._set_idle()
647 647
648 # Create 1st survey if none 648 # Create 1st survey if none
@@ -964,7 +964,7 @@ class Agent: @@ -964,7 +964,7 @@ class Agent:
964 """ 964 """
965 965
966 ("in run()") 966 ("in run()")
967 - self._set_and_log_status(AgentSurvey.STATUS_LAUNCH) 967 + self._set_and_log_status(AgentSurvey.STATUS_CHOICES.LAUNCHED)
968 968
969 #return 969 #return
970 970
@@ -1041,7 +1041,7 @@ class Agent: @@ -1041,7 +1041,7 @@ class Agent:
1041 1041
1042 def _main_loop(self, nb_iter:int=None, FOR_REAL:bool=True): 1042 def _main_loop(self, nb_iter:int=None, FOR_REAL:bool=True):
1043 1043
1044 - self._set_and_log_status(AgentSurvey.STATUS_MAIN_LOOP) 1044 + self._set_and_log_status(AgentSurvey.STATUS_CHOICES.IN_MAIN_LOOP)
1045 1045
1046 self._main_loop_start(nb_iter) 1046 self._main_loop_start(nb_iter)
1047 #if not self.DO_MAIN_LOOP: return 1047 #if not self.DO_MAIN_LOOP: return
@@ -1074,15 +1074,17 @@ class Agent: @@ -1074,15 +1074,17 @@ class Agent:
1074 cmd = self._process_next_command_if_exists() 1074 cmd = self._process_next_command_if_exists()
1075 #print(cmd) 1075 #print(cmd)
1076 except ( 1076 except (
  1077 + # PENDING (non running) cmd exceptions
1077 CmdUnimplementedException, CmdBadArgsException, CmdUnknownException, 1078 CmdUnimplementedException, CmdBadArgsException, CmdUnknownException,
  1079 + # RUNNING cmd exceptions
1078 CmdExecErrorException, CmdExecTimeoutException, CmdExecKilledException 1080 CmdExecErrorException, CmdExecTimeoutException, CmdExecKilledException
1079 ) as e : 1081 ) as e :
1080 - print(e) 1082 + #print(e)
1081 log.error(f"EXCEPTION on Agent command '{e.cmd_name}'") 1083 log.error(f"EXCEPTION on Agent command '{e.cmd_name}'")
1082 if isinstance(e.cmd, AgentCmd) : 1084 if isinstance(e.cmd, AgentCmd) :
1083 cmd = e.cmd 1085 cmd = e.cmd
1084 if type(e) is CmdUnimplementedException: 1086 if type(e) is CmdUnimplementedException:
1085 - if cmd.name is not "get_specific_cmds": 1087 + if cmd.name != "get_specific_cmds":
1086 cmd.set_as_unimplemented("EXCEPTION: command known but unimplemented") 1088 cmd.set_as_unimplemented("EXCEPTION: command known but unimplemented")
1087 if type(e) in (CmdBadArgsException, CmdUnknownException): 1089 if type(e) in (CmdBadArgsException, CmdUnknownException):
1088 cmd.set_as_invalid("EXCEPTION: command unknown or bad args") 1090 cmd.set_as_invalid("EXCEPTION: command unknown or bad args")
@@ -1164,7 +1166,7 @@ class Agent: @@ -1164,7 +1166,7 @@ class Agent:
1164 self.DO_MAIN_LOOP = False 1166 self.DO_MAIN_LOOP = False
1165 return 1167 return
1166 1168
1167 - ##self._set_status(AgentSurvey.STATUS_MAIN_LOOP) 1169 + ##self._set_status(AgentSurvey.STATUS_CHOICES.IN_MAIN_LOOP)
1168 self.show_mode_and_status() 1170 self.show_mode_and_status()
1169 1171
1170 self.main_loop_start() 1172 self.main_loop_start()
@@ -1205,7 +1207,7 @@ class Agent: @@ -1205,7 +1207,7 @@ class Agent:
1205 def _process_next_command_if_exists(self)->Union[AgentCmd,None]: 1207 def _process_next_command_if_exists(self)->Union[AgentCmd,None]:
1206 ''' Processing the next pending command if exists ''' 1208 ''' Processing the next pending command if exists '''
1207 1209
1208 - self._set_and_log_status(AgentSurvey.STATUS_GET_NEXT_COMMAND) 1210 + self._set_and_log_status(AgentSurvey.STATUS_CHOICES.IN_GET_NEXT_CMD)
1209 1211
1210 #print() 1212 #print()
1211 #print() 1213 #print()
@@ -1283,7 +1285,7 @@ class Agent: @@ -1283,7 +1285,7 @@ class Agent:
1283 self._cleanup_before_exit() 1285 self._cleanup_before_exit()
1284 if cmd.name != 'do_restart_loop': 1286 if cmd.name != 'do_restart_loop':
1285 self.DO_RESTART_LOOP = False 1287 self.DO_RESTART_LOOP = False
1286 - self._set_status(AgentSurvey.STATUS_EXIT) 1288 + self._set_status(AgentSurvey.STATUS_CHOICES.EXITING)
1287 # log last agent mode & status 1289 # log last agent mode & status
1288 self._log_agent_state() 1290 self._log_agent_state()
1289 #cmd.set_result('EXITING') 1291 #cmd.set_result('EXITING')
@@ -1391,7 +1393,7 @@ class Agent: @@ -1391,7 +1393,7 @@ class Agent:
1391 print() 1393 print()
1392 log.info("*"*10+ " ROUTINE PROCESSING BEFORE (START) "+ "*"*10+ '\n') 1394 log.info("*"*10+ " ROUTINE PROCESSING BEFORE (START) "+ "*"*10+ '\n')
1393 1395
1394 - self._set_and_log_status(AgentSurvey.STATUS_ROUTINE_BEFORE_PROCESS) 1396 + self._set_and_log_status(AgentSurvey.STATUS_CHOICES.IN_ROUTINE_BEF)
1395 self.routine_process_before_body() 1397 self.routine_process_before_body()
1396 1398
1397 print() 1399 print()
@@ -1413,7 +1415,7 @@ class Agent: @@ -1413,7 +1415,7 @@ class Agent:
1413 print() 1415 print()
1414 log.info("*"*10+ " ROUTINE PROCESSING AFTER (START) "+ "*"*10+ '\n') 1416 log.info("*"*10+ " ROUTINE PROCESSING AFTER (START) "+ "*"*10+ '\n')
1415 1417
1416 - self._set_and_log_status(AgentSurvey.STATUS_ROUTINE_AFTER_PROCESS) 1418 + self._set_and_log_status(AgentSurvey.STATUS_CHOICES.IN_ROUTINE_AFT)
1417 self.routine_process_after_body() 1419 self.routine_process_after_body()
1418 1420
1419 print() 1421 print()
@@ -1543,9 +1545,9 @@ class Agent: @@ -1543,9 +1545,9 @@ class Agent:
1543 return self.mode 1545 return self.mode
1544 1546
1545 # Test mode 1547 # Test mode
1546 - def IS_MODE_IDLE(self): return self.get_mode() == AgentSurvey.MODE_IDLE  
1547 - def IS_MODE_ROUTINE(self): return self.get_mode() == AgentSurvey.MODE_ROUTINE  
1548 - def IS_MODE_ATTENTIVE(self): return self.get_mode() == AgentSurvey.MODE_ATTENTIVE 1548 + def IS_MODE_IDLE(self): return self.get_mode() == AgentSurvey.MODE_CHOICES.IDLE
  1549 + def IS_MODE_ROUTINE(self): return self.get_mode() == AgentSurvey.MODE_CHOICES.ROUTINE
  1550 + def IS_MODE_ATTENTIVE(self): return self.get_mode() == AgentSurvey.MODE_CHOICES.ATTENTIVE
1549 # @deprecated 1551 # @deprecated
1550 def IS_IDLE(self): return self.IS_MODE_IDLE() 1552 def IS_IDLE(self): return self.IS_MODE_IDLE()
1551 # @deprecated 1553 # @deprecated
@@ -1559,19 +1561,20 @@ class Agent: @@ -1559,19 +1561,20 @@ class Agent:
1559 self.mode = mode 1561 self.mode = mode
1560 1562
1561 def _set_mode_idle(self): 1563 def _set_mode_idle(self):
1562 - self._set_mode(AgentSurvey.MODE_IDLE) 1564 + self._set_mode(AgentSurvey.MODE_CHOICES.IDLE)
1563 # @deprecated 1565 # @deprecated
1564 def set_idle(self): 1566 def set_idle(self):
1565 self._set_mode_idle() 1567 self._set_mode_idle()
1566 1568
1567 def _set_mode_routine(self): 1569 def _set_mode_routine(self):
1568 - self._set_mode(AgentSurvey.MODE_ROUTINE) 1570 + self._set_mode(AgentSurvey.MODE_CHOICES.ROUTINE)
1569 # @deprecated 1571 # @deprecated
1570 def set_routine(self): 1572 def set_routine(self):
1571 self._set_mode_routine() 1573 self._set_mode_routine()
1572 1574
1573 def _set_mode_attentive(self): 1575 def _set_mode_attentive(self):
1574 - self._set_mode(AgentSurvey.MODE_ATTENTIVE) 1576 + #self._set_mode(AgentSurvey.MODE_ATTENTIVE)
  1577 + self._set_mode(AgentSurvey.MODE_CHOICES.ATTENTIVE)
1575 # @deprecated 1578 # @deprecated
1576 def set_attentive(self): 1579 def set_attentive(self):
1577 self._set_mode_attentive() 1580 self._set_mode_attentive()
@@ -1649,7 +1652,7 @@ class Agent: @@ -1649,7 +1652,7 @@ class Agent:
1649 def init(self): 1652 def init(self):
1650 #log.debug("*** Initializing... ***") 1653 #log.debug("*** Initializing... ***")
1651 log.info("*** INITIALIZING... ***") 1654 log.info("*** INITIALIZING... ***")
1652 - self._set_and_log_status(AgentSurvey.STATUS_INIT) 1655 + self._set_and_log_status(AgentSurvey.STATUS_CHOICES.INITIALIZING)
1653 if self.TEST_MODE: self.set_delay(2) 1656 if self.TEST_MODE: self.set_delay(2)
1654 1657
1655 1658
@@ -1830,7 +1833,7 @@ class Agent: @@ -1830,7 +1833,7 @@ class Agent:
1830 which is relevant to this agent. 1833 which is relevant to this agent.
1831 Commands are read in chronological order 1834 Commands are read in chronological order
1832 """ 1835 """
1833 - self._set_status(AgentSurvey.STATUS_GET_NEXT_COMMAND) 1836 + self._set_status(AgentSurvey.STATUS_CHOICES.IN_GET_NEXT_CMD)
1834 log.info("Looking for a new command to process (sent by another agent):") 1837 log.info("Looking for a new command to process (sent by another agent):")
1835 1838
1836 # 1) Get all pending commands for me (return if None) 1839 # 1) Get all pending commands for me (return if None)
src/core/pyros_django/common/models.py
@@ -328,60 +328,22 @@ class AgentSurvey(models.Model): @@ -328,60 +328,22 @@ class AgentSurvey(models.Model):
328 - MODE_ATTENTIVE : idem ROUTINE + executes Agent level SPECIFIC commands (commands specific to this agent, that only this agent understands and can execute) 328 - MODE_ATTENTIVE : idem ROUTINE + executes Agent level SPECIFIC commands (commands specific to this agent, that only this agent understands and can execute)
329 Default mode is MODE_ATTENTIVE (most active mode) 329 Default mode is MODE_ATTENTIVE (most active mode)
330 ''' 330 '''
331 - #MODE_ACTIVE = "ACTIVE"  
332 - MODE_IDLE = "IDLE"  
333 - MODE_ROUTINE = "ROUTINE"  
334 - MODE_ATTENTIVE = "ATTENTIVE"  
335 - '''  
336 - (MODE_ACTIVE, 'Active mode'),  
337 - (MODE_IDLE, 'Idle mode'),  
338 - '''  
339 - '''  
340 - (MODE_IDLE, 'IDLE'),  
341 - (MODE_ROUTINE, 'ROUTINE'),  
342 - (MODE_ATTENTIVE, 'ATTENTIVE'),  
343 - '''  
344 - MODE_CHOICES = (  
345 - (MODE_IDLE, MODE_IDLE),  
346 - (MODE_ROUTINE, MODE_ROUTINE),  
347 - (MODE_ATTENTIVE, MODE_ATTENTIVE), 331 + MODE_CHOICES = Choices(
  332 + "IDLE",
  333 + "ROUTINE",
  334 + "ATTENTIVE",
348 ) 335 )
349 336
350 -  
351 # --- STATUSES --- 337 # --- STATUSES ---
352 -  
353 - #STATUSES = Choices('new', 'verified', 'published')  
354 - STATUS_LAUNCH = "LAUNCHED"  
355 - STATUS_INIT = "INITIALIZING"  
356 - STATUS_MAIN_LOOP = "IN_MAIN_LOOP"  
357 - STATUS_ROUTINE_BEFORE_PROCESS = "IN_ROUTINE_BEF"  
358 - STATUS_GET_NEXT_COMMAND = "IN_GET_NEXT_CMD"  
359 - STATUS_ROUTINE_AFTER_PROCESS = "IN_ROUTINE_AFT"  
360 - STATUS_EXIT = "EXITING"  
361 - # NEW  
362 - ##STATUS_RESTART = "RESTARTING"  
363 - #STATUS_GENERAL_PROCESS = "IN_GENERAL_PROCESS"  
364 - ###STATUS_SPECIFIC_PROCESS = "IN_SPECIFIC_PROCESS"  
365 - '''  
366 - STATUS_CHOICES = (  
367 - (STATUS_LAUNCH, "LAUNCHED"),  
368 - (STATUS_INIT, "INITIALIZING"),  
369 - (STATUS_MAIN_LOOP, "IN_MAIN_LOOP"),  
370 - (STATUS_ROUTINE_BEFORE_PROCESS, "IN_ROUTINE_BEF"),  
371 - (STATUS_GET_NEXT_COMMAND, "IN_GET_NEXT_CMD"),  
372 - (STATUS_ROUTINE_AFTER_PROCESS, "IN_ROUTINE_AFT"),  
373 - (STATUS_EXIT, "EXITING"),  
374 - )  
375 - '''  
376 - STATUS_CHOICES = (  
377 - #(STATUS_LAUNCH, "LAUNCHED"),  
378 - (STATUS_LAUNCH, STATUS_LAUNCH),  
379 - (STATUS_INIT, STATUS_INIT),  
380 - (STATUS_MAIN_LOOP, STATUS_MAIN_LOOP),  
381 - (STATUS_ROUTINE_BEFORE_PROCESS, STATUS_ROUTINE_BEFORE_PROCESS),  
382 - (STATUS_GET_NEXT_COMMAND, STATUS_GET_NEXT_COMMAND),  
383 - (STATUS_ROUTINE_AFTER_PROCESS, STATUS_ROUTINE_AFTER_PROCESS),  
384 - (STATUS_EXIT, STATUS_EXIT), 338 + ''' Agent steps '''
  339 + STATUS_CHOICES = Choices(
  340 + 'LAUNCHED',
  341 + 'INITIALIZING',
  342 + 'IN_MAIN_LOOP',
  343 + 'IN_ROUTINE_BEF',
  344 + 'IN_GET_NEXT_CMD',
  345 + 'IN_ROUTINE_AFT',
  346 + 'EXITING',
385 ) 347 )
386 348
387 name = models.CharField(max_length=50, unique=True) 349 name = models.CharField(max_length=50, unique=True)
@@ -392,7 +354,9 @@ class AgentSurvey(models.Model): @@ -392,7 +354,9 @@ class AgentSurvey(models.Model):
392 validity_duration = models.PositiveIntegerField(default=90) 354 validity_duration = models.PositiveIntegerField(default=90)
393 #validity_duration = models.DurationField(default=90) 355 #validity_duration = models.DurationField(default=90)
394 mode = models.CharField('agent mode', max_length=15, 356 mode = models.CharField('agent mode', max_length=15,
395 - blank=True, choices=MODE_CHOICES) 357 + blank=True, choices=MODE_CHOICES,
  358 + #default = MODE_CHOICES.ATTENTIVE
  359 + )
396 status = models.CharField( 360 status = models.CharField(
397 max_length=15, blank=True, choices=STATUS_CHOICES) 361 max_length=15, blank=True, choices=STATUS_CHOICES)
398 iteration = models.IntegerField(blank=True, null=True) 362 iteration = models.IntegerField(blank=True, null=True)