)]}'
{"Engine/agent/storlet_daemon/daemon.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b864f1bd99c1c9cbc6dd74b0a5cf1967a768bd28","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            module_name, cls_name \u003d self.storlet_name.split(\u0027.\u0027)"},{"line_number":61,"context_line":"        except ValueError:"},{"line_number":62,"context_line":"            raise ValueError(\"Invalid storlet name %s. exiting\" % storlet_name)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            module \u003d __import__(module_name, fromlist\u003d[cls_name])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_7be664b5","line":62,"range":{"start_line":62,"start_character":54,"end_line":62,"end_character":62},"updated":"2016-09-23 14:11:47.000000000","message":"I think we should say \u0027exiting\u0027 in L405 instead of saying it here. It makes more sense to me that __init__ just raises validation error, and main method decides to exit the whole process based on the exception.\n\nAt least, If we say exiting here, we need to say the same in L69 IMO.","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0a529d54a1a2737f78ff2d057bf5b9484a2c5d61","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            module_name, cls_name \u003d self.storlet_name.split(\u0027.\u0027)"},{"line_number":61,"context_line":"        except ValueError:"},{"line_number":62,"context_line":"            raise ValueError(\"Invalid storlet name %s. exiting\" % storlet_name)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            module \u003d __import__(module_name, fromlist\u003d[cls_name])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_fb8881c7","line":62,"range":{"start_line":62,"start_character":54,"end_line":62,"end_character":62},"in_reply_to":"5a8bc5a2_603e7f8d","updated":"2016-09-26 05:13:45.000000000","message":"+1 to remove exiting","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9adb8d6eb3408759909f08ce2d5065635b4f3e20","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            module_name, cls_name \u003d self.storlet_name.split(\u0027.\u0027)"},{"line_number":61,"context_line":"        except ValueError:"},{"line_number":62,"context_line":"            raise ValueError(\"Invalid storlet name %s. exiting\" % storlet_name)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            module \u003d __import__(module_name, fromlist\u003d[cls_name])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_603e7f8d","line":62,"range":{"start_line":62,"start_character":54,"end_line":62,"end_character":62},"in_reply_to":"5a8bc5a2_7be664b5","updated":"2016-09-26 04:27:36.000000000","message":"nice catch, agree with your opinion. This is just a error so we should say \u0027exiting\u0027 if the process decides exiting. will fix. (maybe just removing is enough. I don\u0027t think we need explicitly say \u0027exiting\u0027 even if it\u0027s in main.)","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b864f1bd99c1c9cbc6dd74b0a5cf1967a768bd28","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        out_fd \u003d dtg.service_out_fd"},{"line_number":148,"context_line":"        with os.fdopen(out_fd, \u0027w\u0027) as outfile:"},{"line_number":149,"context_line":"            outfile.write(\u0027True: OK\u0027)"},{"line_number":150,"context_line":"        return True"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def _safe_close_files(self, files):"},{"line_number":153,"context_line":"        for fobj in files:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_1b3f20d7","line":150,"range":{"start_line":150,"start_character":8,"end_line":150,"end_character":19},"updated":"2016-09-23 14:11:47.000000000","message":"I noticed we should return False here, sorry...","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"}],"tests/unit/agent/storlet_daemon/test_storlet_daemon.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7ce75795908136fe03c3dced5648f428701eac6c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015-2016 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_f313740b","line":1,"updated":"2016-09-23 16:05:18.000000000","message":"This file should be named as test_daemon.py, because test target is named as daemon.py","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9adb8d6eb3408759909f08ce2d5065635b4f3e20","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015-2016 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_5b0c16ed","line":1,"in_reply_to":"5a8bc5a2_f313740b","updated":"2016-09-26 04:27:36.000000000","message":"Done","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b864f1bd99c1c9cbc6dd74b0a5cf1967a768bd28","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import json"},{"line_number":19,"context_line":"from storlet_daemon.daemon import ("},{"line_number":20,"context_line":"    Daemon, EXIT_SUCCESS, StorletDaemonException)"},{"line_number":21,"context_line":"from sbus.datagram import ServerSBusInDatagram"},{"line_number":22,"context_line":"from sbus.command import SBUS_CMD_CANCEL"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_d6290f8b","line":19,"range":{"start_line":19,"start_character":34,"end_line":19,"end_character":35},"updated":"2016-09-23 14:11:47.000000000","message":"I wouldn\u0027t like to use multiple format for importing ( use () or use \\ )","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0a529d54a1a2737f78ff2d057bf5b9484a2c5d61","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import json"},{"line_number":19,"context_line":"from storlet_daemon.daemon import ("},{"line_number":20,"context_line":"    Daemon, EXIT_SUCCESS, StorletDaemonException)"},{"line_number":21,"context_line":"from sbus.datagram import ServerSBusInDatagram"},{"line_number":22,"context_line":"from sbus.command import SBUS_CMD_CANCEL"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_db602504","line":19,"range":{"start_line":19,"start_character":34,"end_line":19,"end_character":35},"in_reply_to":"5a8bc5a2_bbfb5ac0","updated":"2016-09-26 05:13:45.000000000","message":"\u003e Are you meaning, we should keep the consistency all over the files?\n\nYes. That\u0027s what I intended to say.\n\n\u003e It seems overkill to me though.\n\nOK.\n\nThis is just a nit comment. So I don\u0027t think we really need to fix this.\nI\u0027ll check other projects, and check if there are any projects which has a rule about this.\n(IMO, if we set a rule, this should be tested by pep8 or hacking)","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9adb8d6eb3408759909f08ce2d5065635b4f3e20","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import json"},{"line_number":19,"context_line":"from storlet_daemon.daemon import ("},{"line_number":20,"context_line":"    Daemon, EXIT_SUCCESS, StorletDaemonException)"},{"line_number":21,"context_line":"from sbus.datagram import ServerSBusInDatagram"},{"line_number":22,"context_line":"from sbus.command import SBUS_CMD_CANCEL"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_bbfb5ac0","line":19,"range":{"start_line":19,"start_character":34,"end_line":19,"end_character":35},"in_reply_to":"5a8bc5a2_d6290f8b","updated":"2016-09-26 04:27:36.000000000","message":"I dont\u0027t think this file has the \\ format. Are you meaning, we should keep the consistency all over the files? It seems overkill to me though.","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b864f1bd99c1c9cbc6dd74b0a5cf1967a768bd28","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        scenario \u003d ["},{"line_number":105,"context_line":"            (\u0027create\u0027, 1),"},{"line_number":106,"context_line":"            (\u0027listen\u0027, 1),"},{"line_number":107,"context_line":"            # TODO(kota_): it loosk like only SBUS_CMD_CANCEL works for"},{"line_number":108,"context_line":"            # graceful exit!?!?!?"},{"line_number":109,"context_line":"            # TODO(kota_): obviously, we need to refector the SBusDatagram"},{"line_number":110,"context_line":"            # because its child doesn\u0027t support parent syntax each other."},{"line_number":111,"context_line":"            (\u0027receive\u0027, ServerSBusInDatagram([], \u0027{}\u0027, command_json)),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_363b13d3","line":108,"range":{"start_line":107,"start_character":0,"end_line":108,"end_character":33},"updated":"2016-09-23 14:11:47.000000000","message":"Please see my comment in daemon.py","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9adb8d6eb3408759909f08ce2d5065635b4f3e20","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        scenario \u003d ["},{"line_number":105,"context_line":"            (\u0027create\u0027, 1),"},{"line_number":106,"context_line":"            (\u0027listen\u0027, 1),"},{"line_number":107,"context_line":"            # TODO(kota_): it loosk like only SBUS_CMD_CANCEL works for"},{"line_number":108,"context_line":"            # graceful exit!?!?!?"},{"line_number":109,"context_line":"            # TODO(kota_): obviously, we need to refector the SBusDatagram"},{"line_number":110,"context_line":"            # because its child doesn\u0027t support parent syntax each other."},{"line_number":111,"context_line":"            (\u0027receive\u0027, ServerSBusInDatagram([], \u0027{}\u0027, command_json)),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_3bd58a1b","line":108,"range":{"start_line":107,"start_character":0,"end_line":108,"end_character":33},"in_reply_to":"5a8bc5a2_363b13d3","updated":"2016-09-26 04:27:36.000000000","message":"confirmed. will change, the comment.","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0a529d54a1a2737f78ff2d057bf5b9484a2c5d61","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        scenario \u003d ["},{"line_number":105,"context_line":"            (\u0027create\u0027, 1),"},{"line_number":106,"context_line":"            (\u0027listen\u0027, 1),"},{"line_number":107,"context_line":"            # TODO(kota_): it loosk like only SBUS_CMD_CANCEL works for"},{"line_number":108,"context_line":"            # graceful exit!?!?!?"},{"line_number":109,"context_line":"            # TODO(kota_): obviously, we need to refector the SBusDatagram"},{"line_number":110,"context_line":"            # because its child doesn\u0027t support parent syntax each other."},{"line_number":111,"context_line":"            (\u0027receive\u0027, ServerSBusInDatagram([], \u0027{}\u0027, command_json)),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_fb5de147","line":108,"range":{"start_line":107,"start_character":0,"end_line":108,"end_character":33},"in_reply_to":"5a8bc5a2_3bd58a1b","updated":"2016-09-26 05:13:45.000000000","message":"thanks!","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b864f1bd99c1c9cbc6dd74b0a5cf1967a768bd28","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            (\u0027listen\u0027, 1),"},{"line_number":107,"context_line":"            # TODO(kota_): it loosk like only SBUS_CMD_CANCEL works for"},{"line_number":108,"context_line":"            # graceful exit!?!?!?"},{"line_number":109,"context_line":"            # TODO(kota_): obviously, we need to refector the SBusDatagram"},{"line_number":110,"context_line":"            # because its child doesn\u0027t support parent syntax each other."},{"line_number":111,"context_line":"            (\u0027receive\u0027, ServerSBusInDatagram([], \u0027{}\u0027, command_json)),"},{"line_number":112,"context_line":"        ]"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_f641ab0c","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":73},"updated":"2016-09-23 14:11:47.000000000","message":"I suppose you are talking about the difference between the arg lists for the same method in the two classes, right?","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0a529d54a1a2737f78ff2d057bf5b9484a2c5d61","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            (\u0027listen\u0027, 1),"},{"line_number":107,"context_line":"            # TODO(kota_): it loosk like only SBUS_CMD_CANCEL works for"},{"line_number":108,"context_line":"            # graceful exit!?!?!?"},{"line_number":109,"context_line":"            # TODO(kota_): obviously, we need to refector the SBusDatagram"},{"line_number":110,"context_line":"            # because its child doesn\u0027t support parent syntax each other."},{"line_number":111,"context_line":"            (\u0027receive\u0027, ServerSBusInDatagram([], \u0027{}\u0027, command_json)),"},{"line_number":112,"context_line":"        ]"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_de3c93ca","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":73},"in_reply_to":"5a8bc5a2_db1f4606","updated":"2016-09-26 05:13:45.000000000","message":"Please have a look at the patch which let Datagrams to use consistent semantics [1]\n\n[1] https://review.openstack.org/#/c/375831/\n\nIMO we don\u0027t need to define different datagram for server and client and can use only one consistent datagram class.\nThe following patch merges python implementations.[2] If it makes sense, we also need to merge java implementations.\n\n[2] https://review.openstack.org/#/c/375884/","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9adb8d6eb3408759909f08ce2d5065635b4f3e20","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            (\u0027listen\u0027, 1),"},{"line_number":107,"context_line":"            # TODO(kota_): it loosk like only SBUS_CMD_CANCEL works for"},{"line_number":108,"context_line":"            # graceful exit!?!?!?"},{"line_number":109,"context_line":"            # TODO(kota_): obviously, we need to refector the SBusDatagram"},{"line_number":110,"context_line":"            # because its child doesn\u0027t support parent syntax each other."},{"line_number":111,"context_line":"            (\u0027receive\u0027, ServerSBusInDatagram([], \u0027{}\u0027, command_json)),"},{"line_number":112,"context_line":"        ]"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_db1f4606","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":73},"in_reply_to":"5a8bc5a2_f641ab0c","updated":"2016-09-26 04:27:36.000000000","message":"That is part of my thought. I don\u0027t know which child classes want to the benefit from the base datagram class. If it\u0027s only self.fds for the common attribute, perhaps, we don\u0027t have to make the parent class. Not sure, right now.","commit_id":"a231f7bb687d44367d4a1700f3e0248c2ac19dc7"}]}
