forked from 3wordchant/capsul-flask
hub allocate capsul IP addr when the create operation is being claimed
create.sh will now be passed two extra arguments from the web app: network_name and public_ipv4_address network_name will be virbr1 or virbr2 or whatever the network is called and public_ipv4_address will be an ipv4 from that network which is not currently being used
This commit is contained in:
@ -56,8 +56,12 @@ class DBModel:
|
||||
|
||||
# ------ VM & ACCOUNT MANAGEMENT ---------
|
||||
|
||||
def all_non_deleted_vms_by_host_and_network(self):
|
||||
self.cursor.execute("SELECT id, host, network_name, public_ipv4, public_ipv6 FROM vms WHERE deleted IS NULL")
|
||||
def non_deleted_vms_by_host_and_network(self, host_id):
|
||||
query = "SELECT id, host, network_name, public_ipv4, public_ipv6 FROM vms WHERE deleted IS NULL"
|
||||
if host_id is None:
|
||||
self.cursor.execute(query)
|
||||
else:
|
||||
self.cursor.execute(f"{query} AND host = %s", (host_id))
|
||||
|
||||
hosts = dict()
|
||||
for row in self.cursor.fetchall():
|
||||
@ -318,11 +322,15 @@ class DBModel:
|
||||
|
||||
# ------ HOSTS ---------
|
||||
|
||||
def list_hosts_with_networks(self):
|
||||
self.cursor.execute("""
|
||||
def list_hosts_with_networks(self, host_id: str):
|
||||
query = """
|
||||
SELECT hosts.id, hosts.last_health_check, host_network.network_name, host_network.public_ipv4_cidr_block FROM hosts
|
||||
JOIN host_network ON host_network.host = hosts.id
|
||||
""")
|
||||
"""
|
||||
if host_id is None:
|
||||
self.cursor.execute(query)
|
||||
else:
|
||||
self.cursor.execute(f"{query} WHERE hosts.id = %s", (host_id))
|
||||
|
||||
hosts = dict()
|
||||
for row in self.cursor.fetchall():
|
||||
@ -379,6 +387,13 @@ class DBModel:
|
||||
self.connection.commit()
|
||||
return operation_id
|
||||
|
||||
def update_operation(self, operation_id: int, payload: str):
|
||||
self.cursor.execute(
|
||||
"UPDATE operations SET payload = %s WHERE id = %s",
|
||||
(payload, operation_id)
|
||||
)
|
||||
self.connection.commit()
|
||||
|
||||
def update_host_operation(self, host_id: str, operation_id: int, assignment_status: str, result: str):
|
||||
if assignment_status and not result:
|
||||
self.cursor.execute(
|
||||
@ -405,9 +420,20 @@ class DBModel:
|
||||
else:
|
||||
return None
|
||||
|
||||
def host_operation_exists(self, operation_id: int, host_id: str) -> bool:
|
||||
self.cursor.execute("SELECT operation FROM host_operation WHERE host = %s AND operation = %s",(host_id, operation_id))
|
||||
return len(self.cursor.fetchall()) != 0
|
||||
def get_payload_json_from_host_operation(self, operation_id: int, host_id: str) -> str:
|
||||
self.cursor.execute(
|
||||
"""
|
||||
SELECT operations.payload FROM operations
|
||||
JOIN host_operation ON host_operation.operation = operations.id
|
||||
WHERE host_operation.host = %s AND host_operation.operation = %s
|
||||
""",
|
||||
(host_id, operation_id)
|
||||
)
|
||||
row = self.cursor.fetchone()
|
||||
if row:
|
||||
return row[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
def claim_operation(self, operation_id: int, host_id: str) -> bool:
|
||||
# have to make a new cursor to set isolation level
|
||||
|
Reference in New Issue
Block a user