TODO

Version 64 (Jeremy Barneron, 09/30/2016 05:36 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 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, …-
15 62 Etienne Pallier
16 64 Jeremy Barneron
* -public/ : faut-il garder ce dossier qui ne contient qu’un seul dossier static/ ? (ce dossier static/ est-il utile à qqch ?)-
17 62 Etienne Pallier
18 64 Jeremy Barneron
* -Démarrage: Ce n’est pas Monitoring mais Majordome qui doit lancer le 1er scheduling en début de nuit-
19 62 Etienne Pallier
20 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é, …)-
21 62 Etienne Pallier
22 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)-
23 62 Etienne Pallier
24 64 Jeremy Barneron
* -User : faire une view pour le profil-
25 62 Etienne Pallier
26 64 Jeremy Barneron
* -RoutineManager : Faire un TEST import/export d’une requete-
27 62 Etienne Pallier
28 64 Jeremy Barneron
* -Roue à filtre : doit pouvoir être associée à Camera ou bien à Tele (c’est prévu dans la BD ou pas ?)-
29 62 Etienne Pallier
30 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-
31 3 Etienne Pallier
32 56 Jeremy Barneron
* -Architecture projet (organisation dossiers):-
33 39 Etienne Pallier
34 56 Jeremy Barneron
 * -src/ : laisser seulement les applications, et mettre tous les autres dossiers (fixtures/, images/, ...) dans un dossier MISC/)-
35 39 Etienne Pallier
36 44 Etienne Pallier
* RUN :
37 44 Etienne Pallier
38 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):-
39 44 Etienne Pallier
 
40 56 Jeremy Barneron
  * -RabbitMQ-
41 56 Jeremy Barneron
  * -Mysql (sauf si on a choisi sqlite)-
42 44 Etienne Pallier
43 44 Etienne Pallier
44 44 Etienne Pallier
45 45 Etienne Pallier
* TESTS (intégration continue):
46 1 Paul Carensac
47 56 Jeremy Barneron
 * -Même remarque que pour le "RUN" ci-dessous concernant le check des prérequis-
48 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)-
49 56 Jeremy Barneron
 * -Mettre en place une exécution systématique des tests à chaque commit (unitaires + fonctionnels)-
50 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)-
51 36 Etienne Pallier
52 35 Etienne Pallier
53 35 Etienne Pallier
* Installation script:
54 35 Etienne Pallier
55 56 Jeremy Barneron
 * -Si l'environnement virtuel existe déjà, demander s'il doit être recréé (par défaut "Non")-
56 56 Jeremy Barneron
 * -(NEW) Renommer le script install_requirements.sh en install.sh-
57 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)-
58 35 Etienne Pallier
59 25 Etienne Pallier
* Pyros : 
60 1 Paul Carensac
61 56 Jeremy Barneron
 * -Doit pouvoir être démarré indifféremment AVANT (par défaut) les devices, ou APRES (actuellement, le AVANT est TODO)-
62 56 Jeremy Barneron
 * -De manière générale, doit être le plus possible "tolérant aux pannes"-
63 56 Jeremy Barneron
 * -Doit être le plus générique et donc paramétrable possible-
64 1 Paul Carensac
65 25 Etienne Pallier
66 23 Etienne Pallier
* Django : 
67 12 Etienne Pallier
68 56 Jeremy Barneron
 * -Upgrade to Django 1.10-
69 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)-
70 56 Jeremy Barneron
-(cf https://projects.irap.omp.eu/projects/pyros/wiki/Project_Development#Serveur-Web)-
71 23 Etienne Pallier
72 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-
73 1 Paul Carensac
74 56 Jeremy Barneron
* -git : Create a "dev" branch (do not write anymore on the "master" branch)-
75 1 Paul Carensac
76 25 Etienne Pallier
* Simulators : 
77 1 Paul Carensac
78 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)-
79 25 Etienne Pallier
80 61 Jeremy Barneron
  * -Le Monitoring doit les interroger régulièrement sur leur statut (check_status, DONE)-
81 61 Jeremy Barneron
  * -Il doit stocker les statuts dans la BD (TODO)-
82 61 Jeremy Barneron
  * -Ces statuts doivent être affichés au fur et à mesure sur la page web du "device" correspondant (Devices, Site, Weather) (TODO)-
83 25 Etienne Pallier
84 61 Jeremy Barneron
 * -quels sont les devices bloquants et non bloquants ?-
85 25 Etienne Pallier
86 60 Jeremy Barneron
  * -Bloquants: si indisponibles (en panne ou pas démarrés), Pyros met en pause le sous-système d'observation-
87 60 Jeremy Barneron
-Seules 3 fonctions restent toujours actives: alertes, monitoring, et serveur web (pour les routines et la surveillance)-
88 25 Etienne Pallier
89 60 Jeremy Barneron
   * -Telescope-
90 60 Jeremy Barneron
   * -Camera VIS (???)-
91 60 Jeremy Barneron
   * -PLC (weather + observation conditions + site)-
92 25 Etienne Pallier
93 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-
94 25 Etienne Pallier
95 60 Jeremy Barneron
   * -Camera VIS (???)-
96 60 Jeremy Barneron
   * -Camera NIR-
97 25 Etienne Pallier
98 23 Etienne Pallier
99 56 Jeremy Barneron
* -Users: gérer les 3 profils (admin, expert, user)-
100 23 Etienne Pallier
101 50 Etienne Pallier
* Scheduler : 
102 52 Etienne Pallier
   
103 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-
104 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)-
105 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-
106 52 Etienne Pallier
107 50 Etienne Pallier
108 49 Etienne Pallier
109 14 Etienne Pallier
* Doc :
110 17 Etienne Pallier
111 14 Etienne Pallier
 * TEST:
112 14 Etienne Pallier
  
113 56 Jeremy Barneron
  * -Unit tests : test of each module-
114 56 Jeremy Barneron
  * -Functional tests (with Celery and simulators): complete workflow-
115 14 Etienne Pallier
116 14 Etienne Pallier
 * LAUNCH:
117 14 Etienne Pallier
118 56 Jeremy Barneron
  * -Start simulators-
119 56 Jeremy Barneron
  * -Start Celery-
120 56 Jeremy Barneron
  * -Start pyros-
121 14 Etienne Pallier
122 14 Etienne Pallier
 * USE:
123 14 Etienne Pallier
124 56 Jeremy Barneron
  * -Administration of the database: http://localhost:8000/admin-
125 56 Jeremy Barneron
  * -Interacting with Pyros: http://localhost:8000-
126 15 Etienne Pallier
  
127 56 Jeremy Barneron
   * -Watch the environment: Devices, Site, Weather-
128 56 Jeremy Barneron
   * -Watch the schedule: Schedule-
129 56 Jeremy Barneron
   * -Watch the data processing (workflow): System (Dashboard)-
130 56 Jeremy Barneron
   * -Submit a Routine Request (and get results): Routines-
131 56 Jeremy Barneron
   * -Watch alerts: Alerts-
132 56 Jeremy Barneron
   * -Simulate an Alert: Alerts (TODO: Un user "admin" doit pouvoir déclencher une alerte type depuis la page web Alerts)-
133 56 Jeremy Barneron
   * -Manual operations on the Telescope : Devices/Telescope (TODO)-
134 58 Jeremy Barneron
   * -Manage users : Users-
135 22 Etienne Pallier
136 14 Etienne Pallier
137 1 Paul Carensac
138 1 Paul Carensac
---
139 1 Paul Carensac
140 53 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}Applications tasks (notes Paul Carensac)%
141 2 Paul Carensac
142 2 Paul Carensac
h3. Dashboard
143 2 Paul Carensac
144 59 Jeremy Barneron
 * -Create the backoffice views as the modules are integrated in pyros-
145 59 Jeremy Barneron
 * -Think about a system of permissions-
146 2 Paul Carensac
147 2 Paul Carensac
h3. Scheduler
148 2 Paul Carensac
149 2 Paul Carensac
 * views
150 2 Paul Carensac
151 59 Jeremy Barneron
  * -Link the main page to the current schedule instead of the simulation page-
152 59 Jeremy Barneron
  * -Show user sequences in the schedules (with links)-
153 59 Jeremy Barneron
  * -Give accces to old schedules (day / days before / all end-night plannings / all plannings)-
154 59 Jeremy Barneron
  * -Give access to the refused sequences of a schedule, and the reasons of rejects-
155 2 Paul Carensac
156 2 Paul Carensac
 * scheduler
157 2 Paul Carensac
158 59 Jeremy Barneron
  * -Verification when there are not fields in the scheduler tables (index out of range)-
159 59 Jeremy Barneron
  * -Change the system to determine night start/end (they must be given in parameter, only if first_schedule is True)-
160 59 Jeremy Barneron
  * -Store the reasons of rejects (create a new attribute, in shs ?)-
161 59 Jeremy Barneron
  * -What is the 'flag' attribute ? (@AK)-
162 59 Jeremy Barneron
  * -Do not create the execute_sequence tasks if it's not the night (- 120 seconds)-
163 59 Jeremy Barneron
  * -Priority and quota computing-
164 59 Jeremy Barneron
  * -Quotas evolution-
165 59 Jeremy Barneron
  * -Blank space filling-
166 59 Jeremy Barneron
  * -At the end of a scheduling send, it to the IC ?-
167 2 Paul Carensac
168 2 Paul Carensac
h3. Alert Manager
169 2 Paul Carensac
170 2 Paul Carensac
 * Web :
171 2 Paul Carensac
172 59 Jeremy Barneron
  * -Print if there is an alert in progress in the main page-
173 59 Jeremy Barneron
  * -Link the alerts to their status and results-
174 2 Paul Carensac
175 59 Jeremy Barneron
 * -Connect to a real VOEvent broker-
176 2 Paul Carensac
177 59 Jeremy Barneron
 * -Determine the communication with FSC for strategy change-
178 2 Paul Carensac
179 2 Paul Carensac
 * VOEvents :
180 2 Paul Carensac
181 59 Jeremy Barneron
  * -Extract the good fields (see AK Q&A 07/01/2016)-
182 59 Jeremy Barneron
  * -Fill the request & alerts objects-
183 59 Jeremy Barneron
  * -Use strategies to build a request-
184 59 Jeremy Barneron
  * -Possibility to change the default strategy-
185 59 Jeremy Barneron
  * -Handle VOEvent updates-
186 59 Jeremy Barneron
  * -Be careful to not create 2 alerts for a same GRB, seen by 2 different satellites-
187 2 Paul Carensac
188 2 Paul Carensac
189 2 Paul Carensac
h3. Analyzer
190 2 Paul Carensac
191 59 Jeremy Barneron
 * -Apply the calibrations in the right function-
192 59 Jeremy Barneron
 * -Apply the analyses only if it's a GRB-
193 59 Jeremy Barneron
 * -Implement the analyses-
194 59 Jeremy Barneron
 * -Send analyses to FSC-
195 2 Paul Carensac
196 2 Paul Carensac
197 2 Paul Carensac
h3. Majordome
198 2 Paul Carensac
199 2 Paul Carensac
 * TaskManager
200 2 Paul Carensac
201 59 Jeremy Barneron
  * -When a sequence is cancelled, give back the quota to the user-
202 59 Jeremy Barneron
  * -In case of alert, do not stop the ongoing plan, and make the instruments abort-
203 2 Paul Carensac
204 2 Paul Carensac
 * execute_sequence
205 2 Paul Carensac
206 59 Jeremy Barneron
  * -Add the PLC checks at start (to see if we do the slew)-
207 59 Jeremy Barneron
  * -Use the global telescope (instead of creating one here)-
208 59 Jeremy Barneron
  * -Give first_schedule as false when a scheduling is launched-
209 59 Jeremy Barneron
  * -Remove the default countdown (1, for tests)-
210 2 Paul Carensac
211 2 Paul Carensac
 * system_pause
212 2 Paul Carensac
213 59 Jeremy Barneron
  * -Abort the instruments-
214 59 Jeremy Barneron
  * -Stop the execution tasks-
215 2 Paul Carensac
216 2 Paul Carensac
 * system_restart
217 2 Paul Carensac
218 59 Jeremy Barneron
  * -Start a scheduling-
219 2 Paul Carensac
220 2 Paul Carensac
 * change_obs_conditions
221 2 Paul Carensac
222 59 Jeremy Barneron
  * -Change sequences status (if  needed)-
223 59 Jeremy Barneron
  * -If some status changed, re-launch a scheduling-
224 2 Paul Carensac
225 2 Paul Carensac
h3. Monitoring
226 2 Paul Carensac
227 2 Paul Carensac
 * views
228 2 Paul Carensac
229 59 Jeremy Barneron
  * -Move the dashboard here-
230 59 Jeremy Barneron
  * -Print the instrument status-
231 59 Jeremy Barneron
  * -Print PLC informations (with the evolution)-
232 59 Jeremy Barneron
  * -In the dashboard screens, put scroll on each screen to see the old logs-
233 2 Paul Carensac
234 2 Paul Carensac
 * Monitoring task
235 2 Paul Carensac
 
236 59 Jeremy Barneron
  * -Uncomment the scheduling at the beginning-
237 59 Jeremy Barneron
  * -Implement night start/end computation-
238 59 Jeremy Barneron
  * -Initialize communication with the instruments-
239 59 Jeremy Barneron
  * -Configure intruments at start-
240 59 Jeremy Barneron
  * -Send software versions to the IC-
241 59 Jeremy Barneron
  * -Initialize connection with PLC-
242 59 Jeremy Barneron
  * -After the starting actions, loop to wait for the instruments configuration to be finished-
243 59 Jeremy Barneron
  * -Ask PLC for status-
244 59 Jeremy Barneron
  * -Ask filter wheel for status-
245 59 Jeremy Barneron
  * -Store the instruments & PLC status-
246 59 Jeremy Barneron
  * -Send all status to IC-
247 59 Jeremy Barneron
  * -Analyse PLC status (obs conditions, ...)-
248 59 Jeremy Barneron
  * -Create tasks of obs condition changes-
249 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°)-
250 2 Paul Carensac
251 2 Paul Carensac
h3. Observation Manager
252 2 Paul Carensac
253 2 Paul Carensac
 * execute_plan :
254 2 Paul Carensac
255 59 Jeremy Barneron
  * -Uncomment the instruments_ready waiting function-
256 59 Jeremy Barneron
  * -Uncomment the observation_ending waiting function-
257 59 Jeremy Barneron
  * -Try to remove code duplication (plan_execution_vis & plan_execution_nir)-
258 59 Jeremy Barneron
  * -Determine what needs to be done at the end of an observation-
259 2 Paul Carensac
260 2 Paul Carensac
 * create_calibrations :
261 2 Paul Carensac
262 59 Jeremy Barneron
  * -Make the calibration images-
263 59 Jeremy Barneron
  * -Generate super images-
264 59 Jeremy Barneron
  * -Send them to the IC-
265 2 Paul Carensac
266 2 Paul Carensac
h3. Routine Manager
267 2 Paul Carensac
268 2 Paul Carensac
 * Web
269 2 Paul Carensac
270 59 Jeremy Barneron
  * -Put the goods fields (for coordinates etc)-
271 59 Jeremy Barneron
  * -Only propose the objects that matches the conditions (ex: scientific programs of the user only)-
272 59 Jeremy Barneron
  * -Do all the needed checks-
273 59 Jeremy Barneron
  * -Add automatic computation of JD1/JD2-
274 59 Jeremy Barneron
  * -Add checkbox for JD / GD-
275 59 Jeremy Barneron
  * -Add options : copy my sequence on x days, and authorise report-
276 59 Jeremy Barneron
  * -Add ETC-IS simulation-
277 59 Jeremy Barneron
  * -Add help for new users (and for it the first time an account come on the page)-
278 2 Paul Carensac
 
279 2 Paul Carensac
 * Do more checks at unserialization
280 2 Paul Carensac
281 2 Paul Carensac
 * views
282 2 Paul Carensac
283 59 Jeremy Barneron
  * -When saving, do more checks on coordinates, jd1/2 etc-
284 59 Jeremy Barneron
  * -Uncomment filter for alerts removing-
285 59 Jeremy Barneron
  * -When submitting, use the monitoring to determine sequences status-
286 59 Jeremy Barneron
  * -When submitting, modify the first_schedule to False, when scheduling-
287 59 Jeremy Barneron
  * -When unsubmitting, uncomment the check for EXED and EXING removing-
288 59 Jeremy Barneron
  * -When unsubmitting, uncomment the scheduling and change the first_schedule to False-
289 2 Paul Carensac
290 2 Paul Carensac
291 2 Paul Carensac
h3. User Manager
292 2 Paul Carensac
293 59 Jeremy Barneron
 * -Password recovery-
294 59 Jeremy Barneron
 * -Profile page-
295 59 Jeremy Barneron
 * -User validation by administrator / commission-
296 59 Jeremy Barneron
 * -Handle permissions and access-
297 2 Paul Carensac
298 2 Paul Carensac
h3. Common
299 2 Paul Carensac
300 59 Jeremy Barneron
 * -Change the 'first_schedule' to False at the end of RequestBuilder.validate()-
301 32 Paul Carensac
302 32 Paul Carensac
h3. Devices
303 32 Paul Carensac
304 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)-