Retire openstack-ansible-repo_build role

As repo_build role has been succesfully replaced with
python_venv_build role, we have no need in it's futher maintaining and
releasing.

Change-Id: Iaf1d6da8192afbbd18c64e2b58d54fa5804fe43c
This commit is contained in:
Dmitriy Rabotyagov 2020-03-31 21:55:24 +03:00
parent 1bf48763f2
commit 4529fb782b
79 changed files with 13 additions and 4383 deletions

69
.gitignore vendored
View File

@ -1,69 +0,0 @@
# Add patterns in here to exclude files created by tools integrated with this
# repository, such as test frameworks from the project's recommended workflow,
# rendered documentation and package builds.
#
# Don't add patterns to exclude files created by preferred personal tools
# (editors, IDEs, your operating system itself even). These should instead be
# maintained outside the repository, for example in a ~/.gitignore file added
# with:
#
# git config --global core.excludesfile '~/.gitignore'
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
*.pyc
build/
dist/
doc/build/
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
logs/*
# OS generated files #
######################
._*
.tox
*.egg-info
.eggs
# Generated by pbr while building docs
######################################
AUTHORS
ChangeLog
# Files created by releasenotes build
releasenotes/build
# Test temp files
tests/common
tests/*.retry
# Vagrant artifacts
.vagrant
# Git clones
openstack-ansible-ops
previous

View File

@ -1,81 +0,0 @@
===================================================
OpenStack-Ansible repo_build contributor guidelines
===================================================
Filing bugs
~~~~~~~~~~~
Bugs should be filed on Launchpad, not GitHub: "https://bugs.launchpad.net/openstack-ansible"
When submitting a bug, or working on a bug, please ensure the following criteria are met:
* The description clearly states or describes the original problem or root cause of the problem.
* Include historical information on how the problem was identified.
* Any relevant logs are included.
* The provided information should be totally self-contained. External access to web services/sites should not be needed.
* Steps to reproduce the problem if possible.
Submitting code
~~~~~~~~~~~~~~~
Changes to the project should be submitted for review via the Gerrit tool, following
the workflow documented at: "http://docs.openstack.org/infra/manual/developers.html#development-workflow"
Pull requests submitted through GitHub will be ignored and closed without regard.
Extra
~~~~~
Tags:
If it's a bug that needs fixing in a branch in addition to Master, add a '\<release\>-backport-potential' tag (eg ``juno-backport-potential``). There are predefined tags that will autocomplete.
Status:
Please leave this alone, it should be New till someone triages the issue.
Importance:
Should only be touched if it is a Blocker/Gating issue. If it is, please set to High, and only use Critical if you have found a bug that can take down whole infrastructures.
Style guide
~~~~~~~~~~~
When creating tasks and other roles for use in Ansible please create them using the YAML dictionary format.
Example YAML dictionary format:
.. code-block:: yaml
- name: The name of the tasks
module_name:
thing1: "some-stuff"
thing2: "some-other-stuff"
tags:
- some-tag
- some-other-tag
Example **NOT** in YAML dictionary format:
.. code-block:: yaml
- name: The name of the tasks
module_name: thing1="some-stuff" thing2="some-other-stuff"
tags:
- some-tag
- some-other-tag
Usage of the ">" and "|" operators should be limited to Ansible conditionals and command modules such as the ansible ``shell`` module.
Issues
~~~~~~
When submitting an issue, or working on an issue please ensure the following criteria are met:
* The description clearly states or describes the original problem or root cause of the problem.
* Include historical information on how the problem was identified.
* Any relevant logs are included.
* If the issue is a bug that needs fixing in a branch other than Master, add the 'backport potential' tag TO THE ISSUE (not the PR).
* The provided information should be totally self-contained. External access to web services/sites should not be needed.
* If the issue is needed for a hotfix release, add the 'expedite' label.
* Steps to reproduce the problem if possible.

View File

@ -1,30 +1,8 @@
========================
Team and repository tags
========================
This project is no longer maintained.
.. image:: https://governance.openstack.org/tc/badges/openstack-ansible-repo_build.svg
:target: https://governance.openstack.org/tc/reference/tags/index.html
The contents of this repository are still available in the Git source code
management system. To see the contents of this repository before it reached its
end of life, please check out the previous commit with "git checkout HEAD^1".
.. Change things from this point on
============================
OpenStack-Ansible repo_build
============================
Ansible role that builds a repository of Git repositories, Python
wheels, and virtualenvs.
Documentation for the project can be found at:
https://docs.openstack.org/openstack-ansible-repo_build/latest/
Release notes for the project can be found at:
https://docs.openstack.org/releasenotes/openstack-ansible-repo_build/
The project source code repository is located at:
https://opendev.org/openstack/openstack-ansible-repo_build/
The project home is at:
https://launchpad.net/openstack-ansible
The project bug tracker is located at:
https://bugs.launchpad.net/openstack-ansible/
For any further questions, please email openstack-discuss@lists.openstack.org with
[openstack-ansible] tag or join #openstack-ansible on Freenode.

62
Vagrantfile vendored
View File

@ -1,62 +0,0 @@
# Note:
# This file is maintained in the openstack-ansible-tests repository.
# https://opendev.org/openstack/openstack-ansible-tests/src/Vagrantfile
#
# If you need to perform any change on it, you should modify the central file,
# then, an OpenStack CI job will propagate your changes to every OSA repository
# since every repo uses the same Vagrantfile
# Verify whether required plugins are installed.
required_plugins = [ "vagrant-disksize" ]
required_plugins.each do |plugin|
if not Vagrant.has_plugin?(plugin)
raise "The vagrant plugin #{plugin} is required. Please run `vagrant plugin install #{plugin}`"
end
end
Vagrant.configure(2) do |config|
config.vm.provider "virtualbox" do |v|
v.memory = 6144
v.cpus = 2
# https://github.com/hashicorp/vagrant/issues/9524
v.customize ["modifyvm", :id, "--audio", "none"]
end
config.vm.synced_folder ".", "/vagrant", type: "rsync"
config.vm.provision "shell",
privileged: false,
inline: <<-SHELL
cd /vagrant
./run_tests.sh
SHELL
config.vm.define "centos7" do |centos7|
centos7.vm.box = "centos/7"
end
config.vm.define "debian8" do |debian8|
debian8.vm.box = "debian/jessie64"
end
config.vm.define "debian9" do |debian9|
debian9.vm.box = "debian/stretch64"
end
config.vm.define "gentoo" do |gentoo|
gentoo.vm.box = "generic/gentoo"
end
config.vm.define "opensuse150" do |leap150|
leap150.vm.box = "opensuse/openSUSE-15.0-x86_64"
end
config.vm.define "opensuse151" do |leap151|
leap151.vm.box = "opensuse/openSUSE-15.1-x86_64"
end
config.vm.define "ubuntu1804" do |bionic|
bionic.disksize.size = "40GB"
bionic.vm.box = "ubuntu/bionic64"
end
end

View File

@ -1,55 +0,0 @@
# This file facilitates OpenStack-CI package installation
# before the execution of any tests.
#
# See the following for details:
# - https://docs.openstack.org/infra/bindep/
# - https://opendev.org/openstack-infra/bindep
#
# Even if the role does not make use of this facility, it
# is better to have this file empty, otherwise OpenStack-CI
# will fall back to installing its default packages which
# will potentially be detrimental to the tests executed.
#
# Note:
# This file is maintained in the openstack-ansible-tests repository.
# https://opendev.org/openstack/openstack-ansible-tests/src/bindep.txt
# If you need to remove or add extra dependencies, you should modify
# the central file instead and once your change is accepted then update
# this file as well. The purpose of this file is to ensure that Python and
# Ansible have all their necessary binary requirements on the test host before
# tox executes. Any binary requirements needed by services/roles should be
# installed by those roles in their applicable package install tasks, not through
# using this file.
#
# The gcc compiler
gcc
# Base requirements for Ubuntu
git-core [platform:dpkg platform:suse]
libssl-dev [platform:dpkg]
libffi-dev [platform:dpkg]
python2.7 [platform:dpkg]
python-apt [platform:dpkg]
python-dev [platform:dpkg]
python3 [platform:dpkg]
python3-apt [platform:dpkg]
python3-dev [platform:dpkg]
# Base requirements for RPM distros
gcc-c++ [platform:rpm]
git [platform:rpm !platform:suse]
libffi-devel [platform:rpm]
openssl-devel [platform:rpm]
python-devel [platform:rpm]
python2-dnf [platform:fedora]
# Base requirements for Gentoo
git [platform:gentoo]
# For SELinux
libselinux-python [platform:redhat]
libsemanage-python [platform:redhat]
# Required for compressing collected log files in CI
gzip

View File

@ -1,93 +0,0 @@
---
# Copyright 2015, Rackspace US, Inc.
#
# 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.
# Additional options passed to pip during package installation.
# A common use is with the '--cert' argument for internally signed
# SSL certificates.
pip_install_options: ""
# Set the package install state for distribution and pip packages
# Options are 'present' and 'latest'
repo_build_package_state: "latest"
repo_build_pip_package_state: "latest"
# Use OpenStack's upper-constraints
repo_build_use_upper_constraints: true
# A list of overrides to apply to OpenStack's upper constraints
# Use these with caution as you're implementing a change to the
# package set which OpenStack has tested its releases with!
repo_build_upper_constraints_overrides: []
repo_build_service_user_name: "nginx"
repo_build_service_group_name: "www-data"
repo_build_base_path: "/var/www/repo"
# NOTE(hwoarang): ansible_distribution may return a string with spaces
# such as "openSUSE Leap" so we need to replace the space with underscore
# in order to create a more sensible repo name for the distro.
repo_build_os_distro_version: "{{ (ansible_distribution | lower) | replace(' ', '_') }}-{{ ansible_distribution_version.split('.')[:2] | join('.') }}-{{ ansible_architecture | lower }}"
repo_build_release_tag: "untagged"
repo_build_global_links_path: "{{ repo_build_base_path }}/links/{{ repo_build_os_distro_version }}"
repo_build_release_version_path: "os-releases/{{ repo_build_release_tag }}"
repo_build_release_path: "{{ repo_build_base_path }}/{{ repo_build_release_version_path }}/{{ repo_build_os_distro_version }}"
repo_build_dir: "/tmp/openstack-builder"
repo_build_output: "/tmp/openstack-wheel-output"
repo_build_git_dir: "{{ repo_build_base_path }}/openstackgit"
repo_build_pool_dir: "{{ repo_build_base_path }}/pools/{{ repo_build_os_distro_version }}"
# Toggle whether git repositories should be cloned selectively or not
repo_build_git_selective: "{{ repo_build_wheel_selective | bool }}"
# Toggle whether a git clone should be forced
repo_build_git_reclone: no
# Toggle the git clone depth
repo_build_git_depth: 1
# Toggle whether wheels should be built selectively or not
repo_build_wheel_selective: yes
# Toggle whether a wheel rebuild should be forced
repo_build_wheel_rebuild: no
# Optionally set this to change the default index from pypi to an alternative
repo_build_pip_default_index: "https://pypi.python.org/simple"
# Optionally set this to a list of extra indexes to be used when building wheels
#repo_build_pip_extra_indexes:
# - "https://pypi.python.org/simple"
# Optionally set this to a list of packages which must always have the wheel
# compiled from source. This will ensure that a pre-compiled wheel is not
# downloaded from any of the indexes.
#repo_build_pip_no_binary:
# - libvirt-python
repo_build_timeout: 120
# Path to the repo build venv binaries
repo_build_bin: "/openstack/venvs/repo-build-{{ repo_build_release_tag }}/bin"
# Python packages to install into the repo build venv
repo_pip_packages:
- cython
- pbr
- requests
- urllib3
- wheel
repo_build_store_pip_sources: false

View File

@ -1,195 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/openstack-ansible-repo_build.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/openstack-ansible-repo_build.qhc"
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/openstack-ansible-repo_build"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/openstack-ansible-repo_build"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
livehtml: html
sphinx-autobuild -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html

View File

@ -1,17 +0,0 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
# WARNING:
# This file is maintained in the openstack-ansible-tests repository.
# https://opendev.org/openstack/openstack-ansible-tests/src/branch/master/sync/doc/requirements.txt
# If you need to modify this file, update the one in the
# openstack-ansible-tests repository. Once it merges there, the changes will
# automatically be proposed to all the repositories which use it.
sphinx>=1.8.0,<2.0.0;python_version=='2.7' # BSD
sphinx>=1.8.0,!=2.1.0;python_version>='3.4' # BSD
sphinxcontrib-svg2pdfconverter>=0.1.0 # BSD
openstackdocstheme>=1.20.0 # Apache-2.0
reno>=2.5.0 # Apache-2.0
doc8>=0.6.0 # Apache-2.0

View File

@ -1,312 +0,0 @@
#!/usr/bin/env python3
# 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.
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import pbr.version
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
# sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'openstackdocstheme',
'sphinx.ext.autodoc',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The encoding of source files.
# source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
author = 'OpenStack-Ansible Contributors'
category = 'Miscellaneous'
copyright = '2014-2016, OpenStack-Ansible Contributors'
description = 'OpenStack-Ansible deploys OpenStack environments using Ansible.'
project = 'OpenStack-Ansible'
role_name = 'repo_build'
target_name = 'openstack-ansible-' + role_name
title = 'OpenStack-Ansible Documentation: ' + role_name + 'role'
# The link to the browsable source code (for the left hand menu)
oslosphinx_cgit_link = (
"https://git.openstack.org/cgit/openstack/{}".format(target_name)
)
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version_info = pbr.version.VersionInfo(target_name)
# The full version, including alpha/beta/rc tags.
release = version_info.version_string_with_vcs()
# The short X.Y version.
version = version_info.canonical_version_string()
# openstackdocstheme options
repository_name = 'openstack/' + target_name
bug_project = project.lower()
bug_tag = ''
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
# today = ''
# Else, today_fmt is used as the format for a strftime call.
# today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all
# documents.
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
# keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'openstackdocs'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
# html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
# html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
# html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
# html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
# html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
# html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
html_last_updated_fmt = '%Y-%m-%d %H:%M'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
# html_additional_pages = {}
# If false, no module index is generated.
# html_domain_indices = True
# If false, no index is generated.
# html_use_index = True
# If true, the index is split into individual pages for each letter.
# html_split_index = False
# If true, links to the reST sources are added to the pages.
# html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
# html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
# html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
# html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr'
# html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# Now only 'ja' uses this config value
# html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
# html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = target_name + '-docs'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
# 'preamble': '',
# Latex figure (float) alignment
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, target_name + '.tex',
title, author, 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
# latex_use_parts = False
# If true, show page references after internal links.
# latex_show_pagerefs = False
# If true, show URL addresses after external links.
# latex_show_urls = False
# Documents to append as an appendix to all manuals.
# latex_appendices = []
# If false, no module index is generated.
# latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, target_name,
title, [author], 1)
]
# If true, show URL addresses after external links.
# man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, target_name,
title, author, project,
description, category),
]
# Documents to append as an appendix to all manuals.
# texinfo_appendices = []
# If false, no module index is generated.
# texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
# texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
# texinfo_no_detailmenu = False

View File

@ -1,27 +0,0 @@
============================
OpenStack-Ansible repo_build
============================
Ansible role that builds a repository of Git repositories, Python
wheels, and virtualenvs.
To clone or view the source code for this repository, visit the role repository
for `repo_build <https://github.com/openstack/openstack-ansible-repo_build>`_.
Default variables
~~~~~~~~~~~~~~~~~
.. literalinclude:: ../../defaults/main.yml
:language: yaml
:start-after: under the License.
Required variables
~~~~~~~~~~~~~~~~~~
None.
Example playbook
~~~~~~~~~~~~~~~~
.. literalinclude:: ../../examples/playbook.yml
:language: yaml

View File

@ -1,6 +0,0 @@
---
- name: Set up repo builds
hosts: repo_all
user: root
roles:
- { role: "repo_build", tags: [ "repo-build" ] }

View File

@ -1,33 +0,0 @@
export VIRTUAL_ENV=$(pwd)
export ANSIBLE_HOST_KEY_CHECKING=False
export ANSIBLE_SSH_CONTROL_PATH=/tmp/%%h-%%r
# TODO (odyssey4me) These are only here as they are non-standard folder
# names for Ansible 1.9.x. We are using the standard folder names for
# Ansible v2.x. We can remove this when we move to Ansible 2.x.
export ANSIBLE_ACTION_PLUGINS=${HOME}/.ansible/plugins/action
export ANSIBLE_CALLBACK_PLUGINS=${HOME}/.ansible/plugins/callback
export ANSIBLE_FILTER_PLUGINS=${HOME}/.ansible/plugins/filter
export ANSIBLE_LOOKUP_PLUGINS=${HOME}/.ansible/plugins/lookup
# This is required as the default is the current path or a path specified
# in ansible.cfg
export ANSIBLE_LIBRARY=${HOME}/.ansible/plugins/library
# This is required as the default is '/etc/ansible/roles' or a path
# specified in ansible.cfg
export ANSIBLE_ROLES_PATH=${HOME}/.ansible/roles:$(pwd)/..
export ANSIBLE_SSH_ARGS="-o ControlMaster=no \
-o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \
-o ServerAliveInterval=64 \
-o ServerAliveCountMax=1024 \
-o Compression=no \
-o TCPKeepAlive=yes \
-o VerifyHostKeyDNS=no \
-o ForwardX11=no \
-o ForwardAgent=yes"
echo "Run manual functional tests by executing the following:"
echo "# ./.tox/functional/bin/ansible-playbook -i tests/inventory tests/test.yml"

View File

@ -1,44 +0,0 @@
---
# Copyright 2015, Rackspace US, Inc.
#
# 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.
galaxy_info:
author: rcbops
description: Install package repo build
company: Rackspace
license: Apache2
min_ansible_version: 2.2
platforms:
- name: Debian
versions:
- stretch
- name: Ubuntu
versions:
- xenial
- bionic
- name: EL
versions:
- 7
- name: opensuse
versions:
- all
categories:
- cloud
- python
- development
- openstack
dependencies:
- role: apt_package_pinning
when:
- ansible_pkg_mgr == 'apt'

View File

@ -1,20 +0,0 @@
---
# Copyright 2017, Rackspace US, Inc.
#
# 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.
#
# (c) 2017, Jean-Philippe Evrard <jean-philippe.evrard@rackspace.co.uk>
maturity_info:
status: complete
created_during: mitaka

View File

@ -1,5 +0,0 @@
---
features:
- The filename of the apt source for the ubuntu
cloud archive can now be defined with the
variable ``uca_apt_source_list_filename``.

View File

@ -1,6 +0,0 @@
---
features:
- The option ``repo_venv_default_pip_packages`` has been added which will
allow deployers to insert any packages into a service venv as needed.
The option expects a list of strings which are valid python package names as
found on PYPI.

View File

@ -1,6 +0,0 @@
---
fixes:
- The pip_install_options variable is now honored during repo
building. This variable allows deployers to specify trusted
CA certificates by setting the variable to "--cert
/etc/ssl/certs/ca-certificates.crt"

View File

@ -1,6 +0,0 @@
---
features:
- The repo build process is now able to make use of a pre-staged git cache.
If the ``/var/www/repo/openstackgit`` folder on the repo server is found
to contain existing git clones then they will be updated if they do not
already contain the required SHA for the build.

View File

@ -1,22 +0,0 @@
---
upgrade:
- The entire repo build process is now idempotent. From now on when
the repo build is re-run, it will only fetch updated git
repositories and rebuild the wheels/venvs if the requirements
have changed, or a new release is being deployed.
- The git clone part of the repo build process now only happens when
the requirements change. A git reclone can be forced by using the
boolean variable ``repo_build_git_reclone``.
- The python wheel build process now only happens when requirements
change. A wheel rebuild may be forced by using the boolean variable
``repo_build_wheel_rebuild``.
- The python venv build process now only happens when requirements
change. A venv rebuild may be forced by using the boolean variable
``repo_build_venv_rebuild``.
- The repo build process now only has the following tags, providing
a clear path for each deliverable. The tag ``repo-build-install``
completes the installation of required packages. The tag
``repo-build-wheels`` completes the wheel build process. The tag
``repo-build-venvs`` completes the venv build process. Finally, the
tag ``repo-build-index`` completes the manifest preparation and
indexing of the os-releases and links folders.

View File

@ -1,7 +0,0 @@
---
features:
- The repo build process is now able to support building and synchronizing
artifacts for multiple CPU architectures. Build artifacts are now tagged
with the appropriate CPU architecture by default, and synchronization of
build artifacts from secondary, architecture-specific repo servers back
to the primary repo server is supported.

View File

@ -1,9 +0,0 @@
---
features:
- The repo server file system structure has been updated to
allow for multiple Operating systems running multiple
architectures to be run at the same time and served from
a single server without impacting pools, venvs, wheel
archives, and manifests. The new structure follows the
following pattern `$RELEASE/$OS_TYPE-$ARCH` and has been
applied to *os-releases*, *venvs*, and *pools*.

View File

@ -1,13 +0,0 @@
---
features:
- The repo_build role now supports the ability to configure whether
apt/yum tasks install the latest available package, or just ensure
that the package is present. The default action is to ensure that
the latest package is present. The action taken may be changed to
only ensure that the package is present by setting
``repo_build_package_state`` to ``present``.
upgrade:
- The repo_build role always checks whether the latest package is
installed when executed. If a deployer wishes to change the check to
only validate the presence of the package, the option
``repo_build_package_state`` should be set to ``present``.

View File

@ -1,5 +0,0 @@
---
deprecations:
- The variable ``repo_build_pip_extra_index`` has been removed.
The replacement list variable ``repo_build_pip_extra_indexes``
should be used instead.

View File

@ -1,10 +0,0 @@
---
features:
- The repo build process now has the ability to store the pip
sources within the build archive. This ability is useful when
deploying environments that are "multi-architecture",
"multi-distro", or "multi-interpreter" where specific pre-build
wheels may not be enough to support all of the deployment.
To enable the ability to store the python source code within a
given release, set the new option ``repo_build_store_pip_sources``
to ``true``.

View File

@ -1,5 +0,0 @@
---
other:
- From now on, external repo management (in use for
RDO/UCA for example) will be done inside the
pip-install role, not in the repo_build role.

View File

@ -1,5 +0,0 @@
---
upgrade:
- The ``repo_build_apt_packages`` variable has been renamed.
``repo_build_distro_packages`` should be used instead to
override packages required to build Python wheels and venvs.

View File

@ -1,5 +0,0 @@
---
fixes:
- The ``repo_build`` role now correctly applies OpenStack requirements
upper-constraints when building Python wheels. This resolves
https://bugs.launchpad.net/openstack-ansible/+bug/1605846

View File

@ -1,4 +0,0 @@
---
upgrade:
- The ``repo_build`` role now makes use of Ubuntu Cloud Archive by default.
This can be disabled by setting ``repo_build_uca_enable`` to ``False``.

View File

@ -1,21 +0,0 @@
---
deprecations:
- |
The repo build process no longer builds packaged venvs. Instead, the venvs
are created on the target hosts as the install process for each service
needs to. This opens up the opportunity for roles to be capable of creating
multiple venvs, and for any role to create venvs - neither of these options
were possible in previous releases.
The following variables therefore have been removed.
* ``repo_build_venv_selective``
* ``repo_build_venv_rebuild``
* ``repo_build_venv_timeout``
* ``repo_build_concurrency``
* ``repo_build_venv_build_dir``
* ``repo_build_venv_dir``
* ``repo_build_venv_pip_install_options``
* ``repo_build_venv_command_options``
* ``repo_venv_default_pip_packages``

View File

@ -1,8 +0,0 @@
---
features:
- The repo build process now selectively clones git repositories
based on whether each OpenStack service group has any hosts in
it. If there are no hosts in the group, the git repo for the
service will not be cloned. This behaviour can be optionally
changed to force all git repositories to be cloned by setting
``repo_build_git_selective`` to ``no``.

View File

@ -1,8 +0,0 @@
---
features:
- The repo build process now selectively builds venvs based on
whether each OpenStack service group has any hosts in it. If
there are no hosts in the group, the venv will not be built.
This behaviour can be optionally changed to force all venvs
to be built by setting ``repo_build_venv_selective`` to
``yes``.

View File

@ -1,8 +0,0 @@
---
features:
- The repo build process now selectively builds python packages
based on whether each OpenStack service group has any hosts in
it. If there are no hosts in the group, the list of python
packages for the service will not be built. This behaviour can
be optionally changed to force all python packages to be built
by setting ``repo_build_wheel_selective`` to ``no``.

View File

@ -1,5 +0,0 @@
---
fixes:
- The repo_build play now correctly evaluates environment
variables configured in /etc/environment. This enables
deployments in an environment with http proxies.

View File

@ -1,9 +0,0 @@
---
features:
- The ``repo_build`` role now provides the ability to override the
upper-constraints applied which are sourced from OpenStack and
from the global-requirements-pins.txt file. The variable
``repo_build_upper_constraints_overrides`` can be populated with
a list of upper constraints. This list will take the highest
precedence in the constraints process, with the exception of
the pins set in the git source SHAs.

View File

@ -1,285 +0,0 @@
#!/usr/bin/env python3
# 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.
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
# sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'openstackdocstheme',
'reno.sphinxext',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
# source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
author = 'OpenStack-Ansible Contributors'
category = 'Miscellaneous'
copyright = '2014-2016, OpenStack-Ansible Contributors'
description = 'OpenStack-Ansible deploys OpenStack environments using Ansible.'
project = 'OpenStack-Ansible'
role_name = 'repo_build'
target_name = 'openstack-ansible-' + role_name
title = 'OpenStack-Ansible Release Notes: ' + role_name + 'role'
# The link to the browsable source code (for the left hand menu)
oslosphinx_cgit_link = (
"https://git.openstack.org/cgit/openstack/{}".format(target_name)
)
# Release notes do not need a version number in the title, they
# cover multiple releases.
# The full version, including alpha/beta/rc tags.
release = ''
# The short X.Y version.
version = ''
# openstackdocstheme options
repository_name = 'openstack/' + target_name
bug_project = project.lower()
bug_tag = ''
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
# language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
# today = ''
# Else, today_fmt is used as the format for a strftime call.
# today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all
# documents.
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
# keep_warnings = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'openstackdocs'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
# html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
# html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
# html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
# html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
# html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
# html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
html_last_updated_fmt = '%Y-%m-%d %H:%M'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
# html_additional_pages = {}
# If false, no module index is generated.
# html_domain_indices = True
# If false, no index is generated.
# html_use_index = True
# If true, the index is split into individual pages for each letter.
# html_split_index = False
# If true, links to the reST sources are added to the pages.
# html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
# html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
# html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
# html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = target_name + '-docs'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
# 'preamble': '',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, target_name + '.tex',
title, author, 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
# latex_use_parts = False
# If true, show page references after internal links.
# latex_show_pagerefs = False
# If true, show URL addresses after external links.
# latex_show_urls = False
# Documents to append as an appendix to all manuals.
# latex_appendices = []
# If false, no module index is generated.
# latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, target_name,
title, [author], 1)
]
# If true, show URL addresses after external links.
# man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, target_name,
title, author, project,
description, category),
]
# Documents to append as an appendix to all manuals.
# texinfo_appendices = []
# If false, no module index is generated.
# texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
# texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
# texinfo_no_detailmenu = False
# -- Options for Internationalization output ------------------------------
locale_dirs = ['locale/']

View File

@ -1,16 +0,0 @@
==========================================
OpenStack-Ansible repo_build release notes
==========================================
.. toctree::
:maxdepth: 1
unreleased
train
stein
rocky
queens
pike
ocata
newton
mitaka

View File

@ -1,6 +0,0 @@
===========================
Mitaka series release notes
===========================
.. release-notes::
:branch: origin/stable/mitaka

View File

@ -1,6 +0,0 @@
===================================
Newton Series Release Notes
===================================
.. release-notes::
:branch: origin/stable/newton

View File

@ -1,6 +0,0 @@
===================================
Ocata Series Release Notes
===================================
.. release-notes::
:branch: origin/stable/ocata

View File

@ -1,6 +0,0 @@
===================================
Pike Series Release Notes
===================================
.. release-notes::
:branch: stable/pike

View File

@ -1,6 +0,0 @@
===================================
Queens Series Release Notes
===================================
.. release-notes::
:branch: stable/queens

View File

@ -1,6 +0,0 @@
===================================
Rocky Series Release Notes
===================================
.. release-notes::
:branch: stable/rocky

View File

@ -1,6 +0,0 @@
===================================
Stein Series Release Notes
===================================
.. release-notes::
:branch: stable/stein

View File

@ -1,6 +0,0 @@
==========================
Train Series Release Notes
==========================
.. release-notes::
:branch: stable/train

View File

@ -1,5 +0,0 @@
============================
Current series release notes
============================
.. release-notes::

View File

@ -1,97 +0,0 @@
#!/usr/bin/env bash
# Copyright 2015, Rackspace US, Inc.
#
# 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.
# PURPOSE:
# This script clones the openstack-ansible-tests repository to the
# tests/common folder in order to be able to re-use test components
# for role testing. This is intended to be the thinnest possible
# shim for test execution outside of OpenStack CI.
# WARNING:
# This file is maintained in the openstack-ansible-tests repository.
# https://opendev.org/openstack/openstack-ansible-tests/src/run_tests.sh
# If you need to modify this file, update the one in the openstack-ansible-tests
# repository and then update this file as well. The purpose of this file is to
# prepare the host and then execute all the tox tests.
#
## Shell Opts ----------------------------------------------------------------
set -xeu
## Vars ----------------------------------------------------------------------
WORKING_DIR="$(readlink -f $(dirname $0))"
OSA_PROJECT_NAME="$(sed -n 's|^project=openstack/\(.*\).git$|\1|p' $(pwd)/.gitreview)"
COMMON_TESTS_PATH="${WORKING_DIR}/tests/common"
TESTING_HOME=${TESTING_HOME:-$HOME}
ZUUL_TESTS_CLONE_LOCATION="/home/zuul/src/opendev.org/openstack/openstack-ansible-tests"
# Use .gitreview as the key to determine the appropriate
# branch to clone for tests.
TESTING_BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' "${WORKING_DIR}/.gitreview")
if [[ "${TESTING_BRANCH}" == "" ]]; then
TESTING_BRANCH="master"
fi
## Main ----------------------------------------------------------------------
# Source distribution information
source /etc/os-release || source /usr/lib/os-release
# Prefer dnf over yum for CentOS.
which dnf &>/dev/null && RHT_PKG_MGR='dnf' || RHT_PKG_MGR='yum'
# Figure out the appropriate package install command
case ${ID,,} in
*suse*) pkg_mgr_cmd="zypper -n in" ;;
centos|rhel|fedora) pkg_mgr_cmd="${RHT_PKG_MGR} install -y" ;;
ubuntu|debian) pkg_mgr_cmd="apt-get install -y" ;;
# Gentoo needs to have version set since it's rolling
gentoo) pkg_mgr_cmd="emerge --jobs=4"; VERSION="rolling" ;;
*) echo "unsupported distribution: ${ID,,}"; exit 1 ;;
esac
# Install git so that we can clone the tests repo if git is not available
case ${ID,,} in
gentoo) which git &>/dev/null || eval sudo "${pkg_mgr_cmd}" dev-vcs/git ;;
*) which git &>/dev/null || eval sudo "${pkg_mgr_cmd}" git ;;
esac
# Clone the tests repo for access to the common test script
if [[ ! -d "${COMMON_TESTS_PATH}" ]]; then
# The tests repo doesn't need a clone, we can just
# symlink it.
if [[ "${OSA_PROJECT_NAME}" == "openstack-ansible-tests" ]]; then
ln -s "${WORKING_DIR}" "${COMMON_TESTS_PATH}"
# In zuul v3 any dependent repository is placed into
# /home/zuul/src/opendev.org, so we check to see
# if there is a tests checkout there already. If so, we
# symlink that and use it.
elif [[ -d "${ZUUL_TESTS_CLONE_LOCATION}" ]]; then
ln -s "${ZUUL_TESTS_CLONE_LOCATION}" "${COMMON_TESTS_PATH}"
# Otherwise we're clearly not in zuul or using a previously setup
# repo in some way, so just clone it from upstream.
else
git clone -b "${TESTING_BRANCH}" \
https://opendev.org/openstack/openstack-ansible-tests \
"${COMMON_TESTS_PATH}"
fi
fi
# Execute the common test script
source tests/common/run_tests_common.sh

View File

@ -12,13 +12,9 @@ classifier =
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
[build_sphinx]
all_files = 1
build-dir = doc/build
source-dir = doc/source
[pbr]
warnerrors = True
[wheel]
universal = 1
universal = 1

View File

@ -1,54 +0,0 @@
---
# Copyright 2015, Rackspace US, Inc.
#
# 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.
- name: Gather variables for each operating system
include_vars: "{{ item }}"
with_first_found:
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml"
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
- "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
- "{{ ansible_distribution | lower }}.yml"
- "{{ ansible_os_family | lower }}.yml"
tags:
- always
- include_tasks: repo_build_install.yml
tags:
- repo-build-install
- include_tasks: repo_build_prepare.yml
tags:
- always
- name: refresh local facts
setup:
filter: ansible_local
gather_subset: "!all"
tags:
- always
- include_tasks: repo_build_wheels.yml
when:
- ansible_local['openstack_ansible']['repo_build']['need_wheel_build'] | bool
tags:
- repo-build-wheels
- include_tasks: repo_build_index.yml
tags:
- repo-build-index
# Synchronize all built packages back to the repo master
- include_tasks: repo_package_sync.yml
when: inventory_hostname != groups['repo_all'][0]

View File

@ -1,39 +0,0 @@
---
# Copyright 2017, Rackspace US, Inc.
#
# 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.
- name: Index all os-releases/venvs files
find:
file_type: any
paths:
- "{{ repo_build_release_path }}"
register: manifest_items
tags:
- repo-create-release-manifest
- name: Index all openstackgit directories
find:
file_type: directory
paths:
- "{{ repo_build_git_dir }}"
register: manifest_git_items
tags:
- repo-create-release-manifest
- name: Create release manifest
template:
src: "manifest.in.j2"
dest: "{{ repo_build_release_path }}/MANIFEST.in"
tags:
- repo-create-release-manifest

View File

@ -1,52 +0,0 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# 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.
- name: Install EPEL gpg keys
rpm_key:
key: "http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7"
state: present
when:
- ansible_pkg_mgr in ['yum', 'dnf']
register: _add_yum_keys
until: _add_yum_keys is success
retries: 5
delay: 2
- name: Install the EPEL repository
yum_repository:
name: epel-repo_build
baseurl: "{{ (centos_epel_mirror | default ('http://download.fedoraproject.org/pub/epel')) ~ '/' ~ ansible_distribution_major_version ~ '/' ~ ansible_architecture }}"
description: 'Extra Packages for Enterprise Linux 7 - $basearch'
gpgcheck: yes
enabled: yes
state: present
includepkgs: 'moreutils perl-Time-Duration'
when:
- ansible_pkg_mgr in ['yum', 'dnf']
register: install_epel_repo
until: install_epel_repo is success
retries: 5
delay: 2
- name: Install packages
package:
name: "{{ repo_build_distro_packages }}"
state: "{{ repo_build_package_state }}"
update_cache: "{{ (ansible_pkg_mgr == 'apt' or ansible_pkg_mgr == 'zypper') | ternary('yes', omit) }}"
cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}"
register: install_packages
until: install_packages is success
retries: 5
delay: 2

View File

@ -1,159 +0,0 @@
---
# Copyright 2015, Rackspace US, Inc.
#
# 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.
- name: Initialize local facts
ini_file:
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
section: repo_build
option: "need_wheel_build"
value: False
when:
- "(ansible_local is not defined) or
('openstack_ansible' not in ansible_local) or
('repo_build' not in ansible_local['openstack_ansible']) or
('need_wheel_build' not in ansible_local['openstack_ansible']['repo_build'])"
- name: Create package directories
file:
path: "{{ item }}"
state: directory
owner: "{{ repo_build_service_user_name }}"
with_items:
- "{{ repo_build_release_path }}"
- "{{ repo_build_global_links_path }}"
- name: Build package requirements file
template:
src: "requirements.txt.j2"
dest: "{{ repo_build_release_path }}/requirements.txt"
register: _wheel_build_requirements
- include_tasks: repo_clone_git.yml
when:
- (repo_build_git_reclone | bool) or
(_wheel_build_requirements is changed)
tags:
- repo-clone-repos
- name: Retrieve upper constraints content
slurp:
src: "{{ repo_build_git_dir }}/requirements/upper-constraints.txt"
register: slurp_upper_constraints
- name: Decode the upper constraints content
set_fact:
upper_constraints: "{{ slurp_upper_constraints.content | b64decode | splitlines }}"
- name: Build package constraints file
template:
src: "requirements_constraints.txt.j2"
dest: "{{ repo_build_release_path }}/requirements_constraints.txt"
register: _wheel_build_constraints
- name: Record whether a wheel build is required
ini_file:
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
section: repo_build
option: "need_wheel_build"
value: True
when:
- (_wheel_build_requirements | changed) or
(_wheel_build_constraints | changed) or
(repo_build_wheel_rebuild | bool)
- name: Create the virtualenv (if it does not exist)
command: "virtualenv --never-download --no-site-packages {{ repo_build_bin | dirname }}"
args:
creates: "{{ repo_build_bin }}/activate"
# Note(odyssey4me):
# To cater for a situation where the pip packages are changing, but the repo
# does not yet have the package built, we need to ensure that this task can
# fetch from pypi. To do this we try the local repo first, then fall back to
# using pypi.
- name: Try installing from the repo first, then fall back to using pypi
tags:
- repo-build-install
block:
- name: Upgrade pip/setuptools/wheel to the versions we want (from repo)
pip:
name:
- pip
- setuptools
- wheel
state: "{{ repo_build_pip_package_state }}"
virtualenv: "{{ repo_build_bin | dirname }}"
virtualenv_site_packages: "no"
extra_args: >-
--constraint {{ repo_build_release_path }}/requirements_constraints.txt
{{ pip_install_options | default('') }}
register: install_packages
until: install_packages is success
retries: 5
delay: 2
- name: Install pip packages (from repo)
pip:
name: "{{ repo_pip_packages }}"
state: "{{ repo_build_pip_package_state }}"
virtualenv: "{{ repo_build_bin | dirname }}"
virtualenv_site_packages: "no"
extra_args: >-
--constraint {{ repo_build_release_path }}/requirements_constraints.txt
{{ pip_install_options | default('') }}
register: install_packages
until: install_packages is success
retries: 5
delay: 5
rescue:
- name: Upgrade pip/setuptools/wheel to the versions we want (from pypi mirror)
pip:
name:
- pip
- setuptools
- wheel
state: "{{ repo_build_pip_package_state }}"
virtualenv: "{{ repo_build_bin | dirname }}"
virtualenv_site_packages: "no"
extra_args: >-
--index-url {{ repo_build_pip_default_index }}
--trusted-host {{ repo_build_pip_default_index | urlsplit('hostname') }}
--constraint {{ repo_build_release_path }}/requirements_constraints.txt
{{ pip_install_options | default('') }}
register: install_packages
until: install_packages is success
retries: 5
delay: 2
- name: Install pip packages (from pypi mirror)
pip:
name: "{{ repo_pip_packages }}"
state: "{{ repo_build_pip_package_state }}"
virtualenv: "{{ repo_build_bin | dirname }}"
virtualenv_site_packages: "no"
extra_args: >-
--index-url {{ repo_build_pip_default_index }}
--trusted-host {{ repo_build_pip_default_index | urlsplit('hostname') }}
--constraint {{ repo_build_release_path }}/requirements_constraints.txt
{{ pip_install_options | default('') }}
register: install_packages
until: install_packages is success
retries: 5
delay: 5
- name: Create repo log directory
file:
path: /var/log/repo
state: directory

View File

@ -1,144 +0,0 @@
---
# Copyright 2015, Rackspace US, Inc.
#
# 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.
- name: Ensure that temporary folders from previous build failures are absent
file:
path: "{{ item }}"
state: "absent"
with_items:
- "{{ repo_build_dir }}"
- "{{ repo_build_output }}"
- name: Create temporary folders
file:
path: "{{ item }}"
state: directory
owner: "{{ repo_build_service_user_name }}"
with_items:
- "{{ repo_build_dir }}"
- "{{ repo_build_output }}"
- name: Create distutils configuration file with index mirror
ini_file:
dest: "~/.pydistutils.cfg"
section: easy_install
option: index_url
value: "{{ repo_build_pip_default_index }}"
when: repo_build_pip_default_index is defined
- name: Download requirement pip sources
shell: >-
set -o pipefail;
yes i | {{ repo_build_bin }}/pip install
--timeout {{ repo_build_timeout }}
--download {{ repo_build_output }}
--no-binary :all:
--constraint {{ repo_build_release_path }}/requirements_constraints.txt
--index-url {{ repo_build_pip_default_index }}
--trusted-host {{ repo_build_pip_default_index | urlsplit('hostname') }}
{% if repo_build_pip_extra_indexes is defined %}
--extra-index-url {{ repo_build_pip_extra_indexes | join(' --extra-index-url ') }}
--trusted-host {{ repo_build_pip_extra_indexes | map('urlsplit', 'hostname') | join(' --trusted-host ') }}
{% endif %}
--requirement {{ repo_build_release_path }}/requirements.txt
{{ pip_install_options }}
2>&1 | ts > /var/log/repo/source_download.log
args:
executable: "/bin/bash"
when: repo_build_store_pip_sources | bool
- name: Create OpenStack-Ansible requirement wheels
shell: >-
set -o pipefail;
{{ repo_build_bin }}/pip wheel
--timeout {{ repo_build_timeout }}
--wheel-dir {{ repo_build_output }}
--find-links {{ repo_build_global_links_path }}
--find-links {{ repo_build_output }}
--constraint {{ repo_build_release_path }}/requirements_constraints.txt
{% if repo_build_pip_no_binary is defined %}
--no-binary {{ repo_build_pip_no_binary | join(' --no-binary ') }}
{% endif %}
--index-url {{ repo_build_pip_default_index }}
--trusted-host {{ repo_build_pip_default_index | urlsplit('hostname') }}
{% if repo_build_pip_extra_indexes is defined %}
--extra-index-url {{ repo_build_pip_extra_indexes | join(' --extra-index-url ') }}
--trusted-host {{ repo_build_pip_extra_indexes | map('urlsplit', 'hostname') | join(' --trusted-host ') }}
{% endif %}
--build {{ repo_build_dir }}
--requirement {{ repo_build_release_path }}/requirements.txt
{{ pip_install_options }}
2>&1 | ts > /var/log/repo/wheel_build.log
args:
executable: "/bin/bash"
tags:
- skip_ansible_lint
- name: Register os-release files
find:
file_type: any
paths: "{{ repo_build_release_path }}"
patterns:
- "*{{ ansible_architecture | lower }}.whl"
- "*none-any.whl"
register: os_release_files
- name: Ensure os-release files are cleaned up
file:
path: "{{ item['path'] }}"
state: "absent"
with_items: "{{ os_release_files.files }}"
- name: Index built wheels
find:
paths: "{{ repo_build_output }}"
register: built_wheels
- name: Create release process script
template:
src: "op-release-script.sh.j2"
dest: "/opt/op-release-script.sh"
mode: "0755"
- name: Run release process script
shell: "/opt/op-release-script.sh"
args:
executable: "/bin/bash"
changed_when: false
# This task requires the use of the shell module, so we skip lint
# to avoid:
# ANSIBLE0013 Use shell only when shell functionality is required
tags:
- skip_ansible_lint
- name: Create absolute requirements
template:
src: "requirements_absolute_requirements.txt.j2"
dest: "{{ repo_build_release_path }}/requirements_absolute_requirements.txt"
- name: Clean up temporary build folders to save space
file:
path: "{{ item }}"
state: "absent"
with_items:
- "{{ repo_build_dir }}"
- "{{ repo_build_output }}"
- name: Disable the wheel build requirement now that it is complete
ini_file:
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
section: repo_build
option: need_wheel_build
value: False

View File

@ -1,57 +0,0 @@
---
# Copyright 2015, Rackspace US, Inc.
#
# 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.
- name: Check if the git folder exists already
stat:
path: "{{ repo_build_git_dir }}"
register: _git_folder
- name: Git service data folder setup
file:
path: "{{ (_git_folder.stat.exists and _git_folder.stat.islnk) | ternary(_git_folder.stat.lnk_source, repo_build_git_dir) }}"
state: "directory"
owner: "{{ repo_build_service_user_name }}"
group: "{{ repo_build_service_group_name }}"
recurse: true
- name: Retrieve requirements content
slurp:
src: "{{ repo_build_release_path }}/requirements.txt"
register: slurp_requirements
- name: Build filtered list of repos to clone
set_fact:
_repo_build_git_clone_list: "{{ _repo_build_git_clone_list | default([]) + [ item ] }}"
with_items: "{{ local_packages.results.0.item.remote_package_parts }}"
when: >
(not repo_build_git_selective | bool) or
(item['name'] in slurp_requirements.content | b64decode | splitlines) or
((groups[item['project_group']] is defined) and (groups[item['project_group']] | length > 0))
- name: Clone git repositories
become: yes
become_user: "{{ repo_build_service_user_name }}"
environment: "{{ global_environment_variables | default({}) }}"
git:
repo: "{{ item['url'] }}"
dest: "{{ repo_build_git_dir }}/{{ item['name'] }}"
version: "{{ item['version'] }}"
depth: "{{ repo_build_git_depth }}"
force: yes
with_items: "{{ _repo_build_git_clone_list }}"
register: _git_clone
until: _git_clone is success
delay: 5
retries: 10

View File

@ -1,38 +0,0 @@
---
# Copyright 2016, IBM.
#
# 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.
# Ansible synchronize module not used here due to remote user setting not
# working on the delegated host (as of ansible 2.1)
- name: Synchronize and Copy repo files
command: >
rsync
--delay-updates -F --compress --archive
--rsh 'ssh -l {{ repo_build_service_user_name }} -o stricthostkeychecking=no'
--out-format='<<CHANGED>>%i %n%L'
--rsync-path='mkdir -p {{ item.dest }} && rsync'
{{ item.src }}
{{ repo_build_service_user_name }}@{{ hostvars[groups['repo_all'][0]]['ansible_host'] }}:{{ item.dest }}
with_items:
- src: "{{ repo_build_release_path }}"
dest: "{{ repo_build_base_path }}/{{ repo_build_release_version_path }}"
- src: "{{ repo_build_pool_dir }}"
dest: "{{ repo_build_base_path }}/pools"
become: true
become_user: "{{ repo_build_service_user_name }}"
register: _sync_files
changed_when: _sync_files.stdout
tags:
# don't trigger ANSIBLE0006. remove when synchronize module is used
- skip_ansible_lint

View File

@ -1,13 +0,0 @@
{% for item in manifest_items['files'] %}
{% set item_cleaned = item['path'] | regex_replace(repo_build_base_path ~ "/", '') %}
{% set item_basename = item_cleaned | basename %}
{% if item_cleaned is match(repo_build_release_version_path + "/.*/.*\.whl") %}
{{ repo_build_pool_dir | regex_replace(repo_build_base_path ~ "/", '') }}/{{ item_basename.split('-')[0] }}/{{ item_basename | lower }}
{{ item_cleaned | lower }}
{% else %}
{{ item_cleaned }}
{% endif %}
{% endfor %}
{% for item in manifest_git_items['files'] %}
{{ item['path'] | regex_replace(repo_build_base_path ~ "/", '') }}
{% endfor %}

View File

@ -1,9 +0,0 @@
# {{ ansible_managed }}
pre-start script
echo "pass"
end script
post-stop script
echo "pass"
end script

View File

@ -1,64 +0,0 @@
#!/usr/bin/env bash
set -e
function build_repo {
PKG_DIRECTORY="$1"
PKG_LOWER="$2"
RAW_PKG="$3"
# If the target PKG_DIRECTORY does not exist, create it
[[ ! -d "${PKG_DIRECTORY}" ]] && mkdir -p "${PKG_DIRECTORY}"
# Make sure the repo service user owns the PKG_DIRECTORY
chown "{{ repo_build_service_user_name }}" "${PKG_DIRECTORY}"
# If the target wheel PKG_DIRECTORY has an index.html file in it, remove it. This is
# in support of older archives that may have been created in the early liberty/kilo
# timeframe.
[[ -f "${PKG_DIRECTORY}/index.html" ]] && rm "${PKG_DIRECTORY}/index.html"
# Move the built wheel into place if it does not exist or is different from one
# already found that is using the same name.
if [ ! -f "${PKG_DIRECTORY}/${PKG_LOWER}" ];then
mv "{{ repo_build_output }}/${RAW_PKG}" "${PKG_DIRECTORY}/${PKG_LOWER}"
elif ! diff "{{ repo_build_output }}/${RAW_PKG}" "${PKG_DIRECTORY}/${PKG_LOWER}" > /dev/null;then
mv "{{ repo_build_output }}/${RAW_PKG}" "${PKG_DIRECTORY}/${PKG_LOWER}"
fi
# Make sure the repo service user owns the package
chown "{{ repo_build_service_user_name }}" "${PKG_DIRECTORY}/${PKG_LOWER}"
# link the built package to the release reference
ln -sf "${PKG_DIRECTORY}/${PKG_LOWER}" "{{ repo_build_release_path }}/${PKG_LOWER}"
# Make sure the repo service user owns the link
chown -h "{{ repo_build_service_user_name }}" "{{ repo_build_release_path }}/${PKG_LOWER}"
# link the built package to the global links reference
ln -sf "${PKG_DIRECTORY}/${PKG_LOWER}" "{{ repo_build_global_links_path }}/${PKG_LOWER}"
# Make sure the repo service user owns the link
chown -h "{{ repo_build_service_user_name }}" "{{ repo_build_global_links_path }}/${PKG_LOWER}"
}
# Loop through all built wheels.
{% for file_data in built_wheels['files'] %}
{% set file_name = file_data['path'] | basename %}
# Set the PKG_DIRECTORY variable normalizing the name
# Set the package name variable normalizing the name
DIRECTORY="{{ repo_build_pool_dir }}/{{ file_name.split('-')[0] | lower }}"
NAME_LOWER="{{ file_name | lower }}"
RAW_NAME="{{ file_name }}"
echo -n "Moving ${RAW_NAME} to repo..."
build_repo "${DIRECTORY}" "${NAME_LOWER}" "${RAW_NAME}"
echo "done"
unset PKG_DIRECTORY
unset PKG_LOWER
{% endfor %}

View File

@ -1,105 +0,0 @@
# This is a unique, sorted list of requirements compiled by the repo
# build process. The requirements are compiled from all the roles
# using their *_pip_packages lists, the global-requirements-pins,
# and the git sources provided.
# Where a package is found to be provided from a git source, the
# designated git repository SHA is added as a comment.
{# #}
{# To make it easier to add the comment for each git sourced package #}
{# when compiling the all_requirements list, we need to put together #}
{# a map of the package names to the version based on the git data #}
{# provided by the py_pkgs lookup. #}
{# #}
{% set git_packages = {} %}
{% for clone_item in local_packages.results.0.item.remote_package_parts %}
{% if 'ignorerequirements=true' not in clone_item['original'] %}
{% set name_normalized = clone_item['name'] | replace('-', '_') | lower %}
{% set _ = git_packages.update({name_normalized: clone_item['version']}) %}
{% endif %}
{% endfor %}
{# #}
{# The list provided by the py_pkgs lookup is a raw set which needs #}
{# some normalization. We also want to add the SHA/version as a #}
{# comment to anything provided from a git source to make it simple #}
{# for the git cloning and wheel building process to be idempotent. #}
{# #}
{% set all_requirements={} %}
{% for requirement_raw in local_packages.results.0.item.packages %}
{% set name = requirement_raw | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') %}
{% set data = requirement_raw | regex_replace(name,'') %}
{% set name_normalized = name | replace('-', '_') | lower %}
{% if name_normalized in git_packages %}
{% set requirement_normalized = name_normalized ~ data ~ ' # ' ~ git_packages[name_normalized] %}
{% else %}
{% set requirement_normalized = name_normalized ~ data %}
{% endif %}
{% set _ = all_requirements.update({name_normalized: requirement_normalized}) %}
{% endfor %}
{# #}
{# Now we have a complete, normalised and commented reference set #}
{# to work with. Now, for a non-selective wheel build, we simply #}
{# output the resulting list. #}
{# #}
{% if not repo_build_wheel_selective | bool %}
{% for requirement_name, requirement in all_requirements.items() | sort %}
{{ requirement }}
{% endfor %}
{% else %}
{# #}
{# For a selective wheel build, we now need to build a set of the #}
{# packages we actually want to build. This list of packages must #}
{# be a unique set (or pip wheel will fail). We will use a #}
{# key:value mechanism to compile the set. #}
{# #}
{% set selected_requirements={} %}
{# #}
{# These are files which are in the root repo requirements and must #}
{# always be built. #}
{# #}
{% for requirement_raw in local_packages.results.0.item.role_requirement_files.default.txt_file_packages %}
{% set name = requirement_raw | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') %}
{% set name_normalized = name | replace('-', '_') | lower %}
{% set requirement_normalized = all_requirements[name_normalized] %}
{% set _ = selected_requirements.update({name_normalized: requirement_normalized}) %}
{% endfor %}
{# #}
{# These are files which are in the roles. We only select them if #}
{# their project_groups are populated. #}
{# #}
{% for role_name, role_data in local_packages.results.0.item.role_requirements.items() %}
{% set _host_group = role_data['project_group'] %}
{% if ((groups[_host_group] is defined) and (groups[_host_group] | length > 0)) %}
{% set _build_wheel = True %}
{% else %}
{% set _build_wheel = False %}
{% endif %}
{% if (_build_wheel | bool) %}
{% for requirement_key, requirement_data in role_data.items() %}
{# #}
{# We only want to iterate through the '_pip_packages' lists #}
{# as there may be other data structures in the role_data. #}
{# We must also make sure we're skipping the properietary #}
{# packages as they're not available for the repo server to #}
{# download/build. #}
{# #}
{% if '_pip_packages' in requirement_key and 'proprietary' not in requirement_key %}
{% for requirement_raw in requirement_data %}
{% set name = requirement_raw | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') %}
{% set name_normalized = name | replace('-', '_') | lower %}
{% if name_normalized in all_requirements %}
{% set requirement_normalized = all_requirements[name_normalized] %}
{% set _ = selected_requirements.update({name_normalized: requirement_normalized}) %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{# #}
{# Now that we have a complete set of requirements, we output them. #}
{# #}
{% for requirement_name, requirement in selected_requirements.items() | sort %}
{{ requirement }}
{% endfor %}
{% endif %}

View File

@ -1,4 +0,0 @@
{% for file_data in built_wheels['files'] %}
{% set file_name = file_data['path'] | basename %}
{{ file_name.split('-')[0] | lower }}=={{ (file_name.split('-')[1].split('_')) | join('.post') | lower }}
{% endfor %}

View File

@ -1,47 +0,0 @@
#
# Constraints set by SHA's in the git sources
#
{% set constraint_pkgs = [] %}
{% for clone_item in local_packages.results.0.item.remote_package_parts %}
{% if 'ignorerequirements=true' not in clone_item['original'] %}
{{ clone_item['original'] | replace(clone_item['url'], 'file://' + repo_build_git_dir + '/' + clone_item['name'] ) }}
{% set _ = constraint_pkgs.append(clone_item['name'] | replace('-', '_') | lower) %}
{% endif %}
{% endfor %}
#
# User-provided constraints set through a variable
#
{% set override_packages = [] %}
{% for constraint_override_item in repo_build_upper_constraints_overrides %}
{% set constraint_override_name = constraint_override_item | regex_replace('(>=|<=|>|<|==|~=|!=).*$','') %}
{% set _ = override_packages.append(constraint_override_name) %}
{{ constraint_override_item }}
{% endfor %}
#
# Global pins set through the file global-requirement-pins.txt
#
{% set global_pin_packages = [] %}
{% for global_pin in local_packages.results.0.item.role_requirement_files.global_pins.pinned_packages %}
{% set global_pin_package_name = global_pin | regex_replace('(<=|<|==).*$','') %}
{% set _ = global_pin_packages.append(global_pin_package_name) %}
{# we want to ensure that repo_build_upper_constraints_overrides take the highest precedence #}
{% if global_pin_package_name not in repo_build_upper_constraints_overrides %}
{{ global_pin }}
{% endif %}
{% endfor %}
{# we don't bother applying OpenStack upper-constraints if the deployer has opted not to #}
{% if repo_build_use_upper_constraints | bool %}
#
# Upper constraints from the OpenStack requirements repo
#
{% for constraint_item in upper_constraints %}
{% set constraint_name = constraint_item | regex_replace('===.*', '') %}
{% set constraint_data = constraint_item | regex_replace('.*===', '') %}
{# The name has to be normalised to comply with PEP standards #}
{% set constraint_name_normalized = constraint_name | replace('-', '_') | lower %}
{% set constraint = constraint_name_normalized + '<=' + constraint_data %}
{% if (constraint_name_normalized not in constraint_pkgs) and (constraint_name_normalized not in override_packages) and (constraint_name_normalized not in global_pin_packages) %}
{{ constraint }}
{% endif %}
{% endfor %}
{% endif %}

View File

@ -1,29 +0,0 @@
---
- name: apt_package_pinning
src: https://opendev.org/openstack/openstack-ansible-apt_package_pinning
scm: git
version: master
- name: pip_install
src: https://opendev.org/openstack/openstack-ansible-pip_install
scm: git
version: master
- name: galera_client
src: https://opendev.org/openstack/openstack-ansible-galera_client
scm: git
version: master
- name: openstack_hosts
src: https://opendev.org/openstack/openstack-ansible-openstack_hosts
scm: git
version: master
- name: lxc_hosts
src: https://opendev.org/openstack/openstack-ansible-lxc_hosts
scm: git
version: master
- name: lxc_container_create
src: https://opendev.org/openstack/openstack-ansible-lxc_container_create
scm: git
version: master
- name: repo_server
src: https://opendev.org/openstack/openstack-ansible-repo_server
scm: git
version: master

View File

@ -1,25 +0,0 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# 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.
container_networks:
management_address:
address: "{{ ansible_host }}"
bridge: "br-mgmt"
interface: "eth1"
netmask: "255.255.255.0"
type: "veth"
physical_host: localhost
properties:
service_name: "{{ inventory_hostname }}"

View File

@ -1,5 +0,0 @@
---
ansible_host: 10.100.100.2
ansible_become: True
ansible_user: root
container_name: container1

View File

@ -1,19 +0,0 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# 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.
bridges:
- "br-mgmt"
ansible_python_interpreter: "/usr/bin/python2"

View File

@ -1,46 +1,2 @@
[all]
localhost
container1
[repo_all]
container1
[all_containers:children]
repo_all
# This is here to validate selectively building with
# requirements like "aodh[mysql]"
[aodh_all]
container1
# This is here to validate the venv build inclusion
[keystone_all]
container1
# This is here to validate the venv build inclusion
[utility_all]
container1
# This is here to validate the git clone exclusion
[nova_all]
# This is here to validate the git clone exclusion
[cinder_all]
# This is here to validate the git clone exclusion
[ceilometer_all]
# This is here to validate the git clone exclusion
[glance_all]
# This is here to validate the git clone exclusion
[heat_all]
# This is here to validate the git clone exclusion
[horizon_all]
# This is here to validate the git clone exclusion
[neutron_all]
# This is here to validate the git clone exclusion
[swift_all]
localhost

File diff suppressed because it is too large Load Diff

View File

@ -1,69 +0,0 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# 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.
- name: Install repo server
hosts: repo_all
user: root
roles:
- "repo_server"
post_tasks:
- name: Check if the git cache exists on deployment host
local_action:
module: stat
path: "/opt/git/opendev.org/openstack"
register: _local_git_cache
- name: Pre-cache the keystone git repository (from git cache)
synchronize:
src: "/opt/git/opendev.org/openstack/keystone/"
dest: "/var/www/repo/openstackgit/keystone"
when:
- _local_git_cache.stat is defined
- _local_git_cache.stat.exists
- name: Pre-cache the keystone git repository (from git source)
git:
repo: "https://opendev.org/openstack/keystone"
dest: "/var/www/repo/openstackgit/keystone"
clone: yes
update: yes
become: yes
become_user: "{{ repo_build_service_user_name }}"
when:
- _local_git_cache.stat is defined
- not _local_git_cache.stat.exists
tags:
- skip_ansible_lint
- name: Pre-cache the tempest git repository (from git source)
git:
repo: "https://opendev.org/openstack/tempest"
dest: "/var/www/repo/openstackgit/tempest"
clone: yes
update: yes
become: yes
become_user: "{{ repo_build_service_user_name }}"
tags:
- skip_ansible_lint
- name: Intentionally set the keystone repo remote origin to github
command: "git remote set-url origin https://github.com/openstack/keystone.git"
args:
chdir: "/var/www/repo/openstackgit/keystone"
tags:
- skip_ansible_lint
vars_files:
- test-vars.yml

View File

@ -1,161 +0,0 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# 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.
- name: Build repo
hosts: repo_all
user: root
vars:
test_data_file_path: "{{ lookup('env', 'WORKING_DIR') }}/tests/test-data.yml"
vars_files:
- test-vars.yml
pre_tasks:
# Test data output from the py_pkgs lookup
# To produce a fresh version of this, execute:
# /opt/ansible-runtime/bin/python /etc/ansible/roles/plugins/lookup/py_pkgs.py \
# /opt/openstack-ansible /etc/ansible/roles /etc/openstack_deploy | \
# /opt/ansible-runtime/bin/python -c 'import sys, yaml, json; yaml.safe_dump(json.load(sys.stdin), sys.stdout, default_flow_style=False)'
# then perform the final minor adjustment of the top-end structure to fit the current structure
- name: Import the test data
set_fact:
local_packages:
results:
-
item:
"{{ (lookup('file', test_data_file_path) | from_yaml)[0] }}"
- name: Check if this is an OpenStack-CI nodepool instance
stat:
path: /etc/nodepool/provider
register: nodepool
delegate_to: localhost
- name: Determine the existing Ubuntu repo URL (only on OpenStack-CI)
shell: 'awk "/^deb .*ubuntu\/? {{ ansible_distribution_release }} main/ {print \$2; exit}" /etc/apt/sources.list'
register: ubuntu_repo_url
changed_when: false
when:
- ansible_pkg_mgr == 'apt'
- nodepool.stat.exists | bool
delegate_to: localhost
- name: Set Ubuntu Cloud Archive repo URL based on discovered information
set_fact:
uca_apt_repo_url: "{{ ubuntu_repo_url.stdout | urlsplit('scheme') ~ '://' ~ urlsplit('netloc') }}/ubuntu-cloud-archive"
when:
- ansible_pkg_mgr == 'apt'
- nodepool.stat.exists | bool
roles:
- "repo_build"
post_tasks:
- name: List the files in the git folder
command: ls -1 /var/www/repo/openstackgit/
register: git_folder_content
changed_when: false
- name: Ensure that the keystone git repo is present
assert:
that: "'keystone' in git_folder_content.stdout"
- name: Ensure that the tempest git repo is present
assert:
that: "'tempest' in git_folder_content.stdout"
- name: Ensure that the requirements git repo is present
assert:
that: "'requirements' in git_folder_content.stdout"
- name: Ensure that the nova git repo is NOT present
assert:
that: "'nova' not in git_folder_content.stdout"
- name: Slurp upper constraints
slurp:
src: "{{ repo_build_git_dir }}/requirements/upper-constraints.txt"
register: slurp_upper_constraints
- name: Slurp requirements constraints
slurp:
src: "{{ repo_build_release_path }}/requirements_constraints.txt"
register: slurp_requirements_constraints
- name: Set fact for requirements constraints content
set_fact:
requirements_constraints_content: "{{ slurp_requirements_constraints.content | b64decode }}"
- name: Set fact for upper constraints content
set_fact:
upper_constraints_list: >
{%- set constraints = [] %}
{%- for constraint_raw in slurp_upper_constraints.content | b64decode | splitlines %}
{%- set constraint_name = constraint_raw | regex_replace('===.*', '') %}
{%- set constraint_data = constraint_raw | regex_replace('.*===', '') %}
{%- set constraint_name_normalized = constraint_name | replace('-', '_') | lower %}
{%- set constraint = constraint_name_normalized + '<=' + constraint_data %}
{%- set _ = constraints.append(constraint) %}
{%- endfor %}
{{- constraints -}}
- name: Set fact for upper constraints override
set_fact:
upper_constraints_override_list: >
{%- set override_packages = [] %}
{%- for override in repo_build_upper_constraints_overrides %}
{%- set name = override | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') %}
{%- set name_normalized = name | replace('-', '_') | lower %}
{%- set _ = override_packages.append(name_normalized) %}
{%- endfor %}
{{- override_packages -}}
- name: Set fact for global pins
set_fact:
global_pins_list: >
{%- set global_pins = [] %}
{%- for pin in local_packages.results.0.item.role_requirement_files.global_pins.pinned_packages %}
{%- set name = pin | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') %}
{%- set name_normalized = name | replace('-', '_') | lower %}
{%- set _ = global_pins.append(name_normalized) %}
{%- endfor %}
{{- global_pins -}}
- name: Set facts for packages built from git sources
set_fact:
git_package_list: >
{%- set git_packages = [] %}
{%- for remote_package_part in local_packages.results.0.item.remote_package_parts %}
{%- set _ = git_packages.append(remote_package_part['egg_name']) %}
{%- endfor %}
{{- git_packages -}}
- name: Ensure that upper constraints from the OpenStack requirements repo are complete
assert:
that: item in requirements_constraints_content
with_items: "{{ upper_constraints_list }}"
when:
- repo_build_use_upper_constraints | bool
- item | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') not in upper_constraints_override_list
- item | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') not in global_pins_list
- item | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') not in git_package_list
- name: Ensure that global pins have been applied
assert:
that: item in requirements_constraints_content
with_items: "{{ local_packages.results.0.item.role_requirement_files.global_pins.pinned_packages }}"
when:
- item | regex_replace('(\[|>=|<=|>|<|==|~=|!=).*$','') not in upper_constraints_override_list
- name: Ensure that upper constraints overrides are applied
assert:
that: item in requirements_constraints_content
with_items: "{{ repo_build_upper_constraints_overrides }}"

View File

@ -1,23 +0,0 @@
---
# Copyright 2016, @WalmartLabs
#
# 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.
openstack_release: testing
repo_build_release_tag: "{{ openstack_release }}"
repo_build_service_user_name: "nginx"
# Test data input for upper constraints validation
repo_build_upper_constraints_overrides:
- elasticsearch<2.1.0

View File

@ -1,23 +1,5 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# 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.
# Prepare the host
- import_playbook: common/test-setup-host.yml
# Install repo server
- import_playbook: test-install-server.yml
# Build repo
- import_playbook: test-repo-build.yml
- hosts: all
tasks:
- debug:
msg: ""

33
tox.ini
View File

@ -32,34 +32,6 @@ setenv =
WORKING_DIR={toxinidir}
[testenv:docs]
basepython = python3
deps = -r{toxinidir}/doc/requirements.txt
commands=
bash -c "rm -rf doc/build"
doc8 doc
sphinx-build -b html doc/source doc/build/html
[doc8]
# Settings for doc8:
extensions = .rst
[testenv:releasenotes]
basepython = python3
deps = -r{toxinidir}/doc/requirements.txt
commands =
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
# environment used by the -infra templated docs job
[testenv:venv]
basepython = python3
commands =
{posargs}
[testenv:pep8]
basepython = python3
commands =
@ -91,11 +63,6 @@ commands =
bash -c "{toxinidir}/tests/common/test-ansible-lint.sh"
[testenv:functional]
commands =
bash -c "{toxinidir}/tests/common/test-ansible-functional.sh"
[testenv:linters]
basepython = python3
commands =

View File

@ -1,41 +0,0 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# 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.
## APT Cache options
cache_timeout: 600
repo_build_distro_packages:
- build-essential
- cmake
- git
- liberasurecode-dev # required to build pyeclib
- libffi-dev # required to build xattr
- libjpeg-dev # required to build pillow
- libkrb5-dev # required to build pykerberos
- libldap2-dev # required to build python-ldap
- libpcre3-dev # required to build uwsgi
- libpq-dev # required to build psycopg2
- librados-dev # required to build cradox
- libsasl2-dev # required to build python-ldap
- libsqlite3-dev # required to build pysqlite
- libssl-dev # required to build cryptography
- libvirt-dev # required to build libvirt-python
- libxslt1-dev # required to build lxml
- libxml2-dev # required to build lxml
- libsystemd-dev # required to build systemd-python
- moreutils # provides `ts` command to timestamp pip logs
- pkg-config
- python-dev
- swig

View File

@ -1,37 +0,0 @@
---
# Copyright 2017, Rackspace US, Inc.
#
# 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.
# The following rules are applied in order to determine the filtered list
# of roles to be processed for producing venvs.
#
# 1. The role name must be named 'os_*'. We only want the OpenStack
# services to be compiled into venvs.
# 2. If repo_build_venv_selective is disabled, then all the roles
# which pass rule 1 will have venvs built.
# 3. If the 'project_group' for the role is defined and is populated
# then the venv will be built.
#
filtered_venv_role_python_requirements: |-
{%- set filtered_role_list = [] %}
{%- for role_name, role_data in local_packages.results.0.item.role_requirements.items() %}
{%- if ("os_" in role_name) %}
{%- set project_group = role_data['project_group'] %}
{%- if (not repo_build_venv_selective | bool) or
((groups[project_group] is defined) and (groups[project_group] | length > 0)) %}
{%- set _ = filtered_role_list.append({'role_name': role_name, 'role_data': role_data}) %}
{%- endif %}
{%- endif %}
{%- endfor %}
{{- filtered_role_list }}

View File

@ -1,37 +0,0 @@
---
# Copyright 2016, @WalmartLabs
#
# 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.
repo_build_distro_packages:
- cmake
- gcc
- git
- krb5-devel # required to build pykerberos
- liberasurecode-devel # required to build pyeclib
- libffi-devel # required to build xattr
- libjpeg-turbo-devel # required to build pillow
- librados2-devel # required to build cradox
- libvirt-devel # required to build libvirt-python
- libxslt-devel # required to build lxml
- moreutils # provides `ts` command to timestamp pip logs
- openldap-devel # required to build python-ldap
- pcre-devel # required to build uwsgi
- postgresql-devel # required to build psycopg2
- python2-devel
- openssl-devel # required to build cryptography
- systemd-devel # required to build systemd-python
- sqlite-devel # required to build pysqlite
- swig
- which
- tar # required for /opt/op-venv-script.sh

View File

@ -1,40 +0,0 @@
---
# Copyright 2016, @WalmartLabs
# Copyright 2017, SUSE LINUX GmbH.
#
# 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.
repo_build_distro_packages:
- gcc
- cmake
- git-core
- krb5-devel # required to build pykerberos
- liberasurecode-devel # required to build pyeclib
- libffi-devel # required to build xattr
- libjpeg8-devel # required to build pillow
- librados-devel # required to build cradox
- libvirt-devel # required to build libvirt-python
- libxslt1
- libxslt-devel # required to build lxml
- moreutils # provides `ts` command to timestamp pip logs
- cyrus-sasl-devel # required to build python-ldap
- openldap2-devel # required to build python-ldap
- postgresql-devel # required to build psycopg2
- pcre-devel # required to build uwsgi
- python-devel
- libopenssl-devel # required to build cryptography
- systemd-devel # required to build systemd-python
- sqlite-devel # required to build pysqlite
- swig
- which
- tar # required for /opt/op-venv-script.sh

View File

@ -1,21 +1,3 @@
---
# Copyright 2017, Rackspace US, Inc.
#
# 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.
- project:
templates:
- openstack-ansible-role-jobs
- check-requirements
- publish-openstack-docs-pti
- release-notes-jobs-python3
- openstack-ansible-linters