)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"2e889a2579474c8b1f91a6a73ac6b59add6823f8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch allows the EC2 API to filter volumes based on size,"},{"line_number":10,"context_line":"volume type, and metadata."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Icd915f30be8120a9c3fde602be66b442e4460709"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAUH%2F%2Ff4M%3D","line":11,"updated":"2014-01-13 10:06:51.000000000","message":"Does this address a bug or a blueprint? If it addresses a bug you must add Closes-Bug: (bug #)","commit_id":"dac087f13fb403d4be2b82b6947d1669a336cb25"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"f199d7e55f20b433d795c6f35a4e2f702f490d11","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch allows the EC2 API to filter volumes based on size,"},{"line_number":10,"context_line":"volume type, and metadata."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Icd915f30be8120a9c3fde602be66b442e4460709"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAUH%2F%2FZNY%3D","line":11,"in_reply_to":"AAAAUH%2F%2Ff4M%3D","updated":"2014-01-14 08:41:58.000000000","message":"Done","commit_id":"dac087f13fb403d4be2b82b6947d1669a336cb25"}],"nova/api/ec2/cloud.py":[{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"d91dac02b78733c9f17748836b635240ffffe9c1","unresolved":false,"context_lines":[{"line_number":767,"context_line":"                \"output\": base64.b64encode(output)}"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    def describe_volumes(self, context, volume_id\u003dNone, **kwargs):"},{"line_number":770,"context_line":"        #TODO(rushiagr): if filter \u0027volume_type\u0027 is specified as string \u0027None\u0027,"},{"line_number":771,"context_line":"        # _all_ the volumes are returned. Quite contrastingly, when you specify"},{"line_number":772,"context_line":"        # when an API call is directly made to Cinder with URL "},{"line_number":773,"context_line":"        # \u0027/v2/tenant_id/detail?volume_type\u003dNone\u0027, Cinder lists all volumes"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9F58%3D","line":770,"updated":"2013-12-16 21:24:12.000000000","message":"This TODO is a big one as we\u0027ll be changing behavior if this lingers.  Do we have a bug open on this?","commit_id":"37cd96bb9b77fecbd74b7ed733ad0c553230a15b"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"222a8f1c2c4daa9bca2c9211d503d97ac3e93739","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        filters \u003d kwargs.get(\u0027filter\u0027)"},{"line_number":771,"context_line":"        search_opts \u003d ec2utils.search_opts_from_filters(filters)"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"        #NOTE(rushiagr): In Cinder, one can create a volume with"},{"line_number":774,"context_line":"        # volume type name as \u0027None\u0027, and subsequently query for all volumes"},{"line_number":775,"context_line":"        # with this volume type. While getting the information from EC2 API"},{"line_number":776,"context_line":"        # call, the string \u0027None\u0027 gets converted to None type of Python, which"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2FvWA%3D","line":773,"updated":"2014-01-02 16:22:58.000000000","message":"Add a blank space between # and NOTE","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"c446f3f9a696e73cee5a2309dd70033d5ab68f1d","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        filters \u003d kwargs.get(\u0027filter\u0027)"},{"line_number":771,"context_line":"        search_opts \u003d ec2utils.search_opts_from_filters(filters)"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"        #NOTE(rushiagr): In Cinder, one can create a volume with"},{"line_number":774,"context_line":"        # volume type name as \u0027None\u0027, and subsequently query for all volumes"},{"line_number":775,"context_line":"        # with this volume type. While getting the information from EC2 API"},{"line_number":776,"context_line":"        # call, the string \u0027None\u0027 gets converted to None type of Python, which"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F4qs%3D","line":773,"in_reply_to":"AAAAT3%2F%2FvWA%3D","updated":"2014-01-07 08:39:59.000000000","message":"Done","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"222a8f1c2c4daa9bca2c9211d503d97ac3e93739","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        # again"},{"line_number":780,"context_line":"        if filters:"},{"line_number":781,"context_line":"            for filter_dict in filters:"},{"line_number":782,"context_line":"                if (filter_dict[\u0027name\u0027] \u003d\u003d u\u0027volume-type\u0027 and"},{"line_number":783,"context_line":"                        filter_dict[\u0027value\u0027][\u00271\u0027] is None):"},{"line_number":784,"context_line":"                    search_opts[\u0027volume_type\u0027] \u003d u\u0027None\u0027"},{"line_number":785,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2FvVQ%3D","line":782,"updated":"2014-01-02 16:22:58.000000000","message":"Why do we need unicode flag?","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"c446f3f9a696e73cee5a2309dd70033d5ab68f1d","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        # again"},{"line_number":780,"context_line":"        if filters:"},{"line_number":781,"context_line":"            for filter_dict in filters:"},{"line_number":782,"context_line":"                if (filter_dict[\u0027name\u0027] \u003d\u003d u\u0027volume-type\u0027 and"},{"line_number":783,"context_line":"                        filter_dict[\u0027value\u0027][\u00271\u0027] is None):"},{"line_number":784,"context_line":"                    search_opts[\u0027volume_type\u0027] \u003d u\u0027None\u0027"},{"line_number":785,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F4qw%3D","line":782,"in_reply_to":"AAAAT3%2F%2FvVQ%3D","updated":"2014-01-07 08:39:59.000000000","message":"Done","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"222a8f1c2c4daa9bca2c9211d503d97ac3e93739","unresolved":false,"context_lines":[{"line_number":781,"context_line":"            for filter_dict in filters:"},{"line_number":782,"context_line":"                if (filter_dict[\u0027name\u0027] \u003d\u003d u\u0027volume-type\u0027 and"},{"line_number":783,"context_line":"                        filter_dict[\u0027value\u0027][\u00271\u0027] is None):"},{"line_number":784,"context_line":"                    search_opts[\u0027volume_type\u0027] \u003d u\u0027None\u0027"},{"line_number":785,"context_line":"                    break"},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"        if volume_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2FvVM%3D","line":784,"updated":"2014-01-02 16:22:58.000000000","message":"ditto","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"c446f3f9a696e73cee5a2309dd70033d5ab68f1d","unresolved":false,"context_lines":[{"line_number":781,"context_line":"            for filter_dict in filters:"},{"line_number":782,"context_line":"                if (filter_dict[\u0027name\u0027] \u003d\u003d u\u0027volume-type\u0027 and"},{"line_number":783,"context_line":"                        filter_dict[\u0027value\u0027][\u00271\u0027] is None):"},{"line_number":784,"context_line":"                    search_opts[\u0027volume_type\u0027] \u003d u\u0027None\u0027"},{"line_number":785,"context_line":"                    break"},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"        if volume_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F4q0%3D","line":784,"in_reply_to":"AAAAT3%2F%2FvVM%3D","updated":"2014-01-07 08:39:59.000000000","message":"Done","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"4fb7b89a2f1119c7357631522c8e0d29c57eb2c3","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        if filters:"},{"line_number":782,"context_line":"            for filter_dict in filters:"},{"line_number":783,"context_line":"                if (filter_dict[\u0027name\u0027] \u003d\u003d \u0027volume-type\u0027 and"},{"line_number":784,"context_line":"                        filter_dict[\u0027value\u0027][\u00271\u0027] is None):"},{"line_number":785,"context_line":"                    search_opts[\u0027volume_type\u0027] \u003d \u0027None\u0027"},{"line_number":786,"context_line":"                    break"},{"line_number":787,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Fh7s%3D","line":784,"updated":"2014-01-12 13:07:04.000000000","message":"Can you please give some explanation for why it is always filter_dict[\u0027value\u0027][\u00271\u0027]? I\u0027m not clear why you are using \u00271\u0027 here? Thanks","commit_id":"dac087f13fb403d4be2b82b6947d1669a336cb25"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f1c598507d98267f001cfdee84523aaad36670a","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        if filters:"},{"line_number":782,"context_line":"            for filter_dict in filters:"},{"line_number":783,"context_line":"                if (filter_dict[\u0027name\u0027] \u003d\u003d \u0027volume-type\u0027 and"},{"line_number":784,"context_line":"                        filter_dict[\u0027value\u0027][\u00271\u0027] is None):"},{"line_number":785,"context_line":"                    search_opts[\u0027volume_type\u0027] \u003d \u0027None\u0027"},{"line_number":786,"context_line":"                    break"},{"line_number":787,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Fgr0%3D","line":784,"in_reply_to":"AAAAUH%2F%2Fh7s%3D","updated":"2014-01-13 06:06:08.000000000","message":"From my recent patch:\n\n\n # NOTE(rushiagr): example of the above variable \u0027filters\u0027, for ref:\n # [{\u0027name\u0027: u\u0027resource-id\u0027, \u0027value\u0027: {\u00271\u0027: u\u0027vol-00000001\u0027}},\n # {\u0027name\u0027: u\u0027resource-type\u0027, \u0027value\u0027: {\u00271\u0027: u\u0027volume\u0027}},\n # {\u0027name\u0027: u\u0027value\u0027, \u0027value\u0027: {\u00271\u0027: u\u0027production\u0027, \u00272\u0027: u\u0027beta\u0027}},\n # {\u0027name\u0027: u\u0027key\u0027, \u0027value\u0027: {\u00271\u0027: u\u0027stack\u0027}}]","commit_id":"dac087f13fb403d4be2b82b6947d1669a336cb25"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"33c57cffc6ca13aa2de22705b4cce38b75a43441","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        # Cinder is limited to (one value per key)"},{"line_number":780,"context_line":"        search_opts \u003d ec2utils.search_opts_from_filters(filters)"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        if search_opts and \u0027volume_type\u0027 in search_opts.keys():"},{"line_number":783,"context_line":"            ec2_vol_type \u003d search_opts[\u0027volume_type\u0027]"},{"line_number":784,"context_line":"            if ec2_vol_type not in self.volume_type_mapping.keys():"},{"line_number":785,"context_line":"                raise exception.VolumeTypeNotSupported("}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2F00A%3D","line":782,"updated":"2014-02-24 16:18:02.000000000","message":"Should be:\nif search_opts and \u0027volume_type\u0027 in search_opts:","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dde3ebc71faa8d952c26cf68699d520cadc5d5c4","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        # Cinder is limited to (one value per key)"},{"line_number":780,"context_line":"        search_opts \u003d ec2utils.search_opts_from_filters(filters)"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        if search_opts and \u0027volume_type\u0027 in search_opts.keys():"},{"line_number":783,"context_line":"            ec2_vol_type \u003d search_opts[\u0027volume_type\u0027]"},{"line_number":784,"context_line":"            if ec2_vol_type not in self.volume_type_mapping.keys():"},{"line_number":785,"context_line":"                raise exception.VolumeTypeNotSupported("}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2Fm6I%3D","line":782,"in_reply_to":"AAAAU3%2F%2F00A%3D","updated":"2014-02-25 17:56:04.000000000","message":"works either way, but changed anyway","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"33c57cffc6ca13aa2de22705b4cce38b75a43441","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        search_opts \u003d ec2utils.search_opts_from_filters(filters)"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        if search_opts and \u0027volume_type\u0027 in search_opts.keys():"},{"line_number":783,"context_line":"            ec2_vol_type \u003d search_opts[\u0027volume_type\u0027]"},{"line_number":784,"context_line":"            if ec2_vol_type not in self.volume_type_mapping.keys():"},{"line_number":785,"context_line":"                raise exception.VolumeTypeNotSupported("},{"line_number":786,"context_line":"                    volume_type\u003dec2_vol_type)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2F0zk%3D","line":783,"updated":"2014-02-24 16:18:02.000000000","message":"Safe to use search_opts.get(key)","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dde3ebc71faa8d952c26cf68699d520cadc5d5c4","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        search_opts \u003d ec2utils.search_opts_from_filters(filters)"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        if search_opts and \u0027volume_type\u0027 in search_opts.keys():"},{"line_number":783,"context_line":"            ec2_vol_type \u003d search_opts[\u0027volume_type\u0027]"},{"line_number":784,"context_line":"            if ec2_vol_type not in self.volume_type_mapping.keys():"},{"line_number":785,"context_line":"                raise exception.VolumeTypeNotSupported("},{"line_number":786,"context_line":"                    volume_type\u003dec2_vol_type)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2Fm5Q%3D","line":783,"in_reply_to":"AAAAU3%2F%2F0zk%3D","updated":"2014-02-25 17:56:04.000000000","message":"volume_type are guaranteed to be present in search_opts in this loop. Leaving this unchanged","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"33c57cffc6ca13aa2de22705b4cce38b75a43441","unresolved":false,"context_lines":[{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        if search_opts and \u0027volume_type\u0027 in search_opts.keys():"},{"line_number":783,"context_line":"            ec2_vol_type \u003d search_opts[\u0027volume_type\u0027]"},{"line_number":784,"context_line":"            if ec2_vol_type not in self.volume_type_mapping.keys():"},{"line_number":785,"context_line":"                raise exception.VolumeTypeNotSupported("},{"line_number":786,"context_line":"                    volume_type\u003dec2_vol_type)"},{"line_number":787,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2F0zI%3D","line":784,"updated":"2014-02-24 16:18:02.000000000","message":"Same as 1st comment.","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dde3ebc71faa8d952c26cf68699d520cadc5d5c4","unresolved":false,"context_lines":[{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        if search_opts and \u0027volume_type\u0027 in search_opts.keys():"},{"line_number":783,"context_line":"            ec2_vol_type \u003d search_opts[\u0027volume_type\u0027]"},{"line_number":784,"context_line":"            if ec2_vol_type not in self.volume_type_mapping.keys():"},{"line_number":785,"context_line":"                raise exception.VolumeTypeNotSupported("},{"line_number":786,"context_line":"                    volume_type\u003dec2_vol_type)"},{"line_number":787,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2Fm5M%3D","line":784,"in_reply_to":"AAAAU3%2F%2F0zI%3D","updated":"2014-02-25 17:56:04.000000000","message":"Done","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"33c57cffc6ca13aa2de22705b4cce38b75a43441","unresolved":false,"context_lines":[{"line_number":786,"context_line":"                    volume_type\u003dec2_vol_type)"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"            if (ec2_vol_type \u003d\u003d \u0027io1\u0027 and"},{"line_number":789,"context_line":"                    self.volume_type_mapping[\u0027io1\u0027] is None):"},{"line_number":790,"context_line":"                raise exception.VolumeTypeNotAvailable(volume_type\u003d\u0027io1\u0027)"},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"            search_opts[\u0027volume_type\u0027] \u003d \\"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2F0yo%3D","line":789,"updated":"2014-02-24 16:18:02.000000000","message":"use self.volume_type_mapping.get()","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dde3ebc71faa8d952c26cf68699d520cadc5d5c4","unresolved":false,"context_lines":[{"line_number":786,"context_line":"                    volume_type\u003dec2_vol_type)"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"            if (ec2_vol_type \u003d\u003d \u0027io1\u0027 and"},{"line_number":789,"context_line":"                    self.volume_type_mapping[\u0027io1\u0027] is None):"},{"line_number":790,"context_line":"                raise exception.VolumeTypeNotAvailable(volume_type\u003d\u0027io1\u0027)"},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"            search_opts[\u0027volume_type\u0027] \u003d \\"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2Fm40%3D","line":789,"in_reply_to":"AAAAU3%2F%2F0yo%3D","updated":"2014-02-25 17:56:04.000000000","message":"volume_type_mapping dict is guaranteed to contain \u0027io1\u0027 and \u0027standard\u0027 as keys. Leaving this unchanged","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"}],"nova/tests/api/ec2/test_cinder_cloud.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"c446f3f9a696e73cee5a2309dd70033d5ab68f1d","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                                        name\u003d\u0027test-1\u0027,"},{"line_number":200,"context_line":"                                        description\u003d\u0027test volume 1\u0027,"},{"line_number":201,"context_line":"                                        volume_type\u003d\u0027fake_type\u0027)"},{"line_number":202,"context_line":"        self.assertEqual(vol1[\u0027status\u0027], \u0027available\u0027)"},{"line_number":203,"context_line":"        vol2 \u003d self.cloud.create_volume(self.context,"},{"line_number":204,"context_line":"                                        size\u003d2,"},{"line_number":205,"context_line":"                                        name\u003d\u0027test-2\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F4po%3D","line":202,"updated":"2014-01-07 08:39:59.000000000","message":"Changed here too","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"222a8f1c2c4daa9bca2c9211d503d97ac3e93739","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                                        volume_type\u003d\u0027None\u0027)"},{"line_number":208,"context_line":"        filter \u003d [{\u0027name\u0027: \u0027volume-type\u0027, \u0027value\u0027: {\u00271\u0027: \u0027None\u0027}}]"},{"line_number":209,"context_line":"        result \u003d self.cloud.describe_volumes(self.context, filter\u003dfilter)"},{"line_number":210,"context_line":"        self.assertEqual(len(result[\u0027volumeSet\u0027]), 1)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        self.cloud.delete_volume(self.context, vol1[\u0027volumeId\u0027])"},{"line_number":213,"context_line":"        self.cloud.delete_volume(self.context, vol2[\u0027volumeId\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2FvR8%3D","line":210,"updated":"2014-01-02 16:22:58.000000000","message":"We should use assertEqual(expected, observed)\n\nYou can refer to https://bugs.launchpad.net/heat/+bug/125929 https://bugs.launchpad.net/nova/+bug/126013 https://review.openstack.org/#/c/64039/1","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"c446f3f9a696e73cee5a2309dd70033d5ab68f1d","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                                        volume_type\u003d\u0027None\u0027)"},{"line_number":208,"context_line":"        filter \u003d [{\u0027name\u0027: \u0027volume-type\u0027, \u0027value\u0027: {\u00271\u0027: \u0027None\u0027}}]"},{"line_number":209,"context_line":"        result \u003d self.cloud.describe_volumes(self.context, filter\u003dfilter)"},{"line_number":210,"context_line":"        self.assertEqual(len(result[\u0027volumeSet\u0027]), 1)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        self.cloud.delete_volume(self.context, vol1[\u0027volumeId\u0027])"},{"line_number":213,"context_line":"        self.cloud.delete_volume(self.context, vol2[\u0027volumeId\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F4qA%3D","line":210,"in_reply_to":"AAAAT3%2F%2FvR8%3D","updated":"2014-01-07 08:39:59.000000000","message":"Done","commit_id":"e172e0d36aed933ac41c9a4d7733ab5399506251"}],"nova/tests/fake_volume.py":[{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"2e889a2579474c8b1f91a6a73ac6b59add6823f8","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        raise exception.VolumeNotFound(volume_id\u003dvolume_id)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def get_all(self, context, search_opts\u003d{}):"},{"line_number":181,"context_line":"        if search_opts and search_opts.get(\u0027volume_type\u0027) \u003d\u003d \u0027None\u0027:"},{"line_number":182,"context_line":"            vols_none_type \u003d []"},{"line_number":183,"context_line":"            for vol in self.volume_list:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Ff3Y%3D","line":180,"updated":"2014-01-13 10:06:51.000000000","message":"shouldn\u0027t search_opts have default value of None ?","commit_id":"dac087f13fb403d4be2b82b6947d1669a336cb25"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"f199d7e55f20b433d795c6f35a4e2f702f490d11","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        raise exception.VolumeNotFound(volume_id\u003dvolume_id)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def get_all(self, context, search_opts\u003d{}):"},{"line_number":181,"context_line":"        if search_opts and search_opts.get(\u0027volume_type\u0027) \u003d\u003d \u0027None\u0027:"},{"line_number":182,"context_line":"            vols_none_type \u003d []"},{"line_number":183,"context_line":"            for vol in self.volume_list:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZQI%3D","line":180,"in_reply_to":"AAAAUH%2F%2Ff3Y%3D","updated":"2014-01-14 08:41:58.000000000","message":"Done","commit_id":"dac087f13fb403d4be2b82b6947d1669a336cb25"}],"nova/tests/volume/test_cinder.py":[{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"33c57cffc6ca13aa2de22705b4cce38b75a43441","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        def get(self, volume_id):"},{"line_number":27,"context_line":"            return {\u0027id\u0027: volume_id}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        def list(self, detailed, search_opts\u003dNone):"},{"line_number":30,"context_line":"            return [{\u0027id\u0027: \u0027id1\u0027}, {\u0027id\u0027: \u0027id2\u0027}]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        def create(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2F0xI%3D","line":29,"updated":"2014-02-24 16:18:02.000000000","message":"Just verify that search_opts is not none before accessing it in part of codes.","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dde3ebc71faa8d952c26cf68699d520cadc5d5c4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        def get(self, volume_id):"},{"line_number":27,"context_line":"            return {\u0027id\u0027: volume_id}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        def list(self, detailed, search_opts\u003dNone):"},{"line_number":30,"context_line":"            return [{\u0027id\u0027: \u0027id1\u0027}, {\u0027id\u0027: \u0027id2\u0027}]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        def create(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAU3%2F%2Fmzo%3D","line":29,"in_reply_to":"AAAAU3%2F%2F0xI%3D","updated":"2014-02-25 17:56:04.000000000","message":"this is just a unit test fake, so shouldn\u0027t matter much IMO","commit_id":"01d1298c92f0500219f7fadd3cefbb032f68c75f"}]}
