[tripleo] puppet-tripleo 7.2.0 (pike)
We high-spiritedly announce the release of: puppet-tripleo 7.2.0: Puppet module for OpenStack TripleO This release is part of the pike release series. The source is available from: http://git.openstack.org/cgit/openstack/puppet-tripleo Download the package from: https://tarballs.openstack.org/puppet-tripleo/ Please report issues through launchpad: http://bugs.launchpad.net/tripleo (tag: puppet) For more details, please see below. 7.2.0 ^^^^^ New Features ************ * The resource ::tripleo::certmonger::ca::crl was added. The purpose of this resource is to fetch a CRL file and set up a cron job to refresh that file. * Added new parameter mysql_maxconn to the tripleo::haproxy class, allowing haproxy maxconn to be configured for the MySQL server. * Added variables for endpoint_proxy_ironic_inspector, endpoint_config_ironic_inspector, and Apache mod_proxy configuration to proxy ironic-inspector service just like similar services * This release allows to enable Contrail DPDK on the compute nodes. * Enable innodb_flush_log_at_trx_commit configuration for Galera only. * Added new parameter san_private_key to configure SSH Private Key for the PS Series cinder backend * Added a new profile for the setup of the Swift dispersion tool. This will be executed in step 5 or later to ensure Swift and Keystone are already up and running. * New profile for Veritas HyperScale Cinder backend. * Support configurable backends Zaqar backends. Updates the Zaqar profile so that we have support for configuring alternate versions of the messaging and management backends. Known Issues ************ * Ignore failures if nf_conntrack_proto_sctp module failed to load. Since RHEL 7.4, nf_conntrack_proto_sctp module is compiled into the kernel instead of as a module as the sctp support. TripleO will still try to load the module to support RHEL 7.3, but in the future will remove the module management and rely on the kernel provided in newer versions of RHEL. Upgrade Notes ************* * Setting the innodb_flush_log_at_trx_commit flag to the value of "2" instead of its default value of "1" means that the underlying MySQL/MariaDB engine will no longer flush transactions to disk on a per-transaction basis; instead, flushes occur once per second. This leads to far fewer disk writes and can dramatically improve write performance, at the cost of durability (e.g. will lose the last second's worth of transactions) if the database engine is ungracefully shut down. The clustered nature of Galera mitigates this risk in that transactions are replicated to other nodes before completion, and the setting of "2" is considered to be generally safe for a Galera cluster, with the exception case of simultaneous power loss for all nodes. Deprecation Notes ***************** * Deprecates and removes workaround OpenDaylight clustering function and class. Clustering config is now handled by puppet-opendaylight. * Removes deprecated opendaylight parameter 'ha_node_index' which is no longer needed to configure clustering. Security Issues *************** * If the crl_file parameter is given to the ::tripleo::haproxy resource and TLS is enabled in the internal network, it will configure the CRL file for all the nodes it's proxying and thus properly handle revocation of the server certificates. Bug Fixes ********* * Allow VF configuration files to be written for non-existent PCI devices to allow updates while physical functions are currently in use by a guest. * Traffic between Contrail nodes used the public network. This release will move the traffic to the internal_api network per default and also allows to optionally use the storage_mgmt network. This is in preparation for for composable networks, where Contrail will have its own network. * The mysql pacemaker profile now makes sure that the rsync package is installed since it configures wsrep_sst_method for galera to use rsync. See https://bugs.launchpad.net/tripleo/+bug/1693003 * In order to avoid service restarts, all services deploy their httpd configuration at the same time. Thus, httpd now starts in step 3 for the bootstrap nodes, and step 4 for all other nodes. * Fixes the step conditions in the Swift ring building process and also chains the tarball creation to the rebalance. Adds an option to disable the recon check before uploading modified rings. These fixes are required to properly manage rings when used in containerized environments. Changes in puppet-tripleo 7.1.0..7.2.0 -------------------------------------- 21e85c3 Release pike-3 13270af Deprecates using exec workaround for ODL clustering 9b438a0 Fix lint issues to upgrade to puppet-lint 2.3 1da0b51 Fix up the control-port for rabbitmq bundles e141205 Make calls to nova::compute::rbd from libvirt profile 3c779af Puppet module to deploy Manila Share bundle for HA 1bde378 PS Cinder: Added support for password less login 547afe7 Create a Mesh of qdrouterd links for messaging high availability 661757a Retry ceilometer-upgrade 3ee5688 Update resource references for dependencies acafaf0 Modified glance stores parameter values a87fb12 Add new profile for the Veritas HyperScale's cinder backend. 7f78fa1 Fix typo in haproxy bundle f84751a Add insecure_registry_address to docker profile 6462e2e Remove dependency on memcached_node_ips_v6 1e90178 Leverage kolla config_files to copy config into containers 764157d Fix mysql client config generation with containerized environment fb10b8e Refactor iscsi initiator-name reset into separate profile e32f679 Let pacemaker bind-mount needed cert for haproxy bundle 8b2d404 Add option for innodb_flush_log_at_trx_commit = 2 for Galera only 1a862ea Remove reference to bootstack_nodeid 8b9e2b3 Contrail: Fix controlplane/dataplane network asignments & enable optional dpdk 17da52b Update puppet-tripleo libvirt to support docker deployments 6140d80 Refactor nova migration config into client & target profiles ad6c4e9 Fix openstackdocstheme 096e913 Zaqar: support configurable backends d71697a Do not fail if PCI device is missing 90eed9d Merge the nova HAproxy TLS options f886902 Allow disabling udev usage by LVM ee53019 Split docker options and insecure registry c513d40 Always start httpd at the same time (TLS proxy) ad14f23 Always start httpd at the same time 5097c9d MySQL: configure ::zaqar::db::mysql selectively fabb0b2 Change CRL refresh to run every 2 hours d5ac6b7 Force MySQL users to use SSL if internal TLS is enabled 0aad414 Switch from oslosphinx to openstackdocstheme b6a6f3e Add Swift dispersion profile 2210f3c Make collectd to log also to file 2fe27a2 Deploy ironic-api with WSGI 3a5d4a3 Enable TLS for MySQL's replication traffic 5d36fa2 Allow certmonger mysql resource to use several DNS names 76eb1bb Ignore failures when loading nf_conntrack_proto_sctp kernel module e1abfd7 Make enabling haproxy stats interface configurable 7e6924c Add maxconn parameter to MySQL / HAProxy 38ac931 Remove manifest/profile/baseui.pp 76b0074 Require the UI package when creating the virtual host 1924637 For http service endpoints always redirect to https 62dffeb Fix redis when hostname has capital letters 5e91493 Move gnocchi upgrade and api to step 4 c70e68e Addition of Nuage as mechanism driver for ML2 332755c Only set the stonith property on the pacemaker_master node 94f13e6 Ensure hiera step value is an integer 96c4ade Fixes an issue when rebooting with an NFS mount. 1b8548d Configure Galera cluster with FQDNs instead of shortnames 42a974b Changed author 21ad684 Update README with info for new contributors 2606a4e Remove condition to match hdr(host) in haproxy redirect rule d6b338f Add environment variable 439a674 Do not create VIP for pacemaker OVN OCF resource b10adec Make sure the resource bundles use a location_rule 194bdac Configure credentials for ironic to access cinder 6e81485 Fix Swift ring rebalance order c8d2a11 Use CRL for HAProxy 2bb37b6 Add resource to fetch CRL fc5bc07 Puppet module to deploy cinder-volume bundle for HA 92697b6 Puppet module to deploy cinder-backup bundle for HA 5247b99 Move tripleo::certmonger::httpd to defines folder and fix suffix 15cd9b0 Update global requirements 6b0084c Fix the port for Panko API 4db65de Remove unnecessary references to neutron core plugin hiera 410e05b Fix Swift ring management in container deployments 4216c6b Support for proxying ironic-inspector via Apache bb826c0 Install rsync package for galera 1ff831a Adds OpenDaylight resources for configuring cluster with docker Diffstat (except docs and test files) ------------------------------------- README.md | 9 + lib/puppet/parser/functions/netmask_to_cidr.rb | 14 + lib/puppet/provider/sriov_vf_config/numvfs.rb | 2 +- manifests/certmonger/ca/crl.pp | 149 ++++++++ manifests/certmonger/ca/local.pp | 2 +- manifests/certmonger/mysql.pp | 9 +- manifests/glance/nfs_mount.pp | 6 +- manifests/haproxy.pp | 96 +++-- manifests/haproxy/endpoint.pp | 13 +- manifests/host/sriov.pp | 2 +- manifests/network/contrail/analytics.pp | 35 +- manifests/network/contrail/analyticsdatabase.pp | 32 +- manifests/network/contrail/config.pp | 38 +- manifests/network/contrail/control.pp | 29 +- manifests/network/contrail/database.pp | 26 +- manifests/network/contrail/heat.pp | 26 +- manifests/network/contrail/neutron_plugin.pp | 77 ++-- manifests/network/contrail/provision.pp | 8 +- manifests/network/contrail/vrouter.pp | 98 +++-- manifests/network/contrail/webui.pp | 34 +- manifests/pacemaker/haproxy_with_vip.pp | 8 +- manifests/pacemaker/resource_restart_flag.pp | 4 +- manifests/profile/base/aodh.pp | 2 +- manifests/profile/base/aodh/api.pp | 14 +- manifests/profile/base/aodh/evaluator.pp | 2 +- manifests/profile/base/aodh/listener.pp | 2 +- manifests/profile/base/aodh/notifier.pp | 2 +- manifests/profile/base/auditd.pp | 2 +- manifests/profile/base/barbican.pp | 2 +- manifests/profile/base/barbican/api.pp | 2 +- manifests/profile/base/ceilometer.pp | 2 +- manifests/profile/base/ceilometer/agent/central.pp | 2 +- manifests/profile/base/ceilometer/agent/compute.pp | 2 +- .../profile/base/ceilometer/agent/notification.pp | 2 +- manifests/profile/base/ceilometer/agent/polling.pp | 2 +- manifests/profile/base/ceilometer/api.pp | 15 +- manifests/profile/base/ceilometer/collector.pp | 2 +- manifests/profile/base/ceilometer/expirer.pp | 2 +- manifests/profile/base/ceilometer/upgrade.pp | 14 +- manifests/profile/base/ceph.pp | 2 +- manifests/profile/base/ceph/client.pp | 2 +- manifests/profile/base/ceph/mds.pp | 2 +- manifests/profile/base/ceph/mon.pp | 2 +- manifests/profile/base/ceph/osd.pp | 2 +- manifests/profile/base/ceph/rgw.pp | 2 +- manifests/profile/base/certmonger_user.pp | 10 + manifests/profile/base/cinder.pp | 2 +- manifests/profile/base/cinder/api.pp | 2 +- manifests/profile/base/cinder/backup.pp | 2 +- manifests/profile/base/cinder/backup/ceph.pp | 2 +- manifests/profile/base/cinder/backup/swift.pp | 2 +- manifests/profile/base/cinder/scheduler.pp | 2 +- manifests/profile/base/cinder/volume.pp | 29 +- manifests/profile/base/cinder/volume/dellps.pp | 3 +- manifests/profile/base/cinder/volume/dellsc.pp | 2 +- .../profile/base/cinder/volume/hpelefthand.pp | 2 +- manifests/profile/base/cinder/volume/iscsi.pp | 2 +- manifests/profile/base/cinder/volume/netapp.pp | 2 +- manifests/profile/base/cinder/volume/nfs.pp | 21 +- manifests/profile/base/cinder/volume/pure.pp | 2 +- manifests/profile/base/cinder/volume/rbd.pp | 2 +- manifests/profile/base/cinder/volume/scaleio.pp | 2 +- .../base/cinder/volume/veritas_hyperscale.pp | 44 +++ manifests/profile/base/congress.pp | 2 +- manifests/profile/base/database/mongodb.pp | 2 +- manifests/profile/base/database/mysql.pp | 12 +- manifests/profile/base/database/mysql/client.pp | 41 +- manifests/profile/base/database/redis.pp | 4 +- manifests/profile/base/docker.pp | 68 ++-- manifests/profile/base/etcd.pp | 2 +- manifests/profile/base/glance/api.pp | 10 +- manifests/profile/base/gnocchi.pp | 2 +- manifests/profile/base/gnocchi/api.pp | 26 +- manifests/profile/base/gnocchi/metricd.pp | 2 +- manifests/profile/base/gnocchi/statsd.pp | 2 +- manifests/profile/base/haproxy.pp | 2 +- manifests/profile/base/heat.pp | 2 +- manifests/profile/base/heat/api.pp | 15 +- manifests/profile/base/heat/api_cfn.pp | 15 +- manifests/profile/base/heat/api_cloudwatch.pp | 15 +- manifests/profile/base/heat/engine.pp | 2 +- manifests/profile/base/horizon.pp | 30 +- manifests/profile/base/ironic.pp | 2 +- manifests/profile/base/ironic/api.pp | 58 ++- manifests/profile/base/ironic/conductor.pp | 3 +- manifests/profile/base/ironic_inspector.pp | 2 +- manifests/profile/base/iscsid.pp | 45 +++ manifests/profile/base/keepalived.pp | 2 +- manifests/profile/base/kernel.pp | 28 +- manifests/profile/base/keystone.pp | 5 +- manifests/profile/base/logging/fluentd.pp | 6 +- manifests/profile/base/lvm.pp | 40 ++ manifests/profile/base/manila.pp | 2 +- manifests/profile/base/manila/api.pp | 2 +- manifests/profile/base/manila/scheduler.pp | 2 +- manifests/profile/base/manila/share.pp | 2 +- manifests/profile/base/memcached.pp | 2 +- manifests/profile/base/metrics/collectd.pp | 11 +- manifests/profile/base/mistral.pp | 2 +- manifests/profile/base/mistral/api.pp | 8 +- manifests/profile/base/mistral/engine.pp | 2 +- manifests/profile/base/mistral/event_engine.pp | 2 +- manifests/profile/base/mistral/executor.pp | 2 +- manifests/profile/base/monitoring/sensu.pp | 2 +- manifests/profile/base/monitoring/uchiwa.pp | 4 +- manifests/profile/base/neutron.pp | 2 +- manifests/profile/base/neutron/agents/bagpipe.pp | 2 +- manifests/profile/base/neutron/agents/bigswitch.pp | 2 +- manifests/profile/base/neutron/agents/l2gw.pp | 2 +- manifests/profile/base/neutron/agents/midonet.pp | 2 +- manifests/profile/base/neutron/agents/nuage.pp | 2 +- manifests/profile/base/neutron/agents/ovn.pp | 2 +- manifests/profile/base/neutron/agents/vpp.pp | 2 +- manifests/profile/base/neutron/bgpvpn.pp | 2 +- manifests/profile/base/neutron/dhcp.pp | 2 +- manifests/profile/base/neutron/l2gw.pp | 2 +- manifests/profile/base/neutron/l3.pp | 2 +- manifests/profile/base/neutron/lbaas.pp | 2 +- manifests/profile/base/neutron/linuxbridge.pp | 2 +- manifests/profile/base/neutron/metadata.pp | 2 +- manifests/profile/base/neutron/midonet.pp | 2 +- manifests/profile/base/neutron/n1k.pp | 2 +- .../profile/base/neutron/opencontrail/vrouter.pp | 2 +- manifests/profile/base/neutron/opendaylight.pp | 12 +- manifests/profile/base/neutron/ovn_northd.pp | 2 +- manifests/profile/base/neutron/ovs.pp | 2 +- manifests/profile/base/neutron/plugins/ml2.pp | 6 +- .../profile/base/neutron/plugins/ml2/bagpipe.pp | 2 +- .../profile/base/neutron/plugins/ml2/nuage.pp | 31 ++ .../base/neutron/plugins/ml2/opendaylight.pp | 2 +- manifests/profile/base/neutron/plugins/ml2/ovn.pp | 2 +- manifests/profile/base/neutron/plugins/ml2/vpp.pp | 2 +- manifests/profile/base/neutron/plugins/nsx_v3.pp | 2 +- manifests/profile/base/neutron/plugins/nuage.pp | 2 +- .../profile/base/neutron/plugins/opencontrail.pp | 2 +- .../base/neutron/plugins/ovs/opendaylight.pp | 2 +- manifests/profile/base/neutron/plugins/plumgrid.pp | 2 +- manifests/profile/base/neutron/plumgrid.pp | 2 +- manifests/profile/base/neutron/server.pp | 14 +- manifests/profile/base/neutron/sriov.pp | 14 +- manifests/profile/base/nova.pp | 170 +-------- manifests/profile/base/nova/api.pp | 2 +- manifests/profile/base/nova/authtoken.pp | 30 +- manifests/profile/base/nova/compute.pp | 15 +- manifests/profile/base/nova/compute/ironic.pp | 2 +- manifests/profile/base/nova/compute/libvirt.pp | 27 +- .../profile/base/nova/compute_libvirt_shared.pp | 46 +++ manifests/profile/base/nova/conductor.pp | 2 +- manifests/profile/base/nova/consoleauth.pp | 2 +- manifests/profile/base/nova/ec2api.pp | 2 +- manifests/profile/base/nova/libvirt.pp | 6 +- manifests/profile/base/nova/migration.pp | 35 ++ manifests/profile/base/nova/migration/client.pp | 100 +++++ manifests/profile/base/nova/migration/target.pp | 120 ++++++ manifests/profile/base/nova/placement.pp | 8 +- manifests/profile/base/nova/scheduler.pp | 2 +- manifests/profile/base/nova/vncproxy.pp | 2 +- manifests/profile/base/novajoin.pp | 2 +- manifests/profile/base/octavia.pp | 2 +- manifests/profile/base/octavia/api.pp | 2 +- manifests/profile/base/octavia/health_manager.pp | 2 +- manifests/profile/base/octavia/housekeeping.pp | 2 +- manifests/profile/base/octavia/worker.pp | 2 +- manifests/profile/base/pacemaker.pp | 14 +- manifests/profile/base/pacemaker_remote.pp | 9 +- manifests/profile/base/panko.pp | 2 +- manifests/profile/base/panko/api.pp | 2 +- manifests/profile/base/qdr.pp | 74 +++- manifests/profile/base/rabbitmq.pp | 5 +- manifests/profile/base/sahara.pp | 2 +- manifests/profile/base/sahara/api.pp | 2 +- manifests/profile/base/sahara/engine.pp | 2 +- manifests/profile/base/securetty.pp | 2 +- manifests/profile/base/snmp.pp | 2 +- manifests/profile/base/swift/dispersion.pp | 33 ++ manifests/profile/base/swift/proxy.pp | 18 +- manifests/profile/base/swift/ringbuilder.pp | 50 ++- manifests/profile/base/swift/storage.pp | 2 +- manifests/profile/base/tacker.pp | 2 +- manifests/profile/base/trove/api.pp | 2 +- manifests/profile/base/trove/conductor.pp | 2 +- manifests/profile/base/trove/taskmanager.pp | 2 +- manifests/profile/base/ui.pp | 26 -- manifests/profile/base/vpp.pp | 2 +- manifests/profile/base/zaqar.pp | 68 +++- manifests/profile/pacemaker/ceph/rbdmirror.pp | 6 +- manifests/profile/pacemaker/cinder/backup.pp | 5 +- .../profile/pacemaker/cinder/backup_bundle.pp | 141 +++++++ manifests/profile/pacemaker/cinder/volume.pp | 2 +- .../profile/pacemaker/cinder/volume_bundle.pp | 141 +++++++ manifests/profile/pacemaker/clustercheck.pp | 2 +- manifests/profile/pacemaker/database/mysql.pp | 143 ++++--- .../profile/pacemaker/database/mysql_bundle.pp | 13 +- manifests/profile/pacemaker/database/redis.pp | 2 +- .../profile/pacemaker/database/redis_bundle.pp | 52 +-- manifests/profile/pacemaker/haproxy.pp | 2 +- manifests/profile/pacemaker/haproxy_bundle.pp | 26 +- manifests/profile/pacemaker/manila.pp | 2 +- manifests/profile/pacemaker/manila/share_bundle.pp | 136 +++++++ manifests/profile/pacemaker/neutron/lbaas.pp | 2 +- manifests/profile/pacemaker/ovn_northd.pp | 38 +- manifests/profile/pacemaker/rabbitmq.pp | 2 +- manifests/profile/pacemaker/rabbitmq_bundle.pp | 15 +- manifests/ui.pp | 42 +- metadata.json | 2 +- .../notes/Add-CRL-resource-d2263462d40f01c0.yaml | 4 + .../notes/HAProxy-CRL-d05b555f92ff55ed.yaml | 6 + ...-mysql_maxconn-to-haproxy-84a5ad07d8d14ddd.yaml | 5 + ...onic-inspector-via-apache-ea70e9fa1ad04553.yaml | 6 + ...missing-pci-dev-for-sriov-bbc29f62fcac10ff.yaml | 5 + .../cleanup_odl_clustering-7efdd58639df88a5.yaml | 8 + ...e-traffic-to-internal_api-ddc96d24c7018b81.yaml | 10 + .../galera-install-rsync-b2f2504f12cc0cfd.yaml | 6 + ...b_flush_log_at_trx_commit-eb7d99749ca3c911.yaml | 17 + .../nf_conntrack_proto_sctp-a64300a3fc7b4e55.yaml | 9 + .../notes/ps-san-private_key-5a9f11e7907ba600.yaml | 4 + .../start-httpd-step3-and-4-2bd7be9e1429ef6d.yaml | 5 + ...swift-container-ring-mgmt-ecf65b9fbae0d297.yaml | 8 + .../swift-dispersion-profile-09dc69980028e751.yaml | 6 + ...hyperscale-driver-profile-970b5cb72f9fdcba.yaml | 3 + ...zaqar_undercloud_backends-66c268161cf7840e.yaml | 6 + releasenotes/source/conf.py | 18 +- setup.cfg | 2 +- spec/classes/tripleo_certmonger_ca_crl_spec.rb | 104 +++++ spec/classes/tripleo_certmonger_ca_local_spec.rb | 5 + spec/classes/tripleo_certmonger_httpd.rb | 63 --- spec/classes/tripleo_haproxy_spec.rb | 115 ++++++ spec/classes/tripleo_host_sriov_spec.rb | 4 +- spec/classes/tripleo_profile_base_aodh_api_spec.rb | 25 +- .../tripleo_profile_base_ceilometer_api_spec.rb | 27 +- ..._profile_base_cinder_veritas_hyperscale_spec.rb | 57 +++ .../tripleo_profile_base_cinder_volume_spec.rb | 38 +- .../tripleo_profile_base_database_redis_spec.rb | 106 ++++++ spec/classes/tripleo_profile_base_docker_spec.rb | 9 +- .../tripleo_profile_base_gnocchi_api_spec.rb | 22 +- spec/classes/tripleo_profile_base_horizon_spec.rb | 28 +- spec/classes/tripleo_profile_base_iscsid_spec.rb | 42 ++ spec/classes/tripleo_profile_base_kernel_spec.rb | 59 +++ spec/classes/tripleo_profile_base_lvm_spec.rb | 53 +++ ...ipleo_profile_base_neutron_opendaylight_spec.rb | 6 +- .../tripleo_profile_base_nova_authtoken_spec.rb | 3 +- ...ipleo_profile_base_nova_compute_libvirt_spec.rb | 6 + .../tripleo_profile_base_nova_compute_spec.rb | 15 +- .../tripleo_profile_base_nova_libvirt_spec.rb | 6 + ...pleo_profile_base_nova_migration_client_spec.rb | 188 +++++++++ .../tripleo_profile_base_nova_migration_spec.rb | 40 ++ ...pleo_profile_base_nova_migration_target_spec.rb | 283 ++++++++++++++ .../tripleo_profile_base_nova_placement_spec.rb | 20 +- spec/classes/tripleo_profile_base_nova_spec.rb | 423 --------------------- spec/classes/tripleo_profile_base_qdr_spec.rb | 119 ++++++ spec/defines/tripleo_certmonger_httpd_spec.rb | 65 ++++ spec/fixtures/hieradata/default.yaml | 5 +- spec/functions/netmask_to_cidr_spec.rb | 6 + templates/ui/tripleo_ui_config.js.erb | 1 + test-requirements.txt | 6 +- tox.ini | 2 +- 256 files changed, 3860 insertions(+), 1457 deletions(-) Requirements updates -------------------- diff --git a/test-requirements.txt b/test-requirements.txt index 1ea50a8..a23c7e7 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -2,2 +2,2 @@ -sphinx>=1.5.1 # BSD -oslosphinx>=4.7.0 # Apache-2.0 +sphinx>=1.6.2 # BSD +openstackdocstheme>=1.11.0 # Apache-2.0 @@ -7 +7 @@ oslosphinx>=4.7.0 # Apache-2.0 -reno>=1.8.0,!=2.0.0 # Apache-2.0 +reno!=2.0.0,!=2.3.1,>=1.8.0 # Apache-2.0
participants (1)
-
no-reply@openstack.org