From 2aa0dbcf29a8505b8e8426eb60ac3ebbe198571d Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Mon, 3 Feb 2020 15:19:10 -0800 Subject: [PATCH] Add index_links option to zuul manifest This allows a deployer to indicate that they prefer the Zuul dashboard to link to "dir/index.html" rather than just "/dir" when displaying directory entries in the log browser. This helps with log storage systems which do not automatically serve index.html files at directory urls. Change-Id: I0444798c689667e51d8761a20b661f8a9b90323d --- roles/generate-zuul-manifest/README.rst | 6 ++++++ roles/generate-zuul-manifest/defaults/main.yaml | 1 + .../library/generate_manifest.py | 12 ++++++++---- roles/generate-zuul-manifest/tasks/main.yaml | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/roles/generate-zuul-manifest/README.rst b/roles/generate-zuul-manifest/README.rst index b61c0c13e..6c6ee47d9 100644 --- a/roles/generate-zuul-manifest/README.rst +++ b/roles/generate-zuul-manifest/README.rst @@ -26,3 +26,9 @@ display logs from a build. :default: zuul_manifest The artifact type to return to Zuul. + +.. zuul:rolevar:: generate_zuul_manifest_index_links + :default: False + + If True, the Zuul dashboard will link to "index.html" for directory + entries; if False, it will link to the bare directory. diff --git a/roles/generate-zuul-manifest/defaults/main.yaml b/roles/generate-zuul-manifest/defaults/main.yaml index 01f26d728..a2d0c7cf1 100644 --- a/roles/generate-zuul-manifest/defaults/main.yaml +++ b/roles/generate-zuul-manifest/defaults/main.yaml @@ -2,3 +2,4 @@ generate_zuul_manifest_root: "{{ zuul.executor.log_root }}" generate_zuul_manifest_filename: "zuul-manifest.json" generate_zuul_manifest_output: "{{ zuul.executor.log_root }}/{{ generate_zuul_manifest_filename }}" generate_zuul_manifest_type: "zuul_manifest" +generate_zuul_manifest_index_links: False diff --git a/roles/generate-zuul-manifest/library/generate_manifest.py b/roles/generate-zuul-manifest/library/generate_manifest.py index 5518e53ad..81fed2c9a 100644 --- a/roles/generate-zuul-manifest/library/generate_manifest.py +++ b/roles/generate-zuul-manifest/library/generate_manifest.py @@ -87,10 +87,11 @@ def walk(root, original_root=None): return data -def run(root_path, output): +def run(root_path, output, index_links): data = walk(root_path, root_path) with open(output, 'w') as f: - f.write(json.dumps({'tree': data})) + f.write(json.dumps({'tree': data, + 'index_links': index_links})) def ansible_main(): @@ -98,11 +99,12 @@ def ansible_main(): argument_spec=dict( root=dict(type='path'), output=dict(type='path'), + index_links=dict(type='bool', default=False), ) ) p = module.params - run(p.get('root'), p.get('output')) + run(p.get('root'), p.get('output'), p.get('index_links')) module.exit_json(changed=True) @@ -117,13 +119,15 @@ def cli_main(): help='Root of upload directory') parser.add_argument('output', help='Output file path') + parser.add_argument('index_links', action='store_true', + help='Link to index.html instead of dirs') args = parser.parse_args() if args.verbose: logging.basicConfig(level=logging.DEBUG) - run(args.root, args.output) + run(args.root, args.output, args.index_links) if __name__ == '__main__': diff --git a/roles/generate-zuul-manifest/tasks/main.yaml b/roles/generate-zuul-manifest/tasks/main.yaml index eedcda450..9d186968c 100644 --- a/roles/generate-zuul-manifest/tasks/main.yaml +++ b/roles/generate-zuul-manifest/tasks/main.yaml @@ -10,5 +10,6 @@ artifacts: - name: Zuul Manifest url: "{{ generate_zuul_manifest_filename }}" + index_links: "{{ generate_zuul_manifest_index_links }}" metadata: type: "{{ generate_zuul_manifest_type }}"