)]}'
{"cyborg/db/api.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"941a96ebcf6c99229aa9ce656a86a85cf772df88","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        \"\"\"Get requested attach_handle\"\"\""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    @abc.abstractmethod"},{"line_number":148,"context_line":"    def attach_handle_list(self, context, limit, marker, sort_key, sort_dir,"},{"line_number":149,"context_line":"                           project_only):"},{"line_number":150,"context_line":"        \"\"\"Get requested list of attach_handles\"\"\""},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_ad3b2fcf","line":148,"updated":"2019-01-14 12:58:28.000000000","message":"I think we should remove project_only for we don\u0027t have project attr now.","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0e92568fc30d56139d12e06e465e1d0227be78e3","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        \"\"\"Get requested attach_handle\"\"\""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    @abc.abstractmethod"},{"line_number":148,"context_line":"    def attach_handle_list(self, context, limit, marker, sort_key, sort_dir,"},{"line_number":149,"context_line":"                           project_only):"},{"line_number":150,"context_line":"        \"\"\"Get requested list of attach_handles\"\"\""},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_edcca9bd","line":148,"in_reply_to":"bfdaf3ff_ad3b2fcf","updated":"2019-01-16 10:22:58.000000000","message":"Done","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"82e0ad775fd373c989f56eaf373cdf5ed4a48c73","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        \"\"\"Create a new control path id\"\"\""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @abc.abstractmethod"},{"line_number":166,"context_line":"    def control_path_get(self, context, uuid):"},{"line_number":167,"context_line":"        \"\"\"Get requested control path id\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_9162f63d","line":166,"updated":"2019-01-15 02:11:54.000000000","message":"considering rename it to control_path_get_by_uuid\nIn addition, consider add another interface like control_path_get_by_filters.","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0e92568fc30d56139d12e06e465e1d0227be78e3","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        \"\"\"Create a new control path id\"\"\""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @abc.abstractmethod"},{"line_number":166,"context_line":"    def control_path_get(self, context, uuid):"},{"line_number":167,"context_line":"        \"\"\"Get requested control path id\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_38618daa","line":166,"in_reply_to":"bfdaf3ff_9162f63d","updated":"2019-01-16 10:22:58.000000000","message":"Done","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"82e0ad775fd373c989f56eaf373cdf5ed4a48c73","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        \"\"\"Get requested control path id\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @abc.abstractmethod"},{"line_number":170,"context_line":"    def control_path_list(self, context, limit, marker, sort_key, sort_dir,"},{"line_number":171,"context_line":"                          project_only):"},{"line_number":172,"context_line":"        \"\"\"Get requested list of control path ids\"\"\""},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_f1f8224a","line":170,"range":{"start_line":170,"start_character":48,"end_line":170,"end_character":54},"updated":"2019-01-15 02:11:54.000000000","message":"is marker the filter for list criteria?","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0e92568fc30d56139d12e06e465e1d0227be78e3","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        \"\"\"Get requested control path id\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @abc.abstractmethod"},{"line_number":170,"context_line":"    def control_path_list(self, context, limit, marker, sort_key, sort_dir,"},{"line_number":171,"context_line":"                          project_only):"},{"line_number":172,"context_line":"        \"\"\"Get requested list of control path ids\"\"\""},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_8dbb9d0c","line":170,"range":{"start_line":170,"start_character":48,"end_line":170,"end_character":54},"in_reply_to":"bfdaf3ff_f1f8224a","updated":"2019-01-16 10:22:58.000000000","message":"yes","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"82e0ad775fd373c989f56eaf373cdf5ed4a48c73","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @abc.abstractmethod"},{"line_number":170,"context_line":"    def control_path_list(self, context, limit, marker, sort_key, sort_dir,"},{"line_number":171,"context_line":"                          project_only):"},{"line_number":172,"context_line":"        \"\"\"Get requested list of control path ids\"\"\""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_51ea4e75","line":171,"range":{"start_line":171,"start_character":26,"end_line":171,"end_character":38},"updated":"2019-01-15 02:11:54.000000000","message":"as zhenghao pointed out, we don\u0027t need project_only.","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0e92568fc30d56139d12e06e465e1d0227be78e3","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @abc.abstractmethod"},{"line_number":170,"context_line":"    def control_path_list(self, context, limit, marker, sort_key, sort_dir,"},{"line_number":171,"context_line":"                          project_only):"},{"line_number":172,"context_line":"        \"\"\"Get requested list of control path ids\"\"\""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_adc6a199","line":171,"range":{"start_line":171,"start_character":26,"end_line":171,"end_character":38},"in_reply_to":"bfdaf3ff_51ea4e75","updated":"2019-01-16 10:22:58.000000000","message":"Done","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"}],"cyborg/db/sqlalchemy/alembic/versions/ede4e3f1a232_new_db_schema.py":[{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"75bf732355606c22e4e680f14d683ef6174ee92c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from alembic import op"},{"line_number":14,"context_line":"import sqlalchemy as sa"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# TODO: The enum value should be further discussed."},{"line_number":17,"context_line":"state \u003d sa.Enum(\u0027Initial\u0027, \u0027Bound\u0027, \u0027BindFailed\u0027, name\u003d\u0027state\u0027)"},{"line_number":18,"context_line":"substate \u003d sa.Enum(\u0027Initial\u0027, name\u003d\u0027substate\u0027)"},{"line_number":19,"context_line":"attach_type \u003d sa.Enum(\u0027PCI\u0027, \u0027MDEV\u0027, name\u003d\u0027attach_type\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_d69a3f12","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":51},"updated":"2019-02-14 02:01:27.000000000","message":"According to the discussion in our last meeting[0], it would be good to change the type of device to enum instead of string. http://eavesdrop.openstack.org/meetings/openstack_cyborg/2019/openstack_cyborg.2019-02-13-03.09.log.html#l-66\nHere we can add something like:\ntype \u003d sa.Enum(\u0027FPGA\u0027, \u0027GPU\u0027, name\u003d\u0027type\u0027)","commit_id":"1bafe5e41b36e1eeb09ae14dfc4654599ea88b3a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d9bd82fd83f39c63bdd6a9d4f365dd702afa8250","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from alembic import op"},{"line_number":14,"context_line":"import sqlalchemy as sa"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# TODO: The enum value should be further discussed."},{"line_number":17,"context_line":"state \u003d sa.Enum(\u0027Initial\u0027, \u0027Bound\u0027, \u0027BindFailed\u0027, name\u003d\u0027state\u0027)"},{"line_number":18,"context_line":"substate \u003d sa.Enum(\u0027Initial\u0027, name\u003d\u0027substate\u0027)"},{"line_number":19,"context_line":"attach_type \u003d sa.Enum(\u0027PCI\u0027, \u0027MDEV\u0027, name\u003d\u0027attach_type\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_79cd842e","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":51},"in_reply_to":"9fdfeff1_d69a3f12","updated":"2019-02-14 03:14:50.000000000","message":"ops.. type will be misleading. device_type might be better.\ndevice_type \u003d sa.Enum(\u0027GPU\u0027,\u0027FPGA\u0027, name\u003d\u0027device_type\u0027)","commit_id":"1bafe5e41b36e1eeb09ae14dfc4654599ea88b3a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"75bf732355606c22e4e680f14d683ef6174ee92c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":35,"context_line":"        sa.Column(\u0027type\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":36,"context_line":"        sa.Column(\u0027vendor\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":37,"context_line":"        sa.Column(\u0027model\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":38,"context_line":"        sa.Column(\u0027std_board_info\u0027, sa.Text(), nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_36b2ab95","line":35,"range":{"start_line":35,"start_character":26,"end_line":35,"end_character":47},"updated":"2019-02-14 02:01:27.000000000","message":"type: according to last comment","commit_id":"1bafe5e41b36e1eeb09ae14dfc4654599ea88b3a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d9bd82fd83f39c63bdd6a9d4f365dd702afa8250","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":35,"context_line":"        sa.Column(\u0027type\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":36,"context_line":"        sa.Column(\u0027vendor\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":37,"context_line":"        sa.Column(\u0027model\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":38,"context_line":"        sa.Column(\u0027std_board_info\u0027, sa.Text(), nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_19deb8d9","line":35,"range":{"start_line":35,"start_character":26,"end_line":35,"end_character":47},"in_reply_to":"9fdfeff1_36b2ab95","updated":"2019-02-14 03:14:50.000000000","message":"device_type","commit_id":"1bafe5e41b36e1eeb09ae14dfc4654599ea88b3a"}],"cyborg/db/sqlalchemy/api.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"941a96ebcf6c99229aa9ce656a86a85cf772df88","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":165,"context_line":"        return self._do_update_attach_handle(context, uuid, values)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _do_update_attach_handle(self, context, uuid, values):"},{"line_number":168,"context_line":"        with _session_for_write():"},{"line_number":169,"context_line":"            query \u003d model_query(context, models.AttachHandle)"},{"line_number":170,"context_line":"            query \u003d add_identity_filter(query, uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_ad400f37","line":167,"updated":"2019-01-14 12:58:28.000000000","message":"Need retry @oslo_db_api.retry_on_deadlock here.","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0e92568fc30d56139d12e06e465e1d0227be78e3","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":165,"context_line":"        return self._do_update_attach_handle(context, uuid, values)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _do_update_attach_handle(self, context, uuid, values):"},{"line_number":168,"context_line":"        with _session_for_write():"},{"line_number":169,"context_line":"            query \u003d model_query(context, models.AttachHandle)"},{"line_number":170,"context_line":"            query \u003d add_identity_filter(query, uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_4d3b759b","line":167,"in_reply_to":"bfdaf3ff_ad400f37","updated":"2019-01-16 10:22:58.000000000","message":"Done","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"941a96ebcf6c99229aa9ce656a86a85cf772df88","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                raise exception.AttachHandleNotFound(uuid\u003duuid)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def control_path_create(self, context, values):"},{"line_number":188,"context_line":"        if not values.get(\u0027uuid\u0027):"},{"line_number":189,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        control_path_id \u003d models.ControlpathID()"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_922be692","line":188,"updated":"2019-01-14 12:58:28.000000000","message":"Auto generate uuid here, but in the obj.create, u raise exc if uuid not exist, may need improve. Also the attach_handle.","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0e92568fc30d56139d12e06e465e1d0227be78e3","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                raise exception.AttachHandleNotFound(uuid\u003duuid)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def control_path_create(self, context, values):"},{"line_number":188,"context_line":"        if not values.get(\u0027uuid\u0027):"},{"line_number":189,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        control_path_id \u003d models.ControlpathID()"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_0d456d17","line":188,"in_reply_to":"bfdaf3ff_922be692","updated":"2019-01-16 10:22:58.000000000","message":"Done","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"}],"cyborg/objects/__init__.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8f93037343e6138bb8990465cb200c0785712c24","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    # NOTE(danms): You must make sure your object gets imported in this"},{"line_number":26,"context_line":"    # function in order for it to be registered by services that may"},{"line_number":27,"context_line":"    # need to receive it via RPC."},{"line_number":28,"context_line":"    __import__(\u0027cyborg.objects.accelerator\u0027)"},{"line_number":29,"context_line":"    __import__(\u0027cyborg.objects.deployable\u0027)"},{"line_number":30,"context_line":"    __import__(\u0027cyborg.objects.attribute\u0027)"},{"line_number":31,"context_line":"    __import__(\u0027cyborg.objects.attach_handle\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_4e84ef0c","line":28,"updated":"2019-01-24 14:54:21.000000000","message":"Who will remove the accelerator object?","commit_id":"3d419552ef8fdc48d3a990db97fc8f44734cd7c0"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8f93037343e6138bb8990465cb200c0785712c24","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    # NOTE(danms): You must make sure your object gets imported in this"},{"line_number":26,"context_line":"    # function in order for it to be registered by services that may"},{"line_number":27,"context_line":"    # need to receive it via RPC."},{"line_number":28,"context_line":"    __import__(\u0027cyborg.objects.accelerator\u0027)"},{"line_number":29,"context_line":"    __import__(\u0027cyborg.objects.deployable\u0027)"},{"line_number":30,"context_line":"    __import__(\u0027cyborg.objects.attribute\u0027)"},{"line_number":31,"context_line":"    __import__(\u0027cyborg.objects.attach_handle\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_2ceab874","line":28,"updated":"2019-01-24 14:54:21.000000000","message":"Could we check if the v1 API to get accelerators still works with these changes?","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"959a7cd8feb823bada270adc824c30adcdee9d98","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    # NOTE(danms): You must make sure your object gets imported in this"},{"line_number":26,"context_line":"    # function in order for it to be registered by services that may"},{"line_number":27,"context_line":"    # need to receive it via RPC."},{"line_number":28,"context_line":"    __import__(\u0027cyborg.objects.accelerator\u0027)"},{"line_number":29,"context_line":"    __import__(\u0027cyborg.objects.deployable\u0027)"},{"line_number":30,"context_line":"    __import__(\u0027cyborg.objects.attribute\u0027)"},{"line_number":31,"context_line":"    __import__(\u0027cyborg.objects.attach_handle\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_85c60d9a","line":28,"in_reply_to":"9fdfeff1_2ceab874","updated":"2019-01-25 03:20:11.000000000","message":"the accelerator table will be dropped in this version. if you want to keep the compatibility, we can deal with it in API layer(for example, return a Null)","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"}],"cyborg/objects/attach_handle.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"6b21713381fb059d01cef472ba88c97637933dcd","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027attach_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027attach_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfdaf3ff_b261ee07","line":38,"updated":"2019-01-18 04:22:56.000000000","message":"I don\u0027t find deployable_id at db layer in Coco\u0027s patch. Maybe it is device_id?","commit_id":"5cd092bbc6f8257dde6ebb1d67e8fff69d05517e"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"14473e791c88e2264d32b9a01056f717576cf5ea","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027attach_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027attach_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_411e340d","line":38,"in_reply_to":"bfdaf3ff_b261ee07","updated":"2019-01-21 03:18:41.000000000","message":"according to last weekly meeting, it should be \"deployable_id\" stored in this object. http://eavesdrop.openstack.org/meetings/openstack_cyborg/2019/openstack_cyborg.2019-01-16-03.04.log.html","commit_id":"5cd092bbc6f8257dde6ebb1d67e8fff69d05517e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8f93037343e6138bb8990465cb200c0785712c24","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        \u0027id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027attach_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027attach_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_2c6dd803","line":39,"updated":"2019-01-24 14:54:21.000000000","message":"Presumably, the integer type for this field was taken from the proposed db layer code. But this should be a string or an enum,like \u0027PCI\u0027.","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"959a7cd8feb823bada270adc824c30adcdee9d98","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        \u0027id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027attach_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027attach_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_a546b120","line":39,"in_reply_to":"9fdfeff1_2c6dd803","updated":"2019-01-25 03:20:11.000000000","message":"This will be changed if db layer code changes.","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8f93037343e6138bb8990465cb200c0785712c24","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027attach_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027attach_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def create(self, context):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_cca68c54","line":40,"updated":"2019-01-24 14:54:21.000000000","message":"It will be good to add a comment that this is really JSON.","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"9c92c44e4e28b96787b7496d6260a626d1073a12","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":29,"context_line":"class AttachHandle(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_077c18b4","line":29,"range":{"start_line":29,"start_character":6,"end_line":29,"end_character":18},"updated":"2019-02-27 10:16:19.000000000","message":"The attachhandle is associated with the controlpath_id.\nAnd still lost \"in_use\" field, pls refer to the newest db model.","commit_id":"ebe865a5ba7e29460015d9eac280d962d87530ee"}],"cyborg/objects/control_path.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"6b21713381fb059d01cef472ba88c97637933dcd","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027control_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027control_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfdaf3ff_d25ef242","line":38,"updated":"2019-01-18 04:22:56.000000000","message":"Same as previous comment.","commit_id":"5cd092bbc6f8257dde6ebb1d67e8fff69d05517e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8f93037343e6138bb8990465cb200c0785712c24","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        \u0027id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027control_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027control_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_2c3b98eb","line":39,"updated":"2019-01-24 14:54:21.000000000","message":"This too should be a string or an enum, as with attach handle.","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"8f93037343e6138bb8990465cb200c0785712c24","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027control_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027control_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def create(self, context):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_ec24b0c8","line":40,"updated":"2019-01-24 14:54:21.000000000","message":"The names \u0027control_type\u0027 and \u0027control_info\u0027 could be misleading -- it is not a type of control. If you think \u0027controlpath_id_type\u0027 is long, we could abbreviate to \u0027cpid_type\u0027 or something like that.","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"7b3c98a1d82081dd4fc9f202b5588758a2a60f43","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027control_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027control_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def create(self, context):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_ee2ebf41","line":40,"in_reply_to":"9fdfeff1_e55d99e9","updated":"2019-02-12 04:17:00.000000000","message":"Done from the DB layer.","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"959a7cd8feb823bada270adc824c30adcdee9d98","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deployable_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":39,"context_line":"        \u0027control_type\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":40,"context_line":"        \u0027control_info\u0027: object_fields.StringField(nullable\u003dFalse)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def create(self, context):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_e55d99e9","line":40,"in_reply_to":"9fdfeff1_ec24b0c8","updated":"2019-01-25 03:20:11.000000000","message":"this is also according to db layer code. I\u0027m fine with what you said.","commit_id":"ae293d24e0f8cf4ba7e78bf1ab88b3b808732b0a"}]}
