← Back to team overview

canonical-ubuntu-qa team mailing list archive

Re: [Merge] ~andersson123/autopkgtest-cloud:stop-tests-from-webpage into autopkgtest-cloud:master

 


Diff comments:

> diff --git a/charms/focal/autopkgtest-web/webcontrol/browse.cgi b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
> index 309fb82..651e6e7 100755
> --- a/charms/focal/autopkgtest-web/webcontrol/browse.cgi
> +++ b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
> @@ -256,6 +256,49 @@ def success_count_for_release_and_arch(db, release, arch, src_versions):
>      return count
>  
>  
> +# THIS CAN BE REFACTORED AFTER THE AUTO-QUEUE-CLEANUP MP IS MERGED!!!
> +# AMQP_CONNECT IS NOW SHARED FUNCTION IN HELPERS/UTILS.PY
> +def amqp_connect() -> amqp.Connection:
> +    """Connect to AMQP server"""
> +    cp = configparser.ConfigParser()
> +    cp.read(os.path.expanduser("~ubuntu/autopkgtest-cloud.conf"))
> +    amqp_uri = cp["amqp"]["uri"]
> +    parts = urllib.parse.urlsplit(amqp_uri, allow_fragments=False)
> +    amqp_con = amqp.Connection(
> +        parts.hostname, userid=parts.username, password=parts.password
> +    )
> +    return amqp_con
> +
> +
> +def submit_message_to_stop_running_queue(message: dict):
> +    """
> +    Submits a dictionary as an amqp message to the WRITER_EXCHANGE_NAME exchange
> +
> +    :param message: Dictionary to be converted to an amqp.Message and placed into the queue
> +    """
> +    amqp_con = amqp_connect()
> +    complete_amqp = amqp_con.channel()
> +    complete_amqp.access_request(
> +        "/complete", active=True, read=False, write=True
> +    )
> +    complete_amqp.exchange_declare(
> +        STOP_RUNNING_EXCHANGE_NAME, "fanout", durable=True, auto_delete=False
> +    )
> +    complete_amqp.basic_publish(
> +        amqp.Message(json.dumps(message), delivery_mode=2),
> +        STOP_RUNNING_EXCHANGE_NAME,
> +        "",
> +    )
> +
> +
> +def is_valid_uuid(test_uuid: str, uuid_version: int) -> bool:

missing docstring!

> +    try:
> +        validate_uuid = uuid.UUID(test_uuid, version=uuid_version)
> +    except Exception as _:
> +        return False
> +    return validate_uuid.hex == test_uuid
> +
> +
>  @app.route("/")
>  def index_root():
>      flask.session.permanent = True
> diff --git a/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py b/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py
> index 4e26eb8..4a0c8d6 100644
> --- a/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py
> +++ b/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py
> @@ -14,12 +14,45 @@ import typing
>  
>  # introduced in python3.7, we use 3.8
>  from dataclasses import dataclass
> +from html import escape as _escape
>  
>  import distro_info
> +from flask import Flask
> +from flask_openid import OpenID
> +from werkzeug.middleware.proxy_fix import ProxyFix
>  
>  sqlite3.paramstyle = "named"
>  
>  
> +def get_admin_nicks() -> typing.List[str]:

missing docstring!

> +    admin_nicks_path = "/home/ubuntu/.config/autopkgtest-web/admin-nicks"
> +    try:
> +        return pathlib.Path(admin_nicks_path).read_text().split(",")
> +    except FileNotFoundError as _:
> +        return []
> +
> +
> +def initialise_app(app_name: str) -> typing.Tuple[str, Flask, str, OpenID]:

missing docstring!

> +    PATH = os.path.join(
> +        os.path.sep,
> +        os.getenv("XDG_RUNTIME_DIR", "/run"),
> +        "autopkgtest_webcontrol",
> +    )
> +    os.makedirs(PATH, exist_ok=True)
> +    app = Flask(app_name)
> +    app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1)
> +    # keep secret persistent between CGI invocations
> +    secret_path = os.path.join(PATH, "secret_key")
> +    setup_key(app, secret_path)
> +    oid = OpenID(app, os.path.join(PATH, "openid"), safe_roots=[])
> +    return PATH, app, secret_path, oid
> +
> +
> +def maybe_escape(value: str) -> str:
> +    """Escape the value if it is True-ish"""
> +    return _escape(value) if value else value
> +
> +
>  @dataclass
>  class SqliteWriterConfig:
>      writer_exchange_name = "sqlite-write-me.fanout"


-- 
https://code.launchpad.net/~andersson123/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/461654
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~andersson123/autopkgtest-cloud:stop-tests-from-webpage into autopkgtest-cloud:master.



References