[release-announce] ironic 11.1.0 (rocky)
no-reply at openstack.org
no-reply at openstack.org
Thu Aug 9 13:26:02 UTC 2018
We are overjoyed to announce the release of:
ironic 11.1.0: OpenStack Bare Metal Provisioning
This release is part of the rocky release series.
The source is available from:
https://git.openstack.org/cgit/openstack/ironic
Download the package from:
https://tarballs.openstack.org/ironic/
Please report issues through launchpad:
https://storyboard.openstack.org/#!/project/943
For more details, please see below.
11.1.0
^^^^^^
Prelude
*******
Ironic *11.1*... Where the volume dial turned more!
While Pixie Boots has rocked out to Rock and Roll, the Bare Metal as a
Service team has wrapped up our Rocky release with 11.1. This new
release contains a number of major features that we hope will improve
the lives of bare metal operators everywhere!
* Conductor grouping enabling nodes to be assigned to groups of
different conductors.
* Deployment steps framework enabling greater flexibility for
deployers to request specific steps.
* Bios setting interfaces for the "ilo" and "irmc" hardware types.
* Ramdisk deployment interface for disk-less deployments.
* Capability to reset nodes to their default interfaces via the API
when resetting the node's driver.
New Features
************
* Added support for local booting a partition image for ppc64*
hardware. If a PReP partition is detected when deploying to a ppc64*
machine, the partition will be specified to IPA causing the
bootloader to be installed there directly. This feature requires a
ironic-python-agent ramdisk with ironic-lib >=2.14.
* Adds new optional "snmp_community_read" and "snmp_community_write"
properties to "snmp" driver configuration (specified via a node's
"driver_info" field). If present, the value(s) will be used
respectively for SNMP reads and/or writes to the PDU. When not
present, "snmp_community" value will be used instead.
* The iRMC driver can now automatically update the node.traits field
with CUSTOM_CPU_FPGA value based on information provided by the node
during node inspection.
* Adds a "ramdisk" deploy interface for deployments that wish to
network boot to a ramdisk, as opposed to perform a complete
traditional deployment to a physical media. This may be useful in
scientific use cases or where ephemeral baremetal machines are
desired.
The "ramdisk" deploy interface is intended for advanced users and
has some particular operational caveats that the users should be
aware of prior to use, such as network access list requirements and
configuration drive architectural restrictions and the inability to
leverage configuration drives.
* Adds a new configuration option "[pxe]pxe_config_subdir" to allow
operators to define the specific directory that may be used inside
of "/tftpboot" or "/httpboot" for a boot loader to locate the
configuration file for the node. This option defaults to
"pxelinux.cfg" which is the directory that the Syslinux *pxelinux.0*
bootloader utilized. Operators may wish to change the directory name
if they are using other boot loaders such as *GRUB* or *iPXE*.
* Conductors and nodes may be arbitrarily grouped to provide a basic
level of affinity between conductors and nodes. Conductors use the
"[conductor]/conductor_group" configuration option to set the group
which they belong to. The same value may be set on one or more nodes
in the "conductor_group" field (available in API version 1.46), and
these will be matched such that only conductors with a given group
will manage nodes with the same group.
A group name may be up to 255 characters containing "a-z", "0-9",
"_", "-", and ".". The group is case-insensitive. The default group
is the empty string ("""").
The "node list" API endpoint ("GET /v1/nodes") may also be filtered
by conductor group in API version 1.46.
* The framework for deployment steps
(https://specs.openstack.org/openstack/ironic-specs/specs/approved
/deployment-steps-framework.html) is in place. All in-tree drivers
(DeployInterfaces) have one (big) deploy step; the conductor
executes this step when deploying a node.
Starting with the Bare Metal REST API version 1.44, the current
deploy step (if any) being executed is available in a node's
"deploy_step" field in the responses for the following queries:
* "GET /v1/nodes/<node identifier>"
* "GET /v1/nodes/detail"
* "GET /v1/nodes?fields=deploy_step,..."
* Implements "bios" interface for "ilo" hardware type. Adds the list
of supported bios interfaces for the *ilo* hardware type. Adds
manual cleaning steps "apply_configuration" and "factory_reset"
which support managing the BIOS settings for the iLO servers using
*ilo* hardware type.
* Adds support for the new "noop" interface to the "ipmi" hardware
type. This interface targets hardware that does not correctly change
boot mode via the IPMI protocol. Using it requires pre-configuring
the boot order on a node to try PXE, then fall back to local
booting.
* Adds new "bios" interface to "irmc" hardware type. This provides
out-of-band BIOS configuration solution for iRMC driver which makes
the functionality available via manual cleaning.
* Adds out-of-band RAID configuration solution for the iRMC driver
which makes the functionality available via manual cleaning. See
iRMC hardware type documentation
(https://docs.openstack.org/ironic/latest/admin/drivers/irmc.html)
for more details.
* Starting with API version 1.45, PATCH requests to
"/v1/nodes/<NODE>" accept the new query parameter
"reset_interfaces". It can be provided whenever the "driver" field
is updated. If set to 'true', all hardware interfaces wil be reset
to their defaults, except for ones updated in the same request.
Upgrade Notes
*************
* Operators utilizing "grub" for PXE booting, typically with UEFI,
should change their deployed master PXE configuration file provided
for nodes PXE booting using grub. Ironic 11.1 now writes both MAC
address and IP address based PXE confiuration links for network
booting via "grub". The grub variable should be changed from
"$net_default_ip" to "$net_default_mac". IP address support is
deprecated and will be removed in the Stein release.
* The minimum required version of pysnmp has been bumped to 4.3.
This pysnmp version introduces simpler, faster and more functional
high- level SNMP API on which ironic *snmp* driver has been
migrated.
* The minimum required version of the "osprofiler" library is now
1.5.0. This is now a new dependency, ironic has not been able to
start with 1.4.0 since the Pike release when this dependency was
introduced.
* The "swift/endpoint_type" configuration option is now removed.
python-swiftclient 3.2.0 (Ocata) and above removed support for the
native URL type used by radosgw. Since using a "swift/endpoint_type"
value of "radosgw" would fail anyway, it is removed. Deployers must
now configure ceph with "rgw swift account in url = True". This must
be set before upgrading to this release.
* The "snmp" hardware type now uses the "noop" management interface
instead of "fake" used previously. Support for "fake" is left for
backward compatibility.
Deprecation Notes
*****************
* All drivers must implement their deployment process using *deploy
steps*. Out-of-tree drivers without deploy steps will be supported
until the Stein release. For more details, see story 1753128
(https://storyboard.openstack.org/#!/story/1753128).
* The "xclarity" hardware type, as well as the supporting driver
interfaces have been deprecated and are scheduled to be removed from
ironic in the Stein development cycle. This is due to the lack of
operational Third Party testing to help ensure that the support for
Lenovo XClarity is functional.
The "xclarity" hardware type was introduced at the end of the Queens
development cycle. During implementation of Third Party CI, the
Lenovo team encountered some unforseen delays. Lenovo is continuing
to work towards Third Party CI, and upon establishment and
verification of functional Third Party CI, this deprecation will be
rescinded.
* Support for ironic to link PXE boot configuration files via the
assigned interface IP address has been deprecated. This option was
only the case when "[pxe]ipxe_enabled" was set to "false" and the
node was being deployed using UEFI.
* Using the "fake" management interfaces with the "snmp" hardware
type is now deprecated, please use "noop" instead.
Bug Fixes
*********
* Better handles the case when an operator attempts to perform an
upgrade from a release older than Pike, directly to a release newer
than Pike, skipping one or more releases in between (i.e. a "skip
version upgrade"). Instead of crashing, the operator will be
informed that upgrading from a version older than the previous
release is not supported (skip version upgrades) and that (as of
Pike) all database migrations need to be performed using the
previous releases for a fast-forward upgrade. [Bug 2002558
(https://storyboard.openstack.org/#!/story/2002558)]
* Fixes support for "grub" based UEFI PXE booting by enabling links
to the PXE configuration files to be written using the MAC address
of the node in addition to the interface IP address. If the
"[dhcp]dhcp_provider" option is set to "none", only the MAC based
links will be created.
* Fixes an issue that caused the integrated Dell Remote Access
Controller (iDRAC) "management" hardware interface implementation,
"idrac", to fail to boot nodes in Unified Extensible Firmware
Interface (UEFI) boot mode. That interface is supported by the
"idrac" hardware type. The issue is resolved for Dell EMC PowerEdge
13th and 14th generation servers. It is not resolved for PowerEdge
12th generation and earlier servers. For more information, see story
1656841 (https://storyboard.openstack.org/#!/story/1656841).
* If a node gets stuck in one of the states "deploying", "cleaning",
"verifying", "inspecting", "adopting", "rescuing", "unrescuing" for
some reason (eg. conductor goes down when executing a task), it will
be moved to an appropriate failure state in the next time the
conductor starts.
* Changes the iPXE behavior to retry a total of 10 times with an
increasing backoff time between each retry in order to not create a
Denial of Service situation with the iPXE HTTP server. Should the
retries fail, the node will be powered-off after a warning is
displayed on the console for 30 seconds. For more information, see
story (https://storyboard.openstack.org/#!/story/2002928).
* The cleaning operation may fail, if an in-band clean step were to
execute after the completion of out-of-band clean step that performs
reboot of the node. The failure is caused because of race condition
where in cleaning is resumed before the Ironic Python Agent(IPA) is
ready to execute clean steps. This has been fixed. For more
information, see bug 2002731
(https://storyboard.openstack.org/#!/story/2002731).
Other Notes
***********
* The deprecated configuration option "[ipmi]retry_timeout" was
removed, use "[ipmi]command_retry_timeout" instead.
Changes in ironic 11.0.0..11.1.0
--------------------------------
7893262 Switch the "snmp" hardware type to "noop" management
d42bd9a Add "noop" management and use it in the "ipmi" hardware type
5dc6657 Update docs on ironic boot mode management
61bb3a7 Simplify subclasses for PXERamdiskDeploy
d70db29 Node gets stuck in ING state when conductor goes down
27ce134 Add notes on Redfish boot mode management
31afe4f Prepare for Rocky release
103801a Update the reno for the reset_interfaces feature
fa0cb98 Use max version of an object
8f55f05 Improve the "Ironic behind mod wsgi" documentation
995b538 Deploy steps documentation
6ece546 Mark the ZeroMQ driver deprecated
f78ebd0 Remove rabbit_max_retries option
eb14f57 Fix iDRAC hardware type does not work with UEFI
8f89954 Pass prep_boot_part_uuid to install_bootloader for ppc64* partition images
065a10c Remove redundant swift vars
a033b25 Document locale requirement for local testing
253ce25 Switch ironic-tempest-dsvm-ipa-partition-pxe_ipmitool-tinyipa-python3
b0084cb Improve doc of Node serial console
154d97b Follow-up patch to ramdisk interface
e25c6e2 Ramdisk deploy driver doc
b464a19 Change PXE logic to always link macs with UEFI
95a4493 Add documentation for BIOS settings
f4eaaf7 Fix for failure of cleaning for iRMC restore_bios_config
a1475ae Refactor RAID configuration via iRMC driver
731af40 Adds ramdisk deploy driver
8d3aa1b Follow-up patch for 7c5a04c1149f14900f504f32e000a7b4e69e661f
90f7a89 Switch ironic-tempest-dsvm-ipa-partition-uefi-pxe_ipmitool-tinyipa
7ea0ff4 Switch ironic-tempest-dsvm-ipa-wholedisk-bios-pxe_snmp-tinyipa
d11700c Switch ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
0b87e61 Switch ironic-tempest-dsvm-pxe_ipmitool-postgres
379876d Documentation update of iLO BIOS settings
4232250 Follow-up to improve pep8 checking with hacking
da82494 Fix for failure in cleaning in iRMC driver
40af984 Add deploy_step to NodePayload.SCHEMA
52b8638 Add conductor_group to node notifications
7cd960f Deprecate xclarity hardware type
ebb8d5e Be more precise with conductor group API tests
8c16723 Simplify hash ring tests
600081d Add documentation for changing node's hardware type
efeba98 Fix the list of irrelevant-files
ca6f289 snmp: Keep get_next method backward-compatible
7c5a04c Fix for failure in cleaning
ce1e889 Expose node.conductor_group in the REST API
26fd55f Use conductor group for hash ring calculations
b9e1b81 Expose BIOS interface
471aafc Ignore bashate E044
86d26e7 Remove deprecated option [ipmi]retry_timeout
66e1ccb iLO BIOS interface implementation
cfa2ddf Make pxelinux.cfg folder configurable
303040e Use openstack client instead of neutron client
e03671b Replace port 35357 with 5000 for "auth_url"
7929361 Add conductor_group field to config, node and conductor objects
597d8a7 Add reset_interfaces parameter to node's PATCH
fa551a6 Follow up Add CUSTOM_CPU_FPGA Traits value to ironic inspection
72f7a70 Follow-up changes to iRMC bios interface.
f838a14 Minor changes for deploy_steps framework
a1eaaae Caching of PDU autodiscovery
0d03136 Migrate ironic `snmp` driver to the latest pysnmp API
f667db1 Add conductor_group field to nodes and conductors tables
6070705 Add mock object for get_bios_settings
c47ed8a Fix bug to doc:configdrive
745268d Add notes for future job migrations
863fe1e Assert a build timeout for zuul templated CI jobs
dba2041 Fixed link to Storyboard instead of launchpad
dd4a4d4 Update CI jobs for rescue mode
09ebc65 Fix bug to doc:kernel-boot-parameters
5a14eed Deploy steps - API & notifications
65a68e4 Deploy steps - conductor & drivers
5ee7b31 Add CUSTOM_CPU_FPGA Traits value to ironic inspection
fa59565 Implement iRMC BIOS configuration
aac5bcb Deploy steps - versioned objects
f5a5af3 Deploy steps - DB model
d29dab2 Follow-up to RAID configuration via iRMC driver patch
fe2608d Poweroff server after 10 tries
5eff596 Make the lower-constraints tox env actually use lower-constraints
5ca549c Fix typo of function naming conventions in test_deploy_utils.py
a60233c Update the doc regarding the removal of calssic drivers
a0978b3 Update boot-from-volume feature docs
63b7ddc [doc] Use openstack client commands to replace neutron client
692f289 Detect skip version upgrades from version earlier than Pike
647aee6 Update API version history with release 11.0.0
31cc654 Bump osprofiler minimum requirement to 1.5.0
2131520 Add 11.0 to release mapping
876b220 Add read&write SNMP community names to `snmp` driver
8608d34 Add unit tests that "remove" is acceptable on /XXX_interface node fields
2528824 Fix 11.0 prelude formatting
9a0a54c Change docs bug link to storyboard
84ae0c3 Support RAID configuration for BM via iRMC driver
e2899de Fix list node vifs api error
2bb87c1 Ensure we allow Ironic API traffic from baremetal network
b61ebd4 Switch ironic-tempest-dsvm-ipa-partition-redfish-tinyipa
f8163fa Switch ironic-dsvm-standalone to zuulv3 native
7cc01cd Improve pep8 checking along with hacking
e9e4d88 Remove endpoint_type from configuration
Diffstat (except docs and test files)
-------------------------------------
README.rst | 2 +-
api-ref/regenerate-samples.sh | 2 +
api-ref/source/baremetal-api-v1-nodes-bios.inc | 84 ++
api-ref/source/baremetal-api-v1-nodes-vifs.inc | 10 +-
api-ref/source/baremetal-api-v1-nodes.inc | 9 +-
api-ref/source/index.rst | 1 +
api-ref/source/parameters.yaml | 38 +
.../source/samples/node-bios-detail-response.json | 18 +
.../source/samples/node-bios-list-response.json | 20 +
api-ref/source/samples/node-create-response.json | 1 +
api-ref/source/samples/node-show-response.json | 1 +
.../samples/node-update-driver-info-response.json | 1 +
.../samples/nodes-list-details-response.json | 2 +
devstack/lib/ironic | 8 +-
devstack/settings | 2 +-
.../include/configure-ironic-api-mod_wsgi.inc | 3 +-
.../install/include/configure-ironic-api.inc | 2 +-
.../install/include/kernel-boot-parameters.inc | 4 +-
driver-requirements.txt | 6 +-
ironic/api/controllers/v1/node.py | 109 +-
ironic/api/controllers/v1/utils.py | 31 +
ironic/api/controllers/v1/versions.py | 8 +-
ironic/cmd/dbsync.py | 31 +-
ironic/common/exception.py | 12 +
ironic/common/glance_service/v2/image_service.py | 59 +-
ironic/common/hash_ring.py | 16 +-
ironic/common/pxe_utils.py | 42 +-
ironic/common/release_mappings.py | 44 +-
ironic/common/states.py | 9 +
ironic/common/swift.py | 62 +-
ironic/common/utils.py | 7 +
ironic/conductor/base_manager.py | 70 +-
ironic/conductor/manager.py | 485 ++++++--
ironic/conductor/rpcapi.py | 46 +-
ironic/conductor/utils.py | 211 +++-
ironic/conf/conductor.py | 6 +
ironic/conf/default.py | 21 +-
ironic/conf/deploy.py | 10 +-
ironic/conf/glance.py | 8 +-
ironic/conf/ipmi.py | 14 -
ironic/conf/irmc.py | 17 +
ironic/conf/pxe.py | 7 +
ironic/db/api.py | 3 +-
...f622_add_conductor_group_to_nodes_conductors.py | 35 +
.../versions/b9117ac17882_add_node_deploy_step.py | 33 +
ironic/db/sqlalchemy/api.py | 25 +-
ironic/db/sqlalchemy/models.py | 5 +
ironic/drivers/base.py | 142 ++-
ironic/drivers/generic.py | 2 +-
ironic/drivers/ilo.py | 6 +
ironic/drivers/ipmi.py | 3 +-
ironic/drivers/irmc.py | 13 +
ironic/drivers/modules/agent.py | 21 +-
ironic/drivers/modules/agent_base_vendor.py | 25 +-
ironic/drivers/modules/agent_client.py | 15 +-
ironic/drivers/modules/ansible/deploy.py | 13 +-
ironic/drivers/modules/deploy_utils.py | 34 +-
ironic/drivers/modules/drac/management.py | 172 ++-
ironic/drivers/modules/drac/raid.py | 7 +-
ironic/drivers/modules/fake.py | 17 +-
ironic/drivers/modules/ilo/bios.py | 157 +++
ironic/drivers/modules/inspector.py | 2 +-
ironic/drivers/modules/ipmitool.py | 10 +-
ironic/drivers/modules/ipxe_config.template | 28 +-
ironic/drivers/modules/irmc/bios.py | 149 +++
ironic/drivers/modules/irmc/inspect.py | 48 +-
ironic/drivers/modules/irmc/management.py | 9 +-
ironic/drivers/modules/irmc/raid.py | 506 ++++++++
ironic/drivers/modules/iscsi_deploy.py | 14 +-
ironic/drivers/modules/master_grub_cfg.txt | 2 +-
ironic/drivers/modules/noop_mgmt.py | 58 +
ironic/drivers/modules/oneview/deploy.py | 8 +-
ironic/drivers/modules/oneview/inspect.py | 2 +-
ironic/drivers/modules/pxe.py | 105 +-
ironic/drivers/modules/pxe_config.template | 4 +
ironic/drivers/modules/pxe_grub_config.template | 5 +
ironic/drivers/modules/snmp.py | 241 ++--
ironic/drivers/modules/storage/external.py | 1 +
ironic/drivers/modules/xclarity/management.py | 9 +
ironic/drivers/modules/xclarity/power.py | 9 +
ironic/drivers/snmp.py | 3 +-
ironic/drivers/xclarity.py | 9 +
ironic/hacking/__init__.py | 0
ironic/hacking/checks.py | 55 +
ironic/objects/base.py | 24 +-
ironic/objects/conductor.py | 12 +-
ironic/objects/node.py | 86 +-
...e_config_boot_from_volume_extra_volume.template | 26 +-
...nfig_boot_from_volume_no_extra_volumes.template | 26 +-
.../unit/drivers/ipxe_config_timeout.template | 26 +-
.../unit/drivers/modules/ansible/test_deploy.py | 31 +-
.../unit/drivers/modules/drac/test_management.py | 304 ++++-
.../drivers/modules/drac/test_periodic_task.py | 4 +-
.../unit/drivers/modules/irmc/test_inspect.py | 205 +++-
.../drivers/modules/irmc/test_periodic_task.py | 294 +++++
.../unit/drivers/modules/oneview/test_deploy.py | 8 +-
.../unit/drivers/modules/test_agent_base_vendor.py | 109 +-
.../unit/drivers/modules/test_agent_client.py | 38 +-
.../unit/drivers/modules/test_deploy_utils.py | 25 +-
.../unit/drivers/modules/test_iscsi_deploy.py | 11 +-
.../unit/drivers/third_party_driver_mock_specs.py | 3 +-
lower-constraints.txt | 4 +-
playbooks/legacy/ironic-dsvm-standalone/run.yaml | 77 --
.../run.yaml | 98 --
.../run.yaml | 82 --
.../run.yaml | 82 --
.../run.yaml | 1 +
.../run.yaml | 84 --
.../run.yaml | 83 --
.../tempest-dsvm-ironic-pxe_ipa-full/run.yaml | 1 +
.../run.yaml | 83 --
...dd-prep-partition-support-d808849795906e64.yaml | 7 +
...ead-write-community-names-7589a8d1899c142c.yaml | 8 +
...trait_for_irmc_inspection-2b63941b064f7936.yaml | 6 +
...-ramdisk-deploy-interface-39fc61bc77b57beb.yaml | 13 +
...nfig-folder-to-be-defined-da0ddd397d58dcc8.yaml | 10 +
...etter-handle-skip-upgrade-3b6f06ac24937aa4.yaml | 11 +
.../notes/conductor-groups-c22c17e276e63bed.yaml | 17 +
.../notes/deploy_steps-243b341cf742f7cc.yaml | 22 +
.../notes/deprecate-xclarity-d687571fb65ad099.yaml | 13 +
...rub-default-change-to-mac-1e301a96c49acec4.yaml | 22 +
.../idrac-uefi-boot-mode-86f4694b4247a1ca.yaml | 11 +
.../notes/ilo-bios-settings-bc91524c459a4fd9.yaml | 8 +
.../notes/ipmi-noop-mgmt-8fad89dc2b4665b8.yaml | 7 +
...-clean-bios-configuration-1ad24831501456d5.yaml | 6 +
...create-raid-configuration-bccef8496520bf8c.yaml | 6 +
.../notes/ironic-11-prelude-6dae469633823f8d.yaml | 2 +-
.../ironic-11.1-prelude-b5ba8134953db4c2.yaml | 17 +
.../migrate-to-pysnmp-hlapi-477075b5e69cc5bc.yaml | 5 +
...stuck-when-conductor-down-3aa41a3abed9daf5.yaml | 7 +
.../notes/osprofiler-61a330800abe4ee6.yaml | 6 +
.../poweroff-after-10-tries-c592506f02c167c0.yaml | 9 +
...remove-ipmi-retry-timeout-c1b2cf7df6771a43.yaml | 5 +
.../remove-radosgw-config-b664f3023dc8403c.yaml | 9 +
.../notes/reset-interface-e62036ac76b87486.yaml | 8 +
...-cleaning-post-oob-reboot-b76c23f98219a8d2.yaml | 10 +
.../notes/snmp-noop-mgmt-53e93ac3b6dd8517.yaml | 10 +
requirements.txt | 4 +-
setup.cfg | 5 +
tools/run_bashate.sh | 2 +-
tox.ini | 8 +-
zuul.d/ironic-jobs.yaml | 207 ++++
zuul.d/legacy-ironic-jobs.yaml | 66 +-
212 files changed, 9492 insertions(+), 1876 deletions(-)
Requirements updates
--------------------
diff --git a/driver-requirements.txt b/driver-requirements.txt
index 6435463..e8cb3f3 100644
--- a/driver-requirements.txt
+++ b/driver-requirements.txt
@@ -7,2 +7,2 @@
-proliantutils>=2.5.0
-pysnmp
+proliantutils>=2.6.0
+pysnmp>=4.3.0,<5.0.0
@@ -11 +11 @@ python-oneviewclient<3.0.0,>=2.5.2
-python-scciclient>=0.6.0
+python-scciclient>=0.7.2
diff --git a/requirements.txt b/requirements.txt
index f31ba2d..a566689 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -14 +14 @@ keystoneauth1>=3.4.0 # Apache-2.0
-ironic-lib>=2.5.0 # Apache-2.0
+ironic-lib>=2.14.0 # Apache-2.0
@@ -32 +32 @@ oslo.utils>=3.33.0 # Apache-2.0
-osprofiler>=1.4.0 # Apache-2.0
+osprofiler>=1.5.0 # Apache-2.0
More information about the Release-announce
mailing list