starting work on hub mode and spoke mode -- implemented hub model

This commit is contained in:
2021-01-02 17:10:01 -06:00
parent d8d6124005
commit c59dc21ba6
8 changed files with 563 additions and 26 deletions

View File

@ -2,6 +2,7 @@
from nanoid import generate
from flask import current_app
from typing import List
from capsulflask.hub_model import HTTPResult
class OnlineHost:
def __init__(self, id: str, url: str):
@ -284,7 +285,7 @@ class DBModel:
self.cursor.execute("SELECT id, https_url FROM hosts WHERE last_health_check > NOW() - INTERVAL '10 seconds'")
return list(map(lambda x: OnlineHost(id=x[0], url=x[1]), self.cursor.fetchall()))
def create_operation(self, online_hosts: List[OnlineHost], email: str, payload: str) -> None:
def create_operation(self, online_hosts: List[OnlineHost], email: str, payload: str) -> int:
self.cursor.execute( "INSERT INTO operations (email, payload) VALUES (%s, %s) RETURNING id", (email, payload) )
operation_id = self.cursor.fetchone()[0]
@ -293,6 +294,22 @@ class DBModel:
self.cursor.execute( "INSERT INTO host_operation (host, operation) VALUES (%s, %s)", (host.id, operation_id) )
self.connection.commit()
return operation_id
def update_host_operation(self, host_id: str, operation_id: int, assignment_status: str):
self.cursor.execute(
"UPDATE host_operation SET assignment_status = %s WHERE host = %s AND operation = %s",
(assignment_status, host_id, operation_id)
)
self.connection.commit()
def host_of_capsul(self, capsul_id: str):
self.cursor.execute("SELECT host from vms where id = %s", (capsul_id,))
row = self.cursor.fetchone()
if row:
return row[0]
else:
return None