Browse Source

Add an index.html for docs.o.o/infra

This is a partial cargo-culting of the index job and associated
files from the specs.o.o site, to generate a simple top-level index
page for the http://docs.openstack.org/infra/ tree.

Change-Id: Idb5a8dba58a53c7c8ea1de69e9a4d9b5ef410c78
changes/74/174574/2
Jeremy Stanley 7 years ago
parent
commit
4d17d13edd
  1. 63
      docs-site/generate_infra_index.py
  2. 19
      docs-site/infra-documents.yaml
  3. 130
      docs-site/infra-index.html.tmpl
  4. 33
      jenkins/jobs/infra-publish-jobs.yaml
  5. 5
      tox.ini
  6. 7
      zuul/layout.yaml

63
docs-site/generate_infra_index.py

@ -0,0 +1,63 @@
#!/usr/bin/env python
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Read the infra-documents.yaml file and generate the index.html file.
"""
from __future__ import print_function
import argparse
import os
import jinja2
import yaml
def render_template(template_filename, output_filename, template_context):
with open(template_filename, 'r') as f:
template = jinja2.Template(f.read())
print('Writing %r' % output_filename)
with open(output_filename, 'w') as f:
f.write(template.render(**template_context))
parser = argparse.ArgumentParser()
parser.add_argument('-v', '--verbose',
dest='verbose',
default=False,
action='store_true',
)
parser.add_argument(
'infile',
help='Path to infra-documents.yaml',
)
args = parser.parse_args()
print('Reading documents data from %r' % args.infile)
infile = yaml.load(open(args.infile, 'r'))
template_path = os.path.dirname(args.infile)
template_context = {
'documents': infile['documents'],
'all': infile['documents']
}
outdir = os.path.join(template_path, 'output')
if not os.path.exists(outdir):
os.makedirs(outdir)
for template_name, filename in [('infra-index.html.tmpl', 'index.html')]:
render_template(os.path.join(template_path, template_name),
os.path.join(outdir, filename),
template_context)

19
docs-site/infra-documents.yaml

@ -0,0 +1,19 @@
documents:
- name: Infrastructure Manual
directory: manual
- name: Jenkins Job Builder
directory: jenkins-job-builder
- name: Nodepool
directory: nodepool
- name: OpenStackID
directory: openstackid
- name: Shade
directory: shade
- name: Slide Presentations
directory: publications
- name: Storyboard
directory: storyboard
- name: System Configuration
directory: system-config
- name: Zuul
directory: zuul

130
docs-site/infra-index.html.tmpl

@ -0,0 +1,130 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<title>
OpenStack Specifications
</title>
<script src="http://status.openstack.org/common.js" type="text/javascript">
</script>
<!-- Google Fonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Sans&amp;subset=latin" rel="stylesheet" type="text/css"/>
<!-- Google Fonts -->
<link href="http://www.openstack.org/blog/feed/" rel="alternate" title="RSS 2.0" type="application/rss+xml"/>
<link href="http://fonts.googleapis.com/css?family=PT+Sans&amp;subset=latin" rel="stylesheet" type="text/css"/>
<!-- Framework CSS -->
<link href="http://openstack.org/themes/openstack/css/blueprint/screen.css" media="screen, projection" rel="stylesheet" type="text/css"/>
<link href="http://openstack.org/themes/openstack/css/blueprint/print.css" media="print" rel="stylesheet" type="text/css"/>
<!--[if lt IE 8]><link rel="stylesheet" href="http://openstack.org/themes/openstack/css/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link href="http://openstack.org/themes/openstack/css/main.css" media="screen, projection, print" rel="stylesheet" type="text/css"/>
<link href="http://docs.openstack.org/common/css/main-landing.css" media="screen, projection, print" rel="stylesheet" type="text/css"/>
<link href="http://openstack.org/themes/openstack/css/dropdown.css" rel="stylesheet" type="text/css"/>
</head>
<body class="docshome" id="docshome">
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo">
<a href="http://www.openstack.org/">
OpenStack
</a>
</h1>
</div>
<div class="span-19 last blueLine">
<div class="span-19" id="navigation">
<ul id="Menu1">
<li>
<a href="/" title="Go to the Home page">
Home
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/software/" title="Go to the Software page">
Software
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/user-stories/" title="Go to the User Stories page">
User Stories
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/community/" title="Go to the Community page">
Community
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/foundation/" title="Go to the Foundation page">
Foundation
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/profile/" title="Go to the Profile page">
Profile
</a>
</li>
<li>
<a href="http://www.openstack.org/blog/" title="Go to the OpenStack Blog">
Blog
</a>
</li>
<li>
<a href="http://wiki.openstack.org/" title="Go to the OpenStack Wiki">
Wiki
</a>
</li>
<li>
<a href="http://docs.openstack.org/" title="Go to OpenStack Documentation">
Documentation
</a>
</li>
</ul>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<div class="span-12">
<h3 class="subhead">
OpenStack Developer and Community Infrastructure Documentation
</h3>
</div>
<div class="searchArea span-10 last">
</div>
</div>
<div class="container">
<div class="span-12">
</div>
</div>
<div class="container">
<div class="span-12">
<div>
</div>
</div>
<div class="span-12" id="subnav">
<ul class="subsectionNav">
<li class="link">
<a>
Projects
</a>
</li>
</ul>
<dl>
{% for document in documents %}
<dd>
<a href="{{document.directory}}">
{{document.name}}
</a>
</dd>
{% endfor %}
</dl>
</div>
</div>
</div>
<!-- Page Content -->
<script type="text/javascript">
footer();
</script>
</body>
</html>

33
jenkins/jobs/infra-publish-jobs.yaml

@ -16,6 +16,39 @@
remove-prefix: 'doc/build/html'
excludes: ''
- job:
name: publish-infra-docs-index
description: Render and publish the infra docs index.
node: bare-trusty
builders:
- revoke-sudo
- gerrit-git-prep
- tox:
envlist: infra-docs
publishers:
- ftp:
site: docs.openstack.org
source: 'docs-site/index.html'
target: '/infra/'
remove-prefix: 'docs-site/'
- console-log
- job:
name: check-infra-docs-index
description: Render the infra docs index without publishing it.
node: bare-trusty
builders:
- revoke-sudo
- gerrit-git-prep
- tox:
envlist: infra-docs
publishers:
- console-log
- job-group:
name: infra-publish-jobs
jobs:

5
tox.ini

@ -66,6 +66,11 @@ commands =
[testenv:bashate]
commands = {toxinidir}/tools/run-bashate.sh
[testenv:infra-docs]
deps =
Jinja2
PyYAML
commands = {toxinidir}/docs-site/generate_infra_index.py {toxinidir}/docs-site/infra-documents.yaml
[testenv:specs]
deps =
Jinja2

7
zuul/layout.yaml

@ -729,6 +729,10 @@ jobs:
files:
- 'accessbot/channels.yaml'
- 'gerritbot/channels.yaml'
- name: ^(check-infra-docs-index|publish-infra-docs-index)$
files:
- 'docs-site/.*'
- 'tox.ini'
- name: ^(check-generate-specs-site|publish-specs-site)$
files:
- 'specs/.*'
@ -3723,6 +3727,7 @@ projects:
- gate-project-config-irc-access
- gate-project-config-jenkins-project
- gate-project-config-projects-yaml
- check-infra-docs-index
- check-generate-specs-site
gate:
- gate-project-config-layout
@ -3730,8 +3735,10 @@ projects:
- gate-project-config-irc-access
- gate-project-config-jenkins-project
- gate-project-config-projects-yaml
- check-infra-docs-index
- check-generate-specs-site
post:
- publish-infra-docs-index
- publish-specs-site
periodic:
- propose-project-config-update

Loading…
Cancel
Save