mirror of
				https://github.com/ComputerScienceHouse/proxstar.git
				synced 2025-03-09 15:40:09 +00:00 
			
		
		
		
	add hourly cleanup of vnc pipelines
This commit is contained in:
		
							parent
							
								
									7166650a4a
								
							
						
					
					
						commit
						e5e54d1239
					
				
					 4 changed files with 19 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -2,6 +2,7 @@ from os import environ
 | 
			
		|||
 | 
			
		||||
# Proxstar
 | 
			
		||||
VM_EXPIRE_MONTHS = int(environ.get('PROXSTAR_VM_EXPIRE_MONTHS', '3'))
 | 
			
		||||
VNC_CLEANUP_TOKEN = environ.get('PROXSTAR_VNC_CLEANUP_TOKEN', '')
 | 
			
		||||
 | 
			
		||||
# Flask
 | 
			
		||||
IP = environ.get('PROXSTAR_IP', '0.0.0.0')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -75,6 +75,13 @@ if 'process_expiring_vms' not in scheduler:
 | 
			
		|||
    scheduler.cron(
 | 
			
		||||
        '0 5 * * *', id='process_expiring_vms', func=process_expiring_vms_task)
 | 
			
		||||
 | 
			
		||||
if 'cleanup_vnc' not in scheduler:
 | 
			
		||||
    scheduler.schedule(
 | 
			
		||||
        id='cleanup_vnc',
 | 
			
		||||
        scheduled_time=datetime.datetime.utcnow(),
 | 
			
		||||
        func=cleanup_vnc_task,
 | 
			
		||||
        interval=3600)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.route("/")
 | 
			
		||||
@app.route("/user/<string:user_view>")
 | 
			
		||||
| 
						 | 
				
			
			@ -457,10 +464,9 @@ def allowed_users(user):
 | 
			
		|||
        return '', 403
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.route("/console/cleanup")
 | 
			
		||||
@auth.oidc_auth
 | 
			
		||||
@app.route("/console/cleanup", methods=['POST'])
 | 
			
		||||
def cleanup_vnc():
 | 
			
		||||
    if 'rtp' in session['userinfo']['groups']:
 | 
			
		||||
    if request.form['token'] == app.config['VNC_CLEANUP_TOKEN']:
 | 
			
		||||
        for target in get_vnc_targets():
 | 
			
		||||
            tunnel = next((tunnel for tunnel in ssh_tunnels
 | 
			
		||||
                           if tunnel.local_bind_port == int(target['port'])),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
import os
 | 
			
		||||
import requests
 | 
			
		||||
import paramiko
 | 
			
		||||
from flask import Flask
 | 
			
		||||
from sqlalchemy import create_engine
 | 
			
		||||
| 
						 | 
				
			
			@ -161,3 +162,10 @@ def setup_template(template_id, name, user, password, cores, memory):
 | 
			
		|||
        exit_status = stdout.channel.recv_exit_status()
 | 
			
		||||
        client.close()
 | 
			
		||||
        print("[{}] Template successfully provisioned.".format(name))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cleanup_vnc_task():
 | 
			
		||||
    requests.post(
 | 
			
		||||
        'https://proxstar.csh.rit.edu/console/cleanup',
 | 
			
		||||
        data={'token': app.config['VNC_CLEANUP_TOKEN']},
 | 
			
		||||
        verify=False)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,3 +13,4 @@ paramiko
 | 
			
		|||
websockify
 | 
			
		||||
sshtunnel
 | 
			
		||||
psutil
 | 
			
		||||
requests
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue