)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b2133fb685afb3cbaf96c294df83aa72e00a8b9c","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Allows override methods via extra_mappings"},{"line_number":13,"context_line":"extra_mapping \u003d {\u0027set_boot_device\u0027: pxe,"},{"line_number":14,"context_line":"\t      \t \u0027continue_deploy\u0027: ipmi_native,"},{"line_number":15,"context_line":"                 \u0027set_vlan\u0027: impi_tool}"},{"line_number":16,"context_line":"driver.vendor \u003d utils.MultipleVendorInterface(pxe, ipminative, extra_mappings\u003dextra_mappings)"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUX%2F%2FECQ%3D","line":14,"updated":"2014-02-17 11:14:50.000000000","message":"s/ipmi_native/ipminative/g\n\nand tabs","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"da648a828b6040066cf14daf501ed87a012bc9c6","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Allows override methods via extra_mappings"},{"line_number":13,"context_line":"extra_mapping \u003d {\u0027set_boot_device\u0027: pxe,"},{"line_number":14,"context_line":"\t      \t \u0027continue_deploy\u0027: ipmi_native,"},{"line_number":15,"context_line":"                 \u0027set_vlan\u0027: impi_tool}"},{"line_number":16,"context_line":"driver.vendor \u003d utils.MultipleVendorInterface(pxe, ipminative, extra_mappings\u003dextra_mappings)"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUX%2F%2FDCk%3D","line":14,"in_reply_to":"AAAAUX%2F%2FECQ%3D","updated":"2014-02-17 13:20:37.000000000","message":"Done","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b2133fb685afb3cbaf96c294df83aa72e00a8b9c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Allows override methods via extra_mappings"},{"line_number":13,"context_line":"extra_mapping \u003d {\u0027set_boot_device\u0027: pxe,"},{"line_number":14,"context_line":"\t      \t \u0027continue_deploy\u0027: ipmi_native,"},{"line_number":15,"context_line":"                 \u0027set_vlan\u0027: impi_tool}"},{"line_number":16,"context_line":"driver.vendor \u003d utils.MultipleVendorInterface(pxe, ipminative, extra_mappings\u003dextra_mappings)"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Or even just indicate the methods to use"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUX%2F%2FEQE%3D","line":15,"updated":"2014-02-17 11:14:50.000000000","message":"s/impi_tool/ipmi_tool/g","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"da648a828b6040066cf14daf501ed87a012bc9c6","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Allows override methods via extra_mappings"},{"line_number":13,"context_line":"extra_mapping \u003d {\u0027set_boot_device\u0027: pxe,"},{"line_number":14,"context_line":"\t      \t \u0027continue_deploy\u0027: ipmi_native,"},{"line_number":15,"context_line":"                 \u0027set_vlan\u0027: impi_tool}"},{"line_number":16,"context_line":"driver.vendor \u003d utils.MultipleVendorInterface(pxe, ipminative, extra_mappings\u003dextra_mappings)"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Or even just indicate the methods to use"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUX%2F%2FDCc%3D","line":15,"in_reply_to":"AAAAUX%2F%2FEQE%3D","updated":"2014-02-17 13:20:37.000000000","message":"Done","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b2133fb685afb3cbaf96c294df83aa72e00a8b9c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"extra_mapping \u003d {\u0027set_boot_device\u0027: pxe,"},{"line_number":14,"context_line":"\t      \t \u0027continue_deploy\u0027: ipmi_native,"},{"line_number":15,"context_line":"                 \u0027set_vlan\u0027: impi_tool}"},{"line_number":16,"context_line":"driver.vendor \u003d utils.MultipleVendorInterface(pxe, ipminative, extra_mappings\u003dextra_mappings)"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Or even just indicate the methods to use"},{"line_number":19,"context_line":"driver.vendor \u003d utils.MultipleVendorInterface(extra_mappings\u003dextra_mappings)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUX%2F%2FEGA%3D","line":16,"updated":"2014-02-17 11:14:50.000000000","message":"I got me thinking about this extra_mapping, I don\u0027t think we should expose that. In the example here the vendor interface is a combination of 3 drivers pxe, ipminative and seamicro, but you also have a hidden dependency on the ipmitool driver because it\u0027s part of the extra_mapping. \n\nAlso using ipminative + ipmitool together doesn\u0027t sounds correct, if there\u0027s any method in one of the driver that is needed by the other it should be added to a common place and shared between both. Adding this cross-driver dependency looks like a layer violation to me.\n\nThoughts?","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"da648a828b6040066cf14daf501ed87a012bc9c6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"extra_mapping \u003d {\u0027set_boot_device\u0027: pxe,"},{"line_number":14,"context_line":"\t      \t \u0027continue_deploy\u0027: ipmi_native,"},{"line_number":15,"context_line":"                 \u0027set_vlan\u0027: impi_tool}"},{"line_number":16,"context_line":"driver.vendor \u003d utils.MultipleVendorInterface(pxe, ipminative, extra_mappings\u003dextra_mappings)"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Or even just indicate the methods to use"},{"line_number":19,"context_line":"driver.vendor \u003d utils.MultipleVendorInterface(extra_mappings\u003dextra_mappings)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUX%2F%2FC%2Bg%3D","line":16,"in_reply_to":"AAAAUX%2F%2FEGA%3D","updated":"2014-02-17 13:20:37.000000000","message":"Maybe is not the best example, but the idea was to show that multiples drivers could be mixed and override the default mappings if the default behavior of the multiplex is not what we needed, Will redo the commit msg and examples.","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"}],"ironic/drivers/utils.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b2133fb685afb3cbaf96c294df83aa72e00a8b9c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FEXM%3D","line":1,"updated":"2014-02-17 11:14:50.000000000","message":"Remove the vim modelines\n\nhttp://openstack.10931.n7.nabble.com/Remove-vim-modelines-td21780.html","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"da648a828b6040066cf14daf501ed87a012bc9c6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FC%2BY%3D","line":1,"in_reply_to":"AAAAUX%2F%2FEXM%3D","updated":"2014-02-17 13:20:37.000000000","message":"Done","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b2133fb685afb3cbaf96c294df83aa72e00a8b9c","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class MultipleVendorInterface(base.VendorInterface):"},{"line_number":32,"context_line":"    \"\"\"Example of a wrapper around two VendorInterfaces.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _get_uniq_class(self, vendor):"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FER8%3D","line":32,"updated":"2014-02-17 11:14:50.000000000","message":"Not really an example anymore","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"da648a828b6040066cf14daf501ed87a012bc9c6","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class MultipleVendorInterface(base.VendorInterface):"},{"line_number":32,"context_line":"    \"\"\"Example of a wrapper around two VendorInterfaces.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _get_uniq_class(self, vendor):"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FC%2BQ%3D","line":32,"in_reply_to":"AAAAUX%2F%2FER8%3D","updated":"2014-02-17 13:20:37.000000000","message":"Done","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b2133fb685afb3cbaf96c294df83aa72e00a8b9c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        extra_mapping \u003d kwargs.get(\u0027extra_mapping\u0027, {})"},{"line_number":44,"context_line":"        for method, vendor in extra_mapping.iteritems():"},{"line_number":45,"context_line":"            self.mapping[method] \u003d self.mapping.get(method,"},{"line_number":46,"context_line":"                                                self._get_uniq_class(vendor))"},{"line_number":47,"context_line":"        for vendor in args:"},{"line_number":48,"context_line":"            interface \u003d self._get_uniq_class(vendor)"},{"line_number":49,"context_line":"            for method in vendor.VENDOR_PASSTHRU_METHODS:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FEAI%3D","line":46,"updated":"2014-02-17 11:14:50.000000000","message":"I think we need a sanity check here to guarantee that only classes/objects inherited from the base.VendorInterface are allowed to be multiplexed","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"da648a828b6040066cf14daf501ed87a012bc9c6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        extra_mapping \u003d kwargs.get(\u0027extra_mapping\u0027, {})"},{"line_number":44,"context_line":"        for method, vendor in extra_mapping.iteritems():"},{"line_number":45,"context_line":"            self.mapping[method] \u003d self.mapping.get(method,"},{"line_number":46,"context_line":"                                                self._get_uniq_class(vendor))"},{"line_number":47,"context_line":"        for vendor in args:"},{"line_number":48,"context_line":"            interface \u003d self._get_uniq_class(vendor)"},{"line_number":49,"context_line":"            for method in vendor.VENDOR_PASSTHRU_METHODS:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FC98%3D","line":46,"in_reply_to":"AAAAUX%2F%2FEAI%3D","updated":"2014-02-17 13:20:37.000000000","message":"Done","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"b605caeeb9c20c764ac77d5fba2324ebbaca6153","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BvVs%3D","line":1,"updated":"2014-02-19 13:14:44.000000000","message":"Do we still using copyrights? I thought they were cancelled","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"8f7cb9641798cbc1e24ac849dcd19bb4e8c5709f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BlhI%3D","line":1,"in_reply_to":"AAAAUX%2F%2Blmk%3D","updated":"2014-02-20 11:01:26.000000000","message":"yes, you\u0027re right, sorry :)","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"321392b5661b55697d37587492978c48a9561936","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2Blmk%3D","line":1,"in_reply_to":"AAAAUX%2F%2BvVs%3D","updated":"2014-02-20 10:52:30.000000000","message":"According to https://wiki.openstack.org/wiki/LegalIssuesFAQ#Copyright_Headers there is nothing clear. There was some discussion in legal ML about removing them once the commits are signed, but nothing final.\nAnyway, if is consensus of the ironic project to remove then, I\u0027m more than OK with it.","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"b605caeeb9c20c764ac77d5fba2324ebbaca6153","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class MultipleVendorInterface(base.VendorInterface):"},{"line_number":29,"context_line":"    \"\"\"Wrapper around multiple VendorInterfaces.\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_uniq_class(self, vendor):"},{"line_number":32,"context_line":"        try:"},{"line_number":33,"context_line":"            if issubclass(vendor.VendorPassthru, base.VendorInterface):"},{"line_number":34,"context_line":"                self._vendors[vendor] \u003d self._vendors.get(vendor,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BvX0%3D","line":31,"updated":"2014-02-19 13:14:44.000000000","message":"Maybe it\u0027s worth renaming to vendor_driver or just driver?\n\nAlso please put __init__ on the top of the class","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"321392b5661b55697d37587492978c48a9561936","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class MultipleVendorInterface(base.VendorInterface):"},{"line_number":29,"context_line":"    \"\"\"Wrapper around multiple VendorInterfaces.\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_uniq_class(self, vendor):"},{"line_number":32,"context_line":"        try:"},{"line_number":33,"context_line":"            if issubclass(vendor.VendorPassthru, base.VendorInterface):"},{"line_number":34,"context_line":"                self._vendors[vendor] \u003d self._vendors.get(vendor,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2Blmg%3D","line":31,"in_reply_to":"AAAAUX%2F%2BvX0%3D","updated":"2014-02-20 10:52:30.000000000","message":"Done","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"b605caeeb9c20c764ac77d5fba2324ebbaca6153","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        try:"},{"line_number":33,"context_line":"            if issubclass(vendor.VendorPassthru, base.VendorInterface):"},{"line_number":34,"context_line":"                self._vendors[vendor] \u003d self._vendors.get(vendor,"},{"line_number":35,"context_line":"                                                    vendor.VendorPassthru())"},{"line_number":36,"context_line":"                return self._vendors[vendor]"},{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BvL0%3D","line":35,"updated":"2014-02-19 13:14:44.000000000","message":"Do we expect duplicated vendors passed here? Seems this check intended to make sure we won\u0027t have to instances of similar VendorPassthru, but is it normal situation when two similar vendors passed? Maybe better to throw an exception for this case","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"321392b5661b55697d37587492978c48a9561936","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        try:"},{"line_number":33,"context_line":"            if issubclass(vendor.VendorPassthru, base.VendorInterface):"},{"line_number":34,"context_line":"                self._vendors[vendor] \u003d self._vendors.get(vendor,"},{"line_number":35,"context_line":"                                                    vendor.VendorPassthru())"},{"line_number":36,"context_line":"                return self._vendors[vendor]"},{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BllU%3D","line":35,"in_reply_to":"AAAAUX%2F%2BvL0%3D","updated":"2014-02-20 10:52:30.000000000","message":"There could be duplicated vendors, if you override the default mapping with the extra_mapping feature. With this, we avoid having multiple instances of the same vendor.","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"b605caeeb9c20c764ac77d5fba2324ebbaca6153","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            if issubclass(vendor.VendorPassthru, base.VendorInterface):"},{"line_number":34,"context_line":"                self._vendors[vendor] \u003d self._vendors.get(vendor,"},{"line_number":35,"context_line":"                                                    vendor.VendorPassthru())"},{"line_number":36,"context_line":"                return self._vendors[vendor]"},{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                raise exception.InvalidParameterValue(_("},{"line_number":39,"context_line":"                    \"Driver %s does not inherit from base.VendorInterface.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BvME%3D","line":36,"updated":"2014-02-19 13:14:44.000000000","message":"Is vendor an object? If so, then here we will have object as a key, which is not very clear.","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"8f7cb9641798cbc1e24ac849dcd19bb4e8c5709f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            if issubclass(vendor.VendorPassthru, base.VendorInterface):"},{"line_number":34,"context_line":"                self._vendors[vendor] \u003d self._vendors.get(vendor,"},{"line_number":35,"context_line":"                                                    vendor.VendorPassthru())"},{"line_number":36,"context_line":"                return self._vendors[vendor]"},{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                raise exception.InvalidParameterValue(_("},{"line_number":39,"context_line":"                    \"Driver %s does not inherit from base.VendorInterface.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BlfU%3D","line":36,"in_reply_to":"AAAAUX%2F%2Blkw%3D","updated":"2014-02-20 11:01:26.000000000","message":"Right :) I meant it\u0027s not very expected from dictionary to have module as a key. But I\u0027m fine with this","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"321392b5661b55697d37587492978c48a9561936","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            if issubclass(vendor.VendorPassthru, base.VendorInterface):"},{"line_number":34,"context_line":"                self._vendors[vendor] \u003d self._vendors.get(vendor,"},{"line_number":35,"context_line":"                                                    vendor.VendorPassthru())"},{"line_number":36,"context_line":"                return self._vendors[vendor]"},{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                raise exception.InvalidParameterValue(_("},{"line_number":39,"context_line":"                    \"Driver %s does not inherit from base.VendorInterface.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2Blkw%3D","line":36,"in_reply_to":"AAAAUX%2F%2BvME%3D","updated":"2014-02-20 10:52:30.000000000","message":"Everything in python is an object :) In this case, is a driver module and returns the instance of the module.","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"b605caeeb9c20c764ac77d5fba2324ebbaca6153","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                raise exception.InvalidParameterValue(_("},{"line_number":39,"context_line":"                    \"Driver %s does not inherit from base.VendorInterface.\")"},{"line_number":40,"context_line":"                                                % vendor.__name__)"},{"line_number":41,"context_line":"        except AttributeError:"},{"line_number":42,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":43,"context_line":"                \"Driver %s does not support vendor passthru.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BvXo%3D","line":40,"updated":"2014-02-19 13:14:44.000000000","message":"Probably should be vendor.VendorPassthru.__name__, since driver itself never expected to inherit from base.VendorInterface, it should inherit base.BaseDriver","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"321392b5661b55697d37587492978c48a9561936","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                raise exception.InvalidParameterValue(_("},{"line_number":39,"context_line":"                    \"Driver %s does not inherit from base.VendorInterface.\")"},{"line_number":40,"context_line":"                                                % vendor.__name__)"},{"line_number":41,"context_line":"        except AttributeError:"},{"line_number":42,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":43,"context_line":"                \"Driver %s does not support vendor passthru.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2Bljw%3D","line":40,"in_reply_to":"AAAAUX%2F%2BvXo%3D","updated":"2014-02-20 10:52:30.000000000","message":"My bad in the msg. It should say, the driver doesn\u0027t implement a Vendor interface","commit_id":"2fef4d5558ae6b3c420943209a7e77555cd9731f"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ae621dd3e188b6b782380de52711b207ac6345dd","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                self.mapping[method] \u003d self._get_uniq_vendor(vendor)"},{"line_number":48,"context_line":"        for vendor in args:"},{"line_number":49,"context_line":"            interface \u003d self._get_uniq_vendor(vendor)"},{"line_number":50,"context_line":"            for method in vendor.VENDOR_PASSTHRU_METHODS:"},{"line_number":51,"context_line":"                if method in self.mapping:"},{"line_number":52,"context_line":"                    LOG.info(_(\"Method %(method)s from vendor %(vendor)s\""},{"line_number":53,"context_line":"                    \"already mapped to vendor %(current_vendor)s\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2FhIY%3D","line":50,"updated":"2014-03-05 16:39:06.000000000","message":"VENDOR_PASSTHRU_METHODS attribute currently not present in \"real\" drivers, maybe check if this attribute present needed and log if driver does not have it.","commit_id":"45d16e8bd975c5215311c4db41c9b5cc20b22936"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ae621dd3e188b6b782380de52711b207ac6345dd","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                self._vendors[vendor]._vendor_name \u003d vendor.__name__"},{"line_number":66,"context_line":"                return self._vendors[vendor]"},{"line_number":67,"context_line":"            else:"},{"line_number":68,"context_line":"                raise exception.InvalidParameterValue(_("},{"line_number":69,"context_line":"                    \"Driver %s does not implement a vendor interface.\")"},{"line_number":70,"context_line":"                                                      % vendor.__name__)"},{"line_number":71,"context_line":"        except AttributeError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2FhPc%3D","line":68,"updated":"2014-03-05 16:39:06.000000000","message":"There is special UnsupportedDriverExtension exception.","commit_id":"45d16e8bd975c5215311c4db41c9b5cc20b22936"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ae621dd3e188b6b782380de52711b207ac6345dd","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    \"Driver %s does not implement a vendor interface.\")"},{"line_number":70,"context_line":"                                                      % vendor.__name__)"},{"line_number":71,"context_line":"        except AttributeError:"},{"line_number":72,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":73,"context_line":"                \"Driver %s does not support vendor passthru.\")"},{"line_number":74,"context_line":"                                                  % vendor.__name__)"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2FhPY%3D","line":72,"updated":"2014-03-05 16:39:06.000000000","message":"ditto","commit_id":"45d16e8bd975c5215311c4db41c9b5cc20b22936"}],"ironic/tests/drivers/test_utils.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b2133fb685afb3cbaf96c294df83aa72e00a8b9c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"# coding\u003dutf-8"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FES4%3D","line":1,"updated":"2014-02-17 11:14:50.000000000","message":"ditto","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"da648a828b6040066cf14daf501ed87a012bc9c6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"# coding\u003dutf-8"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FC6U%3D","line":1,"in_reply_to":"AAAAUX%2F%2FES4%3D","updated":"2014-02-17 13:20:37.000000000","message":"Done","commit_id":"384aa2d3daed1a43954add82f81b6e279310b60b"}]}
