source: OpenRLabs-Git/web2py/applications/rlabs/modules/ognsys_actions.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: 6.8 KB
Line 
1# -*- coding: utf-8 -*-
2#################################################################################
3# @file    ognsys_actions.py
4# @brief     
5# @warning None
6# @note Use:
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
14import ognsys_globals
15
16class UrlLogin:
17    def __init__(self):
18        self.url = ognsys_globals.local.__OPENGNSYS_SERVER__ + "/login"
19
20    def get_url(self):
21        return self.url
22   
23class UrlGroupOus:
24    def __init__(self):
25        self.url = ognsys_globals.local.__OPENGNSYS_SERVER__ + "/ous"
26
27    def get_url(self):
28        return self.url
29
30class UrlGroupLabs:
31    def __init__(self, ou_id):
32        self.url = ognsys_globals.local.__OPENGNSYS_SERVER__ + "/ous/" + \
33                                        str(ou_id) + "/labs"
34                                       
35    def get_url(self):
36        return self.url
37
38
39class UrlGroupClients:
40    def __init__(self, ou_id, lab_id):
41        self.url = ognsys_globals.local.__OPENGNSYS_SERVER__ + "/ous/" + \
42                                        str(ou_id) + "/labs/" + str(lab_id) + "/clients"
43                                       
44    def get_url(self):
45        return self.url
46
47   
48class OgnsysAction:
49    def __init__(self, url_group, body = None):
50
51        self.headers = {'Content-Type': 'application/json',
52                            'Accept': 'application/json',
53                            'Authorization': ognsys_globals.local.__APIKEY__,
54                            'User-Agent': 'python-requests//'}
55       
56        self.body = body
57        self.url_base = url_group.get_url()
58       
59        self.action = ""
60        self.url = ""
61       
62        self.params = {}
63 
64    def get_params(self):
65        if self.body:
66            self.params['body'] = self.body
67           
68        self.params['action'] = self.action
69        self.params['url'] = self.url
70        self.params['headers'] = self.headers
71       
72        return self.params
73
74class DoLogin(OgnsysAction):
75    def __init__(self, ou_credentials):
76        body = {
77                  "username": ou_credentials['ou_user'],
78                  "password": ou_credentials['ou_password']
79                }
80       
81        super().__init__(UrlLogin(), body)
82       
83        self.action = 'POST'       
84        self.url = self.url_base
85       
86class GetOUS(OgnsysAction):           
87    def __init__(self):       
88        super().__init__(UrlGroupOus())
89       
90        self.action = 'GET' 
91                   
92        self.url = self.url_base
93
94class GetImageInfo(OgnsysAction):
95    def __init__(self, ou_id, image_id):
96        super().__init__(UrlGroupOus())       
97                     
98       
99        self.action = 'GET'
100       
101        self.url = self.url_base + '/' + str(ou_id) + '/images/' + str(image_id)
102
103class GetLabsOu(OgnsysAction):
104    def __init__(self, ou_id):
105        super().__init__(UrlGroupLabs(ou_id))       
106       
107        self.ou_id = ou_id       
108        self.action = 'GET'
109       
110        self.url = self.url_base       
111       
112class GetLabClients(OgnsysAction):
113    def __init__(self, ou_id, lab_id):
114        super().__init__(UrlGroupClients(ou_id,lab_id))
115               
116        self.action = 'GET'       
117        self.url = self.url_base
118   
119class GetDiskConfigClient(OgnsysAction):
120    def __init__(self, ou_id, lab_id, pc_id):
121        super().__init__(UrlGroupClients(ou_id,lab_id))       
122       
123        self.action = 'GET'                   
124        self.url = self.url_base + '/' + str(pc_id) + '/diskcfg'
125       
126       
127   
128class ReserveClient(OgnsysAction):
129    def __init__(self, ou_id, image_id, lab_id, maxtime):         
130        body = {
131                  "labid": lab_id,
132                  "maxtime": int(maxtime)
133                }
134               
135        super().__init__(UrlGroupOus(), body)
136                       
137        self.action = 'POST'
138        self.url = self.url_base + "/" + str(ou_id) + "/images/"+ str(image_id) + "/reserve"
139       
140class UnreserveClient(OgnsysAction):
141     def __init__(self, ou_id, lab_id, pc_id):
142       
143        super().__init__(UrlGroupClients(ou_id,lab_id))
144       
145        self.action = 'DELETE'
146        self.url = self.url_base + '/' + str(pc_id) + "/unreserve"
147       
148       
149           
150       
151class RedirectEvents(OgnsysAction):
152    def __init__(self, ou_id, lab_id, pc_id, maxtime):       
153           
154        ou_id = str(ou_id)
155        lab_id = str(lab_id)
156        pc_id = str(pc_id)
157        maxtime = str(maxtime)
158       
159
160        urlogin = ognsys_globals.local.__RLABS_SERVER__ + "/events/getEventsLogin?pc_id=" + pc_id + \
161                                                                            "&lab_id=" + lab_id + \
162                                                                            "&ou_id=" + ou_id + \
163                                                                            "&maxtime=" + maxtime
164       
165        urlogout = ognsys_globals.local.__RLABS_SERVER__ + "/events/getEventsLogout?pc_id=" + pc_id + \
166                                                                            "&lab_id=" + lab_id + \
167                                                                            "&ou_id=" + ou_id + \
168                                                                            "&maxtime=" + maxtime                                                                           
169       
170       
171        body = {
172                  "urlLogin": urlogin,
173                  "urlLogout": urlogout
174                }
175       
176        super().__init__(UrlGroupClients(ou_id,lab_id), body)
177       
178        self.action = 'POST'
179        self.url = self.url_base + '/' + pc_id + "/events"
180
181
182           
183class RegisterSessionTimeout(OgnsysAction):
184    def __init__(self, ou_id, lab_id, pc_id, maxtime):
185           
186        ou_id = str(ou_id)
187        lab_id = str(lab_id)
188        pc_id = str(pc_id)
189        maxtime = str(maxtime)
190       
191        deadLine = str(int(maxtime) * 60 * 60)   
192
193        body ={
194             "deadLine": deadLine
195        }
196       
197        super().__init__(UrlGroupClients(ou_id,lab_id), body)
198       
199        self.action = 'POST'       
200        self.url = self.url_base + '/' + pc_id + "/session"
201
202
203
204
205class GetStatusClient:
206    def __init__(self, ip):
207        self.ip = ip
208   
209    def get_params(self):
210        params = {}
211        params['action'] = 'GET'
212        params['url'] = "https://" + self.ip + ":8000/opengnsys/status"
213        params['headers'] =  {'Content-Type': 'application/json',
214                            'Accept': 'application/json',
215                            'User-Agent': 'python-requests//'}
216       
217
218        return params
219           
220     
Note: See TracBrowser for help on using the repository browser.