)]}'
{"ironic/db/api.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"4df4a1bc51446fd587060c1f159118159f27ff47","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        :raises: ConductorNotFound"},{"line_number":517,"context_line":"        \"\"\""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    @abc.abstractmethod"},{"line_number":520,"context_line":"    def _filter_active_conductors(self, query, interval\u003dNone):"},{"line_number":521,"context_line":"        \"\"\"Filters a query to only include registered and active conductors."},{"line_number":522,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_1a0a498a","line":519,"updated":"2017-01-18 10:40:06.000000000","message":"Not sure if it\u0027s worth adding it to our \"public\" interface, it seems to me as a helper function, just like _add_nodes_filters.","commit_id":"6792b0d14dbba4629bd74ea53441224557fbb7e3"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1e11d5def50f56ff5075eded621b92d648e80c55","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        :raises: ConductorNotFound"},{"line_number":517,"context_line":"        \"\"\""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    @abc.abstractmethod"},{"line_number":520,"context_line":"    def _filter_active_conductors(self, query, interval\u003dNone):"},{"line_number":521,"context_line":"        \"\"\"Filters a query to only include registered and active conductors."},{"line_number":522,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_2e7fc3e0","line":519,"in_reply_to":"7a3c09a3_1a0a498a","updated":"2017-01-18 11:46:47.000000000","message":"++\n\nYeah I tend to think the same way. Making the class inheriting this class to overwrite a private method seems counter-intuitive. \n\nLet\u0027s just make it public","commit_id":"6792b0d14dbba4629bd74ea53441224557fbb7e3"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"2cf02f1bda8399fb848a6ec827fc77fdadbb6147","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        :raises: ConductorNotFound"},{"line_number":517,"context_line":"        \"\"\""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    @abc.abstractmethod"},{"line_number":520,"context_line":"    def _filter_active_conductors(self, query, interval\u003dNone):"},{"line_number":521,"context_line":"        \"\"\"Filters a query to only include registered and active conductors."},{"line_number":522,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_a84f1d32","line":519,"in_reply_to":"7a3c09a3_2e7fc3e0","updated":"2017-01-18 14:44:18.000000000","message":"I\u0027m fine to break it out of the class and not put it here, but I don\u0027t think it should be public as nothing should have a query object outside of the sqlalchemy implementation.","commit_id":"6792b0d14dbba4629bd74ea53441224557fbb7e3"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"23a23963a46fd3c397788206aa09d5710559227f","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":183,"context_line":"    limit \u003d timeutils.utcnow() - datetime.timedelta(seconds\u003dinterval)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    query \u003d (query.filter(models.Conductor.online \u003d\u003d True)  # noqa"},{"line_number":186,"context_line":"             .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":187,"context_line":"    return query"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_25e322a5","line":185,"range":{"start_line":185,"start_character":60,"end_line":185,"end_character":66},"updated":"2017-01-19 15:14:29.000000000","message":"If you fix it according to the comment above you won\u0027t need to escape the pep8 test here.","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"23a23963a46fd3c397788206aa09d5710559227f","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":183,"context_line":"    limit \u003d timeutils.utcnow() - datetime.timedelta(seconds\u003dinterval)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    query \u003d (query.filter(models.Conductor.online \u003d\u003d True)  # noqa"},{"line_number":186,"context_line":"             .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":187,"context_line":"    return query"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_65652a44","line":185,"range":{"start_line":185,"start_character":50,"end_line":185,"end_character":52},"updated":"2017-01-19 15:14:29.000000000","message":"s/\u003d\u003d/is","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4df59783d2e7b4d3d7eb0f1119adcceb06dbf35c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":183,"context_line":"    limit \u003d timeutils.utcnow() - datetime.timedelta(seconds\u003dinterval)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    query \u003d (query.filter(models.Conductor.online \u003d\u003d True)  # noqa"},{"line_number":186,"context_line":"             .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":187,"context_line":"    return query"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_8544d674","line":185,"range":{"start_line":185,"start_character":50,"end_line":185,"end_character":52},"in_reply_to":"5a3905b3_65652a44","updated":"2017-01-19 15:15:22.000000000","message":"(apparently the comments changed order here as I pushed the review \u003e.\u003c\u0027)","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a4d0ddedf1a7f63242cbdf46695094cbacb74985","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":183,"context_line":"    limit \u003d timeutils.utcnow() - datetime.timedelta(seconds\u003dinterval)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    query \u003d (query.filter(models.Conductor.online \u003d\u003d True)  # noqa"},{"line_number":186,"context_line":"             .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":187,"context_line":"    return query"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_5932c9f2","line":185,"range":{"start_line":185,"start_character":50,"end_line":185,"end_character":52},"in_reply_to":"5a3905b3_8544d674","updated":"2017-01-19 20:34:50.000000000","message":"\u0027is\u0027 doesn\u0027t actually work in filter(), but there is an is_() method I can use.","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"34177e842ea1d59f9cf443f0cd6c32471fceaf03","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    query \u003d (query.filter(models.Conductor.online \u003d\u003d True)  # noqa"},{"line_number":186,"context_line":"             .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":187,"context_line":"    return query"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class Connection(api.Connection):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_c535f046","line":187,"updated":"2017-01-19 19:03:55.000000000","message":"don\u0027t you want to refactor the unit tests to test just this? (just asking, I don\u0027t care.)","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a4d0ddedf1a7f63242cbdf46695094cbacb74985","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    query \u003d (query.filter(models.Conductor.online \u003d\u003d True)  # noqa"},{"line_number":186,"context_line":"             .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":187,"context_line":"    return query"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class Connection(api.Connection):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_f968d5bc","line":187,"in_reply_to":"5a3905b3_c535f046","updated":"2017-01-19 20:34:50.000000000","message":"I could, but I like to prove a refactor works by not changing tests when I do it. I think it\u0027s fine, we could add tests later too. :)","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"34177e842ea1d59f9cf443f0cd6c32471fceaf03","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def get_active_driver_dict(self, interval\u003dNone):"},{"line_number":792,"context_line":"        if interval is None:"},{"line_number":793,"context_line":"            interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        query \u003d model_query(models.Conductor)"},{"line_number":796,"context_line":"        query \u003d _filter_active_conductors(query, interval\u003dinterval)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_65c6fc68","line":793,"updated":"2017-01-19 19:03:55.000000000","message":"We don\u0027t need these two lines, do we? (make it consistent with get_active_hardware_type_dict()).","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a4d0ddedf1a7f63242cbdf46695094cbacb74985","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def get_active_driver_dict(self, interval\u003dNone):"},{"line_number":792,"context_line":"        if interval is None:"},{"line_number":793,"context_line":"            interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        query \u003d model_query(models.Conductor)"},{"line_number":796,"context_line":"        query \u003d _filter_active_conductors(query, interval\u003dinterval)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_19dbe17d","line":793,"in_reply_to":"5a3905b3_65c6fc68","updated":"2017-01-19 20:34:50.000000000","message":"This method has always allowed specifying an interval. It doesn\u0027t appear to be used, but I don\u0027t know that I want to remove it in this patch.","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"490c2a1ca0946a1b00709ab5456384a183dac9db","unresolved":false,"context_lines":[{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        query \u003d model_query(models.Conductor)"},{"line_number":796,"context_line":"        query \u003d _filter_active_conductors(query, interval\u003dinterval)"},{"line_number":797,"context_line":"        result \u003d query.all()"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        # build mapping of drivers to the set of hosts which support them"},{"line_number":800,"context_line":"        d2c \u003d collections.defaultdict(set)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_fff8bd7e","line":797,"updated":"2017-01-19 18:19:59.000000000","message":"while we\u0027re here: this statement is redundant, iteration over query works as you expect it to","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a4d0ddedf1a7f63242cbdf46695094cbacb74985","unresolved":false,"context_lines":[{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        query \u003d model_query(models.Conductor)"},{"line_number":796,"context_line":"        query \u003d _filter_active_conductors(query, interval\u003dinterval)"},{"line_number":797,"context_line":"        result \u003d query.all()"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        # build mapping of drivers to the set of hosts which support them"},{"line_number":800,"context_line":"        d2c \u003d collections.defaultdict(set)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_59e56935","line":797,"in_reply_to":"5a3905b3_fff8bd7e","updated":"2017-01-19 20:34:50.000000000","message":"Done","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"490c2a1ca0946a1b00709ab5456384a183dac9db","unresolved":false,"context_lines":[{"line_number":808,"context_line":"                             models.Conductor)"},{"line_number":809,"context_line":"                 .distinct(models.ConductorHardwareInterfaces.hardware_type,"},{"line_number":810,"context_line":"                           models.ConductorHardwareInterfaces.interface_type,"},{"line_number":811,"context_line":"                           models.ConductorHardwareInterfaces.interface_name)"},{"line_number":812,"context_line":"                 .join(models.Conductor))"},{"line_number":813,"context_line":"        query \u003d _filter_active_conductors(query)"},{"line_number":814,"context_line":"        result \u003d query.all()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_1ff6698f","line":811,"updated":"2017-01-19 18:19:59.000000000","message":"see previous patch re distinct(), I don\u0027t see why we need it here","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a4d0ddedf1a7f63242cbdf46695094cbacb74985","unresolved":false,"context_lines":[{"line_number":808,"context_line":"                             models.Conductor)"},{"line_number":809,"context_line":"                 .distinct(models.ConductorHardwareInterfaces.hardware_type,"},{"line_number":810,"context_line":"                           models.ConductorHardwareInterfaces.interface_type,"},{"line_number":811,"context_line":"                           models.ConductorHardwareInterfaces.interface_name)"},{"line_number":812,"context_line":"                 .join(models.Conductor))"},{"line_number":813,"context_line":"        query \u003d _filter_active_conductors(query)"},{"line_number":814,"context_line":"        result \u003d query.all()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_6e189985","line":811,"in_reply_to":"5a3905b3_1ff6698f","updated":"2017-01-19 20:34:50.000000000","message":"Done","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"490c2a1ca0946a1b00709ab5456384a183dac9db","unresolved":false,"context_lines":[{"line_number":811,"context_line":"                           models.ConductorHardwareInterfaces.interface_name)"},{"line_number":812,"context_line":"                 .join(models.Conductor))"},{"line_number":813,"context_line":"        query \u003d _filter_active_conductors(query)"},{"line_number":814,"context_line":"        result \u003d query.all()"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        d2c \u003d collections.defaultdict(set)"},{"line_number":817,"context_line":"        for iface_row, cdr_row in result:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_3ff325a0","line":814,"updated":"2017-01-19 18:19:59.000000000","message":"ditto about redundant all","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a4d0ddedf1a7f63242cbdf46695094cbacb74985","unresolved":false,"context_lines":[{"line_number":811,"context_line":"                           models.ConductorHardwareInterfaces.interface_name)"},{"line_number":812,"context_line":"                 .join(models.Conductor))"},{"line_number":813,"context_line":"        query \u003d _filter_active_conductors(query)"},{"line_number":814,"context_line":"        result \u003d query.all()"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        d2c \u003d collections.defaultdict(set)"},{"line_number":817,"context_line":"        for iface_row, cdr_row in result:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_79d06554","line":814,"in_reply_to":"5a3905b3_3ff325a0","updated":"2017-01-19 20:34:50.000000000","message":"Done","commit_id":"25764b457c3d3e84bc3e46345adb7d093551e441"}]}
