)]}'
{"diskimage_builder/block_device/blockdevice.py":[{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"61293076609bcc132a57851442942e75ba1e0af9","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"            # Instantiate a \"plugin\" object, passing it the"},{"line_number":193,"context_line":"            # configuration entry"},{"line_number":194,"context_line":"            #  XXX: is this a private interface? (use stevedore\u0027s map()?)"},{"line_number":195,"context_line":"            #     : would a \"factory\" pattern for plugins, where we"},{"line_number":196,"context_line":"            #       make a method call on an object stevedore has instantiated"},{"line_number":197,"context_line":"            #       be better here?"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_8e4a0b81","line":194,"updated":"2017-05-25 17:28:25.000000000","message":"I think this is an official and documented interface:\nhttps://docs.openstack.org/developer/stevedore/managers.html#stevedore.extension.ExtensionManager.__getitem__","commit_id":"f7f15e29a47478f6420cec85f0589ce8c8a2c38a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3c3a211ebbb9179831536bdb1a317ce2e7e739fa","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"            # Instantiate a \"plugin\" object, passing it the"},{"line_number":193,"context_line":"            # configuration entry"},{"line_number":194,"context_line":"            #  XXX: is this a private interface? (use stevedore\u0027s map()?)"},{"line_number":195,"context_line":"            #     : would a \"factory\" pattern for plugins, where we"},{"line_number":196,"context_line":"            #       make a method call on an object stevedore has instantiated"},{"line_number":197,"context_line":"            #       be better here?"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_f0aa7d6f","line":194,"in_reply_to":"ff0f0b1f_8e4a0b81","updated":"2017-05-25 22:43:22.000000000","message":"ok.  i still wonder about the factory pattern but not a big issue","commit_id":"f7f15e29a47478f6420cec85f0589ce8c8a2c38a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"61293076609bcc132a57851442942e75ba1e0af9","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                raise BlockDeviceSetupException("},{"line_number":200,"context_line":"                    (\"Config element [%s] is not implemented\" % cfg_obj_name))"},{"line_number":201,"context_line":"            plugin \u003d self.plugin_manager[cfg_obj_name].plugin"},{"line_number":202,"context_line":"            assert(issubclass(plugin, PluginBase))"},{"line_number":203,"context_line":"            cfg_obj \u003d plugin(cfg_obj_val, default_config)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            # Ask the plugin for the nodes it would like to insert"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_4e3993f0","line":202,"updated":"2017-05-25 17:28:25.000000000","message":"superfluous parens","commit_id":"f7f15e29a47478f6420cec85f0589ce8c8a2c38a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3c3a211ebbb9179831536bdb1a317ce2e7e739fa","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                raise BlockDeviceSetupException("},{"line_number":200,"context_line":"                    (\"Config element [%s] is not implemented\" % cfg_obj_name))"},{"line_number":201,"context_line":"            plugin \u003d self.plugin_manager[cfg_obj_name].plugin"},{"line_number":202,"context_line":"            assert(issubclass(plugin, PluginBase))"},{"line_number":203,"context_line":"            cfg_obj \u003d plugin(cfg_obj_val, default_config)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            # Ask the plugin for the nodes it would like to insert"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_b0b645dc","line":202,"in_reply_to":"ff0f0b1f_4e3993f0","updated":"2017-05-25 22:43:22.000000000","message":"Done","commit_id":"f7f15e29a47478f6420cec85f0589ce8c8a2c38a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"61293076609bcc132a57851442942e75ba1e0af9","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            # into the graph.  Some plugins, such as partitioning,"},{"line_number":207,"context_line":"            # return multiple nodes from one config entry."},{"line_number":208,"context_line":"            nodes \u003d cfg_obj.get_nodes()"},{"line_number":209,"context_line":"            assert(isinstance(nodes, list))"},{"line_number":210,"context_line":"            for node in nodes:"},{"line_number":211,"context_line":"                # plugins should return nodes..."},{"line_number":212,"context_line":"                assert(isinstance(node, NodeBase))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_0e5efb44","line":209,"updated":"2017-05-25 17:28:25.000000000","message":"superfluous parens","commit_id":"f7f15e29a47478f6420cec85f0589ce8c8a2c38a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3c3a211ebbb9179831536bdb1a317ce2e7e739fa","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            # into the graph.  Some plugins, such as partitioning,"},{"line_number":207,"context_line":"            # return multiple nodes from one config entry."},{"line_number":208,"context_line":"            nodes \u003d cfg_obj.get_nodes()"},{"line_number":209,"context_line":"            assert(isinstance(nodes, list))"},{"line_number":210,"context_line":"            for node in nodes:"},{"line_number":211,"context_line":"                # plugins should return nodes..."},{"line_number":212,"context_line":"                assert(isinstance(node, NodeBase))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_70b0adde","line":209,"in_reply_to":"ff0f0b1f_0e5efb44","updated":"2017-05-25 22:43:22.000000000","message":"Done","commit_id":"f7f15e29a47478f6420cec85f0589ce8c8a2c38a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"61293076609bcc132a57851442942e75ba1e0af9","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            assert(isinstance(nodes, list))"},{"line_number":210,"context_line":"            for node in nodes:"},{"line_number":211,"context_line":"                # plugins should return nodes..."},{"line_number":212,"context_line":"                assert(isinstance(node, NodeBase))"},{"line_number":213,"context_line":"                # ensure node names are unique.  networkx by default"},{"line_number":214,"context_line":"                # just appends the attribute to the node dict for"},{"line_number":215,"context_line":"                # existing nodes, which is not what we want."}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_ee1f476e","line":212,"updated":"2017-05-25 17:28:25.000000000","message":"... and again","commit_id":"f7f15e29a47478f6420cec85f0589ce8c8a2c38a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3c3a211ebbb9179831536bdb1a317ce2e7e739fa","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            assert(isinstance(nodes, list))"},{"line_number":210,"context_line":"            for node in nodes:"},{"line_number":211,"context_line":"                # plugins should return nodes..."},{"line_number":212,"context_line":"                assert(isinstance(node, NodeBase))"},{"line_number":213,"context_line":"                # ensure node names are unique.  networkx by default"},{"line_number":214,"context_line":"                # just appends the attribute to the node dict for"},{"line_number":215,"context_line":"                # existing nodes, which is not what we want."}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_30ca354f","line":212,"in_reply_to":"ff0f0b1f_ee1f476e","updated":"2017-05-25 22:43:22.000000000","message":"Done","commit_id":"f7f15e29a47478f6420cec85f0589ce8c8a2c38a"}]}
