)]}'
{"zun/api/controllers/v1/containers.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"d126a00a1217c698c60fba4cb75790d16e3de3bb","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                                     kw.get(\u0027w\u0027, None))"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":453,"context_line":"    @exception.wrap_pecan_controller_exception"},{"line_number":454,"context_line":"    def top(self, container_id, ps\u003dNone):"},{"line_number":455,"context_line":"        container \u003d _get_container(container_id)"},{"line_number":456,"context_line":"        check_policy_on_container(container.as_dict(), \"container:top\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_41a64dc2","line":453,"updated":"2017-02-10 16:48:01.000000000","message":"I think it is better to validate the query parameter (i.e. line #441).","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"6f84359c93c9efc147afb93e22b31b131229261d","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                                     kw.get(\u0027w\u0027, None))"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":453,"context_line":"    @exception.wrap_pecan_controller_exception"},{"line_number":454,"context_line":"    def top(self, container_id, ps\u003dNone):"},{"line_number":455,"context_line":"        container \u003d _get_container(container_id)"},{"line_number":456,"context_line":"        check_policy_on_container(container.as_dict(), \"container:top\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_92db35ed","line":453,"in_reply_to":"fa31d9ce_41a64dc2","updated":"2017-02-10 18:08:52.000000000","message":"+1","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"},{"author":{"_account_id":23365,"name":"feng.shengqin","email":"feng.shengqin@zte.com.cn","username":"FengShengqin"},"change_message_id":"b9b9104528995968077bc9c3963198eae81b6382","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                                     kw.get(\u0027w\u0027, None))"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":453,"context_line":"    @exception.wrap_pecan_controller_exception"},{"line_number":454,"context_line":"    def top(self, container_id, ps\u003dNone):"},{"line_number":455,"context_line":"        container \u003d _get_container(container_id)"},{"line_number":456,"context_line":"        check_policy_on_container(container.as_dict(), \"container:top\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_00827d94","line":453,"in_reply_to":"fa31d9ce_41a64dc2","updated":"2017-02-11 04:43:08.000000000","message":"Done","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"},{"author":{"_account_id":23365,"name":"feng.shengqin","email":"feng.shengqin@zte.com.cn","username":"FengShengqin"},"change_message_id":"b9b9104528995968077bc9c3963198eae81b6382","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                                     kw.get(\u0027w\u0027, None))"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":453,"context_line":"    @exception.wrap_pecan_controller_exception"},{"line_number":454,"context_line":"    def top(self, container_id, ps\u003dNone):"},{"line_number":455,"context_line":"        container \u003d _get_container(container_id)"},{"line_number":456,"context_line":"        check_policy_on_container(container.as_dict(), \"container:top\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_404ab584","line":453,"in_reply_to":"fa31d9ce_92db35ed","updated":"2017-02-11 04:43:08.000000000","message":"Done","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"d126a00a1217c698c60fba4cb75790d16e3de3bb","unresolved":false,"context_lines":[{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":453,"context_line":"    @exception.wrap_pecan_controller_exception"},{"line_number":454,"context_line":"    def top(self, container_id, ps\u003dNone):"},{"line_number":455,"context_line":"        container \u003d _get_container(container_id)"},{"line_number":456,"context_line":"        check_policy_on_container(container.as_dict(), \"container:top\")"},{"line_number":457,"context_line":"        utils.validate_container_state(container, \u0027top\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_21d3193a","line":454,"range":{"start_line":454,"start_character":32,"end_line":454,"end_character":34},"updated":"2017-02-10 16:48:01.000000000","message":"Suggest changing it to \u0027ps_args\u0027. I think the rename will make it clear what this argument is about.","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"},{"author":{"_account_id":23365,"name":"feng.shengqin","email":"feng.shengqin@zte.com.cn","username":"FengShengqin"},"change_message_id":"b9b9104528995968077bc9c3963198eae81b6382","unresolved":false,"context_lines":[{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":453,"context_line":"    @exception.wrap_pecan_controller_exception"},{"line_number":454,"context_line":"    def top(self, container_id, ps\u003dNone):"},{"line_number":455,"context_line":"        container \u003d _get_container(container_id)"},{"line_number":456,"context_line":"        check_policy_on_container(container.as_dict(), \"container:top\")"},{"line_number":457,"context_line":"        utils.validate_container_state(container, \u0027top\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_606899f6","line":454,"range":{"start_line":454,"start_character":32,"end_line":454,"end_character":34},"in_reply_to":"fa31d9ce_21d3193a","updated":"2017-02-11 04:43:08.000000000","message":"Done","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"}],"zun/common/validation/parameter_types.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"cff429f34a50784f01236c3d29eec593dee2ae23","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"string_ps_args \u003d {"},{"line_number":141,"context_line":"    \u0027type\u0027: [\u0027string\u0027],"},{"line_number":142,"context_line":"    \u0027pattern\u0027: \u0027[a-zA-Z0-9]?\u0027"},{"line_number":143,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_36424f3f","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":29},"updated":"2017-02-13 08:21:22.000000000","message":"This pattern is not correct, please refer man ps for what args could be.\n\nAt lease as far as I know, need to support `-` `,`","commit_id":"7a2f18727c140cb3b4c5c8d26bc4b44171ad63d7"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"ce62829f97db286db5102dcaa375fa9b507780e9","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"string_ps_args \u003d {"},{"line_number":141,"context_line":"    \u0027type\u0027: [\u0027string\u0027],"},{"line_number":142,"context_line":"    \u0027pattern\u0027: \u0027[a-zA-Z- ]*\u0027"},{"line_number":143,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_a0b81c12","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":28},"updated":"2017-02-16 00:58:24.000000000","message":"Please add ,+ to pattern\n\nIn [16]: par \u003d \u0027[a-zA-Z- ,+]*\u0027\n\nIn [17]: match \u003d re.search(par, \u0027jaxkuid,-ppid,+pid\u0027)\n\nIn [18]: print match.group()\njaxkuid,-ppid,+pid","commit_id":"174dbd9547e654015e030263ee76d7ce19ef4880"},{"author":{"_account_id":23365,"name":"feng.shengqin","email":"feng.shengqin@zte.com.cn","username":"FengShengqin"},"change_message_id":"ef2c84789f4c83abd08ee3dc67ab800c3d005233","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"string_ps_args \u003d {"},{"line_number":141,"context_line":"    \u0027type\u0027: [\u0027string\u0027],"},{"line_number":142,"context_line":"    \u0027pattern\u0027: \u0027[a-zA-Z- ]*\u0027"},{"line_number":143,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_a0a49c4a","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":28},"in_reply_to":"fa31d9ce_a0b81c12","updated":"2017-02-16 01:19:33.000000000","message":"Done","commit_id":"174dbd9547e654015e030263ee76d7ce19ef4880"}],"zun/compute/manager.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"6f84359c93c9efc147afb93e22b31b131229261d","unresolved":false,"context_lines":[{"line_number":388,"context_line":"            LOG.error(_LE(\"Error occurred while calling Docker top API: %s\"),"},{"line_number":389,"context_line":"                      six.text_type(e))"},{"line_number":390,"context_line":"            raise"},{"line_number":391,"context_line":"        except Exception as e:"},{"line_number":392,"context_line":"            LOG.exception(_LE(\"Unexpected exception: %s\"), six.text_type(e))"},{"line_number":393,"context_line":"            raise"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_124ae583","line":391,"updated":"2017-02-10 18:08:52.000000000","message":"I guess this exception block is hit if you raise a APIError from the Docker Driver code? When does the above DockerError get hit?","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"}],"zun/compute/rpcapi.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"791dcf2265e16c8c9f933621fd5f115dc0328669","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        return self._call(container.host, \u0027container_update\u0027,"},{"line_number":84,"context_line":"                          container\u003dcontainer, patch\u003dpatch)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def container_attach(self, context, container):"},{"line_number":87,"context_line":"        return self._call(container.host, \u0027container_attach\u0027,"},{"line_number":88,"context_line":"                          container\u003dcontainer)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def container_resize(self, context, container, height, width):"},{"line_number":91,"context_line":"        return self._call(container.host, \u0027container_resize\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_36696fbf","side":"PARENT","line":88,"range":{"start_line":86,"start_character":0,"end_line":88,"end_character":46},"updated":"2017-02-13 08:22:00.000000000","message":"what\u0027s the reason to remove it?","commit_id":"0d2e77e0a54449960836795fefd2fc0836341b03"}],"zun/container/docker/driver.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"1866cb5bb8796f901d5fd46e0ac0bd695749c271","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    def top(self, container, ps_args\u003dNone):"},{"line_number":323,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":324,"context_line":"            try:"},{"line_number":325,"context_line":"                if ps_args is None or ps_args \u003d\u003d \u0027None\u0027:"},{"line_number":326,"context_line":"                    return docker.top(container.container_id)"},{"line_number":327,"context_line":"                else:"},{"line_number":328,"context_line":"                    return docker.top(container.container_id, ps_args)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_67df800d","line":325,"range":{"start_line":325,"start_character":50,"end_line":325,"end_character":54},"updated":"2017-02-23 02:16:51.000000000","message":"If I pass none or something invalid ps args, I will get a 500 error.\n\nstack@jfz1r04h12:/opt/stack/zun$ zun top test none\n{\u0027debuginfo\u0027: u\u0027Your request could not be handled because of a problem in the server. Error Correlation id is: 953dc845-b156-4ffd-8042-bc9a7f15beeb\u0027, \u0027faultstring\u0027: u\u0027Internal Server Error\u0027}\n\u003e /opt/stack/python-zunclient/zunclient/common/httpclient.py(333)_http_request()\n-\u003e raise exceptions.from_response(\n(Pdb) c\n\u003e /opt/stack/python-zunclient/zunclient/common/apiclient/exceptions.py(453)from_response()\n-\u003e content_type \u003d response.headers.get(\"Content-Type\", \"\")\n(Pdb) c\nERROR: Internal Server Error (HTTP 500) (Request-ID: req-ee2a2337-6316-472e-802b-c47c43586150)","commit_id":"0e95d556077f20a1e447ea7d8e301d1eb4c54bf5"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"1866cb5bb8796f901d5fd46e0ac0bd695749c271","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                    return docker.top(container.container_id)"},{"line_number":327,"context_line":"                else:"},{"line_number":328,"context_line":"                    return docker.top(container.container_id, ps_args)"},{"line_number":329,"context_line":"            except errors.APIError:"},{"line_number":330,"context_line":"                raise"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def _encode_utf8(self, value):"},{"line_number":333,"context_line":"        if six.PY2 and not isinstance(value, unicode):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_47735c15","line":330,"range":{"start_line":329,"start_character":12,"end_line":330,"end_character":21},"updated":"2017-02-23 02:16:51.000000000","message":"Just wonder if we should return 400 bad request if we \u0027v pass invalid ps args.\n\nSince in our API parameter validator, we can not sure the ps args are all valid, docker py will raise 500 error if invalid ps args are passed, just wonder if we are okay to pass 500 directly to our end user.","commit_id":"0e95d556077f20a1e447ea7d8e301d1eb4c54bf5"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"ba3f8c78d05716e606f43fd499a3fc201d383f9a","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                    return docker.top(container.container_id)"},{"line_number":327,"context_line":"                else:"},{"line_number":328,"context_line":"                    return docker.top(container.container_id, ps_args)"},{"line_number":329,"context_line":"            except errors.APIError:"},{"line_number":330,"context_line":"                raise"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def _encode_utf8(self, value):"},{"line_number":333,"context_line":"        if six.PY2 and not isinstance(value, unicode):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_ad1eb75c","line":330,"range":{"start_line":329,"start_character":12,"end_line":330,"end_character":21},"in_reply_to":"da36d5c6_47735c15","updated":"2017-02-23 03:16:38.000000000","message":"@Eli, i think for now it\u0027s OK to return 500, since we cant know if invalid ps args is only the reason for 500. So we can go for now and revisit it later if required.","commit_id":"0e95d556077f20a1e447ea7d8e301d1eb4c54bf5"}],"zun/container/driver.py":[{"author":{"_account_id":21515,"name":"LiChunlin","email":"lichl@hotmail.com","username":"ForestLee"},"change_message_id":"7d21635a62c66fa6bcbc674d1d1ede61b8e5fcc0","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        raise NotImplementedError()"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def top(self, container, ps_args):"},{"line_number":119,"context_line":"        \"\"\"display the running progresses inside the container.\"\"\""},{"line_number":120,"context_line":"        raise NotImplementedError()"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def create_sandbox(self, context, container, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_00512136","line":119,"range":{"start_line":119,"start_character":23,"end_line":119,"end_character":41},"updated":"2017-02-24 02:12:58.000000000","message":"\"processes\" is better?","commit_id":"0e95d556077f20a1e447ea7d8e301d1eb4c54bf5"}],"zun/tests/unit/api/controllers/v1/test_containers.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"6f84359c93c9efc147afb93e22b31b131229261d","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        mock_get_by_uuid.return_value \u003d test_container_obj"},{"line_number":1198,"context_line":"        mock_container_top.side_effect \u003d Exception"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"        container_uuid \u003d test_container.get(\u0027uuid\u0027)"},{"line_number":1201,"context_line":"        container_uuid \u003d test_container.get(\u0027uuid\u0027)"},{"line_number":1202,"context_line":"        self.assertRaises(AppError, self.app.get,"},{"line_number":1203,"context_line":"                          \u0027/v1/containers/%s/top?ps\u003dkkkk\u0027 % container_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_923fb524","line":1200,"updated":"2017-02-10 18:08:52.000000000","message":"Any reason why container_uuid is here twice?\nBTW - you could also do mock_container_top.side_effect \u003d [\"\", Exception]","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"},{"author":{"_account_id":23365,"name":"feng.shengqin","email":"feng.shengqin@zte.com.cn","username":"FengShengqin"},"change_message_id":"b9b9104528995968077bc9c3963198eae81b6382","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        mock_get_by_uuid.return_value \u003d test_container_obj"},{"line_number":1198,"context_line":"        mock_container_top.side_effect \u003d Exception"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"        container_uuid \u003d test_container.get(\u0027uuid\u0027)"},{"line_number":1201,"context_line":"        container_uuid \u003d test_container.get(\u0027uuid\u0027)"},{"line_number":1202,"context_line":"        self.assertRaises(AppError, self.app.get,"},{"line_number":1203,"context_line":"                          \u0027/v1/containers/%s/top?ps\u003dkkkk\u0027 % container_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_806d8d06","line":1200,"in_reply_to":"fa31d9ce_923fb524","updated":"2017-02-11 04:43:08.000000000","message":"Done","commit_id":"da1608238796a896445ab4859ee60b39c7df5248"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"6daf339c67392a9a5da06dd41fbaa01cbf730a22","unresolved":false,"context_lines":[{"line_number":1281,"context_line":"        mock_get_by_name.return_value \u003d test_container_obj"},{"line_number":1282,"context_line":""},{"line_number":1283,"context_line":"        container_name \u003d test_container.get(\u0027name\u0027)"},{"line_number":1284,"context_line":"        response \u003d self.app.get(\u0027/v1/containers/%s/top?ps_args\u003dNone\u0027 %"},{"line_number":1285,"context_line":"                                container_name)"},{"line_number":1286,"context_line":"        self.assertEqual(200, response.status_int)"},{"line_number":1287,"context_line":"        self.assertTrue(mock_container_top.called)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_6188cac7","line":1284,"range":{"start_line":1284,"start_character":63,"end_line":1284,"end_character":67},"updated":"2017-02-16 15:17:17.000000000","message":"I think none is not a valid value for ps_args, although it will match the pattern but will be string \u0027None\u0027 not pythonic None and will fail at docker level. What do you think?","commit_id":"07b6ed6b2b00481eb0905d886962ff3e93e65418"}]}
