)]}'
{"barbican/model/models.py":[{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"2ce1c2eacffa28b277e37e450f1c609461eaa143","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                self.sub_status_message \u003d parsed_request.get("},{"line_number":522,"context_line":"                    \u0027sub_status_message\u0027)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def set_error_reason_safely(self, error_reason_raw):"},{"line_number":525,"context_line":"        self.error_reason \u003d error_reason_raw[:ERROR_REASON_LENGTH]"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"    def set_sub_status_safely(self, sub_status_raw):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_1ef3b473","line":524,"updated":"2015-03-20 08:26:17.000000000","message":"What does \"safely\" imply here? Perhaps clarification with some proper pydoc would help clarify this.","commit_id":"e5234c70ea5b5fff88e1295f033f40aa58fe600f"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2dba0425445c367c501c8db371946aee015a9f53","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                self.sub_status_message \u003d parsed_request.get("},{"line_number":522,"context_line":"                    \u0027sub_status_message\u0027)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def set_error_reason_safely(self, error_reason_raw):"},{"line_number":525,"context_line":"        self.error_reason \u003d error_reason_raw[:ERROR_REASON_LENGTH]"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"    def set_sub_status_safely(self, sub_status_raw):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_da54a855","line":524,"in_reply_to":"9a80dd14_1ef3b473","updated":"2015-03-20 21:45:20.000000000","message":"Will add pydoc for this.","commit_id":"e5234c70ea5b5fff88e1295f033f40aa58fe600f"}],"barbican/queue/server.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"1959a0395dcb9ca0ac52c9ac294b733960c95e04","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    @transactional"},{"line_number":121,"context_line":"    def update_order(self, context, order_id, project_id, updated_meta):"},{"line_number":122,"context_line":"        \"\"\"Update Order.\"\"\""},{"line_number":123,"context_line":"        resources.UpdateOrder().process(order_id, project_id, updated_meta)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class TaskServer(Tasks, service.Service):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_57ed5cef","line":123,"updated":"2015-03-18 21:30:33.000000000","message":"would love to see a debug msg here","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2f0cfa485e79863d06230e2a773c7f729ef7f8e7","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    @transactional"},{"line_number":121,"context_line":"    def update_order(self, context, order_id, project_id, updated_meta):"},{"line_number":122,"context_line":"        \"\"\"Update Order.\"\"\""},{"line_number":123,"context_line":"        resources.UpdateOrder().process(order_id, project_id, updated_meta)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class TaskServer(Tasks, service.Service):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_6bc0b92b","line":123,"in_reply_to":"9a80dd14_57ed5cef","updated":"2015-03-18 22:57:33.000000000","message":"Sounds good.","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"}],"barbican/tasks/keystone_consumer.py":[{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"8045b8fffc5cbc403922fa5de69b6a30fad89959","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            }"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":112,"context_line":"                       resource_type\u003dNone,"},{"line_number":113,"context_line":"                       operation_type\u003dNone):"},{"line_number":114,"context_line":"        LOG.info("}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_b64d0ac7","line":111,"updated":"2015-02-27 16:40:25.000000000","message":"Where is result being used?","commit_id":"38cc9de92975b1d57a7e56904d886f59509f566d"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"9d986d4e7354b225cdc84ee83080f6b87c3f6f7d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            }"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":112,"context_line":"                       resource_type\u003dNone,"},{"line_number":113,"context_line":"                       operation_type\u003dNone):"},{"line_number":114,"context_line":"        LOG.info("}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_f3994920","line":111,"in_reply_to":"ba7be1f8_b64d0ac7","updated":"2015-02-27 20:13:41.000000000","message":"The result is part of the BaseTask contract now, and it can be ignored for non-long-running tasks like the ones handled here. Should I beef up the docstring in the BaseTask class for this method though?","commit_id":"38cc9de92975b1d57a7e56904d886f59509f566d"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"8045b8fffc5cbc403922fa5de69b6a30fad89959","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":112,"context_line":"                       resource_type\u003dNone,"},{"line_number":113,"context_line":"                       operation_type\u003dNone):"},{"line_number":114,"context_line":"        LOG.info("},{"line_number":115,"context_line":"            u._LI("},{"line_number":116,"context_line":"                \u0027Successfully handled Keystone event, \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_16cc1635","line":113,"updated":"2015-02-27 16:40:25.000000000","message":"Does this fit on the previous line?","commit_id":"38cc9de92975b1d57a7e56904d886f59509f566d"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"9d986d4e7354b225cdc84ee83080f6b87c3f6f7d","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":112,"context_line":"                       resource_type\u003dNone,"},{"line_number":113,"context_line":"                       operation_type\u003dNone):"},{"line_number":114,"context_line":"        LOG.info("},{"line_number":115,"context_line":"            u._LI("},{"line_number":116,"context_line":"                \u0027Successfully handled Keystone event, \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_13b6dd8a","line":113,"in_reply_to":"ba7be1f8_16cc1635","updated":"2015-02-27 20:13:41.000000000","message":"I\u0027ll clean that up.","commit_id":"38cc9de92975b1d57a7e56904d886f59509f566d"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"1959a0395dcb9ca0ac52c9ac294b733960c95e04","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":90,"context_line":"                       resource_type\u003dNone, operation_type\u003dNone):"},{"line_number":91,"context_line":"        LOG.info("},{"line_number":92,"context_line":"            u._LI("},{"line_number":93,"context_line":"                \u0027Successfully handled Keystone event, \u0027"},{"line_number":94,"context_line":"                \u0027project_id\u003d%(project_id)s, event resource\u003d%(resource)s, \u0027"},{"line_number":95,"context_line":"                \u0027event operation\u003d%(operation)s\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_17a3e49e","line":92,"updated":"2015-03-18 21:30:33.000000000","message":"not logging result?  sensitive data?","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":1091,"name":"Arun Kant","email":"arukant@cisco.com","username":"arunkant-uws"},"change_message_id":"69a0e9e816bdb750238b15d5386529fbaade0bd2","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":90,"context_line":"                       resource_type\u003dNone, operation_type\u003dNone):"},{"line_number":91,"context_line":"        LOG.info("},{"line_number":92,"context_line":"            u._LI("},{"line_number":93,"context_line":"                \u0027Successfully handled Keystone event, \u0027"},{"line_number":94,"context_line":"                \u0027project_id\u003d%(project_id)s, event resource\u003d%(resource)s, \u0027"},{"line_number":95,"context_line":"                \u0027event operation\u003d%(operation)s\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_7aa32543","line":92,"in_reply_to":"9a80dd14_17a3e49e","updated":"2015-03-18 21:53:01.000000000","message":"I think may be because there is no result returned in this task execution in case of success. So its None.","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2f0cfa485e79863d06230e2a773c7f729ef7f8e7","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":90,"context_line":"                       resource_type\u003dNone, operation_type\u003dNone):"},{"line_number":91,"context_line":"        LOG.info("},{"line_number":92,"context_line":"            u._LI("},{"line_number":93,"context_line":"                \u0027Successfully handled Keystone event, \u0027"},{"line_number":94,"context_line":"                \u0027project_id\u003d%(project_id)s, event resource\u003d%(resource)s, \u0027"},{"line_number":95,"context_line":"                \u0027event operation\u003d%(operation)s\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_eb082982","line":92,"in_reply_to":"9a80dd14_7aa32543","updated":"2015-03-18 22:57:33.000000000","message":"The result is only pertinent for long running tasks, otherwise it can be ignored.","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"2ce1c2eacffa28b277e37e450f1c609461eaa143","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":90,"context_line":"                       resource_type\u003dNone, operation_type\u003dNone):"},{"line_number":91,"context_line":"        # Note: The processing \u0027result\u0027 argument can be ignored as \u0027result\u0027"},{"line_number":92,"context_line":"        # only pertains to long-running tasks."},{"line_number":93,"context_line":"        LOG.info("},{"line_number":94,"context_line":"            u._LI("},{"line_number":95,"context_line":"                \u0027Successfully handled Keystone event, \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_41c8f1a7","line":92,"updated":"2015-03-20 08:26:17.000000000","message":"probably a pydoc giving an actual description of each of these paremeters would be better.","commit_id":"e5234c70ea5b5fff88e1295f033f40aa58fe600f"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2dba0425445c367c501c8db371946aee015a9f53","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def handle_success(self, project, result, project_id\u003dNone,"},{"line_number":90,"context_line":"                       resource_type\u003dNone, operation_type\u003dNone):"},{"line_number":91,"context_line":"        # Note: The processing \u0027result\u0027 argument can be ignored as \u0027result\u0027"},{"line_number":92,"context_line":"        # only pertains to long-running tasks."},{"line_number":93,"context_line":"        LOG.info("},{"line_number":94,"context_line":"            u._LI("},{"line_number":95,"context_line":"                \u0027Successfully handled Keystone event, \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_3abce4b4","line":92,"in_reply_to":"9a80dd14_41c8f1a7","updated":"2015-03-20 21:45:20.000000000","message":"This is a concrete impl of an abstract method, so we haven\u0027t been carrying over the pydocs for these. I added this because Steve was concerned that the result was not logged below.","commit_id":"e5234c70ea5b5fff88e1295f033f40aa58fe600f"}],"barbican/tasks/resources.py":[{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"8045b8fffc5cbc403922fa5de69b6a30fad89959","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        \"\"\""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"class OrderTaskHelper(object):"},{"line_number":197,"context_line":"    \"\"\"Supports order-related BaseTask operations.\"\"\""},{"line_number":198,"context_line":"    def __init__(self, repos):"},{"line_number":199,"context_line":"        self.repos \u003d repos"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_7940e535","line":196,"updated":"2015-02-27 16:40:25.000000000","message":"Doesn\u0027t this need to inherit from BaseTask?","commit_id":"38cc9de92975b1d57a7e56904d886f59509f566d"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"9d986d4e7354b225cdc84ee83080f6b87c3f6f7d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        \"\"\""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"class OrderTaskHelper(object):"},{"line_number":197,"context_line":"    \"\"\"Supports order-related BaseTask operations.\"\"\""},{"line_number":198,"context_line":"    def __init__(self, repos):"},{"line_number":199,"context_line":"        self.repos \u003d repos"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_b3735114","line":196,"in_reply_to":"ba7be1f8_7940e535","updated":"2015-02-27 20:13:41.000000000","message":"This class is actually a helper class, delegated to by the BaseTask sub-classes. I originally had this as a mixin to these sub-classes, but the \u0027repos\u0027 dependency, not created in this mixin, makes that awkward especially for unit testing. Mixins/multiple-inheritance is a little tricky in terms of initialization as well, so a simpler delegate approach seems cleaner. Should I amplify the fact that this is a delegate class in the docstring?","commit_id":"38cc9de92975b1d57a7e56904d886f59509f566d"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"ea9f44d3b6e30c7bf2213634654312bc8b09711c","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        :param args: List of arguments passed in from the client."},{"line_number":158,"context_line":"        :param kwargs: Dict of arguments passed in from the client."},{"line_number":159,"context_line":"        :return: None"},{"line_number":160,"context_line":"        \"\"\""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_43ae6c99","line":159,"updated":"2015-03-13 04:10:01.000000000","message":"This is no longer a None return","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"919ad2aa7a983362a0d62649c5a6356e6617a89e","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        :param args: List of arguments passed in from the client."},{"line_number":158,"context_line":"        :param kwargs: Dict of arguments passed in from the client."},{"line_number":159,"context_line":"        :return: None"},{"line_number":160,"context_line":"        \"\"\""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_5ff6f4d7","line":159,"in_reply_to":"9a80dd14_43ae6c99","updated":"2015-03-16 02:29:32.000000000","message":"Good catch, will fix shortly...","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"f251f4b641513e23a6c4591cef0036137d9e6099","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    common order-related operations."},{"line_number":201,"context_line":"    \"\"\""},{"line_number":202,"context_line":"    def __init__(self, repos):"},{"line_number":203,"context_line":"        self.repos \u003d repos"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def retrieve_entity(self, order_id, external_project_id, *args, **kwargs):"},{"line_number":206,"context_line":"        \"\"\"Retrieve an order entity by its PK ID.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_1f3f45b5","line":203,"updated":"2015-03-13 17:05:12.000000000","message":"Do you want to take in repos or just call the repo factories?","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"919ad2aa7a983362a0d62649c5a6356e6617a89e","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    common order-related operations."},{"line_number":201,"context_line":"    \"\"\""},{"line_number":202,"context_line":"    def __init__(self, repos):"},{"line_number":203,"context_line":"        self.repos \u003d repos"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def retrieve_entity(self, order_id, external_project_id, *args, **kwargs):"},{"line_number":206,"context_line":"        \"\"\"Retrieve an order entity by its PK ID.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_9ffcecb6","line":203,"in_reply_to":"9a80dd14_1f3f45b5","updated":"2015-03-16 02:29:32.000000000","message":"This CR predates Oz\u0027 refactor work...will update shortly...","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"838974b82483211e8357237817886bc7eb639df1","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        order.status \u003d models.States.ERROR"},{"line_number":215,"context_line":"        order.error_status_code \u003d status"},{"line_number":216,"context_line":"        order.error_reason \u003d message"},{"line_number":217,"context_line":"        self.repos.order_repo.save(order)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def handle_success(self, order, result, *args, **kwargs):"},{"line_number":220,"context_line":"        \"\"\"Handle if the order entity is terminated or else long running."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_0c0cfe93","line":217,"updated":"2015-02-27 21:22:59.000000000","message":"Should this also log an error message?","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"861ede2ed41ccfd26a9a1914fc79ad3618f31c98","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        order.status \u003d models.States.ERROR"},{"line_number":215,"context_line":"        order.error_status_code \u003d status"},{"line_number":216,"context_line":"        order.error_reason \u003d message"},{"line_number":217,"context_line":"        self.repos.order_repo.save(order)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def handle_success(self, order, result, *args, **kwargs):"},{"line_number":220,"context_line":"        \"\"\"Handle if the order entity is terminated or else long running."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_87da8715","line":217,"in_reply_to":"ba7be1f8_0c0cfe93","updated":"2015-02-27 21:49:36.000000000","message":"The root-cause exception is logged up in line #121 (#73 old) by the BaseTask logic. We haven\u0027t been logging the status/message result of line #126 as that was the \u0027cleaned up\u0027 equivalents to the root exception, meant for later client consumption of the order record. Do you think we should add that info though?","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"4ce756e649f6e32475a9f192b3e4f1dd597d90be","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        order.status \u003d models.States.ERROR"},{"line_number":215,"context_line":"        order.error_status_code \u003d status"},{"line_number":216,"context_line":"        order.error_reason \u003d message"},{"line_number":217,"context_line":"        self.repos.order_repo.save(order)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def handle_success(self, order, result, *args, **kwargs):"},{"line_number":220,"context_line":"        \"\"\"Handle if the order entity is terminated or else long running."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_a2721947","line":217,"in_reply_to":"ba7be1f8_87da8715","updated":"2015-02-27 22:22:02.000000000","message":"Ah, no, it\u0027s ok.  I just thought the original code logged something here.","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"f251f4b641513e23a6c4591cef0036137d9e6099","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        if sub_status:"},{"line_number":239,"context_line":"            order.sub_status \u003d sub_status["},{"line_number":240,"context_line":"                :models.SUB_STATUS_LENGTH"},{"line_number":241,"context_line":"            ]"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        if sub_status_message:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_5fe1bd28","line":240,"updated":"2015-03-13 17:05:12.000000000","message":"You could add a setter to order model. Then code should call that to set the value. Then other modules do not need to reference SUB_STATUS_LENGTH. Just a thought. It may not be very Python-like. I guess I like encapsulation.","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"919ad2aa7a983362a0d62649c5a6356e6617a89e","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        if sub_status:"},{"line_number":239,"context_line":"            order.sub_status \u003d sub_status["},{"line_number":240,"context_line":"                :models.SUB_STATUS_LENGTH"},{"line_number":241,"context_line":"            ]"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        if sub_status_message:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_df3104a3","line":240,"in_reply_to":"9a80dd14_5fe1bd28","updated":"2015-03-16 02:29:32.000000000","message":"That works...I\u0027ll add a set_sub_status_safely() sort of method.","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"1959a0395dcb9ca0ac52c9ac294b733960c95e04","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    def __init__(self, status\u003du._(\u0027Unknown\u0027), status_message\u003du._(\u0027Unknown\u0027),"},{"line_number":46,"context_line":"                 retry_method\u003dNone, retry_msec\u003dRETRY_MSEC):"},{"line_number":47,"context_line":"        \"\"\"Creates a new ResultDTO."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        :param status: Status for cert order"},{"line_number":50,"context_line":"        :param status_message: Message to explain status type."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_9731940d","line":47,"updated":"2015-03-18 21:30:33.000000000","message":"you mean a new FollowOnProcessingStatusDTO?","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2f0cfa485e79863d06230e2a773c7f729ef7f8e7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    def __init__(self, status\u003du._(\u0027Unknown\u0027), status_message\u003du._(\u0027Unknown\u0027),"},{"line_number":46,"context_line":"                 retry_method\u003dNone, retry_msec\u003dRETRY_MSEC):"},{"line_number":47,"context_line":"        \"\"\"Creates a new ResultDTO."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        :param status: Status for cert order"},{"line_number":50,"context_line":"        :param status_message: Message to explain status type."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_abb631da","line":47,"in_reply_to":"9a80dd14_9731940d","updated":"2015-03-18 22:57:33.000000000","message":"Ah yes! Will fix.","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"1959a0395dcb9ca0ac52c9ac294b733960c95e04","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        :param status: Status for cert order"},{"line_number":50,"context_line":"        :param status_message: Message to explain status type."},{"line_number":51,"context_line":"        :param retry_msec: Number of milliseconds to wait for retry"},{"line_number":52,"context_line":"        :param retry_method: Method to retry"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        self.status \u003d status"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_3a10cd4d","line":51,"updated":"2015-03-18 21:30:33.000000000","message":"can you swap lines 51 and 52 so the order in the docstring matches the order in which they are declared?","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2f0cfa485e79863d06230e2a773c7f729ef7f8e7","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        :param status: Status for cert order"},{"line_number":50,"context_line":"        :param status_message: Message to explain status type."},{"line_number":51,"context_line":"        :param retry_msec: Number of milliseconds to wait for retry"},{"line_number":52,"context_line":"        :param retry_method: Method to retry"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        self.status \u003d status"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_2ba3219f","line":51,"in_reply_to":"9a80dd14_3a10cd4d","updated":"2015-03-18 22:57:33.000000000","message":"Good spot, will do.","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"1959a0395dcb9ca0ac52c9ac294b733960c95e04","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        This method should not be overridden by sub-classes. This method"},{"line_number":80,"context_line":"        delegates to a inner template method to perform task orchestration."},{"line_number":81,"context_line":"        The delegate method should handle all exceptions raised during task"},{"line_number":82,"context_line":"        processing. Exceptions that do make to this level are simply logged"},{"line_number":83,"context_line":"        as they represent programming logic errors that should eventually be"},{"line_number":84,"context_line":"        fixed."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_ba52fd10","line":82,"updated":"2015-03-18 21:30:33.000000000","message":"looks like we re-raise a lot in _process - is this statement accurate?  Are those only possible from programming logic errors?","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"1959a0395dcb9ca0ac52c9ac294b733960c95e04","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            self._process(*args, **kwargs)"},{"line_number":92,"context_line":"        except Exception:"},{"line_number":93,"context_line":"            LOG.exception(u._LE(\"\u003e\u003e\u003e\u003e\u003e Task exception seen while \""},{"line_number":94,"context_line":"                          \"processing task: \u0027%s\u0027.\"), self.get_name())"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_b79a1812","line":92,"updated":"2015-03-18 21:30:33.000000000","message":"looks like we log the exceptions below (in the template method) then log again here.  Do we need that duplication since the template method and this one are both \"final\"?","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2f0cfa485e79863d06230e2a773c7f729ef7f8e7","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            self._process(*args, **kwargs)"},{"line_number":92,"context_line":"        except Exception:"},{"line_number":93,"context_line":"            LOG.exception(u._LE(\"\u003e\u003e\u003e\u003e\u003e Task exception seen while \""},{"line_number":94,"context_line":"                          \"processing task: \u0027%s\u0027.\"), self.get_name())"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_ab8f1122","line":92,"in_reply_to":"9a80dd14_b79a1812","updated":"2015-03-18 22:57:33.000000000","message":"This is the final exception log message...it is possible to get here without hitting some of those other logged flow points in _process()....is that what you are referring too though?","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"1959a0395dcb9ca0ac52c9ac294b733960c95e04","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            self._process(*args, **kwargs)"},{"line_number":92,"context_line":"        except Exception:"},{"line_number":93,"context_line":"            LOG.exception(u._LE(\"\u003e\u003e\u003e\u003e\u003e Task exception seen while \""},{"line_number":94,"context_line":"                          \"processing task: \u0027%s\u0027.\"), self.get_name())"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _process(self, *args, **kwargs):"},{"line_number":97,"context_line":"        \"\"\"A template method for all asynchronous tasks."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_d7694cf9","line":94,"updated":"2015-03-18 21:30:33.000000000","message":"if we do leave this one here it might be nice to log the actual exception.","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2f0cfa485e79863d06230e2a773c7f729ef7f8e7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            self._process(*args, **kwargs)"},{"line_number":92,"context_line":"        except Exception:"},{"line_number":93,"context_line":"            LOG.exception(u._LE(\"\u003e\u003e\u003e\u003e\u003e Task exception seen while \""},{"line_number":94,"context_line":"                          \"processing task: \u0027%s\u0027.\"), self.get_name())"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _process(self, *args, **kwargs):"},{"line_number":97,"context_line":"        \"\"\"A template method for all asynchronous tasks."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_7ad405e9","line":94,"in_reply_to":"9a80dd14_d7694cf9","updated":"2015-03-18 22:57:33.000000000","message":"LOG.exception will naturally log the stack trace of the exception for you.","commit_id":"bfb2f84e3919c90119daea725e580d41e8090224"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"2ce1c2eacffa28b277e37e450f1c609461eaa143","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    common order-related operations."},{"line_number":183,"context_line":"    \"\"\""},{"line_number":184,"context_line":"    def __init__(self):"},{"line_number":185,"context_line":"        self.order_repo \u003d rep.get_order_repository()"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def retrieve_entity(self, order_id, external_project_id, *args, **kwargs):"},{"line_number":188,"context_line":"        \"\"\"Retrieve an order entity by its PK ID.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_e14d653c","line":185,"updated":"2015-03-20 08:26:17.000000000","message":"maybe prepending an underscore (self._order_repo) would be appropriate.","commit_id":"e5234c70ea5b5fff88e1295f033f40aa58fe600f"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"2dba0425445c367c501c8db371946aee015a9f53","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    common order-related operations."},{"line_number":183,"context_line":"    \"\"\""},{"line_number":184,"context_line":"    def __init__(self):"},{"line_number":185,"context_line":"        self.order_repo \u003d rep.get_order_repository()"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def retrieve_entity(self, order_id, external_project_id, *args, **kwargs):"},{"line_number":188,"context_line":"        \"\"\"Retrieve an order entity by its PK ID.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_7a165ca8","line":185,"in_reply_to":"9a80dd14_e14d653c","updated":"2015-03-20 21:45:20.000000000","message":"Well, this is a standalone class, so instance values within it aren\u0027t typically marked as private. This overall class should be private though, so will add an _ there.","commit_id":"e5234c70ea5b5fff88e1295f033f40aa58fe600f"}],"barbican/tests/tasks/test_resources.py":[{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"f251f4b641513e23a6c4591cef0036137d9e6099","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            def get(self, entity_id\u003dNone, external_project_id\u003dNone):"},{"line_number":94,"context_line":"                self.entity_id \u003d entity_id"},{"line_number":95,"context_line":"                self.external_project_id \u003d external_project_id"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            def save(self, order_model):"},{"line_number":98,"context_line":"                self.order_model \u003d order_model"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_7fb761d8","line":95,"updated":"2015-03-13 17:05:12.000000000","message":"Why not use mock objects for this? You can test with call_args() to verify that the correct values were passed to the OrderRepo.\n\nInstead of passing repos to Helper you could have the helper just use the repository module to get whatever repos it needs. Then in the test case you can patch that call to return the mock object. I have seen that pattern in other test cases.","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"919ad2aa7a983362a0d62649c5a6356e6617a89e","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            def get(self, entity_id\u003dNone, external_project_id\u003dNone):"},{"line_number":94,"context_line":"                self.entity_id \u003d entity_id"},{"line_number":95,"context_line":"                self.external_project_id \u003d external_project_id"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            def save(self, order_model):"},{"line_number":98,"context_line":"                self.order_model \u003d order_model"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_5fcb5471","line":95,"in_reply_to":"9a80dd14_7fb761d8","updated":"2015-03-16 02:29:32.000000000","message":"Folks on our team have pointed out that mock objects are a bit dangerous to play with, as they can mask breakages due to method name changes and so forth. Since the interactions are lightweight here I figured using stubs instead would be ok.\n\nThat said I think jvrbanac and others are putting up CRs to clean up some of our unit tests. I\u0027d like to defer to making changes here (except for the passed in repos there). I\u0027ll rework this class a bit and resubmit shortly.","commit_id":"527c6082c99a8aa29647df1c13e3944f62bd6762"}]}
