TODO

Version 83 (Etienne Pallier, 10/01/2016 01:01 am)

1 1 Paul Carensac
h1. TODO
2 1 Paul Carensac
3 51 Etienne Pallier
4 1 Paul Carensac
{{>toc}}
5 51 Etienne Pallier
6 1 Paul Carensac
7 1 Paul Carensac
---
8 1 Paul Carensac
9 52 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}General tasks (notes Etienne Pallier)%
10 1 Paul Carensac
11 83 Etienne Pallier
* Analysis (and calibration) module:
12 83 Etienne Pallier
Pour l'instant, il est considéré qu'un plan forme une seule image. Lors de la fin de l'exécution d'un plan, la tâche execute_plan crée une tâche analysis à laquelle il envoie l'id du plan qui vient d'être exécuté. La tâche d'analysis récupère le plan en question, et récupère son nom. Pour le moment, les images crées ont le nom du plan correspondant. Il y a une ligne de TODO dans la tâche d'analysis qui dit de vérifier si le plan provient bien d'une alerte avant de faire les analyses. Dans tous les cas, les calibrations sont appliquées. 
13 83 Etienne Pallier
=> Pour faire évoluer ce système d'image (puisqu'un plan crée plusieurs images), il faudra être capable de dire dans le execute_plan : une image vient d'être terminée par la caméra. Auquel cas on créera une tâche analysis à chaque image crée, en lui donnant l'id du plan et le nom de l'image.
14 83 Etienne Pallier
15 82 Etienne Pallier
* Dashboard: s'inspirer du tableau de bord de l'ancien logiciel ROS 
16 82 Etienne Pallier
http://cador.obs-hp.fr/ros/manual/cador_actions.html
17 82 Etienne Pallier
(cliquer par exemple sur Gardien)
18 81 Etienne Pallier
19 81 Etienne Pallier
* Données simulées : faire l'inventaire des données dont on a besoin (action en cours), données qui entrent (inputs) et qui sortent (output) de notre système
20 81 Etienne Pallier
21 80 Etienne Pallier
* Scheduler:
22 80 Etienne Pallier
Il faudrait une page qui montre toutes les séquences rejetées et exécutées (à préciser)
23 80 Etienne Pallier
24 77 Etienne Pallier
* Interface with GIC: 
25 77 Etienne Pallier
26 77 Etienne Pallier
 * Produire les données à envoyer au GIC dans un repertoire GIC/TO/ (pour que le GIC vienne les y chercher)
27 77 Etienne Pallier
 * Récupérer les données envoyées par le GIC depuis un autre repertoire GIC/FROM/
28 77 Etienne Pallier
29 77 Etienne Pallier
* Interface with FSC:
30 77 Etienne Pallier
31 77 Etienne Pallier
 * Copier (ou linker) les données à envoyer au FSC dans un repertoire FSC/TO/ (ou autre solution ?)
32 77 Etienne Pallier
33 77 Etienne Pallier
34 73 Etienne Pallier
* Tests unitaires (pyrosrun.sh unittest): les tests unitaires ne devraient pas faire appel à Celery (rabbitmq), or 2 tests ne passent pas si rabbitmq n'est pas lancé:
35 73 Etienne Pallier
36 73 Etienne Pallier
 * test_full_creation (common.tests.RequestBuilderTests)
37 73 Etienne Pallier
 * test_change_all_working (alert_manager.tests.TestStrategyChange)
38 74 Etienne Pallier
 * => il faut donc enlever le lien avec Celery dans ces tests (ou alors sortir ces tests des tests unitaires)
39 75 Etienne Pallier
(Paul Carensac: La configuration de celery étant dans le settings.py, elle est exécutée dans tous les cas, et on associe celery à amqp dans ce fichier (ça fait peut-être quelque chose, même si je trouve ça bizarre))
40 73 Etienne Pallier
41 73 Etienne Pallier
42 70 Etienne Pallier
* Observer:
43 70 Etienne Pallier
44 70 Etienne Pallier
 * Refactoriser tasks.execute_plan{vis,nir}
45 1 Paul Carensac
 * Gérer le Dithering : au début, c'est la camera NIR qui devait le gérer, mais ça risque d'être le Telescope !!! => va compliquer énormément les séquences d'observation.
46 76 Etienne Pallier
 * Organisation physique des données sur le disque
47 76 Etienne Pallier
48 76 Etienne Pallier
  * Estimer le nombre de fichiers (et volume total)
49 76 Etienne Pallier
  * 3 espaces sur le disque (ou 3 disques ?):
50 76 Etienne Pallier
(1) Un espace disque dédié aux images créées au fur et à mesure, nommé PRODUCED_DATA/
51 76 Etienne Pallier
(2) Un espace disque dédié aux entités externes (GIC, FSC), nommé EXTERNAL_ENTITIES/
52 76 Etienne Pallier
(3) Un espace disque dédié au téléchargement par les utilisateurs, nommé DOWNLOAD/
53 76 Etienne Pallier
54 76 Etienne Pallier
   * Sur l’espace (1):
55 76 Etienne Pallier
1 repertoire par nuit => pas très adapté car les AR et RR peuvent être exécutées sur plusieurs nuits.
56 76 Etienne Pallier
=> préférer un repertoire par requete, que ce soit une alerte (AR), ou une routine (RR)
57 76 Etienne Pallier
=> on peut même ajouter un sous-repertoire par sequence, ce qui aurait du sens puisque la sequence est l’unité de la planification.
58 76 Etienne Pallier
=> il n’est sans doute pas nécessaire de descendre en dessous du niveau de la sequence (1 sous-repertoire par album c’est à dire par détecteur, puis 1 sous-repertoire par plan, quoi que...)
59 76 Etienne Pallier
- Nom des dossiers : dès le début, un suffixe “_active” pour dire que c’est en cours de construction, puis supprimer ce suffixe quand la requête est terminée. Ex: alerte_1234_active/ => alerte_1234/
60 76 Etienne Pallier
- Nom des images (même principe) : au début, un suffixe “.tmp”, qu’on supprime ensuite quand l’image est écrite entièrement.
61 76 Etienne Pallier
62 76 Etienne Pallier
   * Sur l’espace (2):
63 76 Etienne Pallier
1 repertoire FSC/
64 76 Etienne Pallier
1 repertoire GIC/ 
65 76 Etienne Pallier
Ces répertoires contiennent 2 sous-repertoire TO/ (ce qui doit être récupéré par l’entité) et FROM/ (ce que l’entité nous envoie).
66 76 Etienne Pallier
A priori le répertoire FSC/ n’a besoin que d’un sous-répertoire TO/, et ce sous-rep pourrait soit contenir une COPIE des fichiers, soit des LIENS vers les fichiers originaux (solution préférable).
67 76 Etienne Pallier
68 76 Etienne Pallier
 * Récupération des données d’une Request par son propriétaire (où tout autre user du même SP ?)
69 76 Etienne Pallier
Ca risque d’être lourd à télécharger via du http, donc peut-on imaginer de donner un accès FTP direct sur le disque dur, dans un repertoire dédié à la récupération des données (dans lequel on aura recopié seulement les données demandées par l’utilisateur) => espace (3)
70 76 Etienne Pallier
71 1 Paul Carensac
 
72 76 Etienne Pallier
73 76 Etienne Pallier
74 70 Etienne Pallier
75 65 Etienne Pallier
* Sequence:
76 65 Etienne Pallier
77 69 Etienne Pallier
 * Priority:
78 69 Etienne Pallier
Une request est créée par un User qui appartient à un SP (Scientific Program).
79 69 Etienne Pallier
La priorité de la Request est celle du SP.
80 69 Etienne Pallier
Par contre, au sein de la Request, on pourra moduler la priorité de chaque séquence (cf /Sequence), afin de prioriser certaines sequences par rapport aux autres. Par défaut, cette variation de priorité sera nulle (0) pour chaque Sequence.
81 69 Etienne Pallier
Par exemple, on pourra faire varier la priorité d’une Sequence de +ou- 5 par rapport à la priorité de la Request.
82 69 Etienne Pallier
83 69 Etienne Pallier
 * Quota:
84 69 Etienne Pallier
Les quotas sont attribués par le TAC (Time Allocation Committee) tous les 6 mois, pour chaque thème ou programme scientifique.
85 69 Etienne Pallier
Le TAC attribue une lettre A (prioritaire), B (si il reste de la place), C (rejeté).
86 69 Etienne Pallier
Au niveau du GFT, on traduit ces lettres en “grande priorité”, “priorité moyenne”, et “petite priorité” (le C n’est pas rejeté).
87 69 Etienne Pallier
On estime alors le temps nécessaire pour le SP, et on le traduit en pourcentage.
88 69 Etienne Pallier
On pourra donc attribuer un quota (en %) à chaque SP.
89 69 Etienne Pallier
=> Le temps total de toutes les Requests (toutes leurs séquences) de tous les Users d’un même SP ne devra pas dépasser le quota du SP.
90 69 Etienne Pallier
91 67 Jeremy Barneron
 * -Date: on doit pouvoir la donner sous 2 formes:-
92 65 Etienne Pallier
93 67 Jeremy Barneron
  * -“Tonight” => nuit en cours ou bien nuit qui arrive-
94 67 Jeremy Barneron
  * -Date précise JJ/MM/AAAA (maximum à now + 7 nuits)-
95 65 Etienne Pallier
96 65 Etienne Pallier
 * Execution strategies:
97 65 Etienne Pallier
98 67 Jeremy Barneron
  * -Request level:-
99 67 Jeremy Barneron
-(default) "Best effort, do as much sequences as you can"-
100 67 Jeremy Barneron
-=> option: "All or nothing": if ANY sequence fails, request fails-
101 65 Etienne Pallier
102 67 Jeremy Barneron
  * -Sequence level-
103 67 Jeremy Barneron
-(default) “Optional sequence”-
104 67 Jeremy Barneron
-=> option “Mandatory sequence”: if THIS sequence fails, request fails-
105 67 Jeremy Barneron
-(default) “This night only”-
106 67 Jeremy Barneron
-=> option, “Reportable à la nuit suivante” (jusqu’à 7 nuits maxi)-
107 65 Etienne Pallier
108 67 Jeremy Barneron
 * -Période de visibilité JD1-JD2:-
109 65 Etienne Pallier
110 68 Jeremy Barneron
  * -Donnée par le logiciel ETC/IS-
111 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-
112 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:-
113 65 Etienne Pallier
114 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)-
115 67 Jeremy Barneron
   * -Jusqu’à 12 pour l’ISS-
116 67 Jeremy Barneron
   * -=> prévoir donc N périodes (au moins 2)-
117 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é…):-
118 65 Etienne Pallier
119 65 Etienne Pallier
120 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, …-
121 62 Etienne Pallier
122 64 Jeremy Barneron
* -public/ : faut-il garder ce dossier qui ne contient qu’un seul dossier static/ ? (ce dossier static/ est-il utile à qqch ?)-
123 62 Etienne Pallier
124 64 Jeremy Barneron
* -Démarrage: Ce n’est pas Monitoring mais Majordome qui doit lancer le 1er scheduling en début de nuit-
125 62 Etienne Pallier
126 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é, …)-
127 62 Etienne Pallier
128 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)-
129 62 Etienne Pallier
130 64 Jeremy Barneron
* -User : faire une view pour le profil-
131 62 Etienne Pallier
132 64 Jeremy Barneron
* -RoutineManager : Faire un TEST import/export d’une requete-
133 62 Etienne Pallier
134 64 Jeremy Barneron
* -Roue à filtre : doit pouvoir être associée à Camera ou bien à Tele (c’est prévu dans la BD ou pas ?)-
135 62 Etienne Pallier
136 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-
137 3 Etienne Pallier
138 56 Jeremy Barneron
* -Architecture projet (organisation dossiers):-
139 39 Etienne Pallier
140 56 Jeremy Barneron
 * -src/ : laisser seulement les applications, et mettre tous les autres dossiers (fixtures/, images/, ...) dans un dossier MISC/)-
141 39 Etienne Pallier
142 44 Etienne Pallier
* RUN :
143 44 Etienne Pallier
144 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):-
145 44 Etienne Pallier
 
146 56 Jeremy Barneron
  * -RabbitMQ-
147 56 Jeremy Barneron
  * -Mysql (sauf si on a choisi sqlite)-
148 44 Etienne Pallier
149 44 Etienne Pallier
150 44 Etienne Pallier
151 45 Etienne Pallier
* TESTS (intégration continue):
152 1 Paul Carensac
153 56 Jeremy Barneron
 * -Même remarque que pour le "RUN" ci-dessous concernant le check des prérequis-
154 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)-
155 56 Jeremy Barneron
 * -Mettre en place une exécution systématique des tests à chaque commit (unitaires + fonctionnels)-
156 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)-
157 36 Etienne Pallier
158 35 Etienne Pallier
159 35 Etienne Pallier
* Installation script:
160 35 Etienne Pallier
161 56 Jeremy Barneron
 * -Si l'environnement virtuel existe déjà, demander s'il doit être recréé (par défaut "Non")-
162 56 Jeremy Barneron
 * -(NEW) Renommer le script install_requirements.sh en install.sh-
163 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)-
164 35 Etienne Pallier
165 25 Etienne Pallier
* Pyros : 
166 1 Paul Carensac
167 56 Jeremy Barneron
 * -Doit pouvoir être démarré indifféremment AVANT (par défaut) les devices, ou APRES (actuellement, le AVANT est TODO)-
168 56 Jeremy Barneron
 * -De manière générale, doit être le plus possible "tolérant aux pannes"-
169 56 Jeremy Barneron
 * -Doit être le plus générique et donc paramétrable possible-
170 1 Paul Carensac
171 25 Etienne Pallier
172 23 Etienne Pallier
* Django : 
173 12 Etienne Pallier
174 56 Jeremy Barneron
 * -Upgrade to Django 1.10-
175 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)-
176 56 Jeremy Barneron
-(cf https://projects.irap.omp.eu/projects/pyros/wiki/Project_Development#Serveur-Web)-
177 23 Etienne Pallier
178 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-
179 1 Paul Carensac
180 56 Jeremy Barneron
* -git : Create a "dev" branch (do not write anymore on the "master" branch)-
181 1 Paul Carensac
182 25 Etienne Pallier
* Simulators : 
183 1 Paul Carensac
184 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)-
185 25 Etienne Pallier
186 61 Jeremy Barneron
  * -Le Monitoring doit les interroger régulièrement sur leur statut (check_status, DONE)-
187 61 Jeremy Barneron
  * -Il doit stocker les statuts dans la BD (TODO)-
188 61 Jeremy Barneron
  * -Ces statuts doivent être affichés au fur et à mesure sur la page web du "device" correspondant (Devices, Site, Weather) (TODO)-
189 25 Etienne Pallier
190 61 Jeremy Barneron
 * -quels sont les devices bloquants et non bloquants ?-
191 25 Etienne Pallier
192 60 Jeremy Barneron
  * -Bloquants: si indisponibles (en panne ou pas démarrés), Pyros met en pause le sous-système d'observation-
193 60 Jeremy Barneron
-Seules 3 fonctions restent toujours actives: alertes, monitoring, et serveur web (pour les routines et la surveillance)-
194 25 Etienne Pallier
195 60 Jeremy Barneron
   * -Telescope-
196 60 Jeremy Barneron
   * -Camera VIS (???)-
197 60 Jeremy Barneron
   * -PLC (weather + observation conditions + site)-
198 25 Etienne Pallier
199 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-
200 25 Etienne Pallier
201 60 Jeremy Barneron
   * -Camera VIS (???)-
202 60 Jeremy Barneron
   * -Camera NIR-
203 25 Etienne Pallier
204 23 Etienne Pallier
205 56 Jeremy Barneron
* -Users: gérer les 3 profils (admin, expert, user)-
206 23 Etienne Pallier
207 50 Etienne Pallier
* Scheduler : 
208 52 Etienne Pallier
   
209 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-
210 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)-
211 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-
212 52 Etienne Pallier
213 50 Etienne Pallier
214 49 Etienne Pallier
215 14 Etienne Pallier
* Doc :
216 17 Etienne Pallier
217 14 Etienne Pallier
 * TEST:
218 14 Etienne Pallier
  
219 56 Jeremy Barneron
  * -Unit tests : test of each module-
220 56 Jeremy Barneron
  * -Functional tests (with Celery and simulators): complete workflow-
221 14 Etienne Pallier
222 14 Etienne Pallier
 * LAUNCH:
223 14 Etienne Pallier
224 56 Jeremy Barneron
  * -Start simulators-
225 56 Jeremy Barneron
  * -Start Celery-
226 56 Jeremy Barneron
  * -Start pyros-
227 14 Etienne Pallier
228 14 Etienne Pallier
 * USE:
229 14 Etienne Pallier
230 56 Jeremy Barneron
  * -Administration of the database: http://localhost:8000/admin-
231 56 Jeremy Barneron
  * -Interacting with Pyros: http://localhost:8000-
232 15 Etienne Pallier
  
233 56 Jeremy Barneron
   * -Watch the environment: Devices, Site, Weather-
234 56 Jeremy Barneron
   * -Watch the schedule: Schedule-
235 56 Jeremy Barneron
   * -Watch the data processing (workflow): System (Dashboard)-
236 56 Jeremy Barneron
   * -Submit a Routine Request (and get results): Routines-
237 56 Jeremy Barneron
   * -Watch alerts: Alerts-
238 56 Jeremy Barneron
   * -Simulate an Alert: Alerts (TODO: Un user "admin" doit pouvoir déclencher une alerte type depuis la page web Alerts)-
239 56 Jeremy Barneron
   * -Manual operations on the Telescope : Devices/Telescope (TODO)-
240 58 Jeremy Barneron
   * -Manage users : Users-
241 22 Etienne Pallier
242 14 Etienne Pallier
243 1 Paul Carensac
244 1 Paul Carensac
---
245 1 Paul Carensac
246 53 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}Applications tasks (notes Paul Carensac)%
247 2 Paul Carensac
248 2 Paul Carensac
h3. Dashboard
249 2 Paul Carensac
250 59 Jeremy Barneron
 * -Create the backoffice views as the modules are integrated in pyros-
251 59 Jeremy Barneron
 * -Think about a system of permissions-
252 2 Paul Carensac
253 2 Paul Carensac
h3. Scheduler
254 2 Paul Carensac
255 2 Paul Carensac
 * views
256 2 Paul Carensac
257 59 Jeremy Barneron
  * -Link the main page to the current schedule instead of the simulation page-
258 59 Jeremy Barneron
  * -Show user sequences in the schedules (with links)-
259 59 Jeremy Barneron
  * -Give accces to old schedules (day / days before / all end-night plannings / all plannings)-
260 59 Jeremy Barneron
  * -Give access to the refused sequences of a schedule, and the reasons of rejects-
261 2 Paul Carensac
262 2 Paul Carensac
 * scheduler
263 2 Paul Carensac
264 59 Jeremy Barneron
  * -Verification when there are not fields in the scheduler tables (index out of range)-
265 59 Jeremy Barneron
  * -Change the system to determine night start/end (they must be given in parameter, only if first_schedule is True)-
266 59 Jeremy Barneron
  * -Store the reasons of rejects (create a new attribute, in shs ?)-
267 59 Jeremy Barneron
  * -What is the 'flag' attribute ? (@AK)-
268 59 Jeremy Barneron
  * -Do not create the execute_sequence tasks if it's not the night (- 120 seconds)-
269 59 Jeremy Barneron
  * -Priority and quota computing-
270 59 Jeremy Barneron
  * -Quotas evolution-
271 59 Jeremy Barneron
  * -Blank space filling-
272 59 Jeremy Barneron
  * -At the end of a scheduling send, it to the IC ?-
273 2 Paul Carensac
274 2 Paul Carensac
h3. Alert Manager
275 2 Paul Carensac
276 2 Paul Carensac
 * Web :
277 2 Paul Carensac
278 59 Jeremy Barneron
  * -Print if there is an alert in progress in the main page-
279 59 Jeremy Barneron
  * -Link the alerts to their status and results-
280 2 Paul Carensac
281 59 Jeremy Barneron
 * -Connect to a real VOEvent broker-
282 2 Paul Carensac
283 59 Jeremy Barneron
 * -Determine the communication with FSC for strategy change-
284 2 Paul Carensac
285 2 Paul Carensac
 * VOEvents :
286 2 Paul Carensac
287 59 Jeremy Barneron
  * -Extract the good fields (see AK Q&A 07/01/2016)-
288 59 Jeremy Barneron
  * -Fill the request & alerts objects-
289 59 Jeremy Barneron
  * -Use strategies to build a request-
290 59 Jeremy Barneron
  * -Possibility to change the default strategy-
291 59 Jeremy Barneron
  * -Handle VOEvent updates-
292 59 Jeremy Barneron
  * -Be careful to not create 2 alerts for a same GRB, seen by 2 different satellites-
293 2 Paul Carensac
294 2 Paul Carensac
295 2 Paul Carensac
h3. Analyzer
296 2 Paul Carensac
297 59 Jeremy Barneron
 * -Apply the calibrations in the right function-
298 59 Jeremy Barneron
 * -Apply the analyses only if it's a GRB-
299 59 Jeremy Barneron
 * -Implement the analyses-
300 59 Jeremy Barneron
 * -Send analyses to FSC-
301 2 Paul Carensac
302 2 Paul Carensac
303 2 Paul Carensac
h3. Majordome
304 2 Paul Carensac
305 2 Paul Carensac
 * TaskManager
306 2 Paul Carensac
307 59 Jeremy Barneron
  * -When a sequence is cancelled, give back the quota to the user-
308 59 Jeremy Barneron
  * -In case of alert, do not stop the ongoing plan, and make the instruments abort-
309 2 Paul Carensac
310 2 Paul Carensac
 * execute_sequence
311 2 Paul Carensac
312 59 Jeremy Barneron
  * -Add the PLC checks at start (to see if we do the slew)-
313 59 Jeremy Barneron
  * -Use the global telescope (instead of creating one here)-
314 59 Jeremy Barneron
  * -Give first_schedule as false when a scheduling is launched-
315 59 Jeremy Barneron
  * -Remove the default countdown (1, for tests)-
316 2 Paul Carensac
317 2 Paul Carensac
 * system_pause
318 2 Paul Carensac
319 59 Jeremy Barneron
  * -Abort the instruments-
320 59 Jeremy Barneron
  * -Stop the execution tasks-
321 2 Paul Carensac
322 2 Paul Carensac
 * system_restart
323 2 Paul Carensac
324 59 Jeremy Barneron
  * -Start a scheduling-
325 2 Paul Carensac
326 2 Paul Carensac
 * change_obs_conditions
327 2 Paul Carensac
328 59 Jeremy Barneron
  * -Change sequences status (if  needed)-
329 59 Jeremy Barneron
  * -If some status changed, re-launch a scheduling-
330 2 Paul Carensac
331 2 Paul Carensac
h3. Monitoring
332 2 Paul Carensac
333 2 Paul Carensac
 * views
334 2 Paul Carensac
335 59 Jeremy Barneron
  * -Move the dashboard here-
336 59 Jeremy Barneron
  * -Print the instrument status-
337 59 Jeremy Barneron
  * -Print PLC informations (with the evolution)-
338 59 Jeremy Barneron
  * -In the dashboard screens, put scroll on each screen to see the old logs-
339 2 Paul Carensac
340 2 Paul Carensac
 * Monitoring task
341 2 Paul Carensac
 
342 59 Jeremy Barneron
  * -Uncomment the scheduling at the beginning-
343 59 Jeremy Barneron
  * -Implement night start/end computation-
344 59 Jeremy Barneron
  * -Initialize communication with the instruments-
345 59 Jeremy Barneron
  * -Configure intruments at start-
346 59 Jeremy Barneron
  * -Send software versions to the IC-
347 59 Jeremy Barneron
  * -Initialize connection with PLC-
348 59 Jeremy Barneron
  * -After the starting actions, loop to wait for the instruments configuration to be finished-
349 59 Jeremy Barneron
  * -Ask PLC for status-
350 59 Jeremy Barneron
  * -Ask filter wheel for status-
351 59 Jeremy Barneron
  * -Store the instruments & PLC status-
352 59 Jeremy Barneron
  * -Send all status to IC-
353 59 Jeremy Barneron
  * -Analyse PLC status (obs conditions, ...)-
354 59 Jeremy Barneron
  * -Create tasks of obs condition changes-
355 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°)-
356 2 Paul Carensac
357 2 Paul Carensac
h3. Observation Manager
358 2 Paul Carensac
359 2 Paul Carensac
 * execute_plan :
360 2 Paul Carensac
361 59 Jeremy Barneron
  * -Uncomment the instruments_ready waiting function-
362 59 Jeremy Barneron
  * -Uncomment the observation_ending waiting function-
363 59 Jeremy Barneron
  * -Try to remove code duplication (plan_execution_vis & plan_execution_nir)-
364 59 Jeremy Barneron
  * -Determine what needs to be done at the end of an observation-
365 2 Paul Carensac
366 2 Paul Carensac
 * create_calibrations :
367 2 Paul Carensac
368 59 Jeremy Barneron
  * -Make the calibration images-
369 59 Jeremy Barneron
  * -Generate super images-
370 59 Jeremy Barneron
  * -Send them to the IC-
371 2 Paul Carensac
372 2 Paul Carensac
h3. Routine Manager
373 2 Paul Carensac
374 2 Paul Carensac
 * Web
375 2 Paul Carensac
376 59 Jeremy Barneron
  * -Put the goods fields (for coordinates etc)-
377 59 Jeremy Barneron
  * -Only propose the objects that matches the conditions (ex: scientific programs of the user only)-
378 59 Jeremy Barneron
  * -Do all the needed checks-
379 59 Jeremy Barneron
  * -Add automatic computation of JD1/JD2-
380 59 Jeremy Barneron
  * -Add checkbox for JD / GD-
381 59 Jeremy Barneron
  * -Add options : copy my sequence on x days, and authorise report-
382 59 Jeremy Barneron
  * -Add ETC-IS simulation-
383 59 Jeremy Barneron
  * -Add help for new users (and for it the first time an account come on the page)-
384 2 Paul Carensac
 
385 2 Paul Carensac
 * Do more checks at unserialization
386 2 Paul Carensac
387 2 Paul Carensac
 * views
388 2 Paul Carensac
389 59 Jeremy Barneron
  * -When saving, do more checks on coordinates, jd1/2 etc-
390 59 Jeremy Barneron
  * -Uncomment filter for alerts removing-
391 59 Jeremy Barneron
  * -When submitting, use the monitoring to determine sequences status-
392 59 Jeremy Barneron
  * -When submitting, modify the first_schedule to False, when scheduling-
393 59 Jeremy Barneron
  * -When unsubmitting, uncomment the check for EXED and EXING removing-
394 59 Jeremy Barneron
  * -When unsubmitting, uncomment the scheduling and change the first_schedule to False-
395 2 Paul Carensac
396 2 Paul Carensac
397 2 Paul Carensac
h3. User Manager
398 2 Paul Carensac
399 59 Jeremy Barneron
 * -Password recovery-
400 59 Jeremy Barneron
 * -Profile page-
401 59 Jeremy Barneron
 * -User validation by administrator / commission-
402 59 Jeremy Barneron
 * -Handle permissions and access-
403 2 Paul Carensac
404 2 Paul Carensac
h3. Common
405 2 Paul Carensac
406 59 Jeremy Barneron
 * -Change the 'first_schedule' to False at the end of RequestBuilder.validate()-
407 32 Paul Carensac
408 32 Paul Carensac
h3. Devices
409 32 Paul Carensac
410 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)-