aboutsummaryrefslogtreecommitdiffstats
path: root/docker
AgeCommit message (Collapse)AuthorFilesLines
2020-04-02Keep the modified tempestCédric Ollivier4-0/+4
http://artifacts.opnfv.org/functest/CRY58ZS3031L/functest-ovn-opnfv-functest-healthcheck-jerma-tempest_smoke-run-37/tempest_smoke/tempest-report.html Change-Id: I9598a45b09151fa267294716f70e65e3050f0239 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 21b512e55eb36e38160b697baae44c464fce9034)
2020-04-01Rename CNTT specific testcasesCédric Ollivier2-9/+9
Test DB and API don't support suites which raise side effects in Cachet if both IaaS verification and CNTT conformance are executed. Vmtp and Shaker haven't been modified for CNTT. They will be renamed once CNTT asks for new post processing. http://testresults.opnfv.org:8080/ Change-Id: I64e06694620027faa06b6d9d339684f5e8d733d7 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit c37c09b137d61d046a27973ffc44e5b32845462c)
2020-03-29Apply Accept-custom-registered-endpointsCédric Ollivier3-1/+108
This patch is needed to verify Ceph RadosGW and then has to be backported to Hunter (CNTT). Tempest maybe simply updated in a few branches (Jerma, Iruya?) depending on the side effects. Updating Tempest in Hunter would ask for an deep update of CNTT RC. https://github.com/openstack/tempest/commit/1d500e79156ada6bc6fdb628ed1da0efd4121f6a Change-Id: I5cbe6374cc5cb9d4cae92ae390f5ab63f301e4cb Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 719985c55d51fd7093753ae61de2328ea0543367)
2020-03-24Remove duplicated g++ in vnf/DockerfileCédric Ollivier1-1/+1
Co-Authored-By: Juha Kosonen <juha.kosonen@nokia.com> Change-Id: I63fbeb8d2a0941d9b3492c97e14a139ba050ad7d Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 1413d32a207502f88675e379264765687230884b)
2020-03-17Remove a duplicated packageCédric Ollivier1-1/+1
Change-Id: I7f9c5b5e2c59f23ada721e7209bec56bfa23ae9e Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit b732b5b53e1b46e406b8ebfcff16466e2543cd67)
2020-03-05Add oauth1 as optional Keystone featuresCédric Ollivier1-2/+3
It was not listed in Keystone which defacto sets it as optional. It may be considered as mandatory in a second step. It should be noted that it's not working in CNTT RI and there is no true plan to update CNTT RI from the time writing. Close cntt-n/CNTT#1253 Change-Id: If7ee4efeafc05638173a51ce997ecbdcaabfc79c Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 13b8fd9d9f54fdac817b99f4506a1171ab0a9481)
2020-03-03Blacklist tests which are not mandatory in CNTTCédric Ollivier2-0/+47
CNTT rally_jobs must conform with CNTT RC whatever the OpenStack version under tests. All tests added by neutron since Hunter must be skipped in conformance. Of course, the IaaS verification part is unchanged as this tests are relevant. Change-Id: I4cfb4ae725e5ce9125f4ed25489dd003e16695f4 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit a0bbd644a0694bee89032f1176d9c60dd7ac7f8d)
2020-02-28Clean former dirsCédric Ollivier1-1/+1
Change-Id: I9d6d2ba6bfdaac26e4c7d6ea6aaf69b000869b2d Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit a25b130cbbb45e7266d7155d3720b1e9c724c29b)
2020-02-21Skip a few tests in tempest_full and tempest_slowCédric Ollivier1-2/+5
It completes the first patch updating neutron-tempest-plugin-api [1]. The same dvr regex is used in tempest_slow, a new one is defined for tempest_full which will be added in CNTT doc (test_network_basic_ops.TestNetworkBasicOps.test_router_rescheduling). Close cntt-n/CNTT#1106 Change-Id: I9fd79c9a82bb1f84a622ccb9ea316b8e43273e2a Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9ebccf93627d929fbf8738fbc9ce5ddb5f12c649)
2020-02-18Update test case list in neutron-tempest-plugin-apiCédric Ollivier1-2/+24
It takes into account latest changes in CNTT [1] [1] https://github.com/cntt-n/CNTT/pull/1107 Close cntt-n/CNTT#1106 Change-Id: I3212d1b765f7fd657ed603ed520d79fccae80bfa Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit a149d2fa5b8bfcfd1dcd225c0f4bc6f4d949e420)
2020-02-16Exclude vxlan testing in CNTTCédric Ollivier1-1/+5
Close cntt-n/CNTT#1077 Change-Id: If9c0f52138e9f669f17933c42906936e2e196b2a Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 6a67a88d9511226aba749cdd73a4570eab38bfeb)
2020-02-16Set dhcp_agent_scheduler as optionalCédric Ollivier1-3/+5
dhcp_agent_scheduler [1] indirectly forces the Neutron backends as highlighted by OVN testing. [1] https://specs.openstack.org/openstack/neutron-specs/specs/api/agent_schedulers.html Close cntt-n/CNTT#1073 Change-Id: Iafa3ad7f15dc157c0362ffa59eed31b89bf368e7 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9f06dba2a6b5e4eb22652a5e17947dab612f53a4)
2020-02-16Order regex in neutron-tempest-plugin-api (CNTT)Cédric Ollivier1-5/+5
It mostly adds admin as prefix. Change-Id: Ic2e723b858ff1f3e26478f6037a19db1fd52e4aa Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit a617bcfd4e5754adcf55aa1b69cf8397ed3571cd)
2020-01-14Update ODL git commit id (python3 migration)Cédric Ollivier1-1/+1
https://jira.opendaylight.org/browse/INTTEST-65 Co-Authored-By: Alexandru Avadanii <alexandru.avadanii@enea.com> Change-Id: I40c9df7c7d80fc8d9709f0b75dda333d9ed9da12 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit be12a86a0afd2f7943377e1df94cfe00efbece07)
2019-12-30Remove test_server_connectivity_cold_migration_revert from exclusion listCédric Ollivier1-2/+1
It has to be part of the Compliance testing Co-Authored-By: Deepanshu Bhatia <deepanshu@voereir.com> Change-Id: I16d35e3c3a14b6b18901b6b27e50fc709ce0559f Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 4cbdef191c5c0f08043291f7c11167cd649880cc)
2019-12-27Set port_security: true in tempest_conf.yamlCédric Ollivier2-2/+5
It allows running test_boot_into_disabled_port_security_network_without_secgroup. It also sets a few default values. Change-Id: I851c5d13705e0419a7e664e05d32eec0efb417c6 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9e128dcdbf26ace6790e9c0307b7e6e37763f43b)
2019-12-07Run tests sequentially in tempest_slowCédric Ollivier2-2/+2
concurrency is set to 2 in the upstream job [1] but it conflicts with serial also passed. As it fails once without any other test in parallel, the number of executors should be decreased [2]. [0] https://799189c1bf6a1aa9c8de-48970bda2a30ee836a70a12e61555969.ssl.cf1.rackcdn.com/694893/1/check/tempest-slow/1bf5851/job-output.txt [1] http://artifacts.opnfv.org/functest/functest-opnfv-functest-smoke-cntt-hunter-tempest_slow-run-7/tempest_slow/tempest-report.html Change-Id: I51bc9a584cf4b32a88b7a84d9387e7b8e90281c2 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 83c3cc3f9b71de33cd1e88c11da4879156be7cf3)
2019-11-26Add tempest_scenario and tempest_slow in smoke-cnttCédric Ollivier1-0/+50
The testcases related to ipv6 are currenty not executed because they cannot be covered by our SUTs. Close cntt-n/CNTT#696 Change-Id: Ic0ca3818011bede965702e778f37752059c86173 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit a1c9756dbf867a6cfacffdecadbaf66c412c129f)
2019-11-26Add functest-benchmarking-cnttCédric Ollivier2-0/+74
It configures Rally to verify the mandatory services asked by CNTT. It also prepares the next benchmarking (API and dataplane) KPIs. Change-Id: Ie8701ddfa1a497f8b1a6f839e6ff7a77849b618c Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 92460cf5330c29eb483d903f3aa659cbad1d58b8)
2019-11-26Complete tempest_full for CNTT ComplianceCédric Ollivier2-2/+28
It forbids skipping any test and counts the testcases executed. It mosly avoids running tests accoring to the upstream skip tests (known bugs), related to nova-network, glance v1, keystone v2 and all features defined as optional by CNTT. It fixes an issue highlighted by yallint. Close cntt-n/CNTT#624 Change-Id: Ib4678cb9e9fc37b16fcf21d8418931eae0f667d0 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 21a0708799bd0fa61e086dc6f1c0f35c1450b55c)
2019-11-26Add tempest_full in ComplianceCédric Ollivier3-0/+108
Change-Id: Ib2898d48d21704a06cf1f4574df81f4f0dae3f52 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 97dffc8fa0c297854d2cb96e10833c40a7c949fe)
2019-11-25Add rally_sanityCédric Ollivier1-1/+23
Gnocchi and Barbican are not currently selected by CNTT. Then they are removed from the optional list. Change-Id: I46d16b2cabd832b2655606b0708a6f43721cb3c5 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit d673cd586a464079c35660e828d81952f2707b4f)
2019-11-24Switch to OPNFV Clearwater repositoryCédric Ollivier1-45/+77
Project Clearwater is backed by Metaswitch Networks [1]. They will therefore not be reinstating the 14.04 Project Clearwater repo server. Then all binaries have been compiled and published on http://artifacts.opnfv.org/functest/clearwater/debian Then it updates sources.list.d/clearwater.list [1] https://www.projectclearwater.org/ Change-Id: I529e59f8aeeafb96bafb7da8a1cce5c4c5a9e031 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 0159c469d752fd41876c81995e113562650f73a0)
2019-11-18Add tempest_keystone in CNTT API ComplianceCédric Ollivier1-0/+18
It excludes test_federated_authentication as federation is currently optional [1]. Close cntt-n/CNTT#624 [1] https://github.com/collivier/CNTT/commit/2e4ae5d0f4ebf4ef4bbc2504ed6cd46388361c09 Change-Id: Ie322e7912c429543c5da92f8afb33de3e8e75c8a Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 8384c497bd55b0e31e971b0e01b2f3744c07eccb)
2019-11-16Update to Xtesting 0.83Cédric Ollivier1-1/+1
It supports mimetypes and then eases reading the reports from browser. Change-Id: Ic38fca9fb05ca1ad76b589800b22bc78882c7806 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9df8ee861d2161a105598474092e5e83da88a354)
2019-11-16Optimize lxml build if armCédric Ollivier1-0/+1
Else it raises timeouts on travis-ci.org: https://www.travis-ci.org/collivier/functest/builds/612068457 https://www.travis-ci.org/collivier/functest/builds/612116863 https://www.travis-ci.org/collivier/functest/jobs/612116916 Change-Id: Id34144ebcdf3f418d5a07068434eb7aa96b023d2 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 6fd2216a21aad00a0c6fba272f04ee0319fc119a)
2019-11-14Update neutron-tempest-plugin-api regex (CNTT)Cédric Ollivier1-9/+2
It conforms with the last updates in API [1] adding Neutron QoS and Trunk as mandatory. QosMinimumBandwidthRuleTestJSON is skipped as it's not covered by OpenStack (and Functest) gates. [1] https://github.com/cntt-n/CNTT/pull/463 Change-Id: I54ff5e1fdb9b1e7265c63e3f66dfcf2f10db07d5 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 0c07bc255968d21558d3aec8ac7e4dc7659a69a2)
2019-11-14Fix py version in pathCédric Ollivier1-1/+1
Change-Id: Ie927a0abf9615a0a8f832b718622d022c5b0ca47 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-11-13Fix parent container in smoke-cntt/DockerfileCédric Ollivier1-1/+1
Change-Id: I6b82292ff76e717c6e417e761edb89f4e54f1ce7 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-11-13Add tempest_cinder in complianceCédric Ollivier1-219/+7
It conforms with Cinder Microversions and Feature [1]. It cleans the testcases which require CNTT updates (Keystone, Glance, Nova, etc.) [1] https://github.com/cntt-n/CNTT/pull/577 Closes cntt-n/CNTT#593 Change-Id: I8e719e9f48d70a860c0f879117144bb3ce6f4875 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 91de272c725a9a4d9d5b97381e574802036da8b7)
2019-11-09Publish functest-cntt-smokeCédric Ollivier2-0/+283
It tunes neutron-tempest-plugin-api to avoid skipping any test (conformance as expected by CNTT). Until CNTT clearly defines the optional and mandatory neutron extensions, it selects the OpenStack and Functest gate values as default. The next Neutron extensions are considered as optional (still verified by functest-smoke): - logging - network-segment-range - port-resource-request - qos - trunk - metering - uplink-status-propagation - dns-domain-ports - dns-integration - router-interface-fip The next tests (tempest_full, tempest_slow, tempest_scenario, etc.) will be updated in next changes. Change-Id: I003d1e509cd6dc7bd58261f27676fb53cb79e68c Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 1456f68e90103afab958ae8a305c840e6fa29cf7)
2019-10-29Add keystone-tempest-pluginCédric Ollivier2-2/+24
It adds tempest_keystone which runs the tests proposed by keystone-tempest-plugin [1]. [1] https://opendev.org/openstack/keystone-tempest-plugin Change-Id: I83db584c37fe63a549ccf396b03e034778254b3a Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 22ec0c1008b81f368476d8cea84117a93d15dab2)
2019-10-29Add cinder-tempest-pluginCédric Ollivier2-3/+26
It adds tempest_cinder which runs the tests proposed by cinder-tempest-plugin [1]. test_incremental_backup is disabled because it currently fails vs Functest SUT (under analysis). [1] https://opendev.org/openstack/cinder-tempest-plugin Change-Id: I85b255eb05b9ab1c74c3829148da5230d6c7647e Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit e46aa41172fa1bf63364505fbbf922323788ac98)
2019-10-29Add healthcheck Horizon testsCédric Ollivier2-3/+24
It runs TestDashboardBasicOps as proposed by tempest-horizon [1]. It's skipped if DASHBOARD_URL is unset (default). [1] https://opendev.org/openstack/tempest-horizon Change-Id: I1b6b5609412770609f412da4927641588b173ed6 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 7b03643170974d4307e0f630e4c79340df98e06f)
2019-10-26Update RefStack lists to 2019.06Cédric Ollivier4-3/+12
Change-Id: I9d3abc3996857d8905007640250b94025735809c Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit de7a2d821890f8bf1c5a9215def91ee136e867e4)
2019-10-26Allow checking Tests countCédric Ollivier1-0/+3
It meets CNTT requirements (verifying conformance with a reference implementation) and may protect vs synchronization issues (see gambia refstack_defcore). Change-Id: I842bc4ed91eec6bc545c489e3686d0d41dae7b44 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 7c67624b8ee7f7a9a7fb36bb25e9881a63c982d4)
2019-10-13Add Octavia testingCédric Ollivier2-2/+27
It integrates Octavia Tempest Plugin. The new testcase octavia currently covers API only [1]. [1] https://logs.opendev.org/46/674846/2/check/octavia-v2-dsvm-noop-api/fe37c58/testr_results.html.gz Change-Id: I2a11a19aa0c43701499dc9e17bd69b9387b53b58 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit d625e90014e192c142e4fb97bbc781a4c6589aa5)
2019-09-22Swith to coreutils timeoutCédric Ollivier1-1/+1
juju is not correctly stopped when no internet. Change-Id: Id06c6e829ab8a992107f655aac6ec4539e292d82 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-09-14Select python 3.6 as defaultCédric Ollivier6-25/+26
It switches to Python3 as default due to new OPNFV iruya release date (December) which is very closed to Python2 EOL. Functest Iruya (first release published in April) has supported both Python2 and Python3. Change-Id: I4c1294a5361e591fc7a8a88b3d067fc3b39e00c4 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-09-14Remove any instance quota in tempest_scenarioCédric Ollivier1-1/+1
The next testcase can reach the default limit if lots of computes available [1]. tempest.scenario.test_server_multinode.TestServerMultinode.test_schedule_to_all_nodes [1] http://artifacts.opnfv.org/functest/functest-opnfv-functest-smoke-hunter-tempest_scenario-run-325/results/tempest_scenario/test_raw_list.txt Change-Id: Ibf68e2a367199afee3f6198ebf683be6cd938d94 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit bbe8c3e48543eca31493cf33b02e1d9a48de2280)
2019-08-31Remove Features containersCédric Ollivier4-117/+0
Most the features are stopped and Functest shouldn't host dead code. Functest is a framework (Docker and Python modules) which can be still reused by any third-party (OPNFV Feature or anything else) in its tree and CI. Change-Id: Ia8475ce295b2cdcddbfcfc5b17ea2ab9e51a8afb Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit ae4dc14668405c57c56b4984b3ec815ec32764ac)
2019-08-29Add tempest slowCédric Ollivier1-0/+17
It conforms with tempest-slow-py3 executed in Neutron Gates [1]. [1] https://logs.opendev.org/68/672568/6/check/tempest-slow-py3/49fece6/testr_results.html.gz Change-Id: I0c1c6f7be38c9fcdd1a32e5cfa2bc4d8414885e0 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit bbe35dc42e442fa2669a24e7927d389188e42b4c)
2019-08-26Switch to the classical ping (iputils)Cédric Ollivier1-1/+1
Ping provided by busybox doesn't support -M (pmtudisc_opt) which is asked by [1] (part of tempest_slow). [1] tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_mtu_sized_frames Change-Id: I75340f239ae372b56cffe9c30c6242878c06ef74 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 4ba4fac64df972d805bf7e88e9b5a987724e2aa9)
2019-07-27Select the latest tempest versionCédric Ollivier6-6/+6
It selects the first release including our fixes. Change-Id: I553abc2df3c6adc727a24b9a27a7737f78fa3f5e Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-07-21Conform with new ODL urlsCédric Ollivier1-1/+1
It now clones https://git.opendaylight.org/gerrit/integration/test Change-Id: Icff918305de1092cf6e985490188d409178273e1 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit ccaa81668ae3b084056789b187de5c794beeec4a)
2019-06-29Add Barbican scenario in RallyCédric Ollivier2-0/+2
It doesn't run BarbicanSecrets.create_symmetric_and_delete which is currently failing [1]. Barbican testing is optional as Gnocchi. [1] https://bugs.launchpad.net/rally/+bug/1819285 Change-Id: I9121ce3c9f29ba05069c905325327d4c4d0b9e71 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 902b70b40e61a2afe4d92ba7759a33f1306d54ca)
2019-06-29Update Rally packagesCédric Ollivier1-2/+2
It now selects releases instead of a commit id. Change-Id: I45d438674baf1c7de00748b81e6dc9024ee28840 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-06-19Update tempest commit idCédric Ollivier6-5/+6
It includes "Fix region leaks after testing endpoints" [1]. [1] https://github.com/openstack/tempest/commit/e8088d1218eba0b8e4ed59fa5ca30ac9b664b7fb Change-Id: I063a9c4e2f09a27c79ea77ba0cf9307642950070 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-06-09Blacklist test_list_metadef_namespaces (Patrole)Cédric Ollivier1-0/+1
It seems dependent on test order (404 if no namespace) and sometimes fails in gates [1][2][3]. It will be enabled as soon it's fixed upstream or if SUT is wrong here. [1] https://build.opnfv.org/ci/job/functest-opnfv-functest-smoke-latest-patrole-run/ [2] https://build.opnfv.org/ci/job/functest-opnfv-functest-smoke-iruya-patrole-run/ [3] https://build.opnfv.org/ci/job/functest-opnfv-functest-smoke-hunter-patrole-run/ Change-Id: I68e71e9b0753089e5620d6689ddff37fe66aeab7 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 02b9592a129472ffd26206541f8efefe1f759957)
2019-05-28Remove PyNacl contraints in FeaturesCédric Ollivier7-1/+7
It conforms with "Install PyNaCl via package" [1]. functest-feature may raise timeouts when cross-compiling PyNacl [2]. [1] https://gerrit.opnfv.org/gerrit/#/c/67956/ [2] https://travis-ci.org/collivier/functest/jobs/538119733 Change-Id: I986677b869f62caee6be219ee1de622b7bc20ca4 Signed-off-by: Cédric Ollivier <ollivier.cedric@gmail.com> (cherry picked from commit 7a628f087403089d282cda14bcba858d8b0bc6c3)