)]}'
{"cyborg/objects/attribute.py":[{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01a485a1d4d566595801e90f69b6b8eba4fed1f8","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.value \u003d set_value"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"},{"line_number":92,"context_line":"    def get_list_by_dep_key(cls, context, dep_id, key):"},{"line_number":93,"context_line":"        attr_filter \u003d {\"deployable_id\": dep_id, \"key\": key}"},{"line_number":94,"context_line":"        attr_list \u003d cls.get_by_filter(context, attr_filter)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_dde8b217","line":92,"range":{"start_line":92,"start_character":8,"end_line":92,"end_character":27},"updated":"2019-03-07 04:22:06.000000000","message":"consider renaming it to list_by_deployable_key","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"c9c2c2a00a0f4c62c54964e1b535709b762991e2","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.value \u003d set_value"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"},{"line_number":92,"context_line":"    def get_list_by_dep_key(cls, context, dep_id, key):"},{"line_number":93,"context_line":"        attr_filter \u003d {\"deployable_id\": dep_id, \"key\": key}"},{"line_number":94,"context_line":"        attr_list \u003d cls.get_by_filter(context, attr_filter)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_f905cb14","line":92,"range":{"start_line":92,"start_character":8,"end_line":92,"end_character":27},"in_reply_to":"5fc1f717_dde8b217","updated":"2019-03-21 14:41:40.000000000","message":"Done","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"}],"cyborg/objects/deployable.py":[{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01a485a1d4d566595801e90f69b6b8eba4fed1f8","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        return obj"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    @classmethod"},{"line_number":204,"context_line":"    def get_list_by_device_id(cls, context, device_id):"},{"line_number":205,"context_line":"        dep_filter \u003d {\u0027device_id\u0027: device_id}"},{"line_number":206,"context_line":"        dep_obj_list \u003d Deployable.list(context, dep_filter)"},{"line_number":207,"context_line":"        return dep_obj_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_fdd6ce4f","line":204,"range":{"start_line":204,"start_character":8,"end_line":204,"end_character":29},"updated":"2019-03-07 04:22:06.000000000","message":"Is this really necessary to add these 2 APIs? they can be covered by the Deployable.List anyways.","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"c9c2c2a00a0f4c62c54964e1b535709b762991e2","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        return obj"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    @classmethod"},{"line_number":204,"context_line":"    def get_list_by_device_id(cls, context, device_id):"},{"line_number":205,"context_line":"        dep_filter \u003d {\u0027device_id\u0027: device_id}"},{"line_number":206,"context_line":"        dep_obj_list \u003d Deployable.list(context, dep_filter)"},{"line_number":207,"context_line":"        return dep_obj_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_bcebb110","line":204,"range":{"start_line":204,"start_character":8,"end_line":204,"end_character":29},"in_reply_to":"5fc1f717_fdd6ce4f","updated":"2019-03-21 14:41:40.000000000","message":"either way is OK, but I prefer to use APIs, because we need to call it several times in other functions. It makes code more simple.","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"}],"cyborg/objects/driver_objects/driver_attach_handle.py":[{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"085c8c25d39ec0036342953b290a7b4cdf947b42","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        ah_filter \u003d {\u0027attach_info\u0027: self.attach_info,"},{"line_number":50,"context_line":"                     \u0027deployable_id\u0027: deployable_id"},{"line_number":51,"context_line":"                     }"},{"line_number":52,"context_line":"        ah_obj \u003d AttachHandle.list(context, ah_filter)[0]"},{"line_number":53,"context_line":"        ah_obj.destory(context)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_5fd032f8","line":52,"range":{"start_line":52,"start_character":55,"end_line":52,"end_character":56},"updated":"2019-03-07 11:02:39.000000000","message":"do we need support batch operation. e.g. delete all ahs associated to the same deployable","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"46a57ef53527ce3f7dc5e6ddfc9da8a938d5f663","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        ah_filter \u003d {\u0027attach_info\u0027: self.attach_info,"},{"line_number":50,"context_line":"                     \u0027deployable_id\u0027: deployable_id"},{"line_number":51,"context_line":"                     }"},{"line_number":52,"context_line":"        ah_obj \u003d AttachHandle.list(context, ah_filter)[0]"},{"line_number":53,"context_line":"        ah_obj.destory(context)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_c2c52690","line":52,"range":{"start_line":52,"start_character":55,"end_line":52,"end_character":56},"in_reply_to":"5fc1f717_5fd032f8","updated":"2019-03-07 12:29:27.000000000","message":"We need, when we remove a device \u0027conductor diff\u0027 should delete all related ahs first.","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"c9c2c2a00a0f4c62c54964e1b535709b762991e2","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        ah_filter \u003d {\u0027attach_info\u0027: self.attach_info,"},{"line_number":50,"context_line":"                     \u0027deployable_id\u0027: deployable_id"},{"line_number":51,"context_line":"                     }"},{"line_number":52,"context_line":"        ah_obj \u003d AttachHandle.list(context, ah_filter)[0]"},{"line_number":53,"context_line":"        ah_obj.destory(context)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_b34ba55d","line":52,"range":{"start_line":52,"start_character":55,"end_line":52,"end_character":56},"in_reply_to":"5fc1f717_5fd032f8","updated":"2019-03-21 14:41:40.000000000","message":"we need, delete all ahs is in the driver_deployable.py","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"}],"cyborg/objects/driver_objects/driver_deployable.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"f15ec662d409e5b8efda532210844e0bf26f2eda","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027name\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":34,"context_line":"        \u0027num_accelerators\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        \u0027attribute_list\u0027: object_fields.ListOfObjectsField("},{"line_number":36,"context_line":"            \u0027DriverAttribute\u0027, default\u003d[], nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_3a4c5cc6","line":33,"updated":"2019-03-07 03:40:10.000000000","message":"If the name is global unique, driver can\u0027t not handle it. So it\u0027s better to set nullable\u003dTrue, and let agent or conductor generate a unique name.","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"c9c2c2a00a0f4c62c54964e1b535709b762991e2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027name\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":34,"context_line":"        \u0027num_accelerators\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        \u0027attribute_list\u0027: object_fields.ListOfObjectsField("},{"line_number":36,"context_line":"            \u0027DriverAttribute\u0027, default\u003d[], nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_79123b64","line":33,"in_reply_to":"5fc1f717_3a4c5cc6","updated":"2019-03-21 14:41:40.000000000","message":"As we discussed in last week\u0027s meeting, the name is not unique globally but is host unique. Besides, the driver should generate the name when reporting, So nullable should be False.","commit_id":"374531ee3eb11c8e42dd0ea374b101f2cf31313b"}]}
