)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"91bfff4024df3c22e1d592206db7173fdc6ce9b7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitry Tantsur \u003cdivius.inside@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-14 12:00:51 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add database fields for all interfaces"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The new fields will have a default value of None, which is the expected"},{"line_number":10,"context_line":"value for nodes using classic drivers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a629dbe_f3c73462","line":7,"updated":"2016-11-14 14:27:21.000000000","message":"Somewhere in the commit message it would be good to have \"why\" this is being done.","commit_id":"59237e1b1dd7cdc150cf76aafff125b47ff87c37"}],"ironic/drivers/base.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"32321dd213b4aab5ae775b7926f7f5ccacca05aa","unresolved":false,"context_lines":[{"line_number":174,"context_line":"ALL_INTERFACES \u003d set(BareDriver().all_interfaces)"},{"line_number":175,"context_line":"\"\"\"Constant holding all known interfaces."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Includes interfaces not exposed via BaseDriver.all_interfaces."},{"line_number":178,"context_line":"\"\"\""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_00fc4e3d","line":177,"updated":"2016-11-21 19:44:38.000000000","message":"I think this should be deleted.","commit_id":"9e938f24668e49216b4cb135770899a50d627914"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7451d62c06952c04a2e982793561fb3cfda2cdbb","unresolved":false,"context_lines":[{"line_number":174,"context_line":"ALL_INTERFACES \u003d set(BareDriver().all_interfaces)"},{"line_number":175,"context_line":"\"\"\"Constant holding all known interfaces."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Includes interfaces not exposed via BaseDriver.all_interfaces."},{"line_number":178,"context_line":"\"\"\""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_a313a40c","line":177,"in_reply_to":"7a77a97e_00fc4e3d","updated":"2016-11-21 19:58:56.000000000","message":"You mean this comment? Well, BaseDriver.all_interfaces does not expose \"network\" one (note the difference between BaseDriver and BareDriver)","commit_id":"9e938f24668e49216b4cb135770899a50d627914"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"6c880e1bb2041b2e13c34af6f06732f2163178a7","unresolved":false,"context_lines":[{"line_number":174,"context_line":"ALL_INTERFACES \u003d set(BareDriver().all_interfaces)"},{"line_number":175,"context_line":"\"\"\"Constant holding all known interfaces."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Includes interfaces not exposed via BaseDriver.all_interfaces."},{"line_number":178,"context_line":"\"\"\""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_c36c2039","line":177,"in_reply_to":"7a77a97e_a313a40c","updated":"2016-11-21 20:09:16.000000000","message":"Oh. $##@ :)\n\n[who came up with Bare \u0026 Base? :)]","commit_id":"9e938f24668e49216b4cb135770899a50d627914"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"932b648b4c7f7c69b5b37fba5e1e859202e52513","unresolved":false,"context_lines":[{"line_number":174,"context_line":"ALL_INTERFACES \u003d set(BareDriver().all_interfaces)"},{"line_number":175,"context_line":"\"\"\"Constant holding all known interfaces."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Includes interfaces not exposed via BaseDriver.all_interfaces."},{"line_number":178,"context_line":"\"\"\""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_e3859cad","line":177,"in_reply_to":"7a77a97e_c36c2039","updated":"2016-11-21 20:11:45.000000000","message":"I\u0027m not sure, but I blame Jim :D","commit_id":"9e938f24668e49216b4cb135770899a50d627914"}],"ironic/objects/node.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e0c30f418a03103bf47f785f2d8312631119a87e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    # Version 1.16: Add network_interface field"},{"line_number":60,"context_line":"    # Version 1.17: Add resource_class field"},{"line_number":61,"context_line":"    # Version 1.18: Add default setting for network_interface"},{"line_number":62,"context_line":"    # Version 1.19: Add fields for all interfaces"},{"line_number":63,"context_line":"    VERSION \u003d \u00271.19\u0027"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    dbapi \u003d db_api.get_instance()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_bd9a9c61","line":62,"updated":"2016-11-16 16:47:29.000000000","message":"Can we actually call out the fields specifically here, especially given network_interface was already here.","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"51d1d4203593044690bda57e34a5a4ed82721461","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    # Version 1.16: Add network_interface field"},{"line_number":60,"context_line":"    # Version 1.17: Add resource_class field"},{"line_number":61,"context_line":"    # Version 1.18: Add default setting for network_interface"},{"line_number":62,"context_line":"    # Version 1.19: Add fields for all interfaces"},{"line_number":63,"context_line":"    VERSION \u003d \u00271.19\u0027"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    dbapi \u003d db_api.get_instance()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_1666a629","line":62,"in_reply_to":"7a77a97e_bd9a9c61","updated":"2016-11-18 15:40:35.000000000","message":"Done","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e0c30f418a03103bf47f785f2d8312631119a87e","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    for iface in drivers_base.ALL_INTERFACES:"},{"line_number":128,"context_line":"        if iface !\u003d \u0027network\u0027:"},{"line_number":129,"context_line":"            fields[\u0027%s_interface\u0027 % iface] \u003d object_fields.StringField("},{"line_number":130,"context_line":"                nullable\u003dTrue)  # NULL is acceptable for classic drivers"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _validate_property_values(self, properties):"},{"line_number":133,"context_line":"        \"\"\"Check if the input of local_gb, cpus and memory_mb are valid."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_fdcb3451","line":130,"updated":"2016-11-16 16:47:29.000000000","message":"I get why we want to for loop here, but I\u0027d prefer to just be explicit.","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"51d1d4203593044690bda57e34a5a4ed82721461","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    for iface in drivers_base.ALL_INTERFACES:"},{"line_number":128,"context_line":"        if iface !\u003d \u0027network\u0027:"},{"line_number":129,"context_line":"            fields[\u0027%s_interface\u0027 % iface] \u003d object_fields.StringField("},{"line_number":130,"context_line":"                nullable\u003dTrue)  # NULL is acceptable for classic drivers"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _validate_property_values(self, properties):"},{"line_number":133,"context_line":"        \"\"\"Check if the input of local_gb, cpus and memory_mb are valid."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_f67beabb","line":130,"in_reply_to":"7a77a97e_fdcb3451","updated":"2016-11-18 15:40:35.000000000","message":"Copy-paste time \\o/","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e0c30f418a03103bf47f785f2d8312631119a87e","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        name \u003d \u0027%s_interface\u0027 % iface"},{"line_number":472,"context_line":"        SCHEMA[name] \u003d (\u0027node\u0027, name)"},{"line_number":473,"context_line":"        if iface !\u003d \u0027network\u0027:"},{"line_number":474,"context_line":"            fields[name] \u003d object_fields.StringField(nullable\u003dTrue)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def __init__(self, node, **kwargs):"},{"line_number":477,"context_line":"        super(NodePayload, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_9d088093","line":474,"updated":"2016-11-16 16:47:29.000000000","message":"Ditto on the for loop.\n\nrloo, this doesn\u0027t expose it to the user yet, right? We haven\u0027t added it to the API.","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"72408ae5186bcf1dc131fcab534091d9a0d3fc05","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        name \u003d \u0027%s_interface\u0027 % iface"},{"line_number":472,"context_line":"        SCHEMA[name] \u003d (\u0027node\u0027, name)"},{"line_number":473,"context_line":"        if iface !\u003d \u0027network\u0027:"},{"line_number":474,"context_line":"            fields[name] \u003d object_fields.StringField(nullable\u003dTrue)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def __init__(self, node, **kwargs):"},{"line_number":477,"context_line":"        super(NodePayload, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_7d900444","line":474,"updated":"2016-11-16 16:44:53.000000000","message":"I was fine adding the rescue_interface field to the DB, but I don\u0027t want it exposed to the user until we actually use it. OR do you want to expose it anyway?\n\nCan we defer changing the notifications until *after* we actually use the  new fields?","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"26ac67e000eb0d6bfae7f930a383bf1279703b0f","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        name \u003d \u0027%s_interface\u0027 % iface"},{"line_number":472,"context_line":"        SCHEMA[name] \u003d (\u0027node\u0027, name)"},{"line_number":473,"context_line":"        if iface !\u003d \u0027network\u0027:"},{"line_number":474,"context_line":"            fields[name] \u003d object_fields.StringField(nullable\u003dTrue)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def __init__(self, node, **kwargs):"},{"line_number":477,"context_line":"        super(NodePayload, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_d3ebc7ae","line":474,"in_reply_to":"7a77a97e_9d088093","updated":"2016-11-16 17:22:08.000000000","message":"Agree with Ruby, I think it\u0027s better not to include this stuff in notifications yet.","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ebf94dbd12203715544ae080d9e2343af3b6a9b6","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        name \u003d \u0027%s_interface\u0027 % iface"},{"line_number":472,"context_line":"        SCHEMA[name] \u003d (\u0027node\u0027, name)"},{"line_number":473,"context_line":"        if iface !\u003d \u0027network\u0027:"},{"line_number":474,"context_line":"            fields[name] \u003d object_fields.StringField(nullable\u003dTrue)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def __init__(self, node, **kwargs):"},{"line_number":477,"context_line":"        super(NodePayload, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_93622fac","line":474,"in_reply_to":"7a77a97e_9d088093","updated":"2016-11-16 17:20:02.000000000","message":"So I wasn\u0027t clear in my original comment. It isn\u0027t just rescue_interface -- it is all the new interfaces.\n\nThe new interfaces aren\u0027t exposed in the API so a node-show will not have these fields in the response. However, anyone using notifications will see these nulled fields in the payload that is part of the notification -- this doesn\u0027t seem right.\n\nI am wondering if we should add something about it in our developer documentation. I guess we only want to add it to the notifications when we expose in the API. The notifications aren\u0027t microversioned. I can\u0027t remember how versions of notification payloads affect the user...","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"51d1d4203593044690bda57e34a5a4ed82721461","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        name \u003d \u0027%s_interface\u0027 % iface"},{"line_number":472,"context_line":"        SCHEMA[name] \u003d (\u0027node\u0027, name)"},{"line_number":473,"context_line":"        if iface !\u003d \u0027network\u0027:"},{"line_number":474,"context_line":"            fields[name] \u003d object_fields.StringField(nullable\u003dTrue)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def __init__(self, node, **kwargs):"},{"line_number":477,"context_line":"        super(NodePayload, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_b11edc09","line":474,"in_reply_to":"7a77a97e_d3ebc7ae","updated":"2016-11-18 15:40:35.000000000","message":"Done","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b44bfcaa0cca04f0a112bc3b45252ce41c90d8d8","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        \u0027maintenance\u0027: (\u0027node\u0027, \u0027maintenance\u0027),"},{"line_number":423,"context_line":"        \u0027maintenance_reason\u0027: (\u0027node\u0027, \u0027maintenance_reason\u0027),"},{"line_number":424,"context_line":"        \u0027name\u0027: (\u0027node\u0027, \u0027name\u0027),"},{"line_number":425,"context_line":"        \u0027network_interface\u0027: (\u0027node\u0027, \u0027network_interface\u0027),"},{"line_number":426,"context_line":"        \u0027power_state\u0027: (\u0027node\u0027, \u0027power_state\u0027),"},{"line_number":427,"context_line":"        \u0027properties\u0027: (\u0027node\u0027, \u0027properties\u0027),"},{"line_number":428,"context_line":"        \u0027provision_state\u0027: (\u0027node\u0027, \u0027provision_state\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a77a97e_42257f08","side":"PARENT","line":425,"updated":"2016-11-21 13:14:06.000000000","message":"\u0027network_interface\u0027 is exposed currently via API. This remove creates inconsistency between API and notifications (will be always null in notifications, it present in fields l450).","commit_id":"c73b5d0d3c25acc0c69d6f8bb48fccd404cee468"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d5e37b965bc88f5b279d4459e104fcd83428e116","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        \u0027maintenance\u0027: (\u0027node\u0027, \u0027maintenance\u0027),"},{"line_number":423,"context_line":"        \u0027maintenance_reason\u0027: (\u0027node\u0027, \u0027maintenance_reason\u0027),"},{"line_number":424,"context_line":"        \u0027name\u0027: (\u0027node\u0027, \u0027name\u0027),"},{"line_number":425,"context_line":"        \u0027network_interface\u0027: (\u0027node\u0027, \u0027network_interface\u0027),"},{"line_number":426,"context_line":"        \u0027power_state\u0027: (\u0027node\u0027, \u0027power_state\u0027),"},{"line_number":427,"context_line":"        \u0027properties\u0027: (\u0027node\u0027, \u0027properties\u0027),"},{"line_number":428,"context_line":"        \u0027provision_state\u0027: (\u0027node\u0027, \u0027provision_state\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a77a97e_a44d80c6","side":"PARENT","line":425,"in_reply_to":"7a77a97e_42257f08","updated":"2016-11-21 13:16:20.000000000","message":"ugh, I did not mean to remove it","commit_id":"c73b5d0d3c25acc0c69d6f8bb48fccd404cee468"}],"ironic/tests/unit/api/utils.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e0c30f418a03103bf47f785f2d8312631119a87e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    for iface in drivers_base.ALL_INTERFACES:"},{"line_number":104,"context_line":"        name \u003d \u0027%s_interface\u0027 % iface"},{"line_number":105,"context_line":"        if name not in kw:"},{"line_number":106,"context_line":"            node.pop(name)"},{"line_number":107,"context_line":"    if \u0027resource_class\u0027 not in kw:"},{"line_number":108,"context_line":"        node.pop(\u0027resource_class\u0027)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_bd0d3c92","line":106,"updated":"2016-11-16 16:47:29.000000000","message":"This one is fine, though.","commit_id":"8ac94965c88455826290b6fb498a45f74376e4ba"}],"ironic/tests/unit/db/sqlalchemy/test_migrations.py":[{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"9dc96bfed13ad1f1391f266f4a5f03e1e1ec7904","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    def _check_bcdd431ba0bf(self, engine, data):"},{"line_number":542,"context_line":"        nodes \u003d db_utils.get_table(engine, \u0027nodes\u0027)"},{"line_number":543,"context_line":"        col_names \u003d [column.name for column in nodes.c]"},{"line_number":544,"context_line":"        all_interfaces \u003d ("},{"line_number":545,"context_line":"            base_driver.BaseDriver.core_interfaces +"},{"line_number":546,"context_line":"            base_driver.BaseDriver.standard_interfaces +"},{"line_number":547,"context_line":"            [\u0027vendor\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_3c6a791b","line":544,"updated":"2016-11-14 19:03:07.000000000","message":"nit: you can just use this method from the base driver class: https://github.com/openstack/ironic/blob/master/ironic/drivers/base.py#L137","commit_id":"c686bdb71a9d9b8c795113f6e66b48a18c34dc66"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"fcfe6639663dcdcb4ece9c4e9b7b82082eaea405","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    def _check_bcdd431ba0bf(self, engine, data):"},{"line_number":542,"context_line":"        nodes \u003d db_utils.get_table(engine, \u0027nodes\u0027)"},{"line_number":543,"context_line":"        col_names \u003d [column.name for column in nodes.c]"},{"line_number":544,"context_line":"        all_interfaces \u003d ("},{"line_number":545,"context_line":"            base_driver.BaseDriver.core_interfaces +"},{"line_number":546,"context_line":"            base_driver.BaseDriver.standard_interfaces +"},{"line_number":547,"context_line":"            [\u0027vendor\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_2a4b072d","line":544,"in_reply_to":"7a77a97e_3c6a791b","updated":"2016-11-14 19:40:20.000000000","message":"Nice catch. But I won\u0027t block it for that.","commit_id":"c686bdb71a9d9b8c795113f6e66b48a18c34dc66"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3d599e763fa1e527a2c7ed1bc410786f1683cb60","unresolved":false,"context_lines":[{"line_number":544,"context_line":"        all_interfaces \u003d ("},{"line_number":545,"context_line":"            base_driver.BaseDriver.core_interfaces +"},{"line_number":546,"context_line":"            base_driver.BaseDriver.standard_interfaces +"},{"line_number":547,"context_line":"            [\u0027vendor\u0027]"},{"line_number":548,"context_line":"        )"},{"line_number":549,"context_line":"        for iface in all_interfaces:"},{"line_number":550,"context_line":"            name \u003d \u0027%s_interface\u0027 % iface"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_f3590790","line":547,"updated":"2016-11-14 23:20:03.000000000","message":"Umm. You should add \u0027rescue\u0027 too.","commit_id":"c686bdb71a9d9b8c795113f6e66b48a18c34dc66"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"cb70a331dc5e63045779b23cac098a27692548a8","unresolved":false,"context_lines":[{"line_number":544,"context_line":"        all_interfaces \u003d ("},{"line_number":545,"context_line":"            base_driver.BaseDriver.core_interfaces +"},{"line_number":546,"context_line":"            base_driver.BaseDriver.standard_interfaces +"},{"line_number":547,"context_line":"            [\u0027vendor\u0027]"},{"line_number":548,"context_line":"        )"},{"line_number":549,"context_line":"        for iface in all_interfaces:"},{"line_number":550,"context_line":"            name \u003d \u0027%s_interface\u0027 % iface"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_d335ebf7","line":547,"in_reply_to":"7a77a97e_f3590790","updated":"2016-11-14 23:26:33.000000000","message":"That\u0027s a good catch. I wonder if \u0027rescue\u0027 should even be added or not by this patch or by the rescue patch?\n\nI know that https://review.openstack.org/#/c/350831/ will be adding it to the standard_interfaces:\n https://review.openstack.org/#/c/350831/6/ironic/drivers/base.py","commit_id":"c686bdb71a9d9b8c795113f6e66b48a18c34dc66"}],"releasenotes/notes/interface-fields-f4b9384fdda6189a.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"32321dd213b4aab5ae775b7926f7f5ccacca05aa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - Add database migration to add new fields corresponding to all interfaces"},{"line_number":4,"context_line":"    to the node table."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7a77a97e_a0d55aba","line":4,"updated":"2016-11-21 19:44:38.000000000","message":"nit: I wonder if operators would like to see a list of the new fields.","commit_id":"9e938f24668e49216b4cb135770899a50d627914"}]}
