Remove target from targets file in tasks

This probably isn't necessary and will probably error out....
This commit is contained in:
Will Nilges 2022-08-12 00:42:53 -04:00
parent 433c845a35
commit 125d7fae51
3 changed files with 17 additions and 6 deletions

View file

@ -253,8 +253,8 @@ def vm_power(vmid, action):
if user.rtp or int(vmid) in user.allowed_vms:
vm = VM(vmid)
vnc_token_key = f'vnc_token|{vmid}'
vnc_token = redis_conn.get(vnc_token_key).decode('utf-8') # For deleting the token from redis later
print(f'vnc_token = {vnc_token}')
# For deleting the token from redis later
vnc_token = redis_conn.get(vnc_token_key).decode('utf-8')
if action == 'start':
vmconfig = vm.config
usage_check = user.check_usage(vmconfig['cores'], vmconfig['memory'], 0)
@ -295,7 +295,7 @@ def vm_console(vmid):
)
node = f'{vm.node}.csh.rit.edu'
token = add_vnc_target(node, vnc_port)
redis_conn.set(f'vnc_token|{vmid}', str(token)) # Store the VNC token in Redis.
redis_conn.set(f'vnc_token|{vmid}', str(token)) # Store the VNC token in Redis.
return {
'host': app.config['VNC_HOST'],
'port': app.config['VNC_PORT'],

View file

@ -23,6 +23,7 @@ from proxstar.proxmox import connect_proxmox, get_pools
from proxstar.starrs import get_next_ip, register_starrs, delete_starrs
from proxstar.user import User, get_vms_for_rtp
from proxstar.vm import VM, clone_vm, create_vm
from proxstar.vnc import delete_vnc_target
logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
@ -33,6 +34,7 @@ else:
config = os.path.join(app.config.get('ROOT_DIR', os.getcwd()), 'config.py')
app.config.from_pyfile(config)
def connect_db():
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
Base.metadata.bind = engine
@ -150,7 +152,16 @@ def process_expiring_vms_task():
vm.name, vm.id
)
)
# send_stop_ssh_tunnel(vm.id) # TODO (willnilges): Remove target from targets file
try:
redis_conn = Redis(app.config['REDIS_HOST'], app.config['REDIS_PORT'])
vmid = vm['vmid']
vnc_token_key = f'vnc_token|{vmid}'
vnc_token = redis_conn.get(vnc_token_key).decode('utf-8')
delete_vnc_target(token=vnc_token)
redis_conn.delete(vnc_token_key)
except Exception as e: # pylint: disable=W0703
print(f'ERROR: Could not delete target from targets file: {e}')
delete_vm_task(vm.id)
if expiring_vms:
send_vm_expire_email(pool, expiring_vms)

View file

@ -63,7 +63,7 @@ def delete_vnc_target(node=None, port=None, token=None):
elif token is not None:
target = next((target for target in targets if target['token'] == f'{token}'), None)
else:
raise ValueError("Need either a node and port, or a token.")
raise ValueError('Need either a node and port, or a token.')
if target:
targets.remove(target)
target_file = open(app.config['WEBSOCKIFY_TARGET_FILE'], 'w')
@ -71,7 +71,7 @@ def delete_vnc_target(node=None, port=None, token=None):
target_file.write(f"{target['token']}: {target['host']}\n")
target_file.close()
else:
raise LookupError("Target does not exist")
raise LookupError('Target does not exist')
def open_vnc_session(vmid, node, proxmox_user, proxmox_pass):