)]}'
{"ironic/conductor/base_manager.py":[{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"7d2f2ee879ac5e2bb5899507f842d25375c0535f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                       for i in driver_base.ALL_INTERFACES]"},{"line_number":92,"context_line":"        for iface_type in iface_types:"},{"line_number":93,"context_line":"            conf_value \u003d getattr(CONF, iface_type)"},{"line_number":94,"context_line":"            if not conf_value:"},{"line_number":95,"context_line":"                empty_confs.append(iface_type)"},{"line_number":96,"context_line":"        if empty_confs:"},{"line_number":97,"context_line":"            msg \u003d (_(\u0027Config options %s cannot be an empty list.\u0027) %"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a461143_3ea871db","line":94,"updated":"2017-02-02 21:36:57.000000000","message":"What if someone still wants to use only classic drivers in their environment?\n\nIf this is disallowed, I think there should at least be a release note indicating it.","commit_id":"203021f345ed8fab30d25ad7ccc02d4005ce589d"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5156fc393c668b09995bf3835b9d7b7195444e22","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                       for i in driver_base.ALL_INTERFACES]"},{"line_number":92,"context_line":"        for iface_type in iface_types:"},{"line_number":93,"context_line":"            conf_value \u003d getattr(CONF, iface_type)"},{"line_number":94,"context_line":"            if not conf_value:"},{"line_number":95,"context_line":"                empty_confs.append(iface_type)"},{"line_number":96,"context_line":"        if empty_confs:"},{"line_number":97,"context_line":"            msg \u003d (_(\u0027Config options %s cannot be an empty list.\u0027) %"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_57b0f28b","line":94,"in_reply_to":"3a461143_3ea871db","updated":"2017-02-03 12:37:15.000000000","message":"Hm, yeah, I should add a \"if CONF.enabled_hardware_types\" around this. Thanks.","commit_id":"203021f345ed8fab30d25ad7ccc02d4005ce589d"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"7d2f2ee879ac5e2bb5899507f842d25375c0535f","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            if not conf_value:"},{"line_number":95,"context_line":"                empty_confs.append(iface_type)"},{"line_number":96,"context_line":"        if empty_confs:"},{"line_number":97,"context_line":"            msg \u003d (_(\u0027Config options %s cannot be an empty list.\u0027) %"},{"line_number":98,"context_line":"                   \u0027, \u0027.join(empty_confs))"},{"line_number":99,"context_line":"            raise exception.ConfigInvalid(error_msg\u003dmsg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a461143_beb46135","line":97,"range":{"start_line":97,"start_character":22,"end_line":97,"end_character":28},"updated":"2017-02-02 21:36:57.000000000","message":"nit: s/Config/Configuration","commit_id":"203021f345ed8fab30d25ad7ccc02d4005ce589d"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5156fc393c668b09995bf3835b9d7b7195444e22","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            if not conf_value:"},{"line_number":95,"context_line":"                empty_confs.append(iface_type)"},{"line_number":96,"context_line":"        if empty_confs:"},{"line_number":97,"context_line":"            msg \u003d (_(\u0027Config options %s cannot be an empty list.\u0027) %"},{"line_number":98,"context_line":"                   \u0027, \u0027.join(empty_confs))"},{"line_number":99,"context_line":"            raise exception.ConfigInvalid(error_msg\u003dmsg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_d7622216","line":97,"range":{"start_line":97,"start_character":22,"end_line":97,"end_character":28},"in_reply_to":"3a461143_beb46135","updated":"2017-02-03 12:37:15.000000000","message":"Will do","commit_id":"203021f345ed8fab30d25ad7ccc02d4005ce589d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"4bc4e12cf7d7341dedcdb2d37a95a7e93f8edf82","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _check_enabled_interfaces():"},{"line_number":46,"context_line":"    # Sanity-check enabled_*_interfaces configs before we even bother to"},{"line_number":47,"context_line":"    # try to load up drivers. If we have any dynamic drivers enabled, then"},{"line_number":48,"context_line":"    # we need interfaces enabled as well."},{"line_number":49,"context_line":"    if CONF.enabled_hardware_types:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_8bf5ce84","line":46,"updated":"2017-02-03 16:39:55.000000000","message":"Is there a reason this comment isn\u0027t a full docstring?","commit_id":"00ae4cb85fcc5d3cf7880a1983a08e077915db4a"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1a191e6334c545933bfbd5becc868fb9a0c6dad3","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _check_enabled_interfaces():"},{"line_number":46,"context_line":"    # Sanity-check enabled_*_interfaces configs before we even bother to"},{"line_number":47,"context_line":"    # try to load up drivers. If we have any dynamic drivers enabled, then"},{"line_number":48,"context_line":"    # we need interfaces enabled as well."},{"line_number":49,"context_line":"    if CONF.enabled_hardware_types:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_1e53d5e2","line":46,"in_reply_to":"1a430d35_8bf5ce84","updated":"2017-02-03 18:54:57.000000000","message":"Done","commit_id":"00ae4cb85fcc5d3cf7880a1983a08e077915db4a"}],"ironic/conf/default.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5a0a8650905cfe3009fb2a4ba89f3ceb6d1a3804","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                        \u0027or {0} interfaces which fail to initialize, will \u0027"},{"line_number":33,"context_line":"                        \u0027prevent the ironic-conductor service from starting. \u0027"},{"line_number":34,"context_line":"                        \u0027At least one {0} interface that is supported by each \u0027"},{"line_number":35,"context_line":"                        \u0027enabled hardware type must be enabled here, or the \u0027"},{"line_number":36,"context_line":"                        \u0027ironic-conductor service will not start. \u0027"},{"line_number":37,"context_line":"                        \u0027Must not be an empty list. \u0027"},{"line_number":38,"context_line":"                        \u0027The default value is a recommended set of \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a461143_7e467922","line":35,"updated":"2017-02-02 21:40:16.000000000","message":"This is not what the code is doing. It enforces that one interface of each type is loaded, not that all the interfaces supported by enabled hardware types are not empty.","commit_id":"203021f345ed8fab30d25ad7ccc02d4005ce589d"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5156fc393c668b09995bf3835b9d7b7195444e22","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                        \u0027or {0} interfaces which fail to initialize, will \u0027"},{"line_number":33,"context_line":"                        \u0027prevent the ironic-conductor service from starting. \u0027"},{"line_number":34,"context_line":"                        \u0027At least one {0} interface that is supported by each \u0027"},{"line_number":35,"context_line":"                        \u0027enabled hardware type must be enabled here, or the \u0027"},{"line_number":36,"context_line":"                        \u0027ironic-conductor service will not start. \u0027"},{"line_number":37,"context_line":"                        \u0027Must not be an empty list. \u0027"},{"line_number":38,"context_line":"                        \u0027The default value is a recommended set of \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_f7c0fee2","line":35,"in_reply_to":"1a430d35_51f2d49b","updated":"2017-02-03 12:37:15.000000000","message":"Jay/Mario, the code in this patch checks for at least one of each type, yes. However, when we register the interfaces here[0], we check that a valid default $interface_type exists for each hardware type. There must be a supported implementation loaded for a valid default to exist.\n\n[0] https://github.com/openstack/ironic/blob/master/ironic/conductor/base_manager.py#L276-L280\n\nRuby, that\u0027s correct.","commit_id":"203021f345ed8fab30d25ad7ccc02d4005ce589d"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"09526635c9287f4e0080037808651cb7b21d2171","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                        \u0027or {0} interfaces which fail to initialize, will \u0027"},{"line_number":33,"context_line":"                        \u0027prevent the ironic-conductor service from starting. \u0027"},{"line_number":34,"context_line":"                        \u0027At least one {0} interface that is supported by each \u0027"},{"line_number":35,"context_line":"                        \u0027enabled hardware type must be enabled here, or the \u0027"},{"line_number":36,"context_line":"                        \u0027ironic-conductor service will not start. \u0027"},{"line_number":37,"context_line":"                        \u0027Must not be an empty list. \u0027"},{"line_number":38,"context_line":"                        \u0027The default value is a recommended set of \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a461143_9e0325b8","line":35,"in_reply_to":"3a461143_7e467922","updated":"2017-02-02 21:41:51.000000000","message":"+1\n\nhttps://github.com/openstack/ironic/blob/8db68fef4e97b2ed6552b80215ab03093f18e615/ironic/drivers/base.py#L183","commit_id":"203021f345ed8fab30d25ad7ccc02d4005ce589d"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"a309f4b10ede0faa5fdd74f7dff27cdb443278c8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                        \u0027or {0} interfaces which fail to initialize, will \u0027"},{"line_number":33,"context_line":"                        \u0027prevent the ironic-conductor service from starting. \u0027"},{"line_number":34,"context_line":"                        \u0027At least one {0} interface that is supported by each \u0027"},{"line_number":35,"context_line":"                        \u0027enabled hardware type must be enabled here, or the \u0027"},{"line_number":36,"context_line":"                        \u0027ironic-conductor service will not start. \u0027"},{"line_number":37,"context_line":"                        \u0027Must not be an empty list. \u0027"},{"line_number":38,"context_line":"                        \u0027The default value is a recommended set of \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_51f2d49b","line":35,"in_reply_to":"3a461143_9e0325b8","updated":"2017-02-03 00:00:13.000000000","message":"It is confusing. FWIW, Jim pushed this up cuz of the IRC conversation we had on Monday [1].\n\nDo the enabled* stuff only apply to dynamic drivers, except for network?\n\n[1] http://eavesdrop.openstack.org/irclogs/%23openstack-ironic/%23openstack-ironic.2017-01-30.log.html#t2017-01-30T15:34:55","commit_id":"203021f345ed8fab30d25ad7ccc02d4005ce589d"}]}
