)]}'
{"nova/conf/virt.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"763d7286c9e18798782b676434575a6852656170","unresolved":false,"context_lines":[{"line_number":204,"context_line":"Possible values:"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"* A path to a Jinja2-formatted template for a Debian \u0027/etc/network/interfaces\u0027"},{"line_number":207,"context_line":"  file. This applies even if using a RHEL-derived guest"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Related options:"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_98f6acf7","line":207,"updated":"2016-11-25 17:50:32.000000000","message":"yes, also works for windows, if using cloudbase-init, cloud-init converts it, is probably the key bit.","commit_id":"9986c77b1732111f13f76cc6633c401493e4f9cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c773b7e974a16927f1de73a0a1c0bed66097b9ee","unresolved":false,"context_lines":[{"line_number":204,"context_line":"Possible values:"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"* A path to a Jinja2-formatted template for a Debian \u0027/etc/network/interfaces\u0027"},{"line_number":207,"context_line":"  file. This applies even if using a RHEL-derived guest"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Related options:"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_252a35e8","line":207,"in_reply_to":"5a74a57a_98f6acf7","updated":"2016-11-30 11:57:59.000000000","message":"Done","commit_id":"9986c77b1732111f13f76cc6633c401493e4f9cf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"763d7286c9e18798782b676434575a6852656170","unresolved":false,"context_lines":[{"line_number":207,"context_line":"  file. This applies even if using a RHEL-derived guest"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Related options:"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"* ``flat_inject``: This must be set to ``True`` to ensure nova embeds network"},{"line_number":212,"context_line":"  configuration information in the metadata provided through the config drive."},{"line_number":213,"context_line":"\"\"\"),"},{"line_number":214,"context_line":"# NOTE(yamahata): ListOpt won\u0027t work because the command may include a comma."},{"line_number":215,"context_line":"# For example:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_d8ae64e5","line":212,"range":{"start_line":210,"start_character":0,"end_line":212,"end_character":78},"updated":"2016-11-25 17:50:32.000000000","message":"I don\u0027t think this is actually true. I believe we always inject this information into config drive, based on my reading of:\nhttps://github.com/openstack/nova/blob/cbbe486cd961e7f002c6e9ebdfdfa10527aa6b03/nova/api/metadata/base.py#L171\n\nHowever, if flat_injected\u003dTrue, this information is used by virt drivers to generation the information to inject.","commit_id":"9986c77b1732111f13f76cc6633c401493e4f9cf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"41186c9768544a978be9c95cdb9c28a9d455aed5","unresolved":false,"context_lines":[{"line_number":207,"context_line":"  file. This applies even if using a RHEL-derived guest"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Related options:"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"* ``flat_inject``: This must be set to ``True`` to ensure nova embeds network"},{"line_number":212,"context_line":"  configuration information in the metadata provided through the config drive."},{"line_number":213,"context_line":"\"\"\"),"},{"line_number":214,"context_line":"# NOTE(yamahata): ListOpt won\u0027t work because the command may include a comma."},{"line_number":215,"context_line":"# For example:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_160cba41","line":212,"range":{"start_line":210,"start_character":0,"end_line":212,"end_character":78},"in_reply_to":"5a74a57a_16ef31b1","updated":"2016-12-12 15:35:15.000000000","message":"I totally missed https://github.com/openstack/nova/blob/cbbe486c/nova/virt/netutils.py#L97-L98.\n\nWhich actually explains some issues I had making that work in the past... My bad.","commit_id":"9986c77b1732111f13f76cc6633c401493e4f9cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c773b7e974a16927f1de73a0a1c0bed66097b9ee","unresolved":false,"context_lines":[{"line_number":207,"context_line":"  file. This applies even if using a RHEL-derived guest"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Related options:"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"* ``flat_inject``: This must be set to ``True`` to ensure nova embeds network"},{"line_number":212,"context_line":"  configuration information in the metadata provided through the config drive."},{"line_number":213,"context_line":"\"\"\"),"},{"line_number":214,"context_line":"# NOTE(yamahata): ListOpt won\u0027t work because the command may include a comma."},{"line_number":215,"context_line":"# For example:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_16ef31b1","line":212,"range":{"start_line":210,"start_character":0,"end_line":212,"end_character":78},"in_reply_to":"5a74a57a_d8ae64e5","updated":"2016-11-30 11:57:59.000000000","message":"So, I\u0027m hoping I read this correctly. That line calls the \u0027get_injected_network_template\u0027 function [1], which contains a check for the \u0027injected\u0027 metadata key on the provided network object [2]. This check, when negative, skips the loop meaning no \u0027netinfo\u0027 dicts are built and the resulting \u0027nets\u0027 array will be empty [3]. No \u0027nets\u0027 array means no rendered template [4] and therefore nothing to inject [5]. Sooo...I think this is correct :)\n\nMore importantly, the comments say this [6] so it must be true.\n\n[1] https://github.com/openstack/nova/blob/cbbe486c/nova/virt/netutils.py#L59\n[2] https://github.com/openstack/nova/blob/cbbe486c/nova/virt/netutils.py#L97-L98\n[3] https://github.com/openstack/nova/blob/cbbe486c/nova/virt/netutils.py#L145-L158\n[4] https://github.com/openstack/nova/blob/cbbe486c/nova/virt/netutils.py#L160-L161\n[5] https://github.com/openstack/nova/blob/cbbe486c/nova/api/metadata/base.py#L173\n[6] https://github.com/openstack/nova/blob/cbbe486c/nova/network/manager.py#L1640-L1645","commit_id":"9986c77b1732111f13f76cc6633c401493e4f9cf"},{"author":{"_account_id":23950,"name":"Eric Xie","email":"eric_xiett@163.com","username":"ericxie"},"change_message_id":"b07212706f2b175658b831ed5533576759d38eaf","unresolved":false,"context_lines":[{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":"    cfg.StrOpt(\u0027injected_network_template\u0027,"},{"line_number":189,"context_line":"        default\u003dpaths.basedir_def(\u0027nova/virt/interfaces.template\u0027),"},{"line_number":190,"context_line":"        help\u003d\"\"\"Path to \u0027/etc/network/interfaces\u0027 template."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"The path to a template file for the \u0027/etc/network/interfaces\u0027-style file, which"},{"line_number":193,"context_line":"will be populated by nova and subsequently used by cloudinit. This provides a"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_f05c74ef","line":190,"updated":"2016-11-30 13:52:57.000000000","message":"Should one new line for \u0027Path to \u0027/etc/network/interfaces\u0027 template.\u0027?","commit_id":"d92af0155861800e30ec9f7e68c8c5ceccaa6bb3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0b42b6aa95b07c8b90c6eb810314366368bd7679","unresolved":false,"context_lines":[{"line_number":187,"context_line":"\"\"\"),"},{"line_number":188,"context_line":"    cfg.StrOpt(\u0027injected_network_template\u0027,"},{"line_number":189,"context_line":"        default\u003dpaths.basedir_def(\u0027nova/virt/interfaces.template\u0027),"},{"line_number":190,"context_line":"        help\u003d\"\"\"Path to \u0027/etc/network/interfaces\u0027 template."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"The path to a template file for the \u0027/etc/network/interfaces\u0027-style file, which"},{"line_number":193,"context_line":"will be populated by nova and subsequently used by cloudinit. This provides a"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_6146d4c0","line":190,"in_reply_to":"5a74a57a_f05c74ef","updated":"2016-11-30 14:49:56.000000000","message":"Do you mean should this be on a new line? If so, no, as that newline would appear on the output. We\u0027ve written these like:\n\n     Summary line here\n\n     A much longer description here\n\nLike commit messages, really.","commit_id":"d92af0155861800e30ec9f7e68c8c5ceccaa6bb3"}]}
