)]}'
{"ironic/common/hash_ring.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"3bf749dd96a4b7992fab1671dffdb0a4abce7e6a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        rings \u003d {}"},{"line_number":123,"context_line":"        d2c \u003d self.dbapi.get_active_driver_dict()"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        for driver_name, hosts in d2c.iteritems():"},{"line_number":126,"context_line":"            rings[driver_name] \u003d HashRing(d2c[driver_name])"},{"line_number":127,"context_line":"        return rings"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BfEg%3D","line":125,"updated":"2014-03-26 14:07:04.000000000","message":"\u0027hosts\u0027 not used","commit_id":"40556e9556dababe8619b2cc13fdf2e6107a8923"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"91d029512082c915bace373dc5c2473c8f40b781","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _ensure_rings_fresh(self):"},{"line_number":130,"context_line":"        # Hot path, no lock"},{"line_number":131,"context_line":"        # TODO(russell_h): Consider adding time-based invalidation of rings"},{"line_number":132,"context_line":"        if self.hash_rings is not None:"},{"line_number":133,"context_line":"            return"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BezA%3D","line":131,"updated":"2014-03-26 14:20:26.000000000","message":"IMO should do this before merging otherwise conductor redundancy feature will be broken.","commit_id":"40556e9556dababe8619b2cc13fdf2e6107a8923"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"3bf749dd96a4b7992fab1671dffdb0a4abce7e6a","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        try:"},{"line_number":143,"context_line":"            return self.hash_rings[driver_name]"},{"line_number":144,"context_line":"        except KeyError:"},{"line_number":145,"context_line":"            raise exception.DriverNotFound(driver_name\u003ddriver_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Be7I%3D","line":145,"updated":"2014-03-26 14:07:04.000000000","message":"If conductor which only supports some driver for one node dead\n1) this exception will break periodic tasks on another conductors 2) DriverNotFound exception is not good choice for conductor in this case, IMO NoValidHost better.","commit_id":"40556e9556dababe8619b2cc13fdf2e6107a8923"}]}
