From 26eb7fe135b928ab3cffddb940c2d90fac995522 Mon Sep 17 00:00:00 2001 From: sslypushenko Date: Thu, 21 Aug 2014 22:36:40 +0300 Subject: [PATCH] Remove code to trigger test from web ui functionality Remove depricated code (part 2) We've removed the use cases for both local and official web driven test runs. We remove all the excess web ui for creating new clouds and starting and monitoring test runs. https://storyboard.openstack.org/#!/story/110 Spec: specs/approved/identify-code-to-deprecate.rst Change-Id: I8fdeb5331bb46423c5d018d2fa395ae287f0499b --- refstack/templates/create_cloud.html | 30 ---- refstack/templates/edit_cloud.html | 30 ---- refstack/templates/show_report.html | 65 ------- refstack/templates/show_status.html | 8 - refstack/templates/test_cloud.html | 16 -- refstack/web.py | 260 +-------------------------- 6 files changed, 1 insertion(+), 408 deletions(-) delete mode 100644 refstack/templates/create_cloud.html delete mode 100644 refstack/templates/edit_cloud.html delete mode 100644 refstack/templates/show_report.html delete mode 100644 refstack/templates/show_status.html delete mode 100644 refstack/templates/test_cloud.html diff --git a/refstack/templates/create_cloud.html b/refstack/templates/create_cloud.html deleted file mode 100644 index e1f93a9a..00000000 --- a/refstack/templates/create_cloud.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "layout.html" %} -{% block title %}Create Cloud{% endblock %} -{% block body %} -

Create Cloud

-
-
-
Label:
-
-
v3 Endpoint:
-
-
Non-Admin Keystone Endpoint:
-
-
Non-Admin Test User:
-
-
Alternate Non-Admin Test User:
-
-
Admin Keystone Endpoint:
-
-
Admin User:
-
-
Version:
-
-
-

- - - -

- -{% endblock %} diff --git a/refstack/templates/edit_cloud.html b/refstack/templates/edit_cloud.html deleted file mode 100644 index 14e96956..00000000 --- a/refstack/templates/edit_cloud.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "layout.html" %} -{% block title %}Create Cloud{% endblock %} -{% block body %} -

Edit Cloud

-
-
-
Label:
-
-
v3 Endpoint:
-
-
Non-Admin Keystone Endpoint:
-
-
Non-Admin Test User:
-
-
Alternate Non-Admin Test User:
-
-
Admin Keystone Endpoint:
-
-
Admin User:
-
-
Version:
-
-
-

- - - -

- -{% endblock %} diff --git a/refstack/templates/show_report.html b/refstack/templates/show_report.html deleted file mode 100644 index b80abdaf..00000000 --- a/refstack/templates/show_report.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends "layout.html" %} -{% block title %}Test Report{% endblock %} -{% block body %} -

Test Report

- - - {% if test.cloud %} - - - - - {% endif %} - - - - -
Cloud: {{ test.cloud.label }}
Test ID: {{ test.id}}
- - - - - - - - - - - - - - - - - - -
PassFailFail SetupErrorSkipTotal
{{ test_result['summary']['PASS'] }}{{ test_result['summary']['FAIL'] }}{{ test_result['summary']['FAIL_SETUP'] }}{{ test_result['summary']['ERROR'] }}{{ test_result['summary']['SKIP'] }}{{ test_result['summary']['Total'] }}
- - - - - - - - {% for classname, testcases in test_result['data'].items() %} - - - - {% for testcase in testcases %} - - - {% if testcase[1] == "PASS" %} - - {% elif testcase[1] == "SKIP" %} - - {% else %} - - {% endif %} - - - {% endfor %} - {% endfor %} -
TestcaseStatusElapsed Time
Test Group: {{ classname }}
{{ testcase[0] }}{{ testcase[1] }}{{ testcase[1] }}{{ testcase[1] }}{{ testcase[2] }}s
- - -{% endblock %} diff --git a/refstack/templates/show_status.html b/refstack/templates/show_status.html deleted file mode 100644 index 3bd1796a..00000000 --- a/refstack/templates/show_status.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "layout.html" %} -{% block title %}Test Status{% endblock %} -{% block body %} -

Test Status

- Test ID: {{ test.id }} -
- -{% endblock %} diff --git a/refstack/templates/test_cloud.html b/refstack/templates/test_cloud.html deleted file mode 100644 index 0384b611..00000000 --- a/refstack/templates/test_cloud.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "layout.html" %} -{% block title %}Test Cloud{% endblock %} -{% block body %} -

Test Cloud

-
-
-
Test User ({{ names.user }}) Password:
-
-
Admin User ({{ names.admin }}) Password:
-
-
-

- - -

-{% endblock %} diff --git a/refstack/web.py b/refstack/web.py index 4be8589a..b393e201 100755 --- a/refstack/web.py +++ b/refstack/web.py @@ -16,17 +16,15 @@ import flask from flask import abort, flash, request, redirect, url_for, \ - render_template, g, session, make_response + render_template, g, session from flask_mail import Mail from refstack import app as base_app from refstack.extensions import db from refstack.extensions import oid from refstack.models import Cloud from refstack.models import Test -from refstack.models import TestStatus from refstack.models import User from refstack.models import Vendor -from refstack.tools.tempest_tester import TempestTester app = base_app.create_app() mail = Mail(app) @@ -111,132 +109,6 @@ def create_profile(): 'create_profile.html', next_url=oid.get_next_url()) -@app.route('/delete-cloud/', methods=['GET', 'POST']) -def delete_cloud(cloud_id): - """Delete function for clouds.""" - cloud = Cloud.query.filter_by(id=cloud_id).first() - - if not cloud: - flash(u'Not a valid Cloud ID!') - elif not cloud.user_id == g.user.id: - flash(u"This isn't your cloud!") - else: - # Delete all the tests associated with the cloud from DB - for test in cloud.tests: - db.session.delete(test) - # Delete the cloud from DB - db.session.delete(cloud) - db.session.commit() - - return redirect('/') - - -@app.route('/delete-test/', methods=['GET', 'POST']) -def delete_test(test_id): - """Delete function for tests.""" - test = Test.query.filter_by(id=test_id).first() - - if not test: - flash(u'Not a valid Test ID!') - elif not test.cloud.user_id == g.user.id: - flash(u"This isn't your test!") - else: - db.session.delete(test) - db.session.commit() - - return redirect('/') - - -@app.route('/edit-cloud/', methods=['GET', 'POST']) -def edit_cloud(cloud_id): - cloud = Cloud.query.filter_by(id=cloud_id).first() - - if not cloud: - flash(u'Not a valid Cloud ID!') - return redirect('/') - elif not cloud.user_id == g.user.id: - flash(u"This isn't your cloud!") - - if request.method == 'POST': - # some validation - # todo: do this smarter - if not request.form['label']: - flash(u'Error: All fields are required') - elif not request.form['endpoint']: - flash(u'Error: All fields are required') - elif not request.form['test_user']: - flash(u'Error: All fields are required') - elif not request.form['alt_user']: - flash(u'Error: All fields are required') - elif not request.form['admin_endpoint']: - flash(u'Error: All fields are required') - elif not request.form['admin_user']: - flash(u'Error: All fields are required') - else: - cloud.label = request.form['label'] - cloud.endpoint = request.form['endpoint'] - cloud.test_user = request.form['test_user'] - cloud.alt_user = request.form['alt_user'] - cloud.admin_endpoint = request.form['admin_endpoint'] - cloud.endpoint_v3 = request.form['endpoint_v3'] - cloud.version = request.form['version'] - cloud.admin_user = request.form['admin_user'] - - db.session.commit() - - flash(u'Cloud Saved!') - return redirect('/') - - form = dict(label=cloud.label, - endpoint=cloud.endpoint, - endpoint_v3=cloud.endpoint_v3, - admin_endpoint=cloud.admin_endpoint, - admin_user=cloud.admin_user, - version=cloud.version, - test_user=cloud.test_user, - alt_user=cloud.alt_user) - - return render_template('edit_cloud.html', form=form) - - -@app.route('/create-cloud', methods=['GET', 'POST']) -def create_cloud(): - """This is the handler for creating a new cloud.""" - - if g.user is None: - abort(401) - if request.method == 'POST': - if not request.form['label']: - flash(u'Error: All fields are required') - elif not request.form['endpoint']: - flash(u'Error: All fields are required') - elif not request.form['test_user']: - flash(u'Error: All fields are required') - elif not request.form['alt_user']: - flash(u'Error: All fields are required') - elif not request.form['admin_endpoint']: - flash(u'Error: All fields are required') - elif not request.form['admin_user']: - flash(u'Error: All fields are required') - else: - new_cloud = Cloud() - new_cloud.user_id = g.user.id - new_cloud.label = request.form['label'] - new_cloud.endpoint = request.form['endpoint'] - new_cloud.test_user = request.form['test_user'] - new_cloud.alt_user = request.form['alt_user'] - new_cloud.admin_endpoint = request.form['admin_endpoint'] - new_cloud.endpoint_v3 = request.form['endpoint_v3'] - new_cloud.version = request.form['version'] - new_cloud.admin_user = request.form['admin_user'] - - db.session.add(new_cloud) - db.session.commit() - return redirect('/') - - return render_template('create_cloud.html', next_url='/') - - @app.route('/profile/edit', methods=['GET', 'POST']) def edit_profile(): """Updates a profile.""" @@ -282,55 +154,6 @@ def logout(): return redirect(oid.get_next_url()) -@app.route('/test-cloud/', methods=['GET', 'POST']) -def test_cloud(cloud_id): - """Handler for creating a new test.""" - - cloud = Cloud.query.filter_by(id=cloud_id).first() - - if not cloud: - flash(u'Not a valid Cloud ID!') - return redirect('/') - elif not cloud.user_id == g.user.id: - flash(u"This isn't your cloud!") - return redirect('/') - - if request.method == 'POST': - - # Check for required fields - REQUIRED_FIELDS = ('pw_admin', 'pw_user') - if not all(request.form[field] for field in REQUIRED_FIELDS): - flash(u'Error: All fields are required') - else: - # Create new test object in db - new_test = Test() - new_test.cloud = cloud - new_test.cloud_id = cloud.id - db.session.add(new_test) - db.session.commit() - - # Construct confJSON with the passwords provided - # and using the same user for alt_user - pw_admin = request.form['pw_admin'] - pw_user = request.form['pw_user'] - pw_alt = request.form['pw_user'] - json_str = '{"identity":{"password":"%s","admin_password":"%s",\ -"alt_password":"%s"}}' % (pw_user, pw_admin, pw_alt) - - # Excute the test - try: - TempestTester(new_test.id).execute_test(json_str) - flash(u'Test started!') - except ValueError: - flash(u'Fail to start test!') - - return redirect('/') - - names = dict(user=cloud.test_user, admin=cloud.admin_user) - - return render_template('test_cloud.html', next_url='/', names=names) - - @app.route('/post-result', methods=['POST']) def post_result(): """Receive tempest test result from a remote test runner.""" @@ -359,84 +182,3 @@ def post_result(): db.session.commit() return 'thank you', 201 - - -@app.route('/update-test-status/', methods=['POST']) -def update_test_status(test_id): - """updates the test status.""" - - test = Test.query.filter_by(id=test_id).first() - - if not test or request.args.get('status', ''): - return 'bad request', 400 - - message = request.args.get('status', '') - status = TestStatus(test_id, message) - - db.session.add(status) - db.session.commit() - - return 'thank you', 201 - - -@app.route('/show-status/', methods=['GET', 'POST']) -def show_status(test_id): - """Handler for showing test status.""" - - test = Test.query.filter_by(id=test_id).first() - - if not test: - flash(u'Not a valid Test ID!') - return redirect('/') - elif not test.cloud.user_id == g.user.id: - flash(u"This isn't your test!") - return redirect('/') - - # This is a place holder for now - ''' TODO: Generate the appropriate status page ''' - - return render_template('show_status.html', next_url='/', test=test) - - -@app.route('/show-report/', methods=['GET', 'POST']) -def show_report(test_id): - """Handler for showing test report.""" - - test = Test.query.filter_by(id=test_id).first() - - if not test: - flash(u'Not a valid Test ID!') - return redirect('/') - - # Users can see report of all tests (including other people's tests) - - test_result = TempestTester(test_id).get_result() - if not test_result: - flash(u"No test result available!") - return redirect('/') - - return render_template('show_report.html', next_url='/', test=test, - test_result=test_result) - - -@app.route('/download-result/', methods=['GET', 'POST']) -def download_result(test_id): - """Handler for downloading test results.""" - - test = Test.query.filter_by(id=test_id).first() - - if not test: - flash(u'Not a valid Test ID!') - return redirect('/') - elif not test.cloud.user_id == g.user.id: - # Users can only download result of their own tests - flash(u"This isn't your test!") - return redirect('/') - - # Send back the subunit data stream - - response = make_response(test.subunit) - response.headers['Content-Disposition'] = \ - 'attachment; filename=subunit_%s.txt' % (test_id) - response.content_type = "text/plain" - return response