[release-announce] [ironic] ironic-python-agent 2.0.0 (ocata)

no-reply at openstack.org no-reply at openstack.org
Mon Feb 13 22:31:11 UTC 2017


We are satisfied to announce the release of:

ironic-python-agent 2.0.0: Ironic Python Agent Ramdisk

This release is part of the ocata release series.

Download the package from:

    https://tarballs.openstack.org/ironic-python-agent/

For more details, please see below.

2.0.0
^^^^^


New Features
************

* Add support for Mellanox InfiniBand NICs in IPA. Each Mellanox
  InfiniBand interface is returned with an "InfiniBand MAC" and
  InfiniBand Client-ID calculated according to a Mellanox-specific
  translation.

* Add HCTL (Host, Channel, Target and Lun) information to the block
  devices.

* Ironic Python Agent can now access other services (Ironic,
  Inspector, image backend) when those are configured with HTTPS
  endpoints and use custom server certificates or require client
  certificates. It is possible to add a custom Certificate Authority
  (CA) file and client certificate files to the deploy ramdisk during
  build, and provide paths to those as corresponding new options in
  the "ironic_python_agent.conf" configuration file. Validation of the
  server certificate can be turned off with the "insecure" config
  option or via the "ipa-insecure" kernel boot parameter. This should
  make it possible to run IPA in CI-like environments that use HTTPS
  endpoints with self-signed certificates.

* Support for zypper has been added to the TinyIPA install-deps
  script in order to support building TinyIPA on SUSE.


Upgrade Notes
*************

* Two reserved fields, "switch_port_descr" and
  "switch_chassis_descr", were deprecated in Newton cycle and now are
  removed.

* Ironic Python Agent no longer supports Ironic API lookup and
  heartbeat actions via agent vendor passthru methods, and uses only
  the new, top-level lookup and heartbeat endpoints of Ironic API
  v1.22 (introduced in Newton release, Ironic version 6.1.0). This
  effectively means that Ironic Python Agent becomes incompatible with
  Ironic API < 1.22 (Ironic version 6.0.0 or older, integrated
  OpenStack release Mitaka or older).


Bug Fixes
*********

* Fixes a bug in the CoreOS IPA images (where IPA runs in a chroot),
  where IPA could not power off or reboot properly. In this case, it
  will now use SYSRQ commands to forcefully reboot or power off.

* Values of "ipa-api-url" specified in the configuration file that
  do not start with either "https://" or "http://" are no longer
  accepted. Such values lead to failure while contacting ironic-api.
  Such misconfigurations will be detected on ironic-python-agent
  start. An exception will be raised and an error about the invalid
  value will be logged.

* Fixes detection of IPMI address in the CoreOS-based images by
  loading IPMI modules before going into chroot.

* Ironic Python Agent now correctly detects its IPv6 address if
  communicating with ironic over IPv6. This address is also wrapped in
  square brackets if the address being advertised is IPv6.

* If booted into a kernel that supports IPv6, Ironic Python Agent
  now listens for connections on both the IPv4 and IPv6 wildcard
  addresses.

* If using Linux-IO, ISCSI targets now support deploying over an
  IPv6 network if booted into an IPv6 enabled kernel. IPv6 will be
  used for deployments for all traffic between ironic and IPA if IPA
  is passed an IPv6 address in the Ironic API URL.

* Limits the memory usage of "qemu-img convert" command to 1 GiB to
  prevent it from causing the host machine to fail due to not enough
  RAM.

* Fix LLDP discovery to not fail completely when an odd number of
  bytes is received in an LLDP package.

* Fix raw sockets code to properly propagate exceptions to a caller
  instead of silencing them and returning None (causing failures
  later).

* Ironic Python Agent no longer requires 'bash' to be present in the
  user image when preparing the partition image for local boot, and
  uses the default 'sh' interpreter to run 'grub'-related commands
  instead.

* If ipa-api-url is not configured in pxe parameters, skip lookup
  and heartbeat to avoid ConnectionError when IPA starts. See
  https://bugs.launchpad.net/bugs/1643966 for details.

* When writing a partition image, IPA now installs grub to the UEFI
  fallback path (e.g. "EFI/BOOT/BOOTX64.EFI"). The fallback path is
  used to boot the bare metal node if the NVRAM is reset.


Other Notes
***********

* Introspection data no longer contains keys used for compatibility
  with the old introspection ramdisk.

* Ironic Python Agent now uses "oslo-config-generator" to create the
  sample configuration file.

Changes in ironic-python-agent 1.5.0..2.0.0
-------------------------------------------

4737681 Improve grammar/readability in Ocata release notes
6993bd8 Correct error in Infiniband release note
0618375 imagebuild: tinyipa: Make the install-deps.sh SUSE aware
73f316d Remove switch_port_descr and switch_chassis_descr
e49f050 [TinyIPA] Avoid running rm with no parameters
5b1a217 Remove vendor_passthru mentions from lookup/heartbeat documentation
2334605 Add a comment about the catch-all exception for psutil
b7ae499 Remove support for older psutil versions
7ec1f25 Updated from global requirements
e4919e0 Support psutil 5.0.1
20dc04e Reboot and Poweroff fails with coreos IPA image
9595658 Mock out get_wildcard_address
449cda4 Limit memory usage when running qemu-img convert
256b233 Add IPv6 unit test for _get_route_source
1c493c4 iscsi: Listen for connections on both IPv4 and IPv6 ports
b4e41e2 Agent: Listen for connections on both IPv4 and IPv6 ports
df25373 Enable release notes translation
a5370d5 Use sh instead of bash when installing grub
185d4d0 Updated from global requirements
6997907 Removes unnecessary utf-8 encoding
fdd11b5 Configure and use SSL-related requests options
9f5f664 Advertise the correct address when using IPv6
415fd6e Updated from global requirements
10bff0a Remove compatibility with old bash-based introspection ramdisk
83a19a4 Fail IPA startup if no protocol prefix in ironic api address
16bef4a Fix missing newline at end-of-file in CONTRIBUTING.rst
4f1669d add CONTRIBUTING.rst
81780ad Use oslo_serialization.base64 to follow OpenStack Python3
1aa7269 Revert "Use liberty-eol tag for liberty release notes"
9948349 Moving Reboot bashscript to python
ed4d68b Use liberty-eol tag for liberty release notes
7854988 Comment on when the TinyCore mirror list was generated
3a4d319 Probe for TC mirror during tinyipa build
ef47d62 Add a new Hardware Manager for CNA network card
762f3bf Use oslo-config-generator for sample config
9ebb70d Update mock variable name in unit tests
b272426 Add HCTL to BlockDevices
dd9253f Skip API related work if no api url configured
92ced38 Fix docsting in Mellanox _detect_hardware
73825b2 Updated from global requirements
f98c245 Show team and repo badges on README
1bdcd44 Add a new Hardware Manager for Mellanox NICs
0a7735d Load IPMI modules before chroot in CoreOS image
41cf45f Fix two typos, "messsage" and "containg"
966db1c Dispatched out network interface info to all hardware managers
ab41106 Python 3 Compatible JSON
13c9350 Clarify test comment to minimize confusion
c40575e Add bash scripts style checking for IPA
b033bfd Remove old lookup/heartbeat from IPA
b864a8c Fix several errors in LLDP handling code
bcc98df Updated from global requirements
0b8763e Update to hacking 0.12.0 and use new checks
ef6c1cb Replaces uuid.uuid4 with uuidutils.generate_uuid()
70f8c65 Updated from global requirements
2c75147 Updated from global requirements
88aab19 Updated from global requirements
7471d40 Remove duplicated logging in configdrive creation
3665306 Use ironic-lib to create configdrive
0ce1e34 Updated from global requirements
cc5556d Install grub in the EFI "Fallback path"
7bda340 Fix config drive writing script
772ff4e Updated from global requirements
cca1cd4 Add support for root device hints with operators
c3bf482 Update .gitignore to ignore .idea of PyCharm
156ddaa Force en_US language for tests
20d960f Remove Python 2.6 format style
f1a8fef Update reno for stable/newton
9e442b2 [tinyipa] remove trailing slash from TC repo URL
67bd15c [tinyipa] allow skipping python compileall
c2b3055 Invalid URL and typo in .rst files
8f8e9f9 Fixed typo in doc file
f6acb7c Add py35 to tox environments
1dcb656 Add info on tinyipa to docs
629b599 Updated from global requirements
cceff3a Use CoreOS 1068.10.0


Diffstat (except docs and test files)
-------------------------------------

.gitignore                                         |   1 +
CONTRIBUTING.rst                                   |  16 ++
README.rst                                         |   9 +
.../ironic_python_agent.conf.sample                | 291 +++++++++++++++++----
imagebuild/common/generate_upper_constraints.sh    |  78 +++---
imagebuild/coreos/oem/cloud-config.yml             |   3 +
imagebuild/coreos/version.txt                      |  10 +-
imagebuild/tinyipa/README.rst                      |  17 ++
imagebuild/tinyipa/build-tinyipa.sh                |   6 +-
imagebuild/tinyipa/build_files/bootlocal.sh        |   2 +-
imagebuild/tinyipa/finalise-tinyipa.sh             |  26 +-
imagebuild/tinyipa/install-deps.sh                 |  18 +-
imagebuild/tinyipa/tc-mirror.sh                    |  53 ++++
ironic_python_agent/agent.py                       |  83 +++---
ironic_python_agent/api/config.py                  |   4 +-
ironic_python_agent/cmd/agent.py                   |   1 -
ironic_python_agent/config.py                      | 121 ++++++---
ironic_python_agent/errors.py                      |  51 +---
ironic_python_agent/extensions/base.py             |  11 +-
ironic_python_agent/extensions/flow.py             |   4 +-
ironic_python_agent/extensions/image.py            |  21 +-
ironic_python_agent/extensions/iscsi.py            |  10 +-
ironic_python_agent/extensions/standby.py          | 192 +++++---------
ironic_python_agent/hardware.py                    | 208 +++++++--------
ironic_python_agent/hardware_managers/__init__.py  |   0
ironic_python_agent/hardware_managers/cna.py       |  91 +++++++
ironic_python_agent/hardware_managers/mlnx.py      | 112 ++++++++
ironic_python_agent/inspector.py                   |  87 +-----
ironic_python_agent/ironic_api_client.py           |  98 ++-----
ironic_python_agent/netutils.py                    |  73 ++++--
.../shell/copy_configdrive_to_disk.sh              | 118 ---------
ironic_python_agent/shell/shutdown.sh              |  26 --
ironic_python_agent/shell/write_image.sh           |  13 +-
ironic_python_agent/utils.py                       |  23 +-
...mellanox_hardware_manager-edfae87964737df1.yaml |   6 +
.../notes/block-device-hctl-e81573812be3d469.yaml  |   4 +
...reboot_in_chroot_by_sysrq-42447fc4cdd7dafe.yaml |   5 +
...art_if_ironic_api_invalid-7b78fcaba2141cc5.yaml |   9 +
.../fix-coreos-modprobe-75bda45c7bbeb469.yaml      |   4 +
.../notes/handle-ssl-063a91fb7bdcf9b9.yaml         |  16 ++
.../notes/ip6-addresses-1c2b9bcd9a124de7.yaml      |   6 +
.../notes/ipv6-listen-85d40e58156e398f.yaml        |   5 +
.../notes/ipv6-provision-42e9000f6f6a7a3a.yaml     |   6 +
.../limit-qemu-img-ram-usage-d7b7a16ac5e9c917.yaml |   5 +
.../lldp-error-handling-5b6576b378ef9c3a.yaml      |   6 +
.../notes/no-bash-for-grub-c38369af8cc7cf26.yaml   |   6 +
.../notes/old-inspector-data-5e63c9bce72b4fb5.yaml |   5 +
.../oslo-config-generator-b0f70b9fb7e23997.yaml    |   4 +
...escr-switch_chassis_descr-40f2bb37b5f1fdd1.yaml |   6 +
.../remove-vendor-passthru-eda3519c322eb4e2.yaml   |  10 +
...-if-apiurl-not-configured-5ae8b04ae1e74673.yaml |   5 +
.../suse-tinyipa-support-20acecd6d7b20952.yaml     |   4 +
.../notes/uefi-fallback-266c647f6aff58fd.yaml      |   6 +
releasenotes/source/conf.py                        |   2 +
releasenotes/source/current-series.rst             |   6 +-
releasenotes/source/newton.rst                     |   8 +-
requirements.txt                                   |  21 +-
setup.cfg                                          |   5 +
test-requirements.txt                              |  14 +-
tools/config/check_uptodate.sh                     |  16 +-
tools/config/generate_sample.sh                    | 120 ---------
tools/config/ipa-config-generator.conf             |   5 +
tools/config/oslo.config.generator.rc              |   0
tools/run_bashate.sh                               |  23 ++
tox.ini                                            |  25 +-
81 files changed, 2320 insertions(+), 1404 deletions(-)


Requirements updates
--------------------

diff --git a/requirements.txt b/requirements.txt
index 7b0ddea..9972014 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4 +4 @@
-pbr>=1.6 # Apache-2.0
+pbr>=1.8 # Apache-2.0
@@ -9 +9 @@ netifaces>=0.10.4 # MIT
-oslo.config>=3.14.0 # Apache-2.0
+oslo.config!=3.18.0,>=3.14.0 # Apache-2.0
@@ -11 +11,2 @@ oslo.concurrency>=3.8.0 # Apache-2.0
-oslo.log>=1.14.0 # Apache-2.0
+oslo.log>=3.11.0 # Apache-2.0
+oslo.serialization>=1.10.0 # Apache-2.0
@@ -13,2 +14,2 @@ oslo.service>=1.10.0 # Apache-2.0
-oslo.utils>=3.16.0 # Apache-2.0
-pecan!=1.0.2,!=1.0.3,!=1.0.4,>=1.0.0 # BSD
+oslo.utils>=3.18.0 # Apache-2.0
+pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.0.0 # BSD
@@ -16 +17 @@ Pint>=0.5 # BSD
-psutil<2.0.0,>=1.1.1 # BSD
+psutil>=3.0.1 # BSD
@@ -18,2 +19,2 @@ pyudev # LGPLv2.1+
-requests>=2.10.0 # Apache-2.0
-rtslib-fb>=2.1.41 # Apache-2.0
+requests!=2.12.2,>=2.10.0 # Apache-2.0
+rtslib-fb!=2.1.60,!=2.1.61,>=2.1.43 # Apache-2.0
@@ -21 +22 @@ six>=1.9.0 # MIT
-stevedore>=1.16.0 # Apache-2.0
+stevedore>=1.17.1 # Apache-2.0
@@ -23 +24 @@ WSME>=0.8 # MIT
-ironic-lib>=2.0.0 # Apache-2.0
+ironic-lib>=2.5.0 # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index fb06328..d204b3a 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -4,2 +4,2 @@
-hacking<0.12,>=0.11.0 # Apache-2.0
-coverage>=3.6 # Apache-2.0
+hacking<0.13,>=0.12.0 # Apache-2.0
+coverage>=4.0 # Apache-2.0
@@ -10,2 +10,2 @@ oslotest>=1.10.0 # Apache-2.0
-os-testr>=0.7.0 # Apache-2.0
-
+os-testr>=0.8.0 # Apache-2.0
+bashate>=0.2 # Apache-2.0
@@ -14 +14 @@ doc8 # Apache-2.0
-sphinx!=1.3b1,<1.3,>=1.2.1 # BSD
+sphinx!=1.3b1,<1.4,>=1.2.1 # BSD
@@ -16,2 +16,2 @@ sphinxcontrib-pecanwsme>=0.8 # Apache-2.0
-oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0
-reno>=1.8.0 # Apache2
+oslosphinx>=4.7.0 # Apache-2.0
+reno>=1.8.0 # Apache-2.0





More information about the Release-announce mailing list