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) |