Moibe commited on
Commit
817b819
·
1 Parent(s): bc4002b

All Quota Related Ok!

Browse files
Files changed (5) hide show
  1. avaimet.py +34 -1
  2. funciones.py +37 -2
  3. globales.py +1 -0
  4. main.py +25 -0
  5. nycklar/nodes.py +2 -1
avaimet.py CHANGED
@@ -3,6 +3,7 @@ import tools
3
  import paramiko
4
  import nycklar.nodes as nodes
5
 
 
6
  #AVAIMET CONTIENE LAS FUNCIONES QUE INTERACTUAN CON EL SERVIDOR REMOTO.
7
  def conecta():
8
 
@@ -13,14 +14,16 @@ def conecta():
13
  #Future: Para usar ésto el método connnect necesitaría aceptar la pk como var string.
14
  #go = os.getenv("go")
15
 
 
 
16
 
17
  #Ahora obtendremos nuestra secret key para poder entrar a ese servidor.
18
  project_dir = os.getcwd()
19
- print("Ésto es project dir: ", project_dir)
20
  #Ruta de go.
21
  key_filename = os.path.join(project_dir, "nycklar", "go")
22
 
23
  ssh.connect(nodes.realm, username=nodes.master, key_filename=key_filename)
 
24
  sftp = ssh.open_sftp()
25
 
26
  return ssh, sftp
@@ -119,6 +122,36 @@ def restaToken(sftp, caja, tokens, work):
119
  # Escribir el contenido final en el archivo
120
  archivo.write(contenido_final)
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  contenido_final = int(contenido_final)
123
  return contenido_final
124
 
 
3
  import paramiko
4
  import nycklar.nodes as nodes
5
 
6
+
7
  #AVAIMET CONTIENE LAS FUNCIONES QUE INTERACTUAN CON EL SERVIDOR REMOTO.
8
  def conecta():
9
 
 
14
  #Future: Para usar ésto el método connnect necesitaría aceptar la pk como var string.
15
  #go = os.getenv("go")
16
 
17
+ #llave = paramiko.RSAKey(data=base64.b64decode(nycklar.go.texto))
18
+ #clientPrivateKey = paramiko.RSAKey.from_private_key(nycklar.go.texto)
19
 
20
  #Ahora obtendremos nuestra secret key para poder entrar a ese servidor.
21
  project_dir = os.getcwd()
 
22
  #Ruta de go.
23
  key_filename = os.path.join(project_dir, "nycklar", "go")
24
 
25
  ssh.connect(nodes.realm, username=nodes.master, key_filename=key_filename)
26
+ #ssh.connect(nodes.realm, username=nodes.master, pkey=llave)
27
  sftp = ssh.open_sftp()
28
 
29
  return ssh, sftp
 
122
  # Escribir el contenido final en el archivo
123
  archivo.write(contenido_final)
124
 
125
+ contenido_final = int(contenido_final)
126
+ return
127
+
128
+ def modificaQuota(sftp, dir_quota, quota, costo_proceso):
129
+
130
+ print("Éste es quota: ", quota)
131
+ print("Éste es costo_proceso: ", costo_proceso)
132
+
133
+ #Standard cost.
134
+ #cuantos = 30
135
+
136
+ #Aplica reglas de quotas dinámicas.
137
+ # if work == 'picswap':
138
+ # cuantos = 1
139
+ # print(f"Work: {work}, tokens cost: {cuantos}")
140
+ # else:
141
+ # print("The work specified doesn't exists.")
142
+
143
+ # Agregar el texto "- Revisado." al string
144
+ contenido_final = int(quota) - int(costo_proceso)
145
+ contenido_final = str(contenido_final)
146
+
147
+ # Imprimir el contenido
148
+ print(contenido_final)
149
+
150
+ #Actualiza el nuevo valor en el servidor en modo escritura.
151
+ with sftp.open(dir_quota, 'w') as archivo:
152
+ # Escribir el contenido final en el archivo
153
+ archivo.write(contenido_final)
154
+
155
  contenido_final = int(contenido_final)
156
  return contenido_final
157
 
funciones.py CHANGED
@@ -75,13 +75,48 @@ def debitTokens(userfile, work, env):
75
 
76
  return resultado_debitado
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
 
80
  def getUserNovelty(userfile, aplicacion):
81
 
82
- #print("Estoy en getUserNovelty")
83
  usuario = tools.decompileUser(userfile)
84
- #print("El usuario es...", usuario)
85
 
86
  #Genera conexión inicial (general para cualquier función.)
87
  sshListo, sftpListo = avaimet.conecta()
 
75
 
76
  return resultado_debitado
77
 
78
+ def getQuota():
79
+
80
+ print(f"Estoy en getQuota...")
81
+
82
+ #Genera conexión inicial.
83
+ sshListo, sftpListo = avaimet.conecta()
84
+ dir_quota = nodes.quota + globales.quota
85
+ print("Ésto es dir quota: ", dir_quota)
86
+
87
+ #Obtiene el json con los datos.
88
+ data = avaimet.obtenContenidoArchivo(sftpListo, dir_quota)
89
+ print("Y ésto es data: ", data)
90
+ #Cierra la conexión.
91
+ avaimet.cierraConexion(sshListo, sftpListo)
92
+
93
+ return data
94
+
95
+ def updateQuota(costo_proceso):
96
+
97
+ print(f"Estoy en updateQuota...")
98
+
99
+ #Genera conexión inicial.
100
+ sshListo, sftpListo = avaimet.conecta()
101
+ dir_quota = nodes.quota + globales.quota
102
+ print("Ésto es dir quota: ", dir_quota)
103
+
104
+ #Obtiene el json con los datos.
105
+ quota_actual = avaimet.obtenContenidoArchivo(sftpListo, dir_quota)
106
+ print("Y ésto es data: ", quota_actual)
107
+
108
+ #Aplica las reglas de ésta app para debitar lo correspondiente.
109
+ quota_modificada = avaimet.modificaQuota(sftpListo, dir_quota, quota_actual, costo_proceso)
110
+ #Cierra la conexión.
111
+ avaimet.cierraConexion(sshListo, sftpListo)
112
+
113
+ return quota_modificada
114
+
115
 
116
 
117
  def getUserNovelty(userfile, aplicacion):
118
 
 
119
  usuario = tools.decompileUser(userfile)
 
120
 
121
  #Genera conexión inicial (general para cualquier función.)
122
  sshListo, sftpListo = avaimet.conecta()
globales.py CHANGED
@@ -1,2 +1,3 @@
1
  novelty = "/novelty.py"
2
  data = "/data.py"
 
 
1
  novelty = "/novelty.py"
2
  data = "/data.py"
3
+ quota = "/quota.txt"
main.py CHANGED
@@ -60,6 +60,31 @@ def debitTokens(userfile: str, work: str = "picswap", env: str = "dev"):
60
  tokens = funciones.debitTokens(userfile,work, env)
61
  return tokens
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  ## GET USER Novelty ##
64
  #Vía Parámeters
65
  @app.get("/getUserNovelty/{userfile}/{aplicacion}")
 
60
  tokens = funciones.debitTokens(userfile,work, env)
61
  return tokens
62
 
63
+ ## CONTROL QUOTA ##
64
+ #Vía Parámeters
65
+ @app.get("/getQuota/")
66
+ def getQuota():
67
+ quota = funciones.getQuota()
68
+ return quota
69
+
70
+ #Vía Query
71
+ @app.get("/getQuota/")
72
+ def getQuota():
73
+ quota = funciones.getQuota()
74
+ return quota
75
+
76
+ #Vía Parámeters
77
+ @app.get("/updateQuota/{costo_proceso}")
78
+ def updateQuota(costo_proceso: int):
79
+ quota = funciones.updateQuota(costo_proceso)
80
+ return quota
81
+
82
+ #Vía Query
83
+ @app.get("/updateQuota/")
84
+ def updateQuota(costo_proceso: int):
85
+ quota = funciones.updateQuota(costo_proceso)
86
+ return quota
87
+
88
  ## GET USER Novelty ##
89
  #Vía Parámeters
90
  @app.get("/getUserNovelty/{userfile}/{aplicacion}")
nycklar/nodes.py CHANGED
@@ -2,4 +2,5 @@ master = "root"
2
  realm = "165.22.53.200"
3
  key=b'kiSHsm7Y0hbyNdcFIav6OMT39gi29nIzT-rCrr0Tyc8=' #importante conn con server no es decompiler.
4
  users_data = "chips/sulkusers-data/"
5
- users_credits = "chips/sulkusers-credits/"
 
 
2
  realm = "165.22.53.200"
3
  key=b'kiSHsm7Y0hbyNdcFIav6OMT39gi29nIzT-rCrr0Tyc8=' #importante conn con server no es decompiler.
4
  users_data = "chips/sulkusers-data/"
5
+ users_credits = "chips/sulkusers-credits/"
6
+ quota = "chips/sulku-quota"