)]}'
{"tempest/api/volume/admin/test_snapshot_manage.py":[{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"3a1afd2f20c1e8ce037f828162524824d7ae4db6","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        manageable_snapshots \u003d self.admin_snapshot_manage_client.\\"},{"line_number":47,"context_line":"            list_manageable(host\u003dself.host, detail\u003ddetail)["},{"line_number":48,"context_line":"                \u0027manageable-snapshots\u0027]"},{"line_number":49,"context_line":"        self.assertEqual(1, len(manageable_snapshots))"},{"line_number":50,"context_line":"        for attr in resp_attrs:"},{"line_number":51,"context_line":"            self.assertIn(attr, manageable_snapshots[0])"},{"line_number":52,"context_line":"        self.assertIn(\u0027source-name\u0027, manageable_snapshots[0][\u0027reference\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_2a85b55a","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":54},"updated":"2017-05-09 04:59:04.000000000","message":"ditto","commit_id":"4e37595453ba6e7a3890771e66ad00606ba7f184"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a0f68aef4be93e2fd24e55767ee7911813a5571e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        manageable_snapshots \u003d self.admin_snapshot_manage_client.\\"},{"line_number":47,"context_line":"            list_manageable(host\u003dself.host, detail\u003ddetail)["},{"line_number":48,"context_line":"                \u0027manageable-snapshots\u0027]"},{"line_number":49,"context_line":"        self.assertEqual(1, len(manageable_snapshots))"},{"line_number":50,"context_line":"        for attr in resp_attrs:"},{"line_number":51,"context_line":"            self.assertIn(attr, manageable_snapshots[0])"},{"line_number":52,"context_line":"        self.assertIn(\u0027source-name\u0027, manageable_snapshots[0][\u0027reference\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_93f85c7b","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":54},"in_reply_to":"3f044301_2a85b55a","updated":"2017-05-10 23:16:28.000000000","message":"See related comment in test_volume_manage. In next patch I\u0027ll add a filter here.","commit_id":"4e37595453ba6e7a3890771e66ad00606ba7f184"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"1fa23e2c3600c94d04ac0d49fba0bd70950f1d61","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                \u0027already managed\u0027, manageable_snapshot[\u0027reason_not_safe\u0027])"},{"line_number":74,"context_line":"            self.assertIsNone(manageable_snapshot[\u0027extra_info\u0027])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if expected_safe_to_manage:"},{"line_number":77,"context_line":"            self.assertTrue(manageable_snapshot[\u0027safe_to_manage\u0027])"},{"line_number":78,"context_line":"        else:"},{"line_number":79,"context_line":"            self.assertFalse(manageable_snapshot[\u0027safe_to_manage\u0027])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @decorators.idempotent_id(\u00270132f42d-0147-4b45-8501-cc504bbf7810\u0027)"},{"line_number":82,"context_line":"    @testtools.skipUnless(CONF.volume_feature_enabled.manage_snapshot,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_fc2db3a8","line":79,"range":{"start_line":76,"start_character":0,"end_line":79,"end_character":67},"updated":"2017-05-15 07:08:20.000000000","message":"how about:\n    self.assertEqual(manageable_snapshot[\u0027safe_to_manage\u0027], expected_safe_to_manage)","commit_id":"7e2bd46bf6b071f6432db1d5915a238e7a406652"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"24e8752d947e51994d40d1fa0a7267493d15f036","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        self.assertNotIn(snapshot[\u0027id\u0027], [v[\u0027id\u0027] for v in all_snapshots])"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Check that the snapshot is now ready to be managed."},{"line_number":114,"context_line":"        self._check_manageable_snapshots(volume[\u0027id\u0027], snapshot[\u0027id\u0027], True)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # Manage the snapshot"},{"line_number":117,"context_line":"        name \u003d data_utils.rand_name(self.__class__.__name__ +"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f1d235d_51cb73a4","line":114,"range":{"start_line":114,"start_character":8,"end_line":114,"end_character":76},"updated":"2017-06-29 10:04:06.000000000","message":"It seems that the v2 API: list manageable snapshot with detail: /v2/{project_id}/os-snapshot-manage/detail can not query with parameter \u0027host\u0027. In v3 API, it maybe works.","commit_id":"69f48b734878dbe927dc86b30b2fb441635b2670"}],"tempest/api/volume/admin/test_volume_manage.py":[{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"3a1afd2f20c1e8ce037f828162524824d7ae4db6","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        manageable_vol \u003d list(filter("},{"line_number":60,"context_line":"            lambda v: v[\u0027reference\u0027][\u0027source-name\u0027] \u003d\u003d (\u0027volume-%s\u0027 % vol_id),"},{"line_number":61,"context_line":"            manageable_vols))"},{"line_number":62,"context_line":"        self.assertEqual(1, len(manageable_vol))"},{"line_number":63,"context_line":"        manageable_vol \u003d manageable_vol[0]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.assertEqual(CONF.volume.volume_size, manageable_vol[\u0027size\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_eaa58d05","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":48},"updated":"2017-05-09 04:59:04.000000000","message":"Hi，Felipe. \nHere I think this assert is not very correct, maybe assertIn is more suitable (use the volume uuid). I don\u0027t know whether tenant parameter can be specified to list_manageable api, if it can, add tenant parameter maybe more helpful.","commit_id":"4e37595453ba6e7a3890771e66ad00606ba7f184"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a0f68aef4be93e2fd24e55767ee7911813a5571e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        manageable_vol \u003d list(filter("},{"line_number":60,"context_line":"            lambda v: v[\u0027reference\u0027][\u0027source-name\u0027] \u003d\u003d (\u0027volume-%s\u0027 % vol_id),"},{"line_number":61,"context_line":"            manageable_vols))"},{"line_number":62,"context_line":"        self.assertEqual(1, len(manageable_vol))"},{"line_number":63,"context_line":"        manageable_vol \u003d manageable_vol[0]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.assertEqual(CONF.volume.volume_size, manageable_vol[\u0027size\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_130d6ca0","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":48},"in_reply_to":"3f044301_eaa58d05","updated":"2017-05-10 23:16:28.000000000","message":"I don\u0027t think the tenant parameter can be specified.\n\nThe assertIn isn\u0027t needed because of the filter on L59. If the volume uuid isn\u0027t in the list of manageable volumes, then \"manageable_vol\" will be empty list, causing assertion on L62 to fail.\n\nMaybe it\u0027s good to add\n\n    self.assertEqual(1, len(manageable_vol), \"Volume %s not found in the list of manageable volumes\" % vol_id)\n\nthough.","commit_id":"4e37595453ba6e7a3890771e66ad00606ba7f184"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"1fa23e2c3600c94d04ac0d49fba0bd70950f1d61","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                \u0027already managed\u0027, manageable_vol[\u0027reason_not_safe\u0027])"},{"line_number":72,"context_line":"            self.assertIsNone(manageable_vol[\u0027extra_info\u0027])"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        if expected_safe_to_manage:"},{"line_number":75,"context_line":"            self.assertTrue(manageable_vol[\u0027safe_to_manage\u0027])"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            self.assertFalse(manageable_vol[\u0027safe_to_manage\u0027])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @decorators.idempotent_id(\u002770076c71-0ce1-4208-a8ff-36a66e65cc1e\u0027)"},{"line_number":80,"context_line":"    def test_unmanage_manage_volume(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_dc03170f","line":77,"range":{"start_line":74,"start_character":0,"end_line":77,"end_character":62},"updated":"2017-05-15 07:08:20.000000000","message":"ditto","commit_id":"7e2bd46bf6b071f6432db1d5915a238e7a406652"}],"tempest/lib/services/volume/v2/snapshot_manage_client.py":[{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"3a1afd2f20c1e8ce037f828162524824d7ae4db6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        body \u003d json.loads(body)"},{"line_number":34,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def list_manageable(self, detail\u003dFalse, **params):"},{"line_number":37,"context_line":"        \"\"\"Returns a summary list of snapshots available to manage."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        :param detail: If True, returns detailed list of snapshots available to"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_ea7ead69","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":23},"updated":"2017-05-09 04:59:04.000000000","message":"How about naming it with list_manageable_snapshots?","commit_id":"4e37595453ba6e7a3890771e66ad00606ba7f184"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a0f68aef4be93e2fd24e55767ee7911813a5571e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        body \u003d json.loads(body)"},{"line_number":34,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def list_manageable(self, detail\u003dFalse, **params):"},{"line_number":37,"context_line":"        \"\"\"Returns a summary list of snapshots available to manage."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        :param detail: If True, returns detailed list of snapshots available to"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_f3fd606e","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":23},"in_reply_to":"3f044301_ea7ead69","updated":"2017-05-10 23:16:28.000000000","message":"Done","commit_id":"4e37595453ba6e7a3890771e66ad00606ba7f184"}],"tempest/lib/services/volume/v2/volume_manage_client.py":[{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"3a1afd2f20c1e8ce037f828162524824d7ae4db6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        body \u003d json.loads(body)"},{"line_number":38,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def list_manageable(self, detail\u003dFalse, **params):"},{"line_number":41,"context_line":"        \"\"\"Returns a summary list of volumes available to manage."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        :param detail: If True, returns detailed list of volumes available to"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_aa98a5bf","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":23},"updated":"2017-05-09 04:59:04.000000000","message":"How about naming it with list_manageable_volumes?","commit_id":"4e37595453ba6e7a3890771e66ad00606ba7f184"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a0f68aef4be93e2fd24e55767ee7911813a5571e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        body \u003d json.loads(body)"},{"line_number":38,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def list_manageable(self, detail\u003dFalse, **params):"},{"line_number":41,"context_line":"        \"\"\"Returns a summary list of volumes available to manage."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        :param detail: If True, returns detailed list of volumes available to"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_d302646f","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":23},"in_reply_to":"3f044301_aa98a5bf","updated":"2017-05-10 23:16:28.000000000","message":"Done","commit_id":"4e37595453ba6e7a3890771e66ad00606ba7f184"}]}
