TODO

Version 68 (Jeremy Barneron, 09/30/2016 06:18 pm)

1 1 Paul Carensac
h1. TODO
2 1 Paul Carensac
3 1 Paul Carensac
List of tasks by application, and general tasks (organization, tools, ...)
4 1 Paul Carensac
5 51 Etienne Pallier
*ATTENTION, IL FAUT EFFACER LES ITEMS DE CETTE TODOLIST AU FUR ET A MESURE QU'ILS SONT MIS DANS LES DEMANDES REDMINE*
6 51 Etienne Pallier
7 1 Paul Carensac
{{>toc}}
8 51 Etienne Pallier
9 1 Paul Carensac
10 1 Paul Carensac
---
11 1 Paul Carensac
12 52 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}General tasks (notes Etienne Pallier)%
13 1 Paul Carensac
14 65 Etienne Pallier
* Sequence:
15 65 Etienne Pallier
16 67 Jeremy Barneron
 * -Date: on doit pouvoir la donner sous 2 formes:-
17 65 Etienne Pallier
18 67 Jeremy Barneron
  * -“Tonight” => nuit en cours ou bien nuit qui arrive-
19 67 Jeremy Barneron
  * -Date précise JJ/MM/AAAA (maximum à now + 7 nuits)-
20 65 Etienne Pallier
21 65 Etienne Pallier
 * Execution strategies:
22 65 Etienne Pallier
23 67 Jeremy Barneron
  * -Request level:-
24 67 Jeremy Barneron
-(default) "Best effort, do as much sequences as you can"-
25 67 Jeremy Barneron
-=> option: "All or nothing": if ANY sequence fails, request fails-
26 65 Etienne Pallier
27 67 Jeremy Barneron
  * -Sequence level-
28 67 Jeremy Barneron
-(default) “Optional sequence”-
29 67 Jeremy Barneron
-=> option “Mandatory sequence”: if THIS sequence fails, request fails-
30 67 Jeremy Barneron
-(default) “This night only”-
31 67 Jeremy Barneron
-=> option, “Reportable à la nuit suivante” (jusqu’à 7 nuits maxi)-
32 65 Etienne Pallier
33 67 Jeremy Barneron
 * -Période de visibilité JD1-JD2:-
34 65 Etienne Pallier
35 68 Jeremy Barneron
  * -Donnée par le logiciel ETC/IS-
36 67 Jeremy Barneron
  * -c’est pour UNE NUIT (celle en cours, la prochaine, ou bien une date ultérieure pas trop loin pour que les users ne planifient pas trop en avance). Si la séquence n’a pas pu être exécutée pour cette nuit, il faut essayer de la -reprogrammer pour la nuit suivante (si le user a coché cette option) => il faudra donc recalculer le JD1-JD2 qui sera un peu différent pour chaque nuit, et ainsi de suite, jusqu’à ce qu’on arrive à une période de visibilité VIDE car- -le target n’est alors plus visible du tout-
37 67 Jeremy Barneron
  * -D’autre part, il peut y en avoir plusieurs dans la nuit, et il faudra que l’ETC/IS les donne TOUTES:-
38 65 Etienne Pallier
39 67 Jeremy Barneron
   * -2 pour un target naturel (par exemple, il se couche en début de nuit, et se lève en fin de nuit, donc 2 périodes)-
40 67 Jeremy Barneron
   * -Jusqu’à 12 pour l’ISS-
41 67 Jeremy Barneron
   * -=> prévoir donc N périodes (au moins 2)-
42 67 Jeremy Barneron
   * -=> obliger l’astronome à en CHOISIR une seule (s’il le souhaite, il pourra de toutes façons faire une autre séquence avec la 2ème période de visibilité…):-
43 65 Etienne Pallier
44 65 Etienne Pallier
45 64 Jeremy Barneron
* -Workflow du "démarrage du système" à documenter (tout se qui se déclenche quand on lance le logiciel pour la toute première fois...) : lancement du monitoring, qui à son tour lance un scheduling, …-
46 62 Etienne Pallier
47 64 Jeremy Barneron
* -public/ : faut-il garder ce dossier qui ne contient qu’un seul dossier static/ ? (ce dossier static/ est-il utile à qqch ?)-
48 62 Etienne Pallier
49 64 Jeremy Barneron
* -Démarrage: Ce n’est pas Monitoring mais Majordome qui doit lancer le 1er scheduling en début de nuit-
50 62 Etienne Pallier
51 64 Jeremy Barneron
* -Fin de nuit: Majordome fait un system.pause(), ensuite une task de calibration est lancée qui doit vérifier que tout est ok avant de faire START (dome fermé, Tele fermé, …)-
52 62 Etienne Pallier
53 64 Jeremy Barneron
* -Créer un mode DEV : jouer avec la variable DEBUG (ou autre ?) dans src/pyros/settings.py pour mettre à TRUE en mode DEV afin d’éviter d’avoir à commenter certaines lignes lors du lancement du workflow (sinon, c’est trop long)-
54 62 Etienne Pallier
55 64 Jeremy Barneron
* -User : faire une view pour le profil-
56 62 Etienne Pallier
57 64 Jeremy Barneron
* -RoutineManager : Faire un TEST import/export d’une requete-
58 62 Etienne Pallier
59 64 Jeremy Barneron
* -Roue à filtre : doit pouvoir être associée à Camera ou bien à Tele (c’est prévu dans la BD ou pas ?)-
60 62 Etienne Pallier
61 56 Jeremy Barneron
* -Observation_manager/Tasks : créer une classe mère héritant de Task, dont les classes filles (plan_vis et plan_ir) vont hériter-
62 3 Etienne Pallier
63 56 Jeremy Barneron
* -Architecture projet (organisation dossiers):-
64 39 Etienne Pallier
65 56 Jeremy Barneron
 * -src/ : laisser seulement les applications, et mettre tous les autres dossiers (fixtures/, images/, ...) dans un dossier MISC/)-
66 39 Etienne Pallier
67 44 Etienne Pallier
* RUN :
68 44 Etienne Pallier
69 56 Jeremy Barneron
 * -S'assurer que tous les prérequis sont présents et démarrés avant de lancer Pyros (sinon, générer un message d'erreur expliquant le problème):-
70 44 Etienne Pallier
 
71 56 Jeremy Barneron
  * -RabbitMQ-
72 56 Jeremy Barneron
  * -Mysql (sauf si on a choisi sqlite)-
73 44 Etienne Pallier
74 44 Etienne Pallier
75 44 Etienne Pallier
76 45 Etienne Pallier
* TESTS (intégration continue):
77 1 Paul Carensac
78 56 Jeremy Barneron
 * -Même remarque que pour le "RUN" ci-dessous concernant le check des prérequis-
79 56 Jeremy Barneron
 * -Inclure "trial comet" dans les tests pour s'assurer que Comet est bien installé (+ "rm -r _trial_temp/" ensuite pour faire le ménage après le test)-
80 56 Jeremy Barneron
 * -Mettre en place une exécution systématique des tests à chaque commit (unitaires + fonctionnels)-
81 56 Jeremy Barneron
-(pour faire plus simple, on peut imaginer que le serveur de test linux fasse un "git pull" toutes les 30mn, puis une exécution des tests, et l'envoi d'un email en cas de problème)-
82 36 Etienne Pallier
83 35 Etienne Pallier
84 35 Etienne Pallier
* Installation script:
85 35 Etienne Pallier
86 56 Jeremy Barneron
 * -Si l'environnement virtuel existe déjà, demander s'il doit être recréé (par défaut "Non")-
87 56 Jeremy Barneron
 * -(NEW) Renommer le script install_requirements.sh en install.sh-
88 56 Jeremy Barneron
 * -(NEW) Faciliter l'installation du logiciel complet avec CONDA, qui gère toutes les dépendances du logiciel, même les dépendances non Python (mysql, rabbitmq, ...), et c'est du multi-plateforme : (cf -https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions)-
89 35 Etienne Pallier
90 25 Etienne Pallier
* Pyros : 
91 1 Paul Carensac
92 56 Jeremy Barneron
 * -Doit pouvoir être démarré indifféremment AVANT (par défaut) les devices, ou APRES (actuellement, le AVANT est TODO)-
93 56 Jeremy Barneron
 * -De manière générale, doit être le plus possible "tolérant aux pannes"-
94 56 Jeremy Barneron
 * -Doit être le plus générique et donc paramétrable possible-
95 1 Paul Carensac
96 25 Etienne Pallier
97 23 Etienne Pallier
* Django : 
98 12 Etienne Pallier
99 56 Jeremy Barneron
 * -Upgrade to Django 1.10-
100 56 Jeremy Barneron
 * -Remplacer le serveur web de "dev" (manage runserver, sur port 8000) par un vrai serveur web pour la "prod" (Apache pour les fichiers statiques sur port 80 + serveur d'application Python pour le code Python, par exemple gunicorn)-
101 56 Jeremy Barneron
-(cf https://projects.irap.omp.eu/projects/pyros/wiki/Project_Development#Serveur-Web)-
102 23 Etienne Pallier
103 56 Jeremy Barneron
* -Comet installation : Include in the install_requirements.sh script (by using stable official version for Python 3 (when available) on Linux (and Mac) and Windows 10-
104 1 Paul Carensac
105 56 Jeremy Barneron
* -git : Create a "dev" branch (do not write anymore on the "master" branch)-
106 1 Paul Carensac
107 25 Etienne Pallier
* Simulators : 
108 1 Paul Carensac
109 61 Jeremy Barneron
 * -on doit se rendre compte qu'ils sont "vivants" (ils seront progressivement remplacés par les vrais devices, mais resteront toujours utilisables à leur place)-
110 25 Etienne Pallier
111 61 Jeremy Barneron
  * -Le Monitoring doit les interroger régulièrement sur leur statut (check_status, DONE)-
112 61 Jeremy Barneron
  * -Il doit stocker les statuts dans la BD (TODO)-
113 61 Jeremy Barneron
  * -Ces statuts doivent être affichés au fur et à mesure sur la page web du "device" correspondant (Devices, Site, Weather) (TODO)-
114 25 Etienne Pallier
115 61 Jeremy Barneron
 * -quels sont les devices bloquants et non bloquants ?-
116 25 Etienne Pallier
117 60 Jeremy Barneron
  * -Bloquants: si indisponibles (en panne ou pas démarrés), Pyros met en pause le sous-système d'observation-
118 60 Jeremy Barneron
-Seules 3 fonctions restent toujours actives: alertes, monitoring, et serveur web (pour les routines et la surveillance)-
119 25 Etienne Pallier
120 60 Jeremy Barneron
   * -Telescope-
121 60 Jeremy Barneron
   * -Camera VIS (???)-
122 60 Jeremy Barneron
   * -PLC (weather + observation conditions + site)-
123 25 Etienne Pallier
124 60 Jeremy Barneron
  * -Non bloquants: si indisponibles (en panne ou pas démarrés), Pyros se contente d'en prendre note, et continue son fonctionnement normal tout en restant dans l'attente de leur redémarrage pour les réintégrer-
125 25 Etienne Pallier
126 60 Jeremy Barneron
   * -Camera VIS (???)-
127 60 Jeremy Barneron
   * -Camera NIR-
128 25 Etienne Pallier
129 23 Etienne Pallier
130 56 Jeremy Barneron
* -Users: gérer les 3 profils (admin, expert, user)-
131 23 Etienne Pallier
132 50 Etienne Pallier
* Scheduler : 
133 52 Etienne Pallier
   
134 56 Jeremy Barneron
  * -Eviter que la vue du Scheduler s'affiche avec une erreur (IndexError) quand il n'y a aucun schedule dans la BD (http://127.0.0.1:8000/scheduler/) => idem pour toutes les autres vues de tous les modules-
135 56 Jeremy Barneron
  * -Affichage d'un schedule : pour chaque ligne (séquence), ajouter une colonne à gauche qui donne le nom (short name) de la Request dont la séquence fait partie (quand on clique sur ce nom, on va vers une vue de la Request qui sera- -soit une AlertRequest soit une RoutineRequest)-
136 56 Jeremy Barneron
  * -(non prioritaire, c'est juste un souhait) le rendre complètement autonome, indépendant du projet, afin qu'on puisse facilement le sortir du projet, et le proposer comme un composant générique utilisable dans n'importe quel autre- -logiciel ; il devra donc gérer ces communications avec les autres modules via des interfaces-
137 52 Etienne Pallier
138 50 Etienne Pallier
139 49 Etienne Pallier
140 14 Etienne Pallier
* Doc :
141 17 Etienne Pallier
142 14 Etienne Pallier
 * TEST:
143 14 Etienne Pallier
  
144 56 Jeremy Barneron
  * -Unit tests : test of each module-
145 56 Jeremy Barneron
  * -Functional tests (with Celery and simulators): complete workflow-
146 14 Etienne Pallier
147 14 Etienne Pallier
 * LAUNCH:
148 14 Etienne Pallier
149 56 Jeremy Barneron
  * -Start simulators-
150 56 Jeremy Barneron
  * -Start Celery-
151 56 Jeremy Barneron
  * -Start pyros-
152 14 Etienne Pallier
153 14 Etienne Pallier
 * USE:
154 14 Etienne Pallier
155 56 Jeremy Barneron
  * -Administration of the database: http://localhost:8000/admin-
156 56 Jeremy Barneron
  * -Interacting with Pyros: http://localhost:8000-
157 15 Etienne Pallier
  
158 56 Jeremy Barneron
   * -Watch the environment: Devices, Site, Weather-
159 56 Jeremy Barneron
   * -Watch the schedule: Schedule-
160 56 Jeremy Barneron
   * -Watch the data processing (workflow): System (Dashboard)-
161 56 Jeremy Barneron
   * -Submit a Routine Request (and get results): Routines-
162 56 Jeremy Barneron
   * -Watch alerts: Alerts-
163 56 Jeremy Barneron
   * -Simulate an Alert: Alerts (TODO: Un user "admin" doit pouvoir déclencher une alerte type depuis la page web Alerts)-
164 56 Jeremy Barneron
   * -Manual operations on the Telescope : Devices/Telescope (TODO)-
165 58 Jeremy Barneron
   * -Manage users : Users-
166 22 Etienne Pallier
167 14 Etienne Pallier
168 1 Paul Carensac
169 1 Paul Carensac
---
170 1 Paul Carensac
171 53 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}Applications tasks (notes Paul Carensac)%
172 2 Paul Carensac
173 2 Paul Carensac
h3. Dashboard
174 2 Paul Carensac
175 59 Jeremy Barneron
 * -Create the backoffice views as the modules are integrated in pyros-
176 59 Jeremy Barneron
 * -Think about a system of permissions-
177 2 Paul Carensac
178 2 Paul Carensac
h3. Scheduler
179 2 Paul Carensac
180 2 Paul Carensac
 * views
181 2 Paul Carensac
182 59 Jeremy Barneron
  * -Link the main page to the current schedule instead of the simulation page-
183 59 Jeremy Barneron
  * -Show user sequences in the schedules (with links)-
184 59 Jeremy Barneron
  * -Give accces to old schedules (day / days before / all end-night plannings / all plannings)-
185 59 Jeremy Barneron
  * -Give access to the refused sequences of a schedule, and the reasons of rejects-
186 2 Paul Carensac
187 2 Paul Carensac
 * scheduler
188 2 Paul Carensac
189 59 Jeremy Barneron
  * -Verification when there are not fields in the scheduler tables (index out of range)-
190 59 Jeremy Barneron
  * -Change the system to determine night start/end (they must be given in parameter, only if first_schedule is True)-
191 59 Jeremy Barneron
  * -Store the reasons of rejects (create a new attribute, in shs ?)-
192 59 Jeremy Barneron
  * -What is the 'flag' attribute ? (@AK)-
193 59 Jeremy Barneron
  * -Do not create the execute_sequence tasks if it's not the night (- 120 seconds)-
194 59 Jeremy Barneron
  * -Priority and quota computing-
195 59 Jeremy Barneron
  * -Quotas evolution-
196 59 Jeremy Barneron
  * -Blank space filling-
197 59 Jeremy Barneron
  * -At the end of a scheduling send, it to the IC ?-
198 2 Paul Carensac
199 2 Paul Carensac
h3. Alert Manager
200 2 Paul Carensac
201 2 Paul Carensac
 * Web :
202 2 Paul Carensac
203 59 Jeremy Barneron
  * -Print if there is an alert in progress in the main page-
204 59 Jeremy Barneron
  * -Link the alerts to their status and results-
205 2 Paul Carensac
206 59 Jeremy Barneron
 * -Connect to a real VOEvent broker-
207 2 Paul Carensac
208 59 Jeremy Barneron
 * -Determine the communication with FSC for strategy change-
209 2 Paul Carensac
210 2 Paul Carensac
 * VOEvents :
211 2 Paul Carensac
212 59 Jeremy Barneron
  * -Extract the good fields (see AK Q&A 07/01/2016)-
213 59 Jeremy Barneron
  * -Fill the request & alerts objects-
214 59 Jeremy Barneron
  * -Use strategies to build a request-
215 59 Jeremy Barneron
  * -Possibility to change the default strategy-
216 59 Jeremy Barneron
  * -Handle VOEvent updates-
217 59 Jeremy Barneron
  * -Be careful to not create 2 alerts for a same GRB, seen by 2 different satellites-
218 2 Paul Carensac
219 2 Paul Carensac
220 2 Paul Carensac
h3. Analyzer
221 2 Paul Carensac
222 59 Jeremy Barneron
 * -Apply the calibrations in the right function-
223 59 Jeremy Barneron
 * -Apply the analyses only if it's a GRB-
224 59 Jeremy Barneron
 * -Implement the analyses-
225 59 Jeremy Barneron
 * -Send analyses to FSC-
226 2 Paul Carensac
227 2 Paul Carensac
228 2 Paul Carensac
h3. Majordome
229 2 Paul Carensac
230 2 Paul Carensac
 * TaskManager
231 2 Paul Carensac
232 59 Jeremy Barneron
  * -When a sequence is cancelled, give back the quota to the user-
233 59 Jeremy Barneron
  * -In case of alert, do not stop the ongoing plan, and make the instruments abort-
234 2 Paul Carensac
235 2 Paul Carensac
 * execute_sequence
236 2 Paul Carensac
237 59 Jeremy Barneron
  * -Add the PLC checks at start (to see if we do the slew)-
238 59 Jeremy Barneron
  * -Use the global telescope (instead of creating one here)-
239 59 Jeremy Barneron
  * -Give first_schedule as false when a scheduling is launched-
240 59 Jeremy Barneron
  * -Remove the default countdown (1, for tests)-
241 2 Paul Carensac
242 2 Paul Carensac
 * system_pause
243 2 Paul Carensac
244 59 Jeremy Barneron
  * -Abort the instruments-
245 59 Jeremy Barneron
  * -Stop the execution tasks-
246 2 Paul Carensac
247 2 Paul Carensac
 * system_restart
248 2 Paul Carensac
249 59 Jeremy Barneron
  * -Start a scheduling-
250 2 Paul Carensac
251 2 Paul Carensac
 * change_obs_conditions
252 2 Paul Carensac
253 59 Jeremy Barneron
  * -Change sequences status (if  needed)-
254 59 Jeremy Barneron
  * -If some status changed, re-launch a scheduling-
255 2 Paul Carensac
256 2 Paul Carensac
h3. Monitoring
257 2 Paul Carensac
258 2 Paul Carensac
 * views
259 2 Paul Carensac
260 59 Jeremy Barneron
  * -Move the dashboard here-
261 59 Jeremy Barneron
  * -Print the instrument status-
262 59 Jeremy Barneron
  * -Print PLC informations (with the evolution)-
263 59 Jeremy Barneron
  * -In the dashboard screens, put scroll on each screen to see the old logs-
264 2 Paul Carensac
265 2 Paul Carensac
 * Monitoring task
266 2 Paul Carensac
 
267 59 Jeremy Barneron
  * -Uncomment the scheduling at the beginning-
268 59 Jeremy Barneron
  * -Implement night start/end computation-
269 59 Jeremy Barneron
  * -Initialize communication with the instruments-
270 59 Jeremy Barneron
  * -Configure intruments at start-
271 59 Jeremy Barneron
  * -Send software versions to the IC-
272 59 Jeremy Barneron
  * -Initialize connection with PLC-
273 59 Jeremy Barneron
  * -After the starting actions, loop to wait for the instruments configuration to be finished-
274 59 Jeremy Barneron
  * -Ask PLC for status-
275 59 Jeremy Barneron
  * -Ask filter wheel for status-
276 59 Jeremy Barneron
  * -Store the instruments & PLC status-
277 59 Jeremy Barneron
  * -Send all status to IC-
278 59 Jeremy Barneron
  * -Analyse PLC status (obs conditions, ...)-
279 59 Jeremy Barneron
  * -Create tasks of obs condition changes-
280 59 Jeremy Barneron
  * -At the beginning of the loop, ping the DISABLED devices. If they answer, change their status (TBD), and do their initialization (ex: If it's a camera, set its temperature to -150°)-
281 2 Paul Carensac
282 2 Paul Carensac
h3. Observation Manager
283 2 Paul Carensac
284 2 Paul Carensac
 * execute_plan :
285 2 Paul Carensac
286 59 Jeremy Barneron
  * -Uncomment the instruments_ready waiting function-
287 59 Jeremy Barneron
  * -Uncomment the observation_ending waiting function-
288 59 Jeremy Barneron
  * -Try to remove code duplication (plan_execution_vis & plan_execution_nir)-
289 59 Jeremy Barneron
  * -Determine what needs to be done at the end of an observation-
290 2 Paul Carensac
291 2 Paul Carensac
 * create_calibrations :
292 2 Paul Carensac
293 59 Jeremy Barneron
  * -Make the calibration images-
294 59 Jeremy Barneron
  * -Generate super images-
295 59 Jeremy Barneron
  * -Send them to the IC-
296 2 Paul Carensac
297 2 Paul Carensac
h3. Routine Manager
298 2 Paul Carensac
299 2 Paul Carensac
 * Web
300 2 Paul Carensac
301 59 Jeremy Barneron
  * -Put the goods fields (for coordinates etc)-
302 59 Jeremy Barneron
  * -Only propose the objects that matches the conditions (ex: scientific programs of the user only)-
303 59 Jeremy Barneron
  * -Do all the needed checks-
304 59 Jeremy Barneron
  * -Add automatic computation of JD1/JD2-
305 59 Jeremy Barneron
  * -Add checkbox for JD / GD-
306 59 Jeremy Barneron
  * -Add options : copy my sequence on x days, and authorise report-
307 59 Jeremy Barneron
  * -Add ETC-IS simulation-
308 59 Jeremy Barneron
  * -Add help for new users (and for it the first time an account come on the page)-
309 2 Paul Carensac
 
310 2 Paul Carensac
 * Do more checks at unserialization
311 2 Paul Carensac
312 2 Paul Carensac
 * views
313 2 Paul Carensac
314 59 Jeremy Barneron
  * -When saving, do more checks on coordinates, jd1/2 etc-
315 59 Jeremy Barneron
  * -Uncomment filter for alerts removing-
316 59 Jeremy Barneron
  * -When submitting, use the monitoring to determine sequences status-
317 59 Jeremy Barneron
  * -When submitting, modify the first_schedule to False, when scheduling-
318 59 Jeremy Barneron
  * -When unsubmitting, uncomment the check for EXED and EXING removing-
319 59 Jeremy Barneron
  * -When unsubmitting, uncomment the scheduling and change the first_schedule to False-
320 2 Paul Carensac
321 2 Paul Carensac
322 2 Paul Carensac
h3. User Manager
323 2 Paul Carensac
324 59 Jeremy Barneron
 * -Password recovery-
325 59 Jeremy Barneron
 * -Profile page-
326 59 Jeremy Barneron
 * -User validation by administrator / commission-
327 59 Jeremy Barneron
 * -Handle permissions and access-
328 2 Paul Carensac
329 2 Paul Carensac
h3. Common
330 2 Paul Carensac
331 59 Jeremy Barneron
 * -Change the 'first_schedule' to False at the end of RequestBuilder.validate()-
332 32 Paul Carensac
333 32 Paul Carensac
h3. Devices
334 32 Paul Carensac
335 59 Jeremy Barneron
 * -When a socket connection fails (exception thrown), set the device to DISABLED (or that kind of status) in the DB, and create a system_pause task (majordome)-