TODO

Version 53 (Etienne Pallier, 09/28/2016 11:11 am)

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