)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"ac75ac8f60be49c265108f3f6e99cc6fd0e2bfe4","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Currently, the list of supported vGPUs is populated automatically"},{"line_number":10,"context_line":"within the Nova playbook when the /sys/class/mdev_bus folder is"},{"line_number":11,"context_line":"present. This will populate the `supported_vgpu_types` variable with"},{"line_number":12,"context_line":"the full list of GPUs that are supported and by default, and only"},{"line_number":13,"context_line":"the first one listed will be used."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This change provides the ability to define this variable and for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3b332b28_e2fe1114","line":12,"range":{"start_line":12,"start_character":57,"end_line":12,"end_character":60},"updated":"2020-12-22 10:26:43.000000000","message":"extra \u0027and\u0027","commit_id":"76d753c9ba5a966590ab43105d20a29cd95ae512"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"ac75ac8f60be49c265108f3f6e99cc6fd0e2bfe4","unresolved":true,"context_lines":[{"line_number":15,"context_line":"This change provides the ability to define this variable and for"},{"line_number":16,"context_line":"it to take effect, falling back to any discovered gpu_types as"},{"line_number":17,"context_line":"a fallback. It also adds the ability to map vgpu types to PCI"},{"line_number":18,"context_line":"addresses in line with Ussuri updates to prpvide multi-vGPU support."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Icc0c2cd896d4c9a01601d4d733f38443ad8400d4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"60db5315_83cd5960","line":18,"range":{"start_line":18,"start_character":41,"end_line":18,"end_character":48},"updated":"2020-12-22 10:26:43.000000000","message":"provide","commit_id":"76d753c9ba5a966590ab43105d20a29cd95ae512"}],"defaults/main.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"00b926155a75ab6fb30ef6a8c32931cdd436f1dc","unresolved":true,"context_lines":[{"line_number":508,"context_line":""},{"line_number":509,"context_line":"# Enabled vGPU Types - can be list or mapping"},{"line_number":510,"context_line":"# Example:"},{"line_number":511,"context_line":"# nova_enabled_vgpu_types:"},{"line_number":512,"context_line":"#   - nvidia-35"},{"line_number":513,"context_line":"#   - nvidia-36"},{"line_number":514,"context_line":"#"},{"line_number":515,"context_line":"# Example:"},{"line_number":516,"context_line":"# nova_enabled_vgpu_types:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"18a12409_6146855f","line":513,"range":{"start_line":511,"start_character":0,"end_line":513,"end_character":15},"updated":"2021-01-12 14:42:39.000000000","message":"Can we always have the list of mappings for example? ie\n\n# nova_enabled_vgpu_types:\n#   - type: nvidia-35\n#   - type: nvidia-36\n#     address: \u003cdevice address\u003e\n\nAnd let\u0027s define default of the variable:\n\nnova_enabled_vgpu_types: {}","commit_id":"0acdd0a7a41738117570a37e7846abd8c38aa3fd"}],"tasks/nova_vgpu_detect.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"02b08a9c67e92cf00f31d297caf8843fffc788cf","unresolved":true,"context_lines":[{"line_number":17,"context_line":"  stat: path\u003d/sys/class/mdev_bus"},{"line_number":18,"context_line":"  register: mdev_folder"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"- name: Get mdev info content and store as var"},{"line_number":21,"context_line":"  command: \"/bin/sh -c \u0027ls -1 /sys/class/mdev_bus/*/mdev_supported_types\u0027\""},{"line_number":22,"context_line":"  register: mdev"},{"line_number":23,"context_line":"  when: mdev_folder.stat.exists"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- name: Register a fact for nova enabled_vgpu_types"},{"line_number":26,"context_line":"  set_fact:"},{"line_number":27,"context_line":"    discovered_vgpu_types: \"{{ mdev.stdout_lines | unique }}\""},{"line_number":28,"context_line":"  when:"},{"line_number":29,"context_line":"    - mdev.stdout_lines is defined"},{"line_number":30,"context_line":"    - mdev.stdout_lines | length \u003e 0"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3904b514_3e772bee","line":30,"range":{"start_line":20,"start_character":0,"end_line":30,"end_character":36},"updated":"2021-01-26 09:56:28.000000000","message":"If you have removed discovered_vgpu_types there\u0027s no reason for this to be executed then.\nBut maybe we should use this as default when nova_enabled_vgpu_types is not defined but there is gpu installed in the system. But if you feel that it\u0027s better not to use this as default - let\u0027s just drop it then.","commit_id":"3f70f6e43be44516c6a045d9273d395f533cfe45"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bb4e44713ee8838554f93de768471d3f0aa932fa","unresolved":true,"context_lines":[{"line_number":17,"context_line":"  stat: path\u003d/sys/class/mdev_bus"},{"line_number":18,"context_line":"  register: mdev_folder"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"- name: Get mdev info content and store as var"},{"line_number":21,"context_line":"  command: \"/bin/sh -c \u0027ls -1 /sys/class/mdev_bus/*/mdev_supported_types\u0027\""},{"line_number":22,"context_line":"  register: mdev"},{"line_number":23,"context_line":"  when: mdev_folder.stat.exists"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- name: Register a fact for nova enabled_vgpu_types"},{"line_number":26,"context_line":"  set_fact:"},{"line_number":27,"context_line":"    discovered_vgpu_types: \"{{ mdev.stdout_lines | unique }}\""},{"line_number":28,"context_line":"  when:"},{"line_number":29,"context_line":"    - mdev.stdout_lines is defined"},{"line_number":30,"context_line":"    - mdev.stdout_lines | length \u003e 0"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"70367e95_1e6b5514","line":30,"range":{"start_line":20,"start_character":0,"end_line":30,"end_character":36},"in_reply_to":"3904b514_3e772bee","updated":"2021-01-26 09:58:42.000000000","message":"Also it\u0027s worth writing upgrade release not in case this is dropped, as deployers will have to explicitly define nova_enabled_vgpu_types as there will be no default anymore they were relying on","commit_id":"3f70f6e43be44516c6a045d9273d395f533cfe45"}],"templates/nova.conf.j2":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"ac75ac8f60be49c265108f3f6e99cc6fd0e2bfe4","unresolved":true,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"{% if enabled_vgpu_types is defined or discovered_vgpu_types is defined %}"},{"line_number":297,"context_line":"[devices]"},{"line_number":298,"context_line":"enabled_vgpu_types \u003d {{ enabled_vgpu_types | default(discovered_vgpu_types) | join(\u0027,\u0027) }}"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"{% if enabled_vgpu_types is mapping %}"},{"line_number":301,"context_line":"{% for vgpu_type, pci_address in enabled_vgpu_types.items() %}"}],"source_content_type":"text/x-jinja2","patch_set":1,"id":"2e1dd91b_046a5b2b","line":298,"range":{"start_line":298,"start_character":24,"end_line":298,"end_character":42},"updated":"2020-12-22 10:26:43.000000000","message":"this variable is now a available to override, so should be documented in defaults/main.yml for both the case when \u0027is mapping\u0027 is true, and not true.","commit_id":"76d753c9ba5a966590ab43105d20a29cd95ae512"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"00b926155a75ab6fb30ef6a8c32931cdd436f1dc","unresolved":true,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"{% if nova_enabled_vgpu_types is defined or discovered_vgpu_types is defined %}"},{"line_number":297,"context_line":"[devices]"},{"line_number":298,"context_line":"enabled_vgpu_types \u003d {{ nova_enabled_vgpu_types | default(discovered_vgpu_types) | join(\u0027,\u0027) }}"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"{% if nova_enabled_vgpu_types is mapping %}"},{"line_number":301,"context_line":"{% for vgpu_type, pci_address in nova_enabled_vgpu_types.items() %}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"b6171233_cebf78d9","line":298,"range":{"start_line":298,"start_character":24,"end_line":298,"end_character":92},"updated":"2021-01-12 14:42:39.000000000","message":"Considering we defined default we can use this:\n\n(nova_enabled_vgpu_types | map(attribute\u003d\u0027type\u0027) | list + [discovered_vgpu_types | default(\u0027\u0027)]) | unique | join(\u0027,\u0027)","commit_id":"0acdd0a7a41738117570a37e7846abd8c38aa3fd"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"00b926155a75ab6fb30ef6a8c32931cdd436f1dc","unresolved":true,"context_lines":[{"line_number":297,"context_line":"[devices]"},{"line_number":298,"context_line":"enabled_vgpu_types \u003d {{ nova_enabled_vgpu_types | default(discovered_vgpu_types) | join(\u0027,\u0027) }}"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"{% if nova_enabled_vgpu_types is mapping %}"},{"line_number":301,"context_line":"{% for vgpu_type, pci_address in nova_enabled_vgpu_types.items() %}"},{"line_number":302,"context_line":"[vgpu_{{ vgpu_type }}]"},{"line_number":303,"context_line":"device_addresses \u003d {{ pci_address }}"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"{% endfor %}"},{"line_number":306,"context_line":"{% endif %}"},{"line_number":307,"context_line":"{% endif %}"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"{% if nova_pci_passthrough_whitelist or nova_pci_alias %}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"6bf99196_8af86a7e","line":306,"range":{"start_line":300,"start_character":0,"end_line":306,"end_character":11},"updated":"2021-01-12 14:42:39.000000000","message":"{% for record in nova_enabled_vgpu_types | selectattr(\u0027address\u0027, \u0027defined\u0027) | list %}\n[vgpu_{{ record.type }}]\ndevice_addresses \u003d {{ record.address }}\n{% endfor %}","commit_id":"0acdd0a7a41738117570a37e7846abd8c38aa3fd"},{"author":{"_account_id":31750,"name":"Daniel Meloy","email":"danny.meloy@bbc.co.uk","username":"meloyd01"},"change_message_id":"22fb15a9e386c3c978b35d8ed5b5fa46a830db10","unresolved":true,"context_lines":[{"line_number":294,"context_line":"compute\u003dauto"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"[devices]"},{"line_number":297,"context_line":"enabled_vgpu_types \u003d {{ nova_enabled_vgpu_types | map(attribute\u003d\u0027type\u0027) | list | unique | join(\u0027,\u0027) }}"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"{% for record in nova_enabled_vgpu_types | selectattr(\u0027address\u0027, \u0027defined\u0027) | list %}"},{"line_number":300,"context_line":"[vgpu_{{ record.type }}]"}],"source_content_type":"text/x-jinja2","patch_set":3,"id":"8c8a2269_0538c162","line":297,"updated":"2021-01-19 15:18:05.000000000","message":"I\u0027ve removed the \"discovered_vgpu_types\" because, from what I can tell, nova selects the first vgpu in the \u0027enabled_vgpu_types\u0027 list to use by default (unless there is a corresponding [vgpu_type] config option). By default this would always be the first vgpu type alphabetically. So I thought it would be best to be explicit","commit_id":"3f70f6e43be44516c6a045d9273d395f533cfe45"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"163631edf3a0f633530ab22a408f4b71e2378a9a","unresolved":true,"context_lines":[{"line_number":294,"context_line":"compute\u003dauto"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"[devices]"},{"line_number":297,"context_line":"enabled_vgpu_types \u003d {{ nova_enabled_vgpu_types | map(attribute\u003d\u0027type\u0027) | list | default(discovered_vgpu_types, true) | unique | join(\u0027,\u0027) }}"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"{% for record in nova_enabled_vgpu_types | selectattr(\u0027address\u0027, \u0027defined\u0027) | list %}"},{"line_number":300,"context_line":"[vgpu_{{ record.type }}]"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"2d90a3b2_6e389fb6","line":297,"range":{"start_line":297,"start_character":81,"end_line":297,"end_character":117},"updated":"2021-02-01 13:56:43.000000000","message":"I\u0027d say that default will never occur since nova_enabled_vgpu_types is defined in defaults to the empty dict. So logic is pretty tricky here","commit_id":"aab820cfd2a27215133ada88f30bbb533485d838"},{"author":{"_account_id":31750,"name":"Daniel Meloy","email":"danny.meloy@bbc.co.uk","username":"meloyd01"},"change_message_id":"0daae33730fec76ded04c3c4a61d0bf0d90a27c3","unresolved":true,"context_lines":[{"line_number":294,"context_line":"compute\u003dauto"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"[devices]"},{"line_number":297,"context_line":"enabled_vgpu_types \u003d {{ nova_enabled_vgpu_types | map(attribute\u003d\u0027type\u0027) | list | default(discovered_vgpu_types, true) | unique | join(\u0027,\u0027) }}"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"{% for record in nova_enabled_vgpu_types | selectattr(\u0027address\u0027, \u0027defined\u0027) | list %}"},{"line_number":300,"context_line":"[vgpu_{{ record.type }}]"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"363f8858_de6bd6a8","line":297,"updated":"2021-02-01 14:07:41.000000000","message":"I\u0027ve re-added the fallback to the discovered GPU types. I think it makes sense this way as its minimally invasive to current deployments, whilst still keeping the default present in defaults.yml and allowing people to over-ride","commit_id":"aab820cfd2a27215133ada88f30bbb533485d838"},{"author":{"_account_id":31750,"name":"Daniel Meloy","email":"danny.meloy@bbc.co.uk","username":"meloyd01"},"change_message_id":"0daae33730fec76ded04c3c4a61d0bf0d90a27c3","unresolved":true,"context_lines":[{"line_number":294,"context_line":"compute\u003dauto"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"[devices]"},{"line_number":297,"context_line":"enabled_vgpu_types \u003d {{ nova_enabled_vgpu_types | map(attribute\u003d\u0027type\u0027) | list | default(discovered_vgpu_types, true) | unique | join(\u0027,\u0027) }}"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"{% for record in nova_enabled_vgpu_types | selectattr(\u0027address\u0027, \u0027defined\u0027) | list %}"},{"line_number":300,"context_line":"[vgpu_{{ record.type }}]"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"7b52ff36_59720579","line":297,"range":{"start_line":297,"start_character":81,"end_line":297,"end_character":117},"in_reply_to":"2d90a3b2_6e389fb6","updated":"2021-02-01 14:07:41.000000000","message":"The \u0027default(blah, **true**)\u0027 should mean that the empty dictionary triggers the default due to an empty dict being false-y, as mentioned here: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#providing-default-values. I passed it through an online jinja2 templater and it appeared to work as expected","commit_id":"aab820cfd2a27215133ada88f30bbb533485d838"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"6f511b92562bd2fef6f880297421d2a25fd30e12","unresolved":true,"context_lines":[{"line_number":294,"context_line":"compute\u003dauto"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"[devices]"},{"line_number":297,"context_line":"enabled_vgpu_types \u003d {{ nova_enabled_vgpu_types | map(attribute\u003d\u0027type\u0027) | list | default(discovered_vgpu_types, true) | unique | join(\u0027,\u0027) }}"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"{% for record in nova_enabled_vgpu_types | selectattr(\u0027address\u0027, \u0027defined\u0027) | list %}"},{"line_number":300,"context_line":"[vgpu_{{ record.type }}]"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"903a63ad_06d9ed38","line":297,"in_reply_to":"363f8858_de6bd6a8","updated":"2021-02-03 08:16:44.000000000","message":"Well, role failed with this being undefined\nhttps://5e19dd26de724eaa5e19-d87a994928d98fb42ee6c2d998c665a9.ssl.cf1.rackcdn.com/768117/5/check/openstack-ansible-deploy-aio_metal-ubuntu-bionic/1b0f214/logs/ara-report/results/1275.html\n\nBecause we don\u0027t always set discovered_vgpu_types but only when devices are discovered.\nSo maybe worth return back condition, if nova_enabled_vgpu_types | length \u003e 0 or discovered_vgpu_types is defined?","commit_id":"aab820cfd2a27215133ada88f30bbb533485d838"},{"author":{"_account_id":31750,"name":"Daniel Meloy","email":"danny.meloy@bbc.co.uk","username":"meloyd01"},"change_message_id":"00b5586590988709337dfc34ea98c1bfc783f8b8","unresolved":true,"context_lines":[{"line_number":294,"context_line":"compute\u003dauto"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"[devices]"},{"line_number":297,"context_line":"enabled_vgpu_types \u003d {{ nova_enabled_vgpu_types | map(attribute\u003d\u0027type\u0027) | list | default(discovered_vgpu_types, true) | unique | join(\u0027,\u0027) }}"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"{% for record in nova_enabled_vgpu_types | selectattr(\u0027address\u0027, \u0027defined\u0027) | list %}"},{"line_number":300,"context_line":"[vgpu_{{ record.type }}]"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"a0565dfe_13b81db4","line":297,"in_reply_to":"903a63ad_06d9ed38","updated":"2021-03-04 14:47:35.000000000","message":"Sorry it took me a while for such a little fix, hopefully it will pass through CI now","commit_id":"aab820cfd2a27215133ada88f30bbb533485d838"}]}
