Skip to content
Snippets Groups Projects

Remove truncate and add on conflict clause instead

Merged Jonah Husson requested to merge hotfix/remove-truncate into master
All threads resolved!
Compare and Show latest version
1 file
+ 12
10
Compare changes
  • Side-by-side
  • Inline
+ 12
10
@@ -104,6 +104,7 @@ def main():
@@ -104,6 +104,7 @@ def main():
to_add = new_auth_set.difference(auth_nids)
to_add = new_auth_set.difference(auth_nids)
to_delete = auth_nids.difference(new_auth_set)
to_delete = auth_nids.difference(new_auth_set)
to_revoke = set_authorizer_nodes(auth_conn, to_add, to_delete)
to_revoke = set_authorizer_nodes(auth_conn, to_add, to_delete)
 
log.info(f"To revoke: {to_revoke}") # TODO: remove me
auth_nids = new_auth_set
auth_nids = new_auth_set
revoke_auth(to_revoke)
revoke_auth(to_revoke)
@@ -232,12 +233,10 @@ def revoke_auth(to_revoke):
@@ -232,12 +233,10 @@ def revoke_auth(to_revoke):
for node_ip in to_revoke:
for node_ip in to_revoke:
cmd = f"sudo nft -a list chain inet filter input | grep '{node_ip}' | awk -F'handle ' '{{print $2}}' | xargs -Ixxx sudo nft delete rule inet filter input handle xxx"
cmd = f"sudo nft -a list chain inet filter input | grep '{node_ip}' | awk -F'handle ' '{{print $2}}' | xargs -Ixxx sudo nft delete rule inet filter input handle xxx"
log.info(f"Running revoke command: {cmd}")
log.info(f"Running revoke command: {cmd}")
p = subprocess.Popen(cmd.split())
p = subprocess.Popen(['/bin/bash', '-c', cmd])
output, error = p.communicate()
p.wait(5)
if output:
if p.returncode != 0:
log.debug(output)
raise OSError(f"Revoke command exited with return code {p.returncode}")
if error:
raise IOError(error)
def id_to_reg_code(cmix_id):
def id_to_reg_code(cmix_id):
@@ -708,16 +707,19 @@ def set_authorizer_nodes(conn, to_add, to_delete):
@@ -708,16 +707,19 @@ def set_authorizer_nodes(conn, to_add, to_delete):
# Convert Node information into authorizer insert command
# Convert Node information into authorizer insert command
node_list = get_authorizer_nodes(conn)
node_list = get_authorizer_nodes(conn)
 
log.info(f"Current authorizer nodes: {node_list}") # TODO: remove me
to_revoke = []
to_revoke = []
delete_command = "DELETE FROM nodes WHERE id = %s;"
delete_command = "DELETE FROM nodes WHERE id = %s;"
for row in node_list:
for row in node_list:
if bytes(row[0]) in to_delete:
if bytes(row[0]) in to_delete:
 
log.info(f"Deleting {row[0]} [{row[1]}] - last updated in DB at {row[2]}") # TODO: remove me
try:
try:
cur.execute(delete_command, (row[0],))
cur.execute(delete_command, (row[0],))
log.debug(cur.query)
log.debug(cur.query)
except Exception as e:
except Exception as e:
log.error(f"Failed to remove node from authorizer DB: {cur.query}")
log.error(f"Failed to remove node from authorizer DB: {cur.query}")
 
cur.close()
raise e
raise e
if row[1]:
if row[1]:
to_revoke.append(row[1])
to_revoke.append(row[1])
@@ -726,18 +728,18 @@ def set_authorizer_nodes(conn, to_add, to_delete):
@@ -726,18 +728,18 @@ def set_authorizer_nodes(conn, to_add, to_delete):
insert_list = [(i, None, None) for i in to_add]
insert_list = [(i, None, None) for i in to_add]
# Insert Node information into authorizer db
# Insert Node information into authorizer db
insert_command = "INSERT INTO nodes (id, ip_address, last_updated) VALUES" + \
insert_command = "INSERT INTO nodes (id, ip_address, last_updated) VALUES" + \
(' (%s, %s, %s),' * len(insert_list))
(' (%s, %s, %s),' * len(insert_list))
insert_command = insert_command[:-1] + " ON CONFLICT DO NOTHING;"
insert_command = insert_command[:-1] + " ON CONFLICT DO NOTHING;"
try:
try:
cur.execute(insert_command, [e for l in insert_list for e in l])
cur.execute(insert_command, [e for l in insert_list for e in l])
log.debug(cur.query)
log.debug(cur.query)
conn.commit()
except Exception as e:
except Exception as e:
log.error(f"Failed to insert into authorizer db: {cur.query}")
log.error(f"Failed to insert into authorizer db: {cur.query}")
raise e
finally:
cur.close()
cur.close()
 
raise e
 
conn.commit()
 
cur.close()
return to_revoke
return to_revoke
Loading