)]}'
{"cinder/manager.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a749bbc8635b76e9315f807d54c7a0f68220488f","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    __metaclass__ \u003d ManagerMeta"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    # Set RPC API version to 1.0 by default."},{"line_number":135,"context_line":"    RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def __init__(self, host\u003dNone, db_driver\u003dNone):"},{"line_number":138,"context_line":"        if not host:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FJ3o%3D","line":135,"updated":"2012-10-10 19:02:11.000000000","message":"This should be 1.0.  This should only be changed in cinder/scheduler/manager.py","commit_id":"ccfb27fb50b40b68abf84ebfd320300ca09d94d8"}],"cinder/scheduler/rpcapi.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a749bbc8635b76e9315f807d54c7a0f68220488f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        1.1 - Add create_volume() method"},{"line_number":35,"context_line":"    \u0027\u0027\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self):"},{"line_number":40,"context_line":"        super(SchedulerAPI, self).__init__(topic\u003dFLAGS.scheduler_topic,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FJ3w%3D","line":37,"updated":"2012-10-10 19:02:11.000000000","message":"This should be left at 1.0","commit_id":"ccfb27fb50b40b68abf84ebfd320300ca09d94d8"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a749bbc8635b76e9315f807d54c7a0f68220488f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                         topic\u003dtopic,"},{"line_number":47,"context_line":"                         volume_id\u003dvolume_id,"},{"line_number":48,"context_line":"                         snapshot_id\u003dsnapshot_id,"},{"line_number":49,"context_line":"                         image_id\u003dimage_id))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def update_service_capabilities(self, ctxt, service_name, host,"},{"line_number":52,"context_line":"            capabilities):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FJ3s%3D","line":49,"updated":"2012-10-10 19:02:11.000000000","message":"version\u003d\u00271.1\u0027 should be added here","commit_id":"ccfb27fb50b40b68abf84ebfd320300ca09d94d8"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"88e6db619d71bbec0308244ae76e0620bd77fed7","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                                    volume_id\u003dvolume_id,"},{"line_number":48,"context_line":"                                    snapshot_id\u003dsnapshot_id,"},{"line_number":49,"context_line":"                                    image_id\u003dimage_id),"},{"line_number":50,"context_line":"                         topic\u003dNone,"},{"line_number":51,"context_line":"                         version\u003d\u00271.1\u0027)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def update_service_capabilities(self, ctxt, service_name, host,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALn%2F%2FzaY%3D","line":50,"updated":"2012-11-05 18:57:14.000000000","message":"You could leave topic\u003dNone out, but it\u0027s not a problem","commit_id":"6602bbfc0854c4b014100c00e1b821f8a3190255"}],"cinder/tests/scheduler/test_rpcapi.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"c0da548fbaa1f3e79426577fd35e0fe9b246e499","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            version \u003d \u00271.1\u0027"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            version \u003d rpcapi.RPC_API_VERSION"},{"line_number":49,"context_line":"        expected_msg[\u0027version\u0027] \u003d version"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.fake_args \u003d None"},{"line_number":52,"context_line":"        self.fake_kwargs \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2Fzj8%3D","line":49,"updated":"2012-11-05 17:40:30.000000000","message":"This is fine, but take a look at how the rpc API tests in nova handle this.  It\u0027s just passed as an argument to this function.  I think that\u0027s a bit easier once it gets more complicated than just one function that\u0027s different.  It also localizes the changes you need to make to just the test function.","commit_id":"11c7169f7c87f1134949526ee95aefea9c35e744"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"73aaef479ed4020942d169e829c08653b31c82a1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            version \u003d \u00271.1\u0027"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            version \u003d rpcapi.RPC_API_VERSION"},{"line_number":49,"context_line":"        expected_msg[\u0027version\u0027] \u003d version"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.fake_args \u003d None"},{"line_number":52,"context_line":"        self.fake_kwargs \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2FzfY%3D","line":49,"in_reply_to":"AAAALn%2F%2Fzj8%3D","updated":"2012-11-05 18:09:41.000000000","message":"Done","commit_id":"11c7169f7c87f1134949526ee95aefea9c35e744"}],"cinder/volume/api.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3cf5bd98a7109ce28e84ad7db2027740be4496e6","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            driver.cast_to_volume_host(context, host, \u0027create_volume\u0027,"},{"line_number":201,"context_line":"                                       volume_id\u003dvolume_id,"},{"line_number":202,"context_line":"                                       snapshot_id\u003dsnapshot_id,"},{"line_number":203,"context_line":"                                       image_id\u003dimage_id)"},{"line_number":204,"context_line":"        else:"},{"line_number":205,"context_line":"            self.scheduler_rpcapi.create_volume(context,"},{"line_number":206,"context_line":"                FLAGS.volume_topic,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F1Kk%3D","line":203,"updated":"2012-11-02 17:52:57.000000000","message":"importing the scheduler\u0027s driver and using it directly here seems weird?  Maybe all of this logic should be part of the scheduler_rpcapi, since that\u0027s defining how messages are routed to the scheduler is it too much of a stretch if that code decides this create message shouldn\u0027t go to the scheduler at all?","commit_id":"916f445a556e3aa57871e4b94ed4fa1d9a7fc564"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"a09a1bdaf29093bfb2cc7ee4620d6c3914e917af","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            driver.cast_to_volume_host(context, host, \u0027create_volume\u0027,"},{"line_number":201,"context_line":"                                       volume_id\u003dvolume_id,"},{"line_number":202,"context_line":"                                       snapshot_id\u003dsnapshot_id,"},{"line_number":203,"context_line":"                                       image_id\u003dimage_id)"},{"line_number":204,"context_line":"        else:"},{"line_number":205,"context_line":"            self.scheduler_rpcapi.create_volume(context,"},{"line_number":206,"context_line":"                FLAGS.volume_topic,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F0d8%3D","line":203,"in_reply_to":"AAAALn%2F%2F0ic%3D","updated":"2012-11-03 19:25:42.000000000","message":"Done","commit_id":"916f445a556e3aa57871e4b94ed4fa1d9a7fc564"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"9739934993ceb102f354ed594767bd73272c6feb","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            driver.cast_to_volume_host(context, host, \u0027create_volume\u0027,"},{"line_number":201,"context_line":"                                       volume_id\u003dvolume_id,"},{"line_number":202,"context_line":"                                       snapshot_id\u003dsnapshot_id,"},{"line_number":203,"context_line":"                                       image_id\u003dimage_id)"},{"line_number":204,"context_line":"        else:"},{"line_number":205,"context_line":"            self.scheduler_rpcapi.create_volume(context,"},{"line_number":206,"context_line":"                FLAGS.volume_topic,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F0ig%3D","line":203,"in_reply_to":"AAAALn%2F%2F0oc%3D","updated":"2012-11-03 14:19:11.000000000","message":"Great, thanks!  I\u0027ll make sure that comes off of my todo list, then.  :-)  Add me to the review when you post it and I\u0027ll check it over.","commit_id":"916f445a556e3aa57871e4b94ed4fa1d9a7fc564"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"9739934993ceb102f354ed594767bd73272c6feb","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            driver.cast_to_volume_host(context, host, \u0027create_volume\u0027,"},{"line_number":201,"context_line":"                                       volume_id\u003dvolume_id,"},{"line_number":202,"context_line":"                                       snapshot_id\u003dsnapshot_id,"},{"line_number":203,"context_line":"                                       image_id\u003dimage_id)"},{"line_number":204,"context_line":"        else:"},{"line_number":205,"context_line":"            self.scheduler_rpcapi.create_volume(context,"},{"line_number":206,"context_line":"                FLAGS.volume_topic,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F0ic%3D","line":203,"in_reply_to":"AAAALn%2F%2F0og%3D","updated":"2012-11-03 14:19:11.000000000","message":"Where the logic lives in part of the issue.  The most immediate problem is this code implementing scheduler.driver.  That just seems wrong (once clay pointed it out).\n\nMy recommendation is to leave it back as a raw rpc.cast for now.","commit_id":"916f445a556e3aa57871e4b94ed4fa1d9a7fc564"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9cfe4160d986d286f441423b1bda166bead2630a","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            driver.cast_to_volume_host(context, host, \u0027create_volume\u0027,"},{"line_number":201,"context_line":"                                       volume_id\u003dvolume_id,"},{"line_number":202,"context_line":"                                       snapshot_id\u003dsnapshot_id,"},{"line_number":203,"context_line":"                                       image_id\u003dimage_id)"},{"line_number":204,"context_line":"        else:"},{"line_number":205,"context_line":"            self.scheduler_rpcapi.create_volume(context,"},{"line_number":206,"context_line":"                FLAGS.volume_topic,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F0oc%3D","line":203,"in_reply_to":"AAAALn%2F%2F1JU%3D","updated":"2012-11-03 02:13:57.000000000","message":"Yes, I\u0027m going to summit volume rpc API patch (as mentioned to you during summit), but in a separate patch.","commit_id":"916f445a556e3aa57871e4b94ed4fa1d9a7fc564"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9cfe4160d986d286f441423b1bda166bead2630a","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            driver.cast_to_volume_host(context, host, \u0027create_volume\u0027,"},{"line_number":201,"context_line":"                                       volume_id\u003dvolume_id,"},{"line_number":202,"context_line":"                                       snapshot_id\u003dsnapshot_id,"},{"line_number":203,"context_line":"                                       image_id\u003dimage_id)"},{"line_number":204,"context_line":"        else:"},{"line_number":205,"context_line":"            self.scheduler_rpcapi.create_volume(context,"},{"line_number":206,"context_line":"                FLAGS.volume_topic,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F0og%3D","line":203,"in_reply_to":"AAAALn%2F%2F1Kk%3D","updated":"2012-11-03 02:13:57.000000000","message":"I agree this logic should be implemented in scheduler instead of bypassing it here.  Will submit another patch to address that.","commit_id":"916f445a556e3aa57871e4b94ed4fa1d9a7fc564"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"50250929ff3170ccb704599e03f456d817b2cb42","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            driver.cast_to_volume_host(context, host, \u0027create_volume\u0027,"},{"line_number":201,"context_line":"                                       volume_id\u003dvolume_id,"},{"line_number":202,"context_line":"                                       snapshot_id\u003dsnapshot_id,"},{"line_number":203,"context_line":"                                       image_id\u003dimage_id)"},{"line_number":204,"context_line":"        else:"},{"line_number":205,"context_line":"            self.scheduler_rpcapi.create_volume(context,"},{"line_number":206,"context_line":"                FLAGS.volume_topic,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F1JU%3D","line":203,"in_reply_to":"AAAALn%2F%2F1Kk%3D","updated":"2012-11-02 17:56:30.000000000","message":"I would agree that this should really be an rpcapi call.  Really, I think it needs to be a part of the volume rpcapi, but that doesn\u0027t exist yet.  I would actually leave it how it was for now instead of digging into scheduler driver code here, even if it looks a little nicer.  The real cleanup for this is versioning the volume rpc API and having a client side rpcapi module for it.","commit_id":"916f445a556e3aa57871e4b94ed4fa1d9a7fc564"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"c0da548fbaa1f3e79426577fd35e0fe9b246e499","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def create(self, context, size, name, description, snapshot\u003dNone,"},{"line_number":87,"context_line":"                image_id\u003dNone, volume_type\u003dNone, metadata\u003dNone,"},{"line_number":88,"context_line":"                availability_zone\u003dNone, scheduler_hints\u003dNone):"},{"line_number":89,"context_line":"        check_policy(context, \u0027create\u0027)"},{"line_number":90,"context_line":"        if snapshot is not None:"},{"line_number":91,"context_line":"            if snapshot[\u0027status\u0027] !\u003d \"available\":"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2Fzjo%3D","line":88,"updated":"2012-11-05 17:40:30.000000000","message":"scheduler_hints is unused here, why add it?","commit_id":"11c7169f7c87f1134949526ee95aefea9c35e744"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"73aaef479ed4020942d169e829c08653b31c82a1","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def create(self, context, size, name, description, snapshot\u003dNone,"},{"line_number":87,"context_line":"                image_id\u003dNone, volume_type\u003dNone, metadata\u003dNone,"},{"line_number":88,"context_line":"                availability_zone\u003dNone, scheduler_hints\u003dNone):"},{"line_number":89,"context_line":"        check_policy(context, \u0027create\u0027)"},{"line_number":90,"context_line":"        if snapshot is not None:"},{"line_number":91,"context_line":"            if snapshot[\u0027status\u0027] !\u003d \"available\":"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2FzfQ%3D","line":88,"in_reply_to":"AAAALn%2F%2Fzjo%3D","updated":"2012-11-05 18:09:41.000000000","message":"Done","commit_id":"11c7169f7c87f1134949526ee95aefea9c35e744"}]}
