mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Add RenderClient object to DB for client tracking
This commit is contained in:
@@ -50,8 +50,8 @@ def index():
|
||||
presets = yaml.load(f, Loader=yaml.FullLoader)
|
||||
|
||||
return render_template('index.html', all_jobs=sorted_jobs(RenderQueue.all_jobs()),
|
||||
hostname=RenderQueue.host_name, renderer_info=renderer_info(),
|
||||
render_clients=RenderQueue.render_clients, preset_list=presets)
|
||||
hostname=RenderQueue.hostname, renderer_info=renderer_info(),
|
||||
render_clients=render_clients(), preset_list=presets)
|
||||
|
||||
|
||||
@server.route('/ui/job/<job_id>/full_details')
|
||||
@@ -64,7 +64,7 @@ def job_detail(job_id):
|
||||
media_basename = os.path.basename(found_job.file_list()[0])
|
||||
media_url = f"/api/job/{job_id}/file/{media_basename}"
|
||||
return render_template('details.html', detail_table=table_html, media_url=media_url,
|
||||
hostname=RenderQueue.host_name, job_status=found_job.render_status().value.title(),
|
||||
hostname=RenderQueue.hostname, job_status=found_job.render_status().value.title(),
|
||||
job=found_job, renderer_info=renderer_info())
|
||||
|
||||
|
||||
@@ -166,20 +166,18 @@ def download_all(job_id):
|
||||
@server.post('/api/register_client')
|
||||
def register_client():
|
||||
client_hostname = request.values['hostname']
|
||||
x = RenderQueue.register_client(client_hostname)
|
||||
return "Success" if x else "Fail"
|
||||
return RenderQueue.register_client(client_hostname)
|
||||
|
||||
|
||||
@server.post('/api/unregister_client')
|
||||
def unregister_client():
|
||||
client_hostname = request.values['hostname']
|
||||
x = RenderQueue.unregister_client(client_hostname)
|
||||
return "Success" if x else "Fail"
|
||||
return RenderQueue.unregister_client(client_hostname)
|
||||
|
||||
|
||||
@server.get('/api/clients')
|
||||
def render_clients():
|
||||
return RenderQueue.render_clients
|
||||
return [c.hostname for c in RenderQueue.render_clients()]
|
||||
|
||||
|
||||
@server.get('/api/presets')
|
||||
@@ -194,9 +192,9 @@ def full_status():
|
||||
full_results = {'timestamp': datetime.now().isoformat(), 'servers': {}}
|
||||
|
||||
try:
|
||||
for client_hostname in RenderQueue.render_clients:
|
||||
for client_hostname in render_clients():
|
||||
is_online = False
|
||||
if client_hostname == RenderQueue.host_name:
|
||||
if client_hostname == RenderQueue.hostname:
|
||||
snapshot_results = snapshot()
|
||||
is_online = True
|
||||
else:
|
||||
@@ -301,7 +299,7 @@ def add_job(job_params, remove_job_dir_on_failure=False):
|
||||
output_path = job_params.get("output_path", None)
|
||||
priority = int(job_params.get('priority', 2))
|
||||
args = job_params.get('args', {})
|
||||
client = job_params.get('client', None) or RenderQueue.host_name
|
||||
client = job_params.get('client', None) or RenderQueue.hostname
|
||||
force_start = job_params.get('force_start', False)
|
||||
custom_id = None
|
||||
job_dir = None
|
||||
@@ -313,7 +311,7 @@ def add_job(job_params, remove_job_dir_on_failure=False):
|
||||
return {'error': err_msg, 'code': 400}
|
||||
|
||||
# local renders
|
||||
if client == RenderQueue.host_name:
|
||||
if client == RenderQueue.hostname:
|
||||
logger.info(f"Creating job locally - {name if name else input_path}")
|
||||
try:
|
||||
render_job = ScheduledJob(renderer, input_path, output_path, args, priority, job_owner, client,
|
||||
@@ -327,16 +325,13 @@ def add_job(job_params, remove_job_dir_on_failure=False):
|
||||
return {'error': err_msg, 'code': 400}
|
||||
|
||||
# client renders
|
||||
elif client in RenderQueue.render_clients:
|
||||
|
||||
# see if host is available
|
||||
if RenderQueue.is_client_available(client):
|
||||
|
||||
elif client in RenderQueue.render_clients():
|
||||
if client.is_available():
|
||||
# call uploader on remote client
|
||||
try:
|
||||
logger.info(f"Uploading file {input_path} to client {client}")
|
||||
job_data = request.json
|
||||
response = post_job_to_server(input_path, job_data, client)
|
||||
response = post_job_to_server(input_path, job_data, client.hostname)
|
||||
if response.ok:
|
||||
logger.info("Job submitted successfully!")
|
||||
return response.json() if response.json() else "Job ok"
|
||||
@@ -382,16 +377,9 @@ def delete_job(job_id):
|
||||
if not request.args.get('confirm', False):
|
||||
return 'Confirmation required to delete job', 400
|
||||
|
||||
# First, remove all render files and logs
|
||||
found_job = RenderQueue.job_with_id(job_id)
|
||||
files_to_delete = found_job.file_list()
|
||||
files_to_delete.append(found_job.log_path())
|
||||
for d in files_to_delete:
|
||||
if os.path.exists(d):
|
||||
os.remove(d)
|
||||
|
||||
# Check if we can remove the 'output' directory
|
||||
output_dir = os.path.dirname(files_to_delete[0])
|
||||
found_job = RenderQueue.job_with_id(job_id)
|
||||
output_dir = os.path.dirname(os.path.dirname(found_job.output_path))
|
||||
if server.config['UPLOAD_FOLDER'] in output_dir and os.path.exists(output_dir):
|
||||
shutil.rmtree(output_dir)
|
||||
|
||||
@@ -416,7 +404,8 @@ def delete_job(job_id):
|
||||
return "Job deleted", 200
|
||||
|
||||
except Exception as e:
|
||||
return f"Unknown error: {e}", 500
|
||||
logger.error(f"Error deleting job: {e}")
|
||||
return f"Error deleting job: {e}", 500
|
||||
|
||||
|
||||
@server.get('/api/clear_history')
|
||||
@@ -446,7 +435,7 @@ def renderer_info():
|
||||
|
||||
@server.route('/upload')
|
||||
def upload_file_page():
|
||||
return render_template('upload.html', render_clients=RenderQueue.render_clients,
|
||||
return render_template('upload.html', render_clients=render_clients(),
|
||||
supported_renderers=RenderWorkerFactory.supported_renderers())
|
||||
|
||||
|
||||
@@ -467,10 +456,8 @@ def start_server(background_thread=False):
|
||||
server.config['MAX_CONTENT_PATH'] = config['max_content_path']
|
||||
|
||||
# Get hostname and render clients
|
||||
RenderQueue.host_name = socket.gethostname()
|
||||
server.config['HOSTNAME'] = RenderQueue.host_name
|
||||
if not RenderQueue.render_clients:
|
||||
RenderQueue.render_clients = [RenderQueue.host_name]
|
||||
RenderQueue.hostname = socket.gethostname()
|
||||
server.config['HOSTNAME'] = RenderQueue.hostname
|
||||
|
||||
# disable most Flask logging
|
||||
flask_log = logging.getLogger('werkzeug')
|
||||
@@ -482,7 +469,7 @@ def start_server(background_thread=False):
|
||||
thread = threading.Thread(target=eval_loop, kwargs={'delay_sec': config.get('queue_eval_seconds', 1)}, daemon=True)
|
||||
thread.start()
|
||||
|
||||
logging.info(f"Starting Zordon Render Server - Hostname: '{RenderQueue.host_name}'")
|
||||
logging.info(f"Starting Zordon Render Server - Hostname: '{RenderQueue.hostname}'")
|
||||
|
||||
if background_thread:
|
||||
server_thread = threading.Thread(
|
||||
|
||||
Reference in New Issue
Block a user