OpenStack Compute (Nova)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

440 lines
16KB

  1. # See https://docs.openstack.org/infra/manual/drivers.html#naming-with-zuul-v3
  2. # for job naming conventions.
  3. # TODO(stephenfin): Remove 'USE_PYTHON3' once [1] or similar merges
  4. #
  5. # [1] https://review.opendev.org/#/c/649097/
  6. #
  7. - job:
  8. name: nova-dsvm-multinode-base
  9. parent: legacy-dsvm-base-multinode
  10. description: |
  11. Base job for multinode nova devstack/tempest jobs.
  12. Will setup firewall rules on all the nodes allowing them to talk to
  13. each other.
  14. timeout: 10800
  15. required-projects:
  16. - openstack/devstack-gate
  17. - openstack/nova
  18. - openstack/tempest
  19. irrelevant-files: &dsvm-irrelevant-files
  20. - ^api-.*$
  21. - ^(test-|)requirements.txt$
  22. - ^.*\.rst$
  23. - ^.git.*$
  24. - ^doc/.*$
  25. - ^nova/hacking/.*$
  26. - ^nova/locale/.*$
  27. - ^nova/tests/.*$
  28. - ^nova/test.py$
  29. - ^releasenotes/.*$
  30. - ^setup.cfg$
  31. - ^tools/.*$
  32. - ^tox.ini$
  33. - job:
  34. name: nova-tox-functional-py36
  35. parent: openstack-tox
  36. nodeset: ubuntu-bionic
  37. description: |
  38. Run tox-based functional tests for the OpenStack Nova project
  39. under cPython version 3.6 with Nova specific irrelevant-files list.
  40. Uses tox with the ``functional-py36`` environment.
  41. This job also provides a parent for other projects to run the nova
  42. functional tests on their own changes.
  43. required-projects:
  44. # including nova here makes this job reusable by other projects
  45. - openstack/nova
  46. - openstack/placement
  47. irrelevant-files: &functional-irrelevant-files
  48. - ^.*\.rst$
  49. - ^api-.*$
  50. - ^doc/(source|test)/.*$
  51. - ^nova/locale/.*$
  52. - ^releasenotes/.*$
  53. vars:
  54. # explicitly stating the work dir makes this job reusable by other
  55. # projects
  56. zuul_work_dir: src/opendev.org/openstack/nova
  57. tox_envlist: functional-py36
  58. tox_install_siblings: true
  59. bindep_profile: test py36
  60. timeout: 3600
  61. - job:
  62. name: nova-tox-functional-py37
  63. parent: openstack-tox
  64. nodeset: ubuntu-bionic
  65. description: |
  66. Run tox-based functional tests for the OpenStack Nova project
  67. under cPython version 3.7 with Nova specific irrelevant-files list.
  68. Uses tox with the ``functional-py37`` environment.
  69. This job also provides a parent for other projects to run the nova
  70. functional tests on their own changes.
  71. required-projects:
  72. # including nova here makes this job reusable by other projects
  73. - openstack/nova
  74. - openstack/placement
  75. irrelevant-files: *functional-irrelevant-files
  76. vars:
  77. # explicitly stating the work dir makes this job reusable by other
  78. # projects
  79. zuul_work_dir: src/opendev.org/openstack/nova
  80. tox_envlist: functional-py37
  81. bindep_profile: test py37
  82. python_version: 3.7
  83. timeout: 3600
  84. - job:
  85. name: nova-live-migration
  86. parent: nova-dsvm-multinode-base
  87. description: |
  88. Run tempest live migration tests against both local storage and shared
  89. storage using ceph (the environment is reconfigured for ceph after the
  90. local storage tests are run). Also runs simple evacuate tests.
  91. Config drive is forced on all instances. Runs with python 3.
  92. run: playbooks/legacy/nova-live-migration/run.yaml
  93. post-run: playbooks/legacy/nova-live-migration/post.yaml
  94. irrelevant-files: *dsvm-irrelevant-files
  95. - job:
  96. name: nova-lvm
  97. parent: devstack-tempest
  98. description: |
  99. Run tempest compute API tests using LVM image backend. This only runs
  100. against nova/virt/libvirt/* changes.
  101. # Copy irrelevant-files from nova-dsvm-multinode-base and then exclude
  102. # anything that is not in nova/virt/libvirt/* or nova/privsep/*.
  103. irrelevant-files:
  104. - ^(?!.zuul.yaml)(?!nova/virt/libvirt/)(?!nova/privsep/).*$
  105. - ^api-.*$
  106. - ^(test-|)requirements.txt$
  107. - ^.*\.rst$
  108. - ^.git.*$
  109. - ^doc/.*$
  110. - ^nova/hacking/.*$
  111. - ^nova/locale/.*$
  112. - ^nova/tests/.*$
  113. - ^nova/test.py$
  114. - ^releasenotes/.*$
  115. - ^setup.cfg$
  116. - ^tools/.*$
  117. - ^tox.ini$
  118. # TODO(mriedem): Make this voting and gating once bug 1771700 is fixed
  119. # and we've had enough runs to feel comfortable with this setup.
  120. voting: false
  121. vars:
  122. # We use the "all" environment for tempest_test_regex and
  123. # tempest_black_regex.
  124. tox_envlist: all
  125. # Only run compute API tests.
  126. tempest_test_regex: ^tempest\.api\.compute
  127. # Skip slow tests.
  128. tempest_black_regex: .*\[.*\bslow\b.*\]
  129. devstack_local_conf:
  130. test-config:
  131. $TEMPEST_CONFIG:
  132. compute-feature-enabled:
  133. # NOTE(mriedem): resize of non-volume-backed lvm instances does
  134. # not yet work (bug 1831657).
  135. resize: false
  136. cold_migration: false
  137. devstack_localrc:
  138. USE_PYTHON3: True
  139. NOVA_BACKEND: LVM
  140. # Do not waste time clearing volumes.
  141. LVM_VOLUME_CLEAR: none
  142. # Disable SSH validation in tests to save time.
  143. TEMPEST_RUN_VALIDATION: false
  144. devstack_services:
  145. # Disable non-essential services that we don't need for this job.
  146. c-bak: false
  147. - job:
  148. name: nova-next
  149. parent: tempest-multinode-full-py3
  150. description: |
  151. This job was added in Newton when placement and cellsv2
  152. were optional. Placement and cellsv2 are required starting in Ocata. In
  153. Pike, the service user token functionality was added. This job is also
  154. unique in that it runs the post_test_hook from the nova repo, which runs
  155. post-test scripts to ensure those scripts are still working,
  156. e.g. archive_deleted_rows. In Queens, this job started testing the
  157. TLS console proxy code in the libvirt driver.
  158. Starting in Stein, the job was changed to run with python 3 and enabled
  159. volume multi-attach testing.
  160. Starting in Train, the job enabled counting quota usage from placement.
  161. Starting in Ussuri, the job was changed to multinode.
  162. Runs all tempest compute API and most scenario tests concurrently.
  163. irrelevant-files: *dsvm-irrelevant-files
  164. # Run post-tempest tests like for nova-manage commands.
  165. post-run: playbooks/nova-next/post.yaml
  166. vars:
  167. # We use the "all" environment for tempest_test_regex and
  168. # tempest_black_regex.
  169. tox_envlist: all
  170. # Run all compute API tests and most scenario tests at the default
  171. # concurrency (nproc/2 which is normally 4 in the gate).
  172. tempest_test_regex: ^tempest\.(scenario|api\.compute)
  173. # The tempest.scenario.test_network* tests are skipped because they
  174. # (1) take a long time and (2) are already covered in the
  175. # tempest-slow* job. If this regex gets more complicated use
  176. # tempest_test_blacklist.
  177. tempest_black_regex: ^tempest.scenario.test_network
  178. devstack_local_conf:
  179. post-config:
  180. $NOVA_CPU_CONF:
  181. compute:
  182. # Switch off the provider association refresh, which should
  183. # reduce the number of placement calls in steady state. Added in
  184. # Stein.
  185. resource_provider_association_refresh: 0
  186. $NOVA_CONF:
  187. quota:
  188. # Added in Train.
  189. count_usage_from_placement: True
  190. scheduler:
  191. # Added in Train.
  192. query_placement_for_image_type_support: True
  193. "/$NEUTRON_CORE_PLUGIN_CONF":
  194. # Needed for QoS port heal allocation testing.
  195. ovs:
  196. bridge_mappings: public:br-ex
  197. resource_provider_bandwidths: br-ex:1000000:1000000
  198. devstack_localrc:
  199. USE_PYTHON3: True
  200. # Added in Pike.
  201. NOVA_USE_SERVICE_TOKEN: True
  202. # Enable TLS between the noVNC proxy & compute nodes; this requires
  203. # the tls-proxy service to be enabled. Added in Queens.
  204. NOVA_CONSOLE_PROXY_COMPUTE_TLS: True
  205. # Added in Stein.
  206. ENABLE_VOLUME_MULTIATTACH: True
  207. devstack_services:
  208. tls-proxy: true
  209. # neutron-* needed for QoS port heal allocation testing.
  210. neutron-placement: true
  211. neutron-qos: true
  212. # Disable non-essential services that we don't need for this job.
  213. c-bak: false
  214. devstack_plugins:
  215. # Needed for QoS port heal allocation testing.
  216. neutron: https://opendev.org/openstack/neutron
  217. group-vars:
  218. subnode:
  219. devstack_localrc:
  220. USE_PYTHON3: True
  221. NOVA_USE_SERVICE_TOKEN: True
  222. NOVA_CONSOLE_PROXY_COMPUTE_TLS: True
  223. devstack_services:
  224. tls-proxy: true
  225. c-bak: false
  226. - job:
  227. name: nova-tempest-v2-api
  228. parent: devstack-tempest
  229. branches:
  230. - master
  231. description: |
  232. This job runs the Tempest compute tests against v2.0 endpoint.
  233. Former names for this job was:
  234. * legacy-tempest-dsvm-nova-v20-api
  235. vars:
  236. tox_envlist: all
  237. tempest_test_regex: api.*compute
  238. devstack_localrc:
  239. USE_PYTHON3: True
  240. TEMPEST_COMPUTE_TYPE: compute_legacy
  241. - job:
  242. name: nova-tempest-full-oslo.versionedobjects
  243. parent: tempest-full
  244. description: |
  245. Run test with git version of oslo.versionedobjects to check that
  246. changes to nova will work with the next released version of
  247. that library.
  248. required-projects:
  249. - openstack/oslo.versionedobjects
  250. - job:
  251. name: nova-grenade-multinode
  252. parent: nova-dsvm-multinode-base
  253. description: |
  254. Multi-node grenade job which runs gate/live_migration/hooks tests under
  255. python 3.
  256. In other words, this tests live and cold migration and resize with
  257. mixed-version compute services which is important for things like
  258. rolling upgrade support.
  259. The former names for this job were "nova-grenade-live-migration" and
  260. "legacy-grenade-dsvm-neutron-multinode-live-migration".
  261. run: playbooks/legacy/nova-grenade-multinode/run.yaml
  262. post-run: playbooks/legacy/nova-grenade-multinode/post.yaml
  263. required-projects:
  264. - openstack/grenade
  265. - openstack/devstack-gate
  266. - openstack/nova
  267. irrelevant-files: *dsvm-irrelevant-files
  268. - job:
  269. name: nova-multi-cell
  270. parent: tempest-multinode-full-py3
  271. description: |
  272. Multi-node python3 job which runs with two nodes and two non-cell0
  273. cells. The compute on the controller runs in cell1 and the compute
  274. on the subnode runs in cell2.
  275. irrelevant-files: *dsvm-irrelevant-files
  276. vars:
  277. # We use the "all" environment for tempest_test_regex and
  278. # tempest_test_blacklist.
  279. tox_envlist: all
  280. # Run compute API and scenario tests.
  281. tempest_test_regex: ^tempest\.(scenario|(api\.compute))
  282. tempest_test_blacklist: '{{ ansible_user_dir }}/{{ zuul.projects["opendev.org/openstack/nova"].src_dir }}/devstack/nova-multi-cell-blacklist.txt'
  283. devstack_local_conf:
  284. test-config:
  285. $TEMPEST_CONFIG:
  286. compute-feature-enabled:
  287. # TODO(mriedem): Enable cold migration once cross-cell resize is
  288. # supported. We cannot enable it until then because this job has
  289. # one compute in each cell and with
  290. # allow_resize_to_same_host=True cold migrate will try to migrate
  291. # on the same host which is not supported by the libvirt driver.
  292. cold_migration: false
  293. devstack_services:
  294. # Disable other non-essential services that we don't need for this job.
  295. c-bak: false
  296. devstack_localrc:
  297. USE_PYTHON3: True
  298. # Setup two non-cell0 cells (cell1 and cell2).
  299. NOVA_NUM_CELLS: 2
  300. # Resize to the same host is supported for now since we only have
  301. # two computes and they are in different cells.
  302. # TODO(mriedem): Disable resize to the same host once cross-cell resize
  303. # is supported so all resizes will move across cells.
  304. NOVA_ALLOW_MOVE_TO_SAME_HOST: true
  305. # We only have two computes and we don't yet support cross-cell live
  306. # migration.
  307. LIVE_MIGRATION_AVAILABLE: false
  308. group-vars:
  309. peers:
  310. devstack_localrc:
  311. USE_PYTHON3: True
  312. NOVA_ALLOW_MOVE_TO_SAME_HOST: true
  313. LIVE_MIGRATION_AVAILABLE: false
  314. subnode:
  315. devstack_localrc:
  316. USE_PYTHON3: True
  317. # The subnode compute will get registered with cell2.
  318. NOVA_CPU_CELL: 2
  319. devstack_services:
  320. # Disable other non-essential services that we don't need for this
  321. # job.
  322. c-bak: false
  323. - job:
  324. name: nova-osprofiler-redis
  325. parent: tempest-smoke-py3-osprofiler-redis
  326. description: |
  327. Runs osprofiler with the Redis collector on a subset of compute-specific
  328. tempest-full-py3 smoke tests.
  329. irrelevant-files: *dsvm-irrelevant-files
  330. required-projects:
  331. - openstack/nova
  332. vars:
  333. # We use the "all" environment for tempest_test_regex.
  334. tox_envlist: all
  335. # Run compute API and only the test_server_basic_ops scenario tests.
  336. tempest_test_regex: ^tempest\.(scenario\.test_server_basic_ops|(api\.compute))
  337. - project:
  338. # Please try to keep the list of job names sorted alphabetically.
  339. templates:
  340. - check-requirements
  341. - integrated-gate-compute
  342. - openstack-cover-jobs
  343. - openstack-lower-constraints-jobs
  344. - openstack-python3-ussuri-jobs
  345. - periodic-stable-jobs
  346. - publish-openstack-docs-pti
  347. - release-notes-jobs-python3
  348. check:
  349. jobs:
  350. # We define our own irrelevant-files so we don't run the job
  351. # on things like nova docs-only changes.
  352. - ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa:
  353. voting: false
  354. irrelevant-files: *dsvm-irrelevant-files
  355. - devstack-plugin-ceph-tempest-py3:
  356. voting: false
  357. irrelevant-files: *dsvm-irrelevant-files
  358. - neutron-grenade-multinode:
  359. irrelevant-files: *dsvm-irrelevant-files
  360. - neutron-tempest-linuxbridge:
  361. irrelevant-files:
  362. # NOTE(mriedem): This job has its own irrelevant-files section
  363. # so that we only run it on changes to networking and libvirt/vif
  364. # code; we don't need to run this on all changes, nor do we run
  365. # it in the gate.
  366. - ^(?!nova/network/.*)(?!nova/virt/libvirt/vif.py).*$
  367. - nova-grenade-multinode
  368. - nova-live-migration
  369. - nova-lvm
  370. - nova-multi-cell
  371. - nova-next
  372. - nova-tox-functional-py36
  373. - tempest-integrated-compute:
  374. irrelevant-files: *dsvm-irrelevant-files
  375. - grenade-py3:
  376. irrelevant-files: *dsvm-irrelevant-files
  377. - tempest-ipv6-only:
  378. irrelevant-files: *dsvm-irrelevant-files
  379. gate:
  380. jobs:
  381. - nova-grenade-multinode
  382. - nova-live-migration
  383. - nova-tox-functional-py36
  384. - nova-multi-cell
  385. - nova-next
  386. - tempest-integrated-compute:
  387. irrelevant-files: *dsvm-irrelevant-files
  388. - grenade-py3:
  389. irrelevant-files: *dsvm-irrelevant-files
  390. - tempest-ipv6-only:
  391. irrelevant-files: *dsvm-irrelevant-files
  392. experimental:
  393. jobs:
  394. - ironic-tempest-bfv:
  395. irrelevant-files: *dsvm-irrelevant-files
  396. - ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode:
  397. irrelevant-files: *dsvm-irrelevant-files
  398. - barbican-simple-crypto-devstack-tempest:
  399. irrelevant-files: *dsvm-irrelevant-files
  400. - legacy-grenade-dsvm-neutron-multinode-zero-downtime:
  401. irrelevant-files: *dsvm-irrelevant-files
  402. - legacy-tempest-dsvm-full-devstack-plugin-nfs:
  403. irrelevant-files: *dsvm-irrelevant-files
  404. - nova-osprofiler-redis
  405. - tempest-full-py3-opensuse15:
  406. irrelevant-files: *dsvm-irrelevant-files
  407. - tempest-pg-full:
  408. irrelevant-files: *dsvm-irrelevant-files
  409. - nova-tempest-full-oslo.versionedobjects:
  410. irrelevant-files: *dsvm-irrelevant-files
  411. - legacy-tempest-dsvm-nova-libvirt-kvm-apr:
  412. irrelevant-files: *dsvm-irrelevant-files
  413. - nova-tempest-v2-api:
  414. irrelevant-files: *dsvm-irrelevant-files
  415. - legacy-tempest-dsvm-neutron-dvr-multinode-full:
  416. irrelevant-files: *dsvm-irrelevant-files
  417. - neutron-tempest-dvr-ha-multinode-full:
  418. irrelevant-files: *dsvm-irrelevant-files
  419. - neutron-tempest-iptables_hybrid:
  420. irrelevant-files: *dsvm-irrelevant-files
  421. - os-vif-ovs:
  422. irrelevant-files: *dsvm-irrelevant-files
  423. # NOTE(mriedem): Consider moving nova-tox-functional-py37 to the
  424. # check and gate queues once it's stable (like openstack-python37-jobs)
  425. - nova-tox-functional-py37