TODO
Version 58 (Jeremy Barneron, 09/30/2016 11:34 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 | 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- |
15 | 3 | Etienne Pallier | |
16 | 56 | Jeremy Barneron | * -Architecture projet (organisation dossiers):- |
17 | 39 | Etienne Pallier | |
18 | 56 | Jeremy Barneron | * -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 | 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):- |
23 | 44 | Etienne Pallier | |
24 | 56 | Jeremy Barneron | * -RabbitMQ- |
25 | 56 | Jeremy Barneron | * -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 | 56 | Jeremy Barneron | * -Même remarque que pour le "RUN" ci-dessous concernant le check des prérequis- |
32 | 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)- |
33 | 56 | Jeremy Barneron | * -Mettre en place une exécution systématique des tests à chaque commit (unitaires + fonctionnels)- |
34 | 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)- |
35 | 36 | Etienne Pallier | |
36 | 35 | Etienne Pallier | |
37 | 35 | Etienne Pallier | * Installation script: |
38 | 35 | Etienne Pallier | |
39 | 56 | Jeremy Barneron | * -Si l'environnement virtuel existe déjà, demander s'il doit être recréé (par défaut "Non")- |
40 | 56 | Jeremy Barneron | * -(NEW) Renommer le script install_requirements.sh en install.sh- |
41 | 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)- |
42 | 35 | Etienne Pallier | |
43 | 25 | Etienne Pallier | * Pyros : |
44 | 1 | Paul Carensac | |
45 | 56 | Jeremy Barneron | * -Doit pouvoir être démarré indifféremment AVANT (par défaut) les devices, ou APRES (actuellement, le AVANT est TODO)- |
46 | 56 | Jeremy Barneron | * -De manière générale, doit être le plus possible "tolérant aux pannes"- |
47 | 56 | Jeremy Barneron | * -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 | 56 | Jeremy Barneron | * -Upgrade to Django 1.10- |
53 | 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)- |
54 | 56 | Jeremy Barneron | -(cf https://projects.irap.omp.eu/projects/pyros/wiki/Project_Development#Serveur-Web)- |
55 | 23 | Etienne Pallier | |
56 | 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- |
57 | 1 | Paul Carensac | |
58 | 56 | Jeremy Barneron | * -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 | 57 | 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) |
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 | 56 | Jeremy Barneron | * -Users: gérer les 3 profils (admin, expert, user)- |
84 | 23 | Etienne Pallier | |
85 | 50 | Etienne Pallier | * Scheduler : |
86 | 52 | Etienne Pallier | |
87 | 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- |
88 | 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)- |
89 | 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- |
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 | 56 | Jeremy Barneron | * -Unit tests : test of each module- |
98 | 56 | Jeremy Barneron | * -Functional tests (with Celery and simulators): complete workflow- |
99 | 14 | Etienne Pallier | |
100 | 14 | Etienne Pallier | * LAUNCH: |
101 | 14 | Etienne Pallier | |
102 | 56 | Jeremy Barneron | * -Start simulators- |
103 | 56 | Jeremy Barneron | * -Start Celery- |
104 | 56 | Jeremy Barneron | * -Start pyros- |
105 | 14 | Etienne Pallier | |
106 | 14 | Etienne Pallier | * USE: |
107 | 14 | Etienne Pallier | |
108 | 56 | Jeremy Barneron | * -Administration of the database: http://localhost:8000/admin- |
109 | 56 | Jeremy Barneron | * -Interacting with Pyros: http://localhost:8000- |
110 | 15 | Etienne Pallier | |
111 | 56 | Jeremy Barneron | * -Watch the environment: Devices, Site, Weather- |
112 | 56 | Jeremy Barneron | * -Watch the schedule: Schedule- |
113 | 56 | Jeremy Barneron | * -Watch the data processing (workflow): System (Dashboard)- |
114 | 56 | Jeremy Barneron | * -Submit a Routine Request (and get results): Routines- |
115 | 56 | Jeremy Barneron | * -Watch alerts: Alerts- |
116 | 56 | Jeremy Barneron | * -Simulate an Alert: Alerts (TODO: Un user "admin" doit pouvoir déclencher une alerte type depuis la page web Alerts)- |
117 | 56 | Jeremy Barneron | * -Manual operations on the Telescope : Devices/Telescope (TODO)- |
118 | 58 | Jeremy Barneron | * -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) |