)]}'
{"cinder/tests/unit/test_solidfire.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"62644582add2632c03ed697fc890cd6877e098e7","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                    \u0027created_at\u0027: timeutils.utcnow()}"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        sfv \u003d solidfire.SolidFireDriver(configuration\u003dself.configuration)"},{"line_number":356,"context_line":"        # sfv.create_volume(testvol)"},{"line_number":357,"context_line":"        sfv.create_snapshot(testsnap)"},{"line_number":358,"context_line":"        with mock.patch.object(solidfire.SolidFireDriver,"},{"line_number":359,"context_line":"                               \u0027_get_sf_snapshots\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_5108dc27","line":356,"updated":"2015-06-10 15:25:03.000000000","message":"Please remove commented out code.","commit_id":"ebd2ff56a1267480ab62c61c62b78a62024fb2d3"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"0e39980f172e8ba5620584f07e973f78f62f7a65","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                    \u0027created_at\u0027: timeutils.utcnow()}"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        sfv \u003d solidfire.SolidFireDriver(configuration\u003dself.configuration)"},{"line_number":356,"context_line":"        # sfv.create_volume(testvol)"},{"line_number":357,"context_line":"        sfv.create_snapshot(testsnap)"},{"line_number":358,"context_line":"        with mock.patch.object(solidfire.SolidFireDriver,"},{"line_number":359,"context_line":"                               \u0027_get_sf_snapshots\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_e90238b3","line":356,"in_reply_to":"3afb71cf_5108dc27","updated":"2015-06-10 19:24:22.000000000","message":"Done","commit_id":"ebd2ff56a1267480ab62c61c62b78a62024fb2d3"}],"cinder/volume/drivers/solidfire.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"c1e902a289ca47351af848dfd485055c21e3602e","unresolved":false,"context_lines":[{"line_number":449,"context_line":"    def _get_available_account(self, project_id):"},{"line_number":450,"context_line":"        accounts \u003d self._get_sfaccounts_for_tenant(project_id)"},{"line_number":451,"context_line":"        if accounts:"},{"line_number":452,"context_line":"            sfaccount \u003d accounts[0]"},{"line_number":453,"context_line":"            # check how many volumes for the primary"},{"line_number":454,"context_line":"            if len(self._get_all_volumes(accounts[0][\u0027accountID\u0027])) \u003e\u003d 1999:"},{"line_number":455,"context_line":"                # We need a secondary, check if we have one, create if not"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_f33b139b","line":452,"updated":"2015-06-01 22:17:13.000000000","message":"Does _get_sfaccounts_for_tenant() always return accounts for a tenant in 1st, 2nd order?  Here we are assuming so, but I not sure about the behavior of ListAccounts() SF API, need to confirm that.","commit_id":"6d104ad126c8cd0ad4e2757cf0048db785c251c1"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"48a6d0f0e7e79c9a7224f1a4bd13483ac0b93ff2","unresolved":false,"context_lines":[{"line_number":449,"context_line":"    def _get_available_account(self, project_id):"},{"line_number":450,"context_line":"        accounts \u003d self._get_sfaccounts_for_tenant(project_id)"},{"line_number":451,"context_line":"        if accounts:"},{"line_number":452,"context_line":"            sfaccount \u003d accounts[0]"},{"line_number":453,"context_line":"            # check how many volumes for the primary"},{"line_number":454,"context_line":"            if len(self._get_all_volumes(accounts[0][\u0027accountID\u0027])) \u003e\u003d 1999:"},{"line_number":455,"context_line":"                # We need a secondary, check if we have one, create if not"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_d3e6d7e7","line":452,"in_reply_to":"5afe65bd_f33b139b","updated":"2015-06-01 22:22:16.000000000","message":"It doesn\u0027t currently, first thought was it \"didn\u0027t matter\" because I just want to use whichever one I can.  Not trying to actually load-balance.\n\nJust intended to get the available accounts and just find one that has availability.\n\nYou make a good point however, and I\u0027ll modify this to actually put them in order, that\u0027s a good suggestion.","commit_id":"6d104ad126c8cd0ad4e2757cf0048db785c251c1"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"c1e902a289ca47351af848dfd485055c21e3602e","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            vlist \u003d sorted((deleted_vols + active_vols),"},{"line_number":539,"context_line":"                           key\u003dlambda k: k[\u0027volumeID\u0027])"},{"line_number":540,"context_line":"        else:"},{"line_number":541,"context_line":"            params \u003d {\u0027accountID\u0027: account_id}"},{"line_number":542,"context_line":"            response \u003d self.issue_api_request(\u0027ListVolumesForAccount\u0027,"},{"line_number":543,"context_line":"                                              params)"},{"line_number":544,"context_line":"            vlist \u003d [v for v in response[\u0027result\u0027][\u0027volumes\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_33c52b5b","line":541,"updated":"2015-06-01 22:17:13.000000000","message":"The deleted volume in backend is tricky part, even Cinder has deleted the volume, SF takes time to actually purge those deleted volume, but the 2k limit includes both (active and deleted).","commit_id":"6d104ad126c8cd0ad4e2757cf0048db785c251c1"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"3302b37a245933ab72a686c7aa332772d8973a3b","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            vlist \u003d sorted((deleted_vols + active_vols),"},{"line_number":539,"context_line":"                           key\u003dlambda k: k[\u0027volumeID\u0027])"},{"line_number":540,"context_line":"        else:"},{"line_number":541,"context_line":"            params \u003d {\u0027accountID\u0027: account_id}"},{"line_number":542,"context_line":"            response \u003d self.issue_api_request(\u0027ListVolumesForAccount\u0027,"},{"line_number":543,"context_line":"                                              params)"},{"line_number":544,"context_line":"            vlist \u003d [v for v in response[\u0027result\u0027][\u0027volumes\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_d65c84ef","line":541,"in_reply_to":"5afe65bd_139a2e15","updated":"2015-06-01 23:24:47.000000000","message":"Bahhh! yeah, I need to fix that \"no account\" there","commit_id":"6d104ad126c8cd0ad4e2757cf0048db785c251c1"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"48a6d0f0e7e79c9a7224f1a4bd13483ac0b93ff2","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            vlist \u003d sorted((deleted_vols + active_vols),"},{"line_number":539,"context_line":"                           key\u003dlambda k: k[\u0027volumeID\u0027])"},{"line_number":540,"context_line":"        else:"},{"line_number":541,"context_line":"            params \u003d {\u0027accountID\u0027: account_id}"},{"line_number":542,"context_line":"            response \u003d self.issue_api_request(\u0027ListVolumesForAccount\u0027,"},{"line_number":543,"context_line":"                                              params)"},{"line_number":544,"context_line":"            vlist \u003d [v for v in response[\u0027result\u0027][\u0027volumes\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_73f5e381","line":541,"in_reply_to":"5afe65bd_33c52b5b","updated":"2015-06-01 22:22:16.000000000","message":"Yes, I thought of that.  I have a plan for another patch that allows purge on delete.\n\nAlso, I\u0027ve been playing with the idea of gathering the count of both active and deleted volumes here and using the sum for the check in the availability call.  That\u0027s in the next patch set.","commit_id":"6d104ad126c8cd0ad4e2757cf0048db785c251c1"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"ac98f249827a5ef6e77fa3ec303df1787b17a1b9","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            vlist \u003d sorted((deleted_vols + active_vols),"},{"line_number":539,"context_line":"                           key\u003dlambda k: k[\u0027volumeID\u0027])"},{"line_number":540,"context_line":"        else:"},{"line_number":541,"context_line":"            params \u003d {\u0027accountID\u0027: account_id}"},{"line_number":542,"context_line":"            response \u003d self.issue_api_request(\u0027ListVolumesForAccount\u0027,"},{"line_number":543,"context_line":"                                              params)"},{"line_number":544,"context_line":"            vlist \u003d [v for v in response[\u0027result\u0027][\u0027volumes\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_139a2e15","line":541,"in_reply_to":"5afe65bd_73f5e381","updated":"2015-06-01 23:07:41.000000000","message":"Oops, it\u0027s in this one :) line 538","commit_id":"6d104ad126c8cd0ad4e2757cf0048db785c251c1"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"1c2c3a4a785138f75a4af0de620722196738b600","unresolved":false,"context_lines":[{"line_number":839,"context_line":"                              \"the SolidFire Cluster while attempting \""},{"line_number":840,"context_line":"                              \"delete_volume operation!\"), volume[\u0027id\u0027])"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        LOG.debug(\"Completeed SolidFire delete_volume\")"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"    def ensure_export(self, context, volume):"},{"line_number":845,"context_line":"        \"\"\"Verify the iscsi export info.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_12ca1fa2","line":842,"updated":"2015-06-02 06:05:36.000000000","message":"yes, it\u0027s spelled wrong... I\u0027ll fix it before removing wip status","commit_id":"936ad4896360ac0b2a2e5b9fa99a014602d20e39"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"549912d02a70888123ac0e4dc97d283bfac25f99","unresolved":false,"context_lines":[{"line_number":667,"context_line":"            msg \u003d _(\"Failed get active SolidFire volumes: %s\") % data"},{"line_number":668,"context_line":"            raise exception.SolidFireAPIException(msg)"},{"line_number":669,"context_line":"        if cinder_uuid:"},{"line_number":670,"context_line":"            deleted_vols \u003d \\"},{"line_number":671,"context_line":"                [v for v in data[\u0027result\u0027][\u0027volumes\u0027] if cinder_uuid in v.name]"},{"line_number":672,"context_line":"        else:"},{"line_number":673,"context_line":"            deleted_vols \u003d [v for v in data[\u0027result\u0027][\u0027volumes\u0027]]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_41539c39","line":670,"updated":"2015-06-09 19:01:24.000000000","message":"John, I won\u0027t block patch for it but if you\u0027ll do another one patch-set, please change \u0027\\\u0027 to \u0027()\u0027","commit_id":"aeda81a78e09e6ad5f68910524843a5d51004b66"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"3fa4a9fc04ecdbc5a0d674575aa6512ccb6c88e1","unresolved":false,"context_lines":[{"line_number":667,"context_line":"            msg \u003d _(\"Failed get active SolidFire volumes: %s\") % data"},{"line_number":668,"context_line":"            raise exception.SolidFireAPIException(msg)"},{"line_number":669,"context_line":"        if cinder_uuid:"},{"line_number":670,"context_line":"            deleted_vols \u003d \\"},{"line_number":671,"context_line":"                [v for v in data[\u0027result\u0027][\u0027volumes\u0027] if cinder_uuid in v.name]"},{"line_number":672,"context_line":"        else:"},{"line_number":673,"context_line":"            deleted_vols \u003d [v for v in data[\u0027result\u0027][\u0027volumes\u0027]]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_a4efece7","line":670,"in_reply_to":"3afb71cf_41539c39","updated":"2015-06-10 04:28:50.000000000","message":"Done","commit_id":"aeda81a78e09e6ad5f68910524843a5d51004b66"}]}
