Jinja2 3.0.0 deprecated contextfilter in favour of pass_context. 3.1.0
dropped contextfilter.
Fall back to contextfilter for Jinja2 2.x.
This change also fixes some issues caused by Ansible lint 6.0. Issues
found by the yaml plugin are fixed, while the FQCN for builtin actions
plugin is skipped.
Change-Id: I97b25551eb26da2c9100120bcd646c88fdb33ba6
Installing virtualbmc system-wide on CentOS 8 fails with:
ModuleNotFoundError: No module named 'setuptools_rust'
This error appeared following the release of cryptography 3.4, which now
includes Rust code. It can be installed without Rust using a Python
wheel, but only with more recent pip than version 9.0.3 available as RPM
on CentOS 8. The cryptography bug report [1] recommends pip>=19.1.1.
Also ignore PyYAML when installing system-wide to avoid conflicts with
an existing RPM package installation.
[1] https://github.com/pyca/cryptography/issues/5753
Change-Id: Ibd61e090611b3b7a7e0670c854362b512454bf3c
Story: 2008607
Task: 41788
Switch to openstackdocstheme 2.2.1 and reno 3.1.0 versions. Using
these versions will allow especially:
* Linking from HTML to PDF document
* Allow parallel building of documents
* Fix some rendering problems
Update Sphinx version as well.
Set openstackdocs_pdf_link to link to PDF file. Note that
the link to the published document only works on docs.openstack.org
where the PDF file is placed in the top-level html directory. The
site-preview places the PDF in a pdf directory.
Disable openstackdocs_auto_name to use 'project' variable as name.
Change pygments_style to 'native' since old theme version always used
'native' and the theme now respects the setting and using 'sphinx' can
lead to some strange rendering.
openstackdocstheme renames some variables, so follow the renames
before the next release removes them. A couple of variables are also
not needed anymore, remove them.
See also
http://lists.openstack.org/pipermail/openstack-discuss/2020-May/014971.html
Change-Id: Iccb449e20174b973f83924659e1ee2db592a326f
Add file to the reno documentation build to show release notes for
stable/1.0.
Use pbr instruction to increment the minor version number
automatically so that master versions are higher than the versions on
stable/1.0.
Change-Id: I575f18ecafa512d79956d60fa7a454b80aca72d5
Sem-Ver: feature
Virtualbmc domain creation can be unreliable, in particular when domains
already exist. This is in part due to the vbmc stop command not functioning
properly [1]. By moving the domain management into a Python module we can
better control the process of creation, and improve performance.
[1] https://storyboard.openstack.org/#!/story/2003534
Change-Id: I52cb08cd0d300630cb6341f50eb0484c1d16daa4
We name veth pairs using up to the first 6 characters from the nodes names. If
the node name prefixes are longer than this then the node index will not be
included, and the interface names will not be unique.
e.g. prefix compute, 2 nodes: compute0 & compute1
Link names are all p-comput-0-tap
Note that the 0 here is the index of the physnet, node the node.
This patch includes any trailing digits to keep link names unique, e.g.
p-compu0-0-tap.
Change-Id: I35c3da1d00030d8a270ac1a09e88e22098594f20
Story: 2007431
Task: 39058
If Ansible hostvars contain a pipe (|) character, this can cause
problems during scheduling as Ansible fails during Jinja templating.
This is probably a bug in Ansible/Jinja.
The particular case where this was hit was when using screen, the
TERMCAP environment variable gets set to something beginning with
'SC|screen|VT'.
This change addresses the issue by moving the capture of hostvars inside
the tenks_update_state action plugin rather than evaluating them in a
playbook.
Change-Id: Ibef91d9ef499c8741b61a170672a23f530a600bb
This means that ansible 2.9 is typically used, and causes ansible-lint
to fail. Two workarounds have been added to address this:
* Use .get() to avoid passing an undefined object through to_nice_yaml
filter
* Create a dummy tenks_update_state.py module to avoid ansible-lint
being confused about our action plugin.
Change-Id: I54388f713e17a47601be2db63a26fc43ca7ac6c8
CentOS 8 nodepool images come with SELinux enabled, and prevent systemd
from accessing files in users' home directories. This prevents vbmcd
from starting.
To resolve this, install virtualbmc to the system when SELinux is
enabled.
Change-Id: I5d30aca2b1e1ae897568f6e11fceda39e0b06e17
Open vSwitch packages are no longer present in the default, or EPEL
repoistories. This means there is no clean way to install Open vSwitch
on CentOS. Instead, we should leave it up the user to decide how to
install it.
Change-Id: Ie56296230c9840e542ac70d96dc68c285d198ad6
Unless you add a 'properties' field under the 'ironic_config' for a node spec,
ironic nodes are registered with silly default properties (originating in the
os_ironic module) which cause validation to fail:
cpus:1, memory_mb: 1, local_gb: 1
We have enough info to add sensible defaults based on the VM configuration, so
let's do that.
Change-Id: I43fbe726d1d787d96be811f3ecd4234ea3b6bac3
Story: 2004908
Task: 29258
There are two cases when we may want to delete things:
1. if a desired node configuration or spec changes, we delete existing node
resources.
2. if we use the teardown.yml playbook, cmd == teardown, delete
everything, including global state.
In both cases, Tenks state (state.yml), all nodes to be deleted are given a
'state' of absent'. We should therefore use this rather than the 'cmd' variable
which only works in the latter case.
Change-Id: Icc033340c7fd882e61d90e3d086f7ba4a5b673bf
Story: 2004907
Task: 29257
Tenks currently uses macvtap interfaces in 'VEPA' mode for the VMs. If the VMs
run any virtual networking internally, typically this will use a different MAC
address, which will not be reachable from outside due to the macvtap MAC
filtering.
This change uses macvtap 'passthrough' mode, such that all traffic is passed.
Change-Id: I0077c7001b2b419a94ea420833fa6dd3e8a3a967
Story: 2004906
Task: 29256
Adds support for setting node and volume name prefixes on a per-spec
basis. This allows for different node specifications to use different
names, e.g. 'controller' vs 'compute'.
This change also fixes an issue where node names were not globally unique, only
unique on a given hypervisor. This could cause issues if used with multiple
hypervisors.
This has been done by rewriting the scheduling logic, replacing the 'node
index' concept with a more concrete reservation of IPMI ports (which are
allocated per hypervisor), and decoupling this from generation of node names
(which are allocated globally).
Change-Id: I929b18918c2886f42c4d05b37c81f3e63c69a92f
Story: 2004894
Task: 29201
Story: 31d2681
Task: 29248
For standalone ironic deployments, such as those deployed using bifrost, there
is typically no keystone or placement service running. Use of the ironic API is
without authentication. We use clouds.yaml in this case.
Change-Id: I61ed791d019e43f6dfc632fa185f079b385c290c
Story: 2004425
Task: 28077
This, for example, allows you to run libvirt with non-default
socket path.
Change-Id: Ia01f39f425cccc6acebd31f77b46b1948e24d215
Story: 2004344
Task: 27935
This adds the configuration necessary to build the release notes.
The templates are based off the ones used in Kayobe.
Change-Id: Ia57ac4acaf40cb5e35407fd6e0a5375dbab51522