Skip to content

Commit cdd81db

Browse files
Merge branch 'main' into client-refactoring-to-use-on-new-api
2 parents ab07378 + 1b1c9a2 commit cdd81db

File tree

1 file changed

+370
-0
lines changed

1 file changed

+370
-0
lines changed
Lines changed: 370 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,370 @@
1+
import requests
2+
import json
3+
import time
4+
5+
cluster_url = None
6+
7+
8+
class Context:
9+
def __init__(self, ip_from_cluster):
10+
global cluster_url
11+
cluster_url = "http://" + ip_from_cluster
12+
13+
14+
class AsyncronousWait:
15+
WAIT_TIME = 3
16+
METADATA_INDEX = 0
17+
18+
def wait(self, filename, pretty_response=True):
19+
if pretty_response:
20+
print("\n----------" + " WAITING " + filename + " FINISH " + "----------")
21+
22+
database_api = DatabaseApi()
23+
24+
while True:
25+
time.sleep(self.WAIT_TIME)
26+
response = database_api.read_file(filename, limit=1, pretty_response=False)
27+
28+
if len(response["result"]) == 0:
29+
continue
30+
31+
if response["result"][self.METADATA_INDEX]["finished"]:
32+
break
33+
34+
35+
class ResponseTreat:
36+
HTTP_CREATED = 201
37+
HTTP_SUCESS = 200
38+
HTTP_ERROR = 500
39+
40+
def treatment(self, response, pretty_response=True):
41+
if response.status_code >= self.HTTP_ERROR:
42+
return response.text
43+
elif (
44+
response.status_code != self.HTTP_SUCESS
45+
and response.status_code != self.HTTP_CREATED
46+
):
47+
raise Exception(response.json()["result"])
48+
else:
49+
if pretty_response:
50+
return json.dumps(response.json(), indent=2)
51+
else:
52+
return response.json()
53+
54+
55+
class DatabaseApi:
56+
DATABASE_API_PORT = "5000"
57+
58+
def __init__(self):
59+
global cluster_url
60+
self.url_base = cluster_url + ":" + self.DATABASE_API_PORT + "/files"
61+
self.asyncronous_wait = AsyncronousWait()
62+
63+
def read_resume_files(self, pretty_response=True):
64+
if pretty_response:
65+
print("\n----------" + " READ RESUME FILES " + "----------")
66+
67+
url = self.url_base
68+
response = requests.get(url)
69+
70+
return ResponseTreat().treatment(response, pretty_response)
71+
72+
def read_file(self, filename, skip=0, limit=10, query={}, pretty_response=True):
73+
if pretty_response:
74+
print("\n----------" + " READ FILE " + filename + " ----------")
75+
76+
request_params = {"skip": str(skip), "limit": str(limit), "query": str(query)}
77+
read_file_url = self.url_base + "/" + filename
78+
response = requests.get(url=read_file_url, params=request_params)
79+
80+
return ResponseTreat().treatment(response, pretty_response)
81+
82+
def create_file(self, filename, url, pretty_response=True):
83+
if pretty_response:
84+
print("\n----------" + " CREATE FILE " + filename + " ----------")
85+
86+
request_body_content = {"filename": filename, "url": url}
87+
88+
response = requests.post(url=self.url_base, json=request_body_content)
89+
90+
return ResponseTreat().treatment(response, pretty_response)
91+
92+
def delete_file(self, filename, pretty_response=True):
93+
if pretty_response:
94+
print("\n----------" + " DELETE FILE " + filename + " ----------")
95+
96+
self.asyncronous_wait.wait(filename, pretty_response)
97+
98+
request_url = self.url_base + "/" + filename
99+
response = requests.delete(url=request_url)
100+
101+
return ResponseTreat().treatment(response, pretty_response)
102+
103+
104+
class Projection:
105+
PROJECTION_PORT = "5001"
106+
107+
def __init__(self):
108+
global cluster_url
109+
self.url_base = cluster_url + ":" + self.PROJECTION_PORT + "/projections"
110+
111+
self.asyncronous_wait = AsyncronousWait()
112+
113+
def create_projection(
114+
self, filename, projection_filename, fields, pretty_response=True
115+
):
116+
if pretty_response:
117+
print(
118+
"\n----------"
119+
+ " CREATE PROJECTION FROM "
120+
+ filename
121+
+ " TO "
122+
+ projection_filename
123+
+ " ----------"
124+
)
125+
126+
self.asyncronous_wait.wait(filename, pretty_response)
127+
128+
request_body_content = {
129+
"projection_filename": projection_filename,
130+
"fields": fields,
131+
}
132+
request_url = self.url_base + "/" + filename
133+
response = requests.post(url=request_url, json=request_body_content)
134+
135+
return ResponseTreat().treatment(response, pretty_response)
136+
137+
138+
class Histogram:
139+
HISTOGRAM_PORT = "5004"
140+
141+
def __init__(self):
142+
global cluster_url
143+
self.url_base = cluster_url + ":" + self.HISTOGRAM_PORT + "/histograms"
144+
145+
self.asyncronous_wait = AsyncronousWait()
146+
147+
def create_histogram(
148+
self, filename, histogram_filename, fields, pretty_response=True
149+
):
150+
if pretty_response:
151+
print(
152+
"\n----------"
153+
+ " CREATE HISTOGRAM FROM "
154+
+ filename
155+
+ " TO "
156+
+ histogram_filename
157+
+ " ----------"
158+
)
159+
160+
self.asyncronous_wait.wait(filename, pretty_response)
161+
162+
request_body_content = {
163+
"histogram_filename": histogram_filename,
164+
"fields": fields,
165+
}
166+
request_url = self.url_base + "/" + filename
167+
response = requests.post(url=request_url, json=request_body_content)
168+
169+
return ResponseTreat().treatment(response, pretty_response)
170+
171+
172+
class Tsne:
173+
TSNE_PORT = "5005"
174+
175+
def __init__(self):
176+
global cluster_url
177+
self.url_base = cluster_url + ":" + self.TSNE_PORT + "/images"
178+
179+
self.asyncronous_wait = AsyncronousWait()
180+
181+
def create_image_plot(
182+
self, tsne_filename, parent_filename, label_name=None, pretty_response=True
183+
):
184+
if pretty_response:
185+
print(
186+
"\n----------"
187+
+ " CREATE t-SNE IMAGE PLOT FROM "
188+
+ parent_filename
189+
+ " TO "
190+
+ tsne_filename
191+
+ " ----------"
192+
)
193+
194+
self.asyncronous_wait.wait(parent_filename, pretty_response)
195+
196+
request_body_content = {
197+
"tsne_filename": tsne_filename,
198+
"label_name": label_name,
199+
}
200+
request_url = self.url_base + "/" + parent_filename
201+
response = requests.post(url=request_url, json=request_body_content)
202+
203+
return ResponseTreat().treatment(response, pretty_response)
204+
205+
def delete_image_plot(self, tsne_filename, pretty_response=True):
206+
if pretty_response:
207+
print(
208+
"\n----------"
209+
+ " DELETE "
210+
+ tsne_filename
211+
+ " t-SNE IMAGE PLOT "
212+
+ "----------"
213+
)
214+
215+
request_url = self.url_base + "/" + tsne_filename
216+
response = requests.delete(url=request_url)
217+
218+
return ResponseTreat().treatment(response, pretty_response)
219+
220+
def read_image_plot_filenames(self, pretty_response=True):
221+
if pretty_response:
222+
print("\n---------- READE IMAGE PLOT FILENAMES " + " ----------")
223+
224+
request_url = self.url_base
225+
response = requests.get(url=request_url)
226+
227+
return ResponseTreat().treatment(response, pretty_response)
228+
229+
def read_image_plot(self, tsne_filename, pretty_response=True):
230+
if pretty_response:
231+
print(
232+
"\n----------"
233+
+ " READ "
234+
+ tsne_filename
235+
+ " t-SNE IMAGE PLOT "
236+
+ "----------"
237+
)
238+
239+
request_url = self.url_base + "/" + tsne_filename
240+
return request_url
241+
242+
243+
class Pca:
244+
PCA_PORT = "5006"
245+
246+
def __init__(self):
247+
global cluster_url
248+
self.url_base = cluster_url + ":" + self.PCA_PORT + "/images"
249+
250+
self.asyncronous_wait = AsyncronousWait()
251+
252+
def create_image_plot(
253+
self, pca_filename, parent_filename, label_name=None, pretty_response=True
254+
):
255+
if pretty_response:
256+
print(
257+
"\n----------"
258+
+ " CREATE PCA IMAGE PLOT FROM "
259+
+ parent_filename
260+
+ " TO "
261+
+ pca_filename
262+
+ " ----------"
263+
)
264+
265+
self.asyncronous_wait.wait(parent_filename, pretty_response)
266+
267+
request_body_content = {"pca_filename": pca_filename, "label_name": label_name}
268+
request_url = self.url_base + "/" + parent_filename
269+
response = requests.post(url=request_url, json=request_body_content)
270+
271+
return ResponseTreat().treatment(response, pretty_response)
272+
273+
def delete_image_plot(self, pca_filename, pretty_response=True):
274+
if pretty_response:
275+
print(
276+
"\n----------"
277+
+ " DELETE "
278+
+ pca_filename
279+
+ " PCA IMAGE PLOT "
280+
+ "----------"
281+
)
282+
283+
request_url = self.url_base + "/" + pca_filename
284+
response = requests.delete(url=request_url)
285+
286+
return ResponseTreat().treatment(response, pretty_response)
287+
288+
def read_image_plot_filenames(self, pretty_response=True):
289+
if pretty_response:
290+
print("\n---------- READE IMAGE PLOT FILENAMES " + " ----------")
291+
292+
request_url = self.url_base
293+
response = requests.get(url=request_url)
294+
295+
return ResponseTreat().treatment(response, pretty_response)
296+
297+
def read_image_plot(self, pca_filename, pretty_response=True):
298+
if pretty_response:
299+
print(
300+
"\n----------"
301+
+ " READ "
302+
+ pca_filename
303+
+ " PCA IMAGE PLOT "
304+
+ "----------"
305+
)
306+
307+
request_url = self.url_base + "/" + pca_filename
308+
return request_url
309+
310+
311+
class DataTypeHandler:
312+
DATA_TYPE_HANDLER_PORT = "5003"
313+
314+
def __init__(self):
315+
global cluster_url
316+
self.url_base = cluster_url + ":" + self.DATA_TYPE_HANDLER_PORT + "/fieldtypes"
317+
self.asyncronous_wait = AsyncronousWait()
318+
319+
def change_file_type(self, filename, fields_dict, pretty_response=True):
320+
if pretty_response:
321+
print("\n----------" + " CHANGE " + filename + " FILE TYPE " + "----------")
322+
323+
self.asyncronous_wait.wait(filename, pretty_response)
324+
325+
url_request = self.url_base + "/" + filename
326+
327+
response = requests.patch(url=url_request, json=fields_dict)
328+
329+
return ResponseTreat().treatment(response, pretty_response)
330+
331+
332+
class Model:
333+
MODEL_BUILDER_PORT = "5002"
334+
335+
def __init__(self):
336+
global cluster_url
337+
self.url_base = cluster_url + ":" + self.MODEL_BUILDER_PORT + "/models"
338+
self.asyncronous_wait = AsyncronousWait()
339+
340+
def create_model(
341+
self,
342+
training_filename,
343+
test_filename,
344+
preprocessor_code,
345+
model_classificator,
346+
pretty_response=True,
347+
):
348+
if pretty_response:
349+
print(
350+
"\n----------"
351+
+ " CREATE MODEL WITH "
352+
+ training_filename
353+
+ " AND "
354+
+ test_filename
355+
+ " ----------"
356+
)
357+
358+
self.asyncronous_wait.wait(training_filename, pretty_response)
359+
self.asyncronous_wait.wait(test_filename, pretty_response)
360+
361+
request_body_content = {
362+
"training_filename": training_filename,
363+
"test_filename": test_filename,
364+
"preprocessor_code": preprocessor_code,
365+
"classificators_list": model_classificator,
366+
}
367+
368+
response = requests.post(url=self.url_base, json=request_body_content)
369+
370+
return ResponseTreat().treatment(response, pretty_response)

0 commit comments

Comments
 (0)