)]}'
{"nova/compute/api.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"772f06ce401efd297d5d4d1ea28bee8ad5858a25","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        try:"},{"line_number":398,"context_line":"            quotas \u003d objects.Quotas(context)"},{"line_number":399,"context_line":"            quotas.reserve(project_id\u003dproject_id, user_id\u003duser_id,"},{"line_number":400,"context_line":"                           instances\u003dmax_count, cores\u003dreq_cores, ram\u003dreq_ram)"},{"line_number":401,"context_line":"        except exception.OverQuota as exc:"},{"line_number":402,"context_line":"            # OK, we exceeded quota; let\u0027s figure out why..."},{"line_number":403,"context_line":"            quotas \u003d exc.kwargs[\u0027quotas\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_9910c25a","line":400,"updated":"2015-08-21 14:25:08.000000000","message":"nit: usually new parameters can be at end of function","commit_id":"a6814c6190489215b1a7c172dbd1691193ae8304"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2440566fb75854e3fa98282d1ffb83cd6903816b","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        try:"},{"line_number":398,"context_line":"            quotas \u003d objects.Quotas(context)"},{"line_number":399,"context_line":"            quotas.reserve(project_id\u003dproject_id, user_id\u003duser_id,"},{"line_number":400,"context_line":"                           instances\u003dmax_count, cores\u003dreq_cores, ram\u003dreq_ram)"},{"line_number":401,"context_line":"        except exception.OverQuota as exc:"},{"line_number":402,"context_line":"            # OK, we exceeded quota; let\u0027s figure out why..."},{"line_number":403,"context_line":"            quotas \u003d exc.kwargs[\u0027quotas\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_03f2db06","line":400,"in_reply_to":"fa1b9901_9910c25a","updated":"2015-08-22 13:33:24.000000000","message":"from the signature, the project_id and user_id also be the end of parameters","commit_id":"a6814c6190489215b1a7c172dbd1691193ae8304"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"772f06ce401efd297d5d4d1ea28bee8ad5858a25","unresolved":false,"context_lines":[{"line_number":1856,"context_line":"        flavor \u003d instance.get_flavor()"},{"line_number":1857,"context_line":"        project_id, user_id \u003d quotas_obj.ids_from_instance(context, instance)"},{"line_number":1858,"context_line":"        num_instances, quotas \u003d self._check_num_instances_quota("},{"line_number":1859,"context_line":"                context, flavor, 1, 1, project_id, user_id)"},{"line_number":1860,"context_line":""},{"line_number":1861,"context_line":"        self._record_action_start(context, instance, instance_actions.RESTORE)"},{"line_number":1862,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_1c1ca068","line":1859,"updated":"2015-08-21 14:25:08.000000000","message":"I would think write project_id\u003dproject_id, user_id\u003duser_id is better","commit_id":"a6814c6190489215b1a7c172dbd1691193ae8304"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2440566fb75854e3fa98282d1ffb83cd6903816b","unresolved":false,"context_lines":[{"line_number":1856,"context_line":"        flavor \u003d instance.get_flavor()"},{"line_number":1857,"context_line":"        project_id, user_id \u003d quotas_obj.ids_from_instance(context, instance)"},{"line_number":1858,"context_line":"        num_instances, quotas \u003d self._check_num_instances_quota("},{"line_number":1859,"context_line":"                context, flavor, 1, 1, project_id, user_id)"},{"line_number":1860,"context_line":""},{"line_number":1861,"context_line":"        self._record_action_start(context, instance, instance_actions.RESTORE)"},{"line_number":1862,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_a3b52f32","line":1859,"in_reply_to":"fa1b9901_1c1ca068","updated":"2015-08-22 13:33:24.000000000","message":"agree with jichenjc","commit_id":"a6814c6190489215b1a7c172dbd1691193ae8304"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"772f06ce401efd297d5d4d1ea28bee8ad5858a25","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        super(_ComputeAPIUnitTestMixIn, self).setUp()"},{"line_number":69,"context_line":"        self.user_id \u003d \u0027fake\u0027"},{"line_number":70,"context_line":"        self.project_id \u003d \u0027fake\u0027"},{"line_number":71,"context_line":"        self.context \u003d context.RequestContext(self.user_id,"},{"line_number":72,"context_line":"                                              self.project_id)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _get_vm_states(self, exclude_states\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_bce814b4","line":71,"updated":"2015-08-21 14:25:08.000000000","message":"you need to make project_id and user_id to be different in your test cases... but looks they are same by default","commit_id":"a6814c6190489215b1a7c172dbd1691193ae8304"},{"author":{"_account_id":16292,"name":"zhengyue","email":"zhengyue@hihuron.com","username":"zhengyue"},"change_message_id":"7020da3a84af1edbfbe2b79cf9e5ce8ed9b28c26","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        super(_ComputeAPIUnitTestMixIn, self).setUp()"},{"line_number":69,"context_line":"        self.user_id \u003d \u0027fake\u0027"},{"line_number":70,"context_line":"        self.project_id \u003d \u0027fake\u0027"},{"line_number":71,"context_line":"        self.context \u003d context.RequestContext(self.user_id,"},{"line_number":72,"context_line":"                                              self.project_id)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _get_vm_states(self, exclude_states\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_5948c387","line":71,"in_reply_to":"fa1b9901_bce814b4","updated":"2015-08-22 22:57:47.000000000","message":"I just pass the project_id and user_id which attributes get from instance to \u0027quotas.reserve\u0027, it only change the attributes of quotas object, the context has not changed.  Sorry, I don\u0027t quite understand why need to make its to be different in my test case.","commit_id":"a6814c6190489215b1a7c172dbd1691193ae8304"},{"author":{"_account_id":16292,"name":"zhengyue","email":"zhengyue@hihuron.com","username":"zhengyue"},"change_message_id":"59d049d21687b691bb6268249f461846bb0367ff","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        super(_ComputeAPIUnitTestMixIn, self).setUp()"},{"line_number":69,"context_line":"        self.user_id \u003d \u0027fake\u0027"},{"line_number":70,"context_line":"        self.project_id \u003d \u0027fake\u0027"},{"line_number":71,"context_line":"        self.context \u003d context.RequestContext(self.user_id,"},{"line_number":72,"context_line":"                                              self.project_id)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _get_vm_states(self, exclude_states\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_d902930b","line":71,"in_reply_to":"fa1b9901_bce814b4","updated":"2015-08-22 23:13:30.000000000","message":"Thinks. Ah, now I see the problem.","commit_id":"a6814c6190489215b1a7c172dbd1691193ae8304"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d3435c8dc6818399f48a37e34e64b66bfc62103b","unresolved":false,"context_lines":[{"line_number":2466,"context_line":"    def test_restore_by_admin(self, action_start, instance_save,"},{"line_number":2467,"context_line":"                              quota_reserve, quota_commit):"},{"line_number":2468,"context_line":"        # Setup admin context"},{"line_number":2469,"context_line":"        self.is_admin \u003d True"},{"line_number":2470,"context_line":"        self.context \u003d context.RequestContext(self.user_id,"},{"line_number":2471,"context_line":"                                              self.project_id,"},{"line_number":2472,"context_line":"                                              self.is_admin)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_4c39d440","line":2469,"updated":"2015-08-24 01:24:33.000000000","message":"we needn\u0027t add is_admin as this class member. In normally we only add variable to class member when it used multiple testcase, but at here, I found only this test case use it.","commit_id":"1d98c7847e7e2556f4118055e525d75b2e72560f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d3435c8dc6818399f48a37e34e64b66bfc62103b","unresolved":false,"context_lines":[{"line_number":2472,"context_line":"                                              self.is_admin)"},{"line_number":2473,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":2474,"context_line":"        instance.project_id \u003d \u0027normal_project\u0027"},{"line_number":2475,"context_line":"        instance.user_id \u003d \u0027normal_user\u0027"},{"line_number":2476,"context_line":"        instance.vm_state \u003d vm_states.SOFT_DELETED"},{"line_number":2477,"context_line":"        instance.task_state \u003d None"},{"line_number":2478,"context_line":"        instance.save()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_0c6afc1a","line":2475,"updated":"2015-08-24 01:24:33.000000000","message":"How about we write like this:\n\ncontext \u003d context.RequestContext(\u0027admin_user\u0027, \u0027admin_project\u0027, True)\n\ninstance \u003d self._create_instance_obj()\n\n...\n...\n\nself.compute_api.restore(context, instance)\n\n\nThen the _create_instance_obj() will use the self.context, that is normal user context,\n\ncompute_api.restore will use the admin context you created.","commit_id":"1d98c7847e7e2556f4118055e525d75b2e72560f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"caf925e293c2e84d48f0134657540cd1f585ade1","unresolved":false,"context_lines":[{"line_number":2477,"context_line":"            rpc.restore_instance.assert_called_once_with(admin_context,"},{"line_number":2478,"context_line":"                                                         instance)"},{"line_number":2479,"context_line":"        self.assertEqual(instance.task_state, task_states.RESTORING)"},{"line_number":2480,"context_line":"        self.assertEqual(1, quota_commit.call_count)"},{"line_number":2481,"context_line":"        quota_reserve.assert_called_once_with(instances\u003d1,"},{"line_number":2482,"context_line":"            cores\u003dinstance.flavor.vcpus, ram\u003dinstance.flavor.memory_mb,"},{"line_number":2483,"context_line":"            project_id\u003dinstance.project_id, user_id\u003dinstance.user_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_ac466d21","line":2480,"updated":"2015-09-14 19:18:18.000000000","message":"I\u0027d rather have here:\n\n    quota_commit.assert_called_once_with()","commit_id":"c474b44bdcdda223b0ec90b7fa1673501cf690e7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"caf925e293c2e84d48f0134657540cd1f585ade1","unresolved":false,"context_lines":[{"line_number":2496,"context_line":"            self.compute_api.restore(self.context, instance)"},{"line_number":2497,"context_line":"            rpc.restore_instance.assert_called_once_with(self.context,"},{"line_number":2498,"context_line":"                                                         instance)"},{"line_number":2499,"context_line":"        self.assertEqual(instance.project_id, self.context.project_id)"},{"line_number":2500,"context_line":"        self.assertEqual(instance.task_state, task_states.RESTORING)"},{"line_number":2501,"context_line":"        self.assertEqual(1, quota_commit.call_count)"},{"line_number":2502,"context_line":"        quota_reserve.assert_called_once_with(instances\u003d1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_8cca89a0","line":2499,"updated":"2015-09-14 19:18:18.000000000","message":"I think self.context.project_id is the expected value, right? It should be:\n\n    self.assertEqual(self.context.project_id, instance.project_id)","commit_id":"c474b44bdcdda223b0ec90b7fa1673501cf690e7"}]}
