)]}'
{"zun/api/controllers/v1/containers.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"fcbe02e88884e6c356819d7f25f7e5e7f3a5dad6","unresolved":false,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":372,"context_line":"    @exception.wrap_pecan_controller_exception"},{"line_number":373,"context_line":"    def logs(self, container_id, stdout, stderr):"},{"line_number":374,"context_line":"        container \u003d _get_container(container_id)"},{"line_number":375,"context_line":"        check_policy_on_container(container.as_dict(), \"container:logs\")"},{"line_number":376,"context_line":"        LOG.debug(\u0027Calling compute.container_logs with %s\u0027 %"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_10a1c1a3","line":373,"range":{"start_line":373,"start_character":33,"end_line":373,"end_character":47},"updated":"2017-02-06 16:37:21.000000000","message":"I think it is better to set the default values of stdout/stderr to False.","commit_id":"0c4fa87147989156460b7094adac98f9d3ccd5ae"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"d59a0adec1c22de8f0f7497b52cddc5ea4f656cd","unresolved":false,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":372,"context_line":"    @exception.wrap_pecan_controller_exception"},{"line_number":373,"context_line":"    def logs(self, container_id, stdout\u003dTrue, stderr\u003dTrue):"},{"line_number":374,"context_line":"        container \u003d _get_container(container_id)"},{"line_number":375,"context_line":"        check_policy_on_container(container.as_dict(), \"container:logs\")"},{"line_number":376,"context_line":"        LOG.debug(\u0027Calling compute.container_logs with %s\u0027 %"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a430d35_e86b0fb5","line":373,"range":{"start_line":373,"start_character":33,"end_line":373,"end_character":58},"updated":"2017-02-08 13:08:35.000000000","message":"@Prameswar, could you please add the validation for query params?","commit_id":"b2ca2971d1e3fa4735a426ad430c55303e3cee65"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"00670bb53fa890fe5abecc597c2fc983b39804c5","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                  container.uuid)"},{"line_number":379,"context_line":"        context \u003d pecan.request.context"},{"line_number":380,"context_line":"        compute_api \u003d pecan.request.compute_api"},{"line_number":381,"context_line":"        return compute_api.container_logs(context, container, stdout, stderr)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":384,"context_line":"    @exception.wrap_pecan_controller_exception"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a430d35_fa33b911","line":381,"range":{"start_line":381,"start_character":62,"end_line":381,"end_character":76},"updated":"2017-02-08 22:30:38.000000000","message":"I think it is better to convert it to bool type before sending it to conductor. See line #292 as an example. This is because string (either \u0027True\u0027 or \u0027False\u0027) will be evaluate to True if there is no type conversion.","commit_id":"2837da44ce6a0ac31be60c5fa99bc8aa8b49d826"}],"zun/api/controllers/v1/views/containers_view.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"fcbe02e88884e6c356819d7f25f7e5e7f3a5dad6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \u0027status_detail\u0027,"},{"line_number":39,"context_line":"    \u0027tty\u0027,"},{"line_number":40,"context_line":"    \u0027stdin_open\u0027,"},{"line_number":41,"context_line":"    \u0027stdout\u0027,"},{"line_number":42,"context_line":"    \u0027stderr\u0027,"},{"line_number":43,"context_line":"    \u0027image_driver\u0027"},{"line_number":44,"context_line":")"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_50dee911","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":13},"updated":"2017-02-06 16:37:21.000000000","message":"I don\u0027t think you need to add these fields to basic key, because they are just parameters for \"logs\" operation.","commit_id":"0c4fa87147989156460b7094adac98f9d3ccd5ae"}],"zun/compute/manager.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"fcbe02e88884e6c356819d7f25f7e5e7f3a5dad6","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    def container_logs(self, context, container, stdout, stderr):"},{"line_number":298,"context_line":"        LOG.debug(\u0027Showing container logs: %s\u0027, container.uuid)"},{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            if (stdout is True and stderr is True) or \\"},{"line_number":301,"context_line":"               (stdout is False and stderr is False):"},{"line_number":302,"context_line":"                return self.driver.show_logs(container)"},{"line_number":303,"context_line":"            else:"},{"line_number":304,"context_line":"                return self.driver.show_logs(container, stdout, stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_b048ed88","line":301,"range":{"start_line":300,"start_character":0,"end_line":301,"end_character":53},"updated":"2017-02-06 16:37:21.000000000","message":"It seems you can remove this check. Is anything not working if you remove this check and simply passing stdout/stderr down as below?\n\n  try:\n    return self.driver.show_logs(container, stdout\u003dstdout, stderr\u003dstderr)\n  except ...","commit_id":"0c4fa87147989156460b7094adac98f9d3ccd5ae"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"2ec7d93f496a40b3db8dab73d9a9afde08b2baa9","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    def container_logs(self, context, container, stdout, stderr):"},{"line_number":298,"context_line":"        LOG.debug(\u0027Showing container logs: %s\u0027, container.uuid)"},{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            if (stdout is True and stderr is True) or \\"},{"line_number":301,"context_line":"               (stdout is False and stderr is False):"},{"line_number":302,"context_line":"                return self.driver.show_logs(container)"},{"line_number":303,"context_line":"            else:"},{"line_number":304,"context_line":"                return self.driver.show_logs(container, stdout, stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_e5726c10","line":301,"range":{"start_line":300,"start_character":0,"end_line":301,"end_character":53},"in_reply_to":"1a430d35_2ccab84e","updated":"2017-02-08 07:42:31.000000000","message":"Hi @prameswar,\n    Thanks for this patch.\n    IMO, it\u0027s better to check the parameters and set default value to API in zunclient. \nhttps://review.openstack.org/#/c/429658/4/zunclient/v1/containers_shell.py\n    Then you can address Hongbin\u0027s comments here.","commit_id":"0c4fa87147989156460b7094adac98f9d3ccd5ae"},{"author":{"_account_id":20858,"name":"prameswar","email":"engg.pram1@gmail.com","username":"prameswar"},"change_message_id":"e16ef4e9a2068785603aeb6934ff13e15fed3279","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    def container_logs(self, context, container, stdout, stderr):"},{"line_number":298,"context_line":"        LOG.debug(\u0027Showing container logs: %s\u0027, container.uuid)"},{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            if (stdout is True and stderr is True) or \\"},{"line_number":301,"context_line":"               (stdout is False and stderr is False):"},{"line_number":302,"context_line":"                return self.driver.show_logs(container)"},{"line_number":303,"context_line":"            else:"},{"line_number":304,"context_line":"                return self.driver.show_logs(container, stdout, stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_2ccab84e","line":301,"range":{"start_line":300,"start_character":0,"end_line":301,"end_character":53},"in_reply_to":"1a430d35_b048ed88","updated":"2017-02-07 15:52:24.000000000","message":"Hi @Hongbin, in python-zunclient i am using like :\n@utils.arg(\u0027--stdout\u0027,\n           action\u003d\u0027store_true\u0027,\nSo, if we don\u0027t pass --stdout then it will store stdout\u003dFalse  similarly stderr so, if we don\u0027t pass both --stdout and --stderr then client will send stdout\u003dFalse stderr\u003dFalse.\n\nhttps://github.com/docker/docker-py/blob/master/docker/api/container.py#L768\nBy default docker-py logs method take stdout\u003dtrue stderr\u003dTrue to show all logs like:\ndef logs(self, container, stdout\u003dTrue, stderr\u003dTrue, stream\u003dFalse\n\nSo, if we use like :\nreturn self.driver.show_logs(container, stdout\u003dstdout, stderr\u003dstderr)\nit will override default stdout\u003dtrue and stderr\u003dtrue to False when no \n--stdout and --stderr passed that will result no logs but it should be all logs.\n\nIf any other better solution coming in your mind. please, let me know i can implement.\n\nOr another way hitting in my mind is:\nwe can add condition in zun/api/controllers/v1/containers.py\nif both stdout and stderr are False then make them True otherwise no change. in this case we can add as you suggested","commit_id":"0c4fa87147989156460b7094adac98f9d3ccd5ae"}],"zun/tests/unit/api/controllers/v1/test_containers.py":[{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"d59a0adec1c22de8f0f7497b52cddc5ea4f656cd","unresolved":false,"context_lines":[{"line_number":872,"context_line":"        response \u003d self.app.get(\u0027/v1/containers/%s/logs/\u0027 % container_uuid)"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        self.assertEqual(200, response.status_int)"},{"line_number":875,"context_line":"        mock_container_logs.assert_called_once_with("},{"line_number":876,"context_line":"            mock.ANY, test_container_obj, True, True)"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"    @patch(\u0027zun.compute.api.API.container_logs\u0027)"},{"line_number":879,"context_line":"    @patch(\u0027zun.objects.Container.get_by_name\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a430d35_4850a3d4","line":876,"range":{"start_line":875,"start_character":8,"end_line":876,"end_character":53},"updated":"2017-02-08 13:08:35.000000000","message":"Please add test for passing query params too, like \n/v1/containers/\u003ccontainer\u003e/logs?stdout\u003dTrue\u0026stdout\u003dFalse","commit_id":"b2ca2971d1e3fa4735a426ad430c55303e3cee65"}]}
