Pyros applications

Version 58 (Paul Carensac, 08/09/2016 12:20 pm)

1 1 Paul Carensac
h1. Pyros applications
2 1 Paul Carensac
3 2 Paul Carensac
List and details of all the pyros applications.
4 2 Paul Carensac
5 17 Paul Carensac
{{>toc}}
6 17 Paul Carensac
7 2 Paul Carensac
---
8 2 Paul Carensac
9 2 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}pyrosapp%
10 2 Paul Carensac
11 3 Paul Carensac
h3. Purpose
12 2 Paul Carensac
13 2 Paul Carensac
 * Contains all the database Models
14 2 Paul Carensac
 * Basic tests in tests.py
15 2 Paul Carensac
 * Backoffice configuration in admin.py
16 2 Paul Carensac
17 3 Paul Carensac
h3. Notes
18 2 Paul Carensac
19 57 Paul Carensac
 * Should be removed, and the models moved in the "common" application
20 2 Paul Carensac
21 2 Paul Carensac
---
22 2 Paul Carensac
23 2 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}dashboard%
24 2 Paul Carensac
25 3 Paul Carensac
h3. Purpose
26 2 Paul Carensac
27 2 Paul Carensac
 * Interface for all external users
28 2 Paul Carensac
 * Leads to displays and actions for all the pyros modules (users, requests, system execution, ...)
29 2 Paul Carensac
30 4 Paul Carensac
h3. Evolution
31 4 Paul Carensac
32 4 Paul Carensac
 * Creating application
33 4 Paul Carensac
34 4 Paul Carensac
    * manage.py startapp dashboard
35 5 Paul Carensac
    * added 'dashboard' in settings.py -> INSTALLED_APPS
36 5 Paul Carensac
    * created a urls.py file in dashboard module
37 5 Paul Carensac
    * added _url(r'^dashboard/', include('dashboard.urls'))_ in pyros/urls.py -> urlpatterns
38 5 Paul Carensac
    * created templates/ and templates/dashboard/ folders in dashboard module
39 5 Paul Carensac
40 5 Paul Carensac
 * Main page
41 5 Paul Carensac
42 5 Paul Carensac
    * added 'home' view in views.py
43 5 Paul Carensac
    * linked 'home' view to 8000/dashboard URL
44 5 Paul Carensac
    * created a template for the homepage in templates/dashboard/ (with bootstrap)
45 5 Paul Carensac
    * created views, views linking (urls.py) and templates for the dashboard modules
46 5 Paul Carensac
    * redirected mainpage buttons to Admin interface (temporary)
47 4 Paul Carensac
48 22 Paul Carensac
 * System page (logs)
49 22 Paul Carensac
50 22 Paul Carensac
    * Retrieve logs from the db
51 26 Paul Carensac
    * Print logs and automatically update every second via an ajax request
52 22 Paul Carensac
53 3 Paul Carensac
h3. Notes
54 2 Paul Carensac
55 2 Paul Carensac
 * The buttons lead to the Admin interface for the moment
56 7 Paul Carensac
 * Added bootstrap3 module (see Installation)
57 7 Paul Carensac
 * Added Django Template Editor (see Eclipse configuration)
58 2 Paul Carensac
59 2 Paul Carensac
---
60 8 Paul Carensac
61 8 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}scheduler%
62 8 Paul Carensac
63 8 Paul Carensac
h3. Purpose
64 8 Paul Carensac
65 8 Paul Carensac
 * Creates the planning with the OBSERVABLE sequences
66 40 Paul Carensac
 * Give access to a web page to see the current & old plannings
67 8 Paul Carensac
68 8 Paul Carensac
h3. Evolution
69 8 Paul Carensac
70 8 Paul Carensac
 * Creating application
71 8 Paul Carensac
72 8 Paul Carensac
    * manage.py startapp scheduler
73 8 Paul Carensac
    * added 'scheduler' in settings.py -> INSTALLED_APPS
74 8 Paul Carensac
    * created a urls.py file in scheduler module
75 8 Paul Carensac
    * added _url(r'^scheduler/', include('scheduler.urls'))_ in pyros/urls.py -> urlpatterns
76 8 Paul Carensac
    * created templates/ and templates/scheduler/ folders in scheduler module
77 8 Paul Carensac
78 9 Paul Carensac
 * Model modifications
79 1 Paul Carensac
80 9 Paul Carensac
    * Schedule
81 9 Paul Carensac
82 9 Paul Carensac
        * Remove day_start
83 9 Paul Carensac
        * Remove day_stop
84 9 Paul Carensac
        * Add plan_start
85 13 Paul Carensac
        * Add plan_end
86 9 Paul Carensac
        * Enum system for the status 
87 9 Paul Carensac
    * ScheduleHistory
88 9 Paul Carensac
89 9 Paul Carensac
        * Remove day_start
90 9 Paul Carensac
        * Remove day_stop
91 9 Paul Carensac
        * Add plan_start
92 13 Paul Carensac
        * Add plan_end
93 9 Paul Carensac
    * Sequence
94 9 Paul Carensac
95 9 Paul Carensac
        * Remove exec_start
96 9 Paul Carensac
        * Remove exec_stop
97 9 Paul Carensac
        * Add tsp
98 9 Paul Carensac
        * Add tep
99 9 Paul Carensac
        * Add jd1
100 9 Paul Carensac
        * Add jd2
101 9 Paul Carensac
        * Add deltaTL
102 9 Paul Carensac
        * Add deltaTR
103 9 Paul Carensac
        * Add t_prefered
104 9 Paul Carensac
        * Changed duration from Float to DecimalField (more precise)
105 15 Paul Carensac
        * Add overhead
106 15 Paul Carensac
107 10 Paul Carensac
    * manage.py makemigrations sheduler ; manage.py migrate
108 10 Paul Carensac
109 10 Paul Carensac
 * Creation of Scheduler and Interval classes in models.py
110 10 Paul Carensac
111 10 Paul Carensac
 * Implementation of the Interval class
112 10 Paul Carensac
113 12 Paul Carensac
 * Implementation of the Scheduler's 'make_schedule' function (and children). This is the only entry point for now. This function creates the planning (organizes the observable sequences).
114 9 Paul Carensac
115 14 Paul Carensac
 * Creation of the web interface
116 14 Paul Carensac
117 14 Paul Carensac
    * Added current_schedule.html in template/scheduler folder
118 14 Paul Carensac
    * Created view and url linking to this template (with current planning retrieving)
119 14 Paul Carensac
120 14 Paul Carensac
 * Creation of the simulator
121 14 Paul Carensac
122 14 Paul Carensac
    * Created a second entry point in the Scheduler class (with a few minor adaptations to handle SIMULATION mode)
123 14 Paul Carensac
    * Created a simulator module in the scheduler
124 14 Paul Carensac
        
125 14 Paul Carensac
        * Added the MyHTMLParser class (easy implementation of HTMLParser)
126 23 Paul Carensac
        * Added Simulator class. It parses a file given in parametr to retrieve sequences and create a schedule
127 14 Paul Carensac
    * Created a second view linked to schedule/simulation to show simulation results
128 1 Paul Carensac
 
129 29 Paul Carensac
 * Supression du système d'agent et ajout de la tâche (celery) de scheduling
130 29 Paul Carensac
131 23 Paul Carensac
 * Main update 19/05/2016 : overheads & historic system
132 23 Paul Carensac
133 23 Paul Carensac
    * Deleted ScheduleHistory
134 23 Paul Carensac
    * Transformed the Sequence - Schedule relation to ManyToMany
135 23 Paul Carensac
    * Moved the scheduling information into the M2M relationship class (shs = ScheduleHasSequences)
136 23 Paul Carensac
    * Added a static overhead into scheduling (can be set from the calling code, through scheduler.max_overhead = blabla(float))
137 23 Paul Carensac
138 23 Paul Carensac
h3. Tests
139 23 Paul Carensac
140 30 Paul Carensac
 * Some tests in test.py to test the different functionalities of the scheduler. These tests include the simulation.
141 24 Paul Carensac
 * A simulator at localhost:8000/scheduler/simulation, taking sequences from scheduler/sequences_cador.html
142 24 Paul Carensac
143 8 Paul Carensac
h3. Notes
144 1 Paul Carensac
145 1 Paul Carensac
 * Priorities and quotas are default-calculated (for the moment)
146 9 Paul Carensac
 * What is the 'flag' attribute in the Schedule model ?
147 1 Paul Carensac
148 13 Paul Carensac
149 18 Paul Carensac
---
150 18 Paul Carensac
151 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}alert_manager%
152 18 Paul Carensac
153 18 Paul Carensac
h3. Purpose
154 18 Paul Carensac
155 18 Paul Carensac
 * Listen to VOEvent network
156 18 Paul Carensac
 * Sort interesting events
157 18 Paul Carensac
 * Create requests according to these events
158 18 Paul Carensac
 * Manage the requests created via the alerts
159 35 Paul Carensac
 * Change the observation strategies for alerts
160 18 Paul Carensac
161 18 Paul Carensac
h3. Evolution
162 18 Paul Carensac
163 18 Paul Carensac
 * Creating application
164 18 Paul Carensac
165 18 Paul Carensac
    * See scheduler documentation above
166 18 Paul Carensac
167 18 Paul Carensac
 * Implementation of the agent system
168 18 Paul Carensac
169 18 Paul Carensac
    * Created agent.py whith a "class AlertManagerAgent(Agent):" inside
170 18 Paul Carensac
    * Overriding agent's 'work' and 'shutdown' method
171 18 Paul Carensac
    * Added message(s) to agent.actions_by_message dictionnary, with the functions associated to these messages
172 18 Paul Carensac
    * Added the Agent's launch system in apps.py
173 18 Paul Carensac
 
174 18 Paul Carensac
 * Implementation of the VOEventListener Thread
175 18 Paul Carensac
176 18 Paul Carensac
    * Created a "class VOEventListener(Thread):" in agent.py
177 18 Paul Carensac
    * Overriding the run method
178 18 Paul Carensac
179 28 Paul Carensac
 * 19/05/2016 : deleted the agent system (deleted from the applications below too)
180 1 Paul Carensac
181 27 Paul Carensac
 * Added some VOEvents in events_to_send
182 27 Paul Carensac
183 27 Paul Carensac
 * Installed Comet (see in [[Technical components]] section)
184 1 Paul Carensac
185 28 Paul Carensac
 * Created 2 celery tasks in tesks.py : alert_listener and change_obs_strategy
186 28 Paul Carensac
 
187 28 Paul Carensac
 * Added alert_listener launch at server start
188 28 Paul Carensac
189 28 Paul Carensac
 * Implemented alert_listener : it waits for an event file to be created in events_received, then read it and creates a request
190 28 Paul Carensac
191 28 Paul Carensac
 * Added a simulator system ( see section Tests below )
192 28 Paul Carensac
193 35 Paul Carensac
 * Added the strategy_change page
194 35 Paul Carensac
195 45 Paul Carensac
 * Removed launching at start : it is now started by the monitoring task
196 45 Paul Carensac
197 28 Paul Carensac
h3. Tests
198 28 Paul Carensac
199 28 Paul Carensac
 * Simulator : 
200 28 Paul Carensac
201 28 Paul Carensac
  * You first need to set settings.SIMULATION to True (in pyros/settings.py)
202 28 Paul Carensac
  * Start celery workers (scripts/start_celery_workers.sh)
203 28 Paul Carensac
  * Start server (manage.py runserver)
204 28 Paul Carensac
  * Go to localhost:8000/alert_manager/simulation, and press the button !
205 28 Paul Carensac
  * This will read into the simulation_sequences file.
206 28 Paul Carensac
207 41 Paul Carensac
 * Test AlertListenerTestsCelery.test_alert_reception :
208 28 Paul Carensac
209 28 Paul Carensac
  * Tests if the alert_listener is working well.
210 28 Paul Carensac
  * +Be careful :+ this will act on the production database, and will start the entire alert workflow
211 1 Paul Carensac
  * To start it : script/celery_test.sh alert_manager
212 41 Paul Carensac
213 41 Paul Carensac
 * Tests TestStrategyChange.* :
214 41 Paul Carensac
  * Test the changing of the observation strategy with errors and different parameters
215 28 Paul Carensac
216 27 Paul Carensac
h3. Notes
217 1 Paul Carensac
218 28 Paul Carensac
 * The request created by alert_listener is hard-coded
219 28 Paul Carensac
220 18 Paul Carensac
---
221 18 Paul Carensac
222 20 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}analyzer%
223 18 Paul Carensac
224 18 Paul Carensac
h3. Purpose
225 18 Paul Carensac
226 36 Paul Carensac
 * Apply calibration files to the images taken by the observation manager
227 36 Paul Carensac
 * Analyze the images produced by the calibrations
228 18 Paul Carensac
229 18 Paul Carensac
h3. Evolution
230 18 Paul Carensac
231 18 Paul Carensac
 * Creating application
232 18 Paul Carensac
233 18 Paul Carensac
    * See scheduler documentation above
234 18 Paul Carensac
235 43 Paul Carensac
 * Implemented the skeleton of the module in the task Analysis (call  a function for calibrations then a function for analyses)
236 1 Paul Carensac
237 1 Paul Carensac
h3. Notes
238 1 Paul Carensac
239 18 Paul Carensac
---
240 18 Paul Carensac
241 19 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}majordome%
242 18 Paul Carensac
243 18 Paul Carensac
h3. Purpose
244 18 Paul Carensac
245 44 Paul Carensac
 * Handles the execution of the sequences in the right order during the night
246 44 Paul Carensac
 * Handles the system start & stop
247 44 Paul Carensac
 * Handles the changes of observation conditions
248 46 Paul Carensac
 * Stops the celery tasks when needed
249 44 Paul Carensac
250 18 Paul Carensac
h3. Evolution
251 18 Paul Carensac
252 21 Paul Carensac
 * Creating application
253 1 Paul Carensac
254 46 Paul Carensac
  * See scheduler documentation above
255 21 Paul Carensac
256 46 Paul Carensac
  * Created all the tasks in tasks.py
257 21 Paul Carensac
258 46 Paul Carensac
  * Created the TaskManager to stop the sequence & plan executions when an alert / routine is received
259 21 Paul Carensac
260 46 Paul Carensac
  * Implemented execute_sequence (not finished)
261 1 Paul Carensac
262 1 Paul Carensac
h3. Notes
263 1 Paul Carensac
264 18 Paul Carensac
---
265 18 Paul Carensac
266 19 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}monitoring%
267 18 Paul Carensac
268 18 Paul Carensac
h3. Purpose
269 18 Paul Carensac
270 47 Paul Carensac
 * It is the only tasks launched at the system's start
271 47 Paul Carensac
 * Make all the starting actions : instruments configuration, connection to the PLC, updating software versions, determine night start/end & start a scheduling
272 47 Paul Carensac
 * Starts the alert_listener
273 47 Paul Carensac
 * Infinite loop to regularly check the instruments and PLC status (and send them to the IC)
274 47 Paul Carensac
 * Handles night start & end
275 47 Paul Carensac
276 18 Paul Carensac
h3. Evolution
277 18 Paul Carensac
278 1 Paul Carensac
 * Creating application
279 21 Paul Carensac
280 1 Paul Carensac
    * See scheduler documentation above
281 1 Paul Carensac
282 47 Paul Carensac
 * System to launch the task at the system's start
283 1 Paul Carensac
284 47 Paul Carensac
 * Implement skeleton of task
285 1 Paul Carensac
286 47 Paul Carensac
 * Implement starting actions (with some empty functions)
287 47 Paul Carensac
288 47 Paul Carensac
 * Main loop to check PLC, instruments and night start / end (not finished)
289 18 Paul Carensac
 
290 18 Paul Carensac
h3. Notes
291 18 Paul Carensac
292 18 Paul Carensac
293 19 Paul Carensac
---
294 18 Paul Carensac
295 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}observation_manager%
296 18 Paul Carensac
297 18 Paul Carensac
h3. Purpose
298 18 Paul Carensac
299 49 Paul Carensac
 * Give orders the instruments to execute the plans
300 49 Paul Carensac
 * Take the calibration images and computes the 'super' calibration images
301 49 Paul Carensac
302 18 Paul Carensac
h3. Evolution
303 1 Paul Carensac
304 18 Paul Carensac
 * Creating application
305 1 Paul Carensac
306 21 Paul Carensac
    * See scheduler documentation above
307 1 Paul Carensac
308 49 Paul Carensac
 * Created the tasks : execute_plan_(nir/vis) & create_calibrations
309 1 Paul Carensac
310 49 Paul Carensac
 * Implemented the execute_plan tasks with some incomplete functions
311 1 Paul Carensac
 
312 1 Paul Carensac
h3. Notes
313 1 Paul Carensac
314 49 Paul Carensac
315 49 Paul Carensac
316 18 Paul Carensac
---
317 18 Paul Carensac
318 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}routine_manager%
319 18 Paul Carensac
320 18 Paul Carensac
h3. Purpose
321 18 Paul Carensac
322 50 Paul Carensac
 * Enables astronomers to create routines via the website
323 50 Paul Carensac
 * Import / export of routines (XML)
324 50 Paul Carensac
 * Display observation results for routines
325 50 Paul Carensac
326 18 Paul Carensac
h3. Evolution
327 18 Paul Carensac
328 18 Paul Carensac
 * Creating application
329 18 Paul Carensac
330 18 Paul Carensac
    * See scheduler documentation above
331 18 Paul Carensac
332 50 Paul Carensac
 * Created forms online for routine creation
333 50 Paul Carensac
334 50 Paul Carensac
 * Added import / export
335 50 Paul Carensac
336 50 Paul Carensac
 * Added routine submit / unsubmit
337 18 Paul Carensac
 
338 52 Paul Carensac
h3. Tests
339 52 Paul Carensac
340 52 Paul Carensac
 * Import fake file
341 52 Paul Carensac
 * Import invalid file
342 52 Paul Carensac
 * Import good file
343 52 Paul Carensac
 * Export incomplete
344 52 Paul Carensac
 * Export valid
345 52 Paul Carensac
346 18 Paul Carensac
h3. Notes
347 18 Paul Carensac
348 50 Paul Carensac
349 50 Paul Carensac
350 18 Paul Carensac
---
351 18 Paul Carensac
352 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}user_manager%
353 18 Paul Carensac
354 31 Paul Carensac
h3. Purpose
355 31 Paul Carensac
356 31 Paul Carensac
 * Handle user create / delete / login / logout
357 18 Paul Carensac
 * Allow to see user profile and make password recovery
358 18 Paul Carensac
359 18 Paul Carensac
h3. Evolution
360 18 Paul Carensac
361 18 Paul Carensac
 * Creating application
362 18 Paul Carensac
363 32 Paul Carensac
    * See scheduler documentation above
364 32 Paul Carensac
365 32 Paul Carensac
 * Taking and adapting templates from Alexandru project
366 32 Paul Carensac
367 32 Paul Carensac
 * User creation
368 33 Paul Carensac
369 33 Paul Carensac
  * Form in admin.py
370 33 Paul Carensac
  * Functions to verify if email doesn't exist and if passwords match
371 18 Paul Carensac
  * Added check to pass login page if user is already autheticated
372 18 Paul Carensac
  * Restricted access to all pyros views to authenticated users (except from user creation and login) with @login_required
373 18 Paul Carensac
 
374 53 Paul Carensac
h3. Tests
375 53 Paul Carensac
376 53 Paul Carensac
 * Creation
377 53 Paul Carensac
 * Login
378 53 Paul Carensac
 * wrong email
379 53 Paul Carensac
 * wrong password
380 53 Paul Carensac
 * logout
381 53 Paul Carensac
382 18 Paul Carensac
h3. Notes
383 31 Paul Carensac
384 31 Paul Carensac
385 20 Paul Carensac
---
386 18 Paul Carensac
387 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}common%
388 18 Paul Carensac
389 18 Paul Carensac
h3. Purpose
390 18 Paul Carensac
391 18 Paul Carensac
 * Regroups common data and functions shared by applications
392 18 Paul Carensac
393 25 Paul Carensac
h3. Content
394 18 Paul Carensac
395 25 Paul Carensac
 * RequestBuilder - class to build and save in DB the requests
396 25 Paul Carensac
397 25 Paul Carensac
  * You can start a request, then add sequences, albums and plans, given their parent class (ex: you need to give a sequence id to create an album)
398 18 Paul Carensac
  * Each function returns the ID of the element it created (to give it to the children classes)
399 18 Paul Carensac
  * To save a request, you need to use validate_request
400 54 Paul Carensac
401 54 Paul Carensac
 * Device and children
402 54 Paul Carensac
403 54 Paul Carensac
  * Implementation of devices communication, messages and initialization
404 54 Paul Carensac
  * All classes inherit from the Device class
405 54 Paul Carensac
  * All classes re-implement the list of messages
406 25 Paul Carensac
 
407 54 Paul Carensac
h3. Tests
408 54 Paul Carensac
409 54 Paul Carensac
 * Test the creation of a full request by the RequestBuilder
410 54 Paul Carensac
411 25 Paul Carensac
h3. Notes
412 18 Paul Carensac
413 18 Paul Carensac
 * Will probably contain the DB models at last ...