add branch validation to queue
This commit is contained in:
@@ -13,6 +13,45 @@ jobs_bp = Blueprint('jobs', __name__, url_prefix='/jobs')
|
|||||||
def submit():
|
def submit():
|
||||||
return render_template('jobs/submit.html')
|
return render_template('jobs/submit.html')
|
||||||
|
|
||||||
|
@jobs_bp.route('/debug/test-step2')
|
||||||
|
@login_required
|
||||||
|
def debug_test_step2():
|
||||||
|
"""Debug endpoint to test step2 template with mock data"""
|
||||||
|
if not current_user.is_admin:
|
||||||
|
return jsonify({'error': 'Admin access required'}), 403
|
||||||
|
|
||||||
|
# Mock data similar to what we expect from scenario scan
|
||||||
|
organized_data = {
|
||||||
|
"drivers": {
|
||||||
|
"diag_protocol_stack": ["diag_protocol_stack_init_test"]
|
||||||
|
},
|
||||||
|
"application_layer": {
|
||||||
|
"data_pool": ["data_pool_init_test"],
|
||||||
|
"actuator_manager": ["actuator_manager_init_test2", "actuator_manager_init_test"],
|
||||||
|
"event_system": ["event_system_init_test"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scenario_map = {
|
||||||
|
"diag_protocol_stack_init_test": "drivers/diag_protocol_stack/test/diag_protocol_stack_init_test.test_scenario.xml",
|
||||||
|
"data_pool_init_test": "application_layer/DP_stack/data_pool/test/data_pool_init_test.test_scenario.xml",
|
||||||
|
"actuator_manager_init_test2": "application_layer/business_stack/actuator_manager/test/actuator_manager_init_test2.test_scenario.xml",
|
||||||
|
"actuator_manager_init_test": "application_layer/business_stack/actuator_manager/test/actuator_manager_init_test.test_scenario.xml",
|
||||||
|
"event_system_init_test": "application_layer/business_stack/event_system/test/event_system_init_test.test_scenario.xml"
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
return render_template('jobs/submit_step2.html',
|
||||||
|
branch_name='test_branch',
|
||||||
|
organized_data=organized_data,
|
||||||
|
scenario_map=scenario_map)
|
||||||
|
except Exception as e:
|
||||||
|
return jsonify({
|
||||||
|
'error': str(e),
|
||||||
|
'type': type(e).__name__,
|
||||||
|
'template_exists': True
|
||||||
|
})
|
||||||
|
|
||||||
@jobs_bp.route('/debug/ssh-test')
|
@jobs_bp.route('/debug/ssh-test')
|
||||||
@login_required
|
@login_required
|
||||||
def debug_ssh_test():
|
def debug_ssh_test():
|
||||||
@@ -216,21 +255,46 @@ def submit_step1():
|
|||||||
@jobs_bp.route('/submit/step2-validated', methods=['POST'])
|
@jobs_bp.route('/submit/step2-validated', methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def submit_step2_validated():
|
def submit_step2_validated():
|
||||||
|
try:
|
||||||
branch_name = request.form.get('branch_name')
|
branch_name = request.form.get('branch_name')
|
||||||
organized_data_json = request.form.get('organized_data')
|
organized_data_json = request.form.get('organized_data')
|
||||||
scenario_map_json = request.form.get('scenario_map')
|
scenario_map_json = request.form.get('scenario_map')
|
||||||
|
|
||||||
|
print(f"[DEBUG] Step2 - Branch: {branch_name}")
|
||||||
|
print(f"[DEBUG] Step2 - Organized data length: {len(organized_data_json) if organized_data_json else 0}")
|
||||||
|
print(f"[DEBUG] Step2 - Scenario map length: {len(scenario_map_json) if scenario_map_json else 0}")
|
||||||
|
|
||||||
|
if not branch_name:
|
||||||
|
print("[ERROR] Step2 - No branch name provided")
|
||||||
|
flash('Branch name is required', 'error')
|
||||||
|
return redirect(url_for('jobs.submit'))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
organized_data = json.loads(organized_data_json) if organized_data_json else {}
|
organized_data = json.loads(organized_data_json) if organized_data_json else {}
|
||||||
scenario_map = json.loads(scenario_map_json) if scenario_map_json else {}
|
scenario_map = json.loads(scenario_map_json) if scenario_map_json else {}
|
||||||
except json.JSONDecodeError:
|
|
||||||
|
print(f"[DEBUG] Step2 - Parsed organized_data keys: {list(organized_data.keys())}")
|
||||||
|
print(f"[DEBUG] Step2 - Parsed scenario_map count: {len(scenario_map)}")
|
||||||
|
|
||||||
|
except json.JSONDecodeError as e:
|
||||||
|
print(f"[ERROR] Step2 - JSON decode error: {e}")
|
||||||
flash('Invalid scenario data', 'error')
|
flash('Invalid scenario data', 'error')
|
||||||
return redirect(url_for('jobs.submit'))
|
return redirect(url_for('jobs.submit'))
|
||||||
|
|
||||||
|
print(f"[DEBUG] Step2 - Rendering template with {len(organized_data)} layers")
|
||||||
|
|
||||||
return render_template('jobs/submit_step2.html',
|
return render_template('jobs/submit_step2.html',
|
||||||
branch_name=branch_name,
|
branch_name=branch_name,
|
||||||
organized_data=organized_data,
|
organized_data=organized_data,
|
||||||
scenario_map=scenario_map)
|
scenario_map=scenario_map)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[ERROR] Step2 - Unexpected error: {str(e)}")
|
||||||
|
print(f"[ERROR] Step2 - Error type: {type(e).__name__}")
|
||||||
|
import traceback
|
||||||
|
print(f"[ERROR] Step2 - Traceback: {traceback.format_exc()}")
|
||||||
|
flash(f'Error loading scenario selection: {str(e)}', 'error')
|
||||||
|
return redirect(url_for('jobs.submit'))
|
||||||
@login_required
|
@login_required
|
||||||
def submit_step2():
|
def submit_step2():
|
||||||
branch_name = request.form.get('branch_name')
|
branch_name = request.form.get('branch_name')
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="scenario-tree">
|
<div class="scenario-tree">
|
||||||
|
{% if organized_data %}
|
||||||
{% for layer_name, layer_data in organized_data.items() %}
|
{% for layer_name, layer_data in organized_data.items() %}
|
||||||
<div class="tree-layer">
|
<div class="tree-layer">
|
||||||
<div class="tree-node layer-node" onclick="toggleLayer('{{ layer_name }}')">
|
<div class="tree-node layer-node" onclick="toggleLayer('{{ layer_name }}')">
|
||||||
@@ -54,6 +55,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tree-children" id="children-{{ layer_name }}" style="display: none;">
|
<div class="tree-children" id="children-{{ layer_name }}" style="display: none;">
|
||||||
|
{% if layer_data %}
|
||||||
{% for stack_name, scenarios in layer_data.items() %}
|
{% for stack_name, scenarios in layer_data.items() %}
|
||||||
<div class="tree-stack">
|
<div class="tree-stack">
|
||||||
<div class="tree-node stack-node" onclick="toggleStack('{{ layer_name }}', '{{ stack_name }}')">
|
<div class="tree-node stack-node" onclick="toggleStack('{{ layer_name }}', '{{ stack_name }}')">
|
||||||
@@ -63,6 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tree-children" id="children-{{ layer_name }}-{{ stack_name }}" style="display: none;">
|
<div class="tree-children" id="children-{{ layer_name }}-{{ stack_name }}" style="display: none;">
|
||||||
|
{% if scenarios %}
|
||||||
{% for scenario in scenarios %}
|
{% for scenario in scenarios %}
|
||||||
<div class="tree-scenario">
|
<div class="tree-scenario">
|
||||||
<div class="tree-node scenario-node">
|
<div class="tree-node scenario-node">
|
||||||
@@ -72,12 +75,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<div class="tree-scenario">
|
||||||
|
<div class="tree-node scenario-node">
|
||||||
|
<span class="tree-spacer"></span>
|
||||||
|
<span class="tree-label scenario-label" style="color: #9ca3af;">No scenarios found</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<div class="tree-stack">
|
||||||
|
<div class="tree-node stack-node">
|
||||||
|
<span class="tree-spacer"></span>
|
||||||
|
<span class="tree-label stack-label" style="color: #9ca3af;">No stacks found</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<div class="tree-layer">
|
||||||
|
<div class="tree-node layer-node">
|
||||||
|
<span class="tree-label layer-label" style="color: #9ca3af;">No scenarios available</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
|
|||||||
Reference in New Issue
Block a user