source: OpenRLabs-Git/web2py/applications/rlabs/modules/client_lab.py

main
Last change on this file was 626da1a, checked in by David Fuertes <dfuertes@…>, 4 years ago

Implementado decremento num host a cache tras 3 intentos fallidos pasados 20 minutos

  • Property mode set to 100644
File size: 3.5 KB
Line 
1# -*- coding: utf-8 -*-
2#################################################################################
3# @file    clients.py
4# @brief   Module that manage info about clients (remote PCs), from Opengnsys API Rest   
5# @warning None
6# @note Use: None     
7# @license GNU GPLv3+
8# @author  David Fuertes, EUPT, University of Zaragoza.
9#          Opengnsys Api Rest support provided by Juan Carlos García, EUPT, University of Zaragoza.
10# @version 1.1.0 - First version
11# @date    2019-15-11
12#################################################################################
13
14from gluon.storage import Storage
15
16from http_requests import HttpRequest, UsingPoolManagerConnector, NotUsingPoolManagerConnector
17from ognsys_actions import GetStatusClient, ReserveClient, RedirectEvents, RegisterSessionTimeout, UnreserveClient
18
19import ognsys_globals
20from ados import adoDB_reserves
21
22class Client:
23   
24    def __init__(self, my_context):
25
26        self.context = Storage()
27
28
29        # Rellenamos context
30        for k,v in my_context.items():
31            self.context[k] = v 
32       
33
34        self.http_request = HttpRequest()
35 
36   
37
38    def update_context(self, *args):
39        if args:
40            for arg in args:
41                self.context.update(arg)
42           
43           
44       
45    # Meter este metodo en  objeto client_lab y pasarle pool manager.   
46    def get_status_client(self):
47        self.http_request.set_connector(NotUsingPoolManagerConnector())       
48        return self.http_request.do_action(GetStatusClient(self.context.ip))
49           
50
51
52    def reserve_remote_pc(self):       
53        self.http_request.set_connector(UsingPoolManagerConnector(ognsys_globals.local.__POOL_MANAGER__))       
54        return self.http_request.do_action(ReserveClient(self.context.ou_id,
55                                                         self.context.image_id,
56                                                         self.context.lab_id,
57                                                         self.context.maxtime) )
58                   
59    def redirect_events(self):
60        self.http_request.set_connector(UsingPoolManagerConnector(ognsys_globals.local.__POOL_MANAGER__))
61        return self.http_request.do_action(RedirectEvents(self.context.ou_id, self.context.lab_id,
62                                                          self.context.id, self.context.maxtime) )
63                                                         
64    def register_session_timeout(self):
65        self.http_request.set_connector(UsingPoolManagerConnector(ognsys_globals.local.__POOL_MANAGER__))     
66        return self.http_request.do_action(RegisterSessionTimeout(self.context.ou_id, self.context.lab_id,
67                                                                  self.context.id, self.context.maxtime) )
68
69   
70                                                       
71       
72   
73    def __unreserve_remote_pc(self):
74        self.http_request.set_connector(UsingPoolManagerConnector(ognsys_globals.local.__POOL_MANAGER__))     
75        return self.http_request.do_action(UnreserveClient(self.context['ou_id'], self.context['lab_id'], self.context['pc_id']))
76       
77   
78    def unreserve_remote_pc(self):       
79        self.remove_active_reserve()       
80        unreserve_ognsys = self.__unreserve_remote_pc()                       
81        return unreserve_ognsys
82       
83    def remove_active_reserve(self):
84        adoDB_reserves.remove_by_pc_id(self.context.db, self.context.pc_id)
85        return "ok"
86       
Note: See TracBrowser for help on using the repository browser.