From 0f7895e19d012435f1787587ed28561225584580 Mon Sep 17 00:00:00 2001 From: Remi Rampin Date: Tue, 22 Aug 2023 17:39:33 -0400 Subject: [PATCH] Also pre-fill the list of ports to expose --- reproserver/web/templates/setup.html | 2 +- reproserver/web/views.py | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/reproserver/web/templates/setup.html b/reproserver/web/templates/setup.html index 8f0c5b2..38deb2a 100644 --- a/reproserver/web/templates/setup.html +++ b/reproserver/web/templates/setup.html @@ -56,7 +56,7 @@

Parameters

Expose ports

- +
{% if input_files %} diff --git a/reproserver/web/views.py b/reproserver/web/views.py index 25c774b..f8498fa 100644 --- a/reproserver/web/views.py +++ b/reproserver/web/views.py @@ -233,12 +233,23 @@ def reproduce(self, upload, repo_name=None, repo_url=None): .filter(database.Path.is_input)).all() # Check whether web archive file is present - extensions = [ - extension.name + extensions = { + extension.name: extension.data for extension in upload.experiment.extensions - ] + } wacz_present = 'web1' in extensions + # Add the port to the list of ports to expose, if one is specified in + # the web1 extension config + ports = set() + if 'web1' in extensions: + web1 = json.loads(extensions['web1']) + try: + hosts = web1['config']['hosts'] + except KeyError: + pass + ports.update(host['port'] for host in hosts.values()) + return self.render( 'setup.html', filename=filename, @@ -249,6 +260,7 @@ def reproduce(self, upload, repo_name=None, repo_url=None): upload_short_id=upload.short_id, experiment_url=experiment_url, repo_name=repo_name, repo_url=repo_url, + expose_ports=' '.join(str(port) for port in sorted(ports)), )