)]}'
{"cyborg/common/exception.py":[{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"49192e9bcea49f5fb39ae88a5ccc6a36c72f0153","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    _msg_fmt \u003d _(\"Deployable %(uuid)s could not be found.\")"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"class ExtArqNotFound(NotFound):"},{"line_number":164,"context_line":"    _msg_fmt \u003d _(\"ExtArq %(uuid)s could not be found.\")"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_9c768da4","line":163,"range":{"start_line":163,"start_character":6,"end_line":163,"end_character":20},"updated":"2019-01-15 02:21:18.000000000","message":"Consider moving these 2 ExtArq exceptions together for future readability.","commit_id":"d5eb2d2f01c1d0df1786a35f314421de10d6d2bc"}],"cyborg/db/sqlalchemy/api.py":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"577d44e04dd346539e47a5fce3c43391c15a6626","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":505,"context_line":"        if values.get(\u0027id\u0027):"},{"line_number":506,"context_line":"            values.pop(\u0027id\u0027, None)"},{"line_number":507,"context_line":"        extarq \u003d models.ExtArq()"},{"line_number":508,"context_line":"        extarq.update(values)"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        with _session_for_write() as session:"},{"line_number":511,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_60d85b7a","line":508,"range":{"start_line":507,"start_character":8,"end_line":508,"end_character":29},"updated":"2019-01-31 02:52:36.000000000","message":"Shouldn\u0027t there be a try catch around this?","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"e41d1e4b755d034d7423a37b5c1af643be1187b7","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":505,"context_line":"        if values.get(\u0027id\u0027):"},{"line_number":506,"context_line":"            values.pop(\u0027id\u0027, None)"},{"line_number":507,"context_line":"        extarq \u003d models.ExtArq()"},{"line_number":508,"context_line":"        extarq.update(values)"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        with _session_for_write() as session:"},{"line_number":511,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_07af452a","line":508,"range":{"start_line":507,"start_character":8,"end_line":508,"end_character":29},"in_reply_to":"9fdfeff1_60d85b7a","updated":"2019-02-13 14:46:38.000000000","message":"Just update as dict here, it is unnecessary.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"792c73921206abdc9862051869a85bfa1751c61e","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":505,"context_line":"        if values.get(\u0027id\u0027):"},{"line_number":506,"context_line":"            values.pop(\u0027id\u0027, None)"},{"line_number":507,"context_line":"        extarq \u003d models.ExtArq()"},{"line_number":508,"context_line":"        extarq.update(values)"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        with _session_for_write() as session:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_df6f755d","line":507,"range":{"start_line":507,"start_character":24,"end_line":507,"end_character":30},"updated":"2019-02-18 06:46:15.000000000","message":"ExtendedAcceleratorRequest?","commit_id":"2f1f372edefc0f341458dd2cda120a90eba72617"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"792c73921206abdc9862051869a85bfa1751c61e","unresolved":false,"context_lines":[{"line_number":550,"context_line":"    def extarq_get(self, context, uuid):"},{"line_number":551,"context_line":"        query \u003d model_query("},{"line_number":552,"context_line":"            context,"},{"line_number":553,"context_line":"            models.ExtArq).filter_by(uuid\u003duuid)"},{"line_number":554,"context_line":"        try:"},{"line_number":555,"context_line":"            return query.one()"},{"line_number":556,"context_line":"        except NoResultFound:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_5f99456a","line":553,"range":{"start_line":553,"start_character":19,"end_line":553,"end_character":25},"updated":"2019-02-18 06:46:15.000000000","message":"ExtendedAcceleratorRequest?","commit_id":"2f1f372edefc0f341458dd2cda120a90eba72617"}],"cyborg/objects/arq.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"6daaa3c84141d85361d686fcbcebd788bc54970a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":"from oslo_versionedobjects import base as object_base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cyborg.db import api as dbapi"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_3d02a870","line":16,"updated":"2019-02-12 21:39:29.000000000","message":"I think it is erroneous to create an ARQ without an ExtARQ. We don\u0027t need ways to get, create or delete ARQs by themselves, without the ExtARQ. In the pilot branch, both are together, and only the ExtARQ has get/create/delete ops.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"e41d1e4b755d034d7423a37b5c1af643be1187b7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":"from oslo_versionedobjects import base as object_base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cyborg.db import api as dbapi"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_3a237ca9","line":16,"in_reply_to":"9fdfeff1_3d02a870","updated":"2019-02-13 14:46:38.000000000","message":"Done","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"e142192459a42739a0c1511e2b9ede89b4258b12","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":30,"context_line":"class ARQ(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":31,"context_line":"    # Version 1.0: Initial version"},{"line_number":32,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_59a18ef7","line":30,"range":{"start_line":30,"start_character":6,"end_line":30,"end_character":9},"updated":"2019-01-31 08:32:04.000000000","message":"IMO, any object name, table name, API, should expand to the full name rather than abbreviation. Something like: AcceleratorRequest.\n\nIn addition, some questions should be discussed, (but I\u0027m not sure it\u0027s too late or not at this point).\n\nI know AcceleratorRequest is came from the idea of PCIRequest(as we talked in wechat), but I think AcceleratorRequest is a little wired in here, especially, when this object contains a ``state`` field.\n\nI think it should be something like \"Accelerator\", because we can say we bound a Acc, and this Accelerator state is \u0027bound\u0027. but I\u0027m not sure it\u0027s okay or not if we say \"AcceleratorRequest\" is bound.\n\nAnd from doc [1] said:\n\n\u003e Accelerator: a logical resource that can offload computation. It is NOT a device (physical hardware). It is represented as a Resource Class inventory in Placement (e.g. CUSTOM_ACCELERATOR_GPU).\n\u003e \n\nSo, I just wanna sure does the arq is the same concept with the \"accelerator\" in doc. I think the \"accelerator\" is a good concept to abstract the virtual acc.\n\nWhatever from other service view or cyborg, we should keep the thing simple, I just wanna see an \"Accelerator\"（just like the volume object in cinder, the port in neutron）, and this \"accelerator \" object contains all info (like state, device_profile, attach info). \n\n[1] https://docs.google.com/document/d/1XLQtvyGJeEgo3ztBQiufWLF-E7S7yGLaYrme8iUPtA0","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f6dc534e64bf92d2af43ef63dd173d2b6ad57899","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":30,"context_line":"class ARQ(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":31,"context_line":"    # Version 1.0: Initial version"},{"line_number":32,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_73b2b896","line":30,"range":{"start_line":30,"start_character":6,"end_line":30,"end_character":9},"in_reply_to":"9fdfeff1_59a18ef7","updated":"2019-02-12 03:43:22.000000000","message":"Thanks for the comment. I am fine with spelling it out in full. However, an accelerator and an Accelerator Request are two different things. \n\nAn accelerator, as quoted from [1], is a logical resource that can be assigned to a VM. We model a Device has having many Deployables, and each Deployable has one or more accelerators of some resource class. We model accelerators in Cyborg as a resource class in Placement, i.e., there is no accelerator object, only a count.\n\nAn ARQ is a logical object, not within the device, but used to encapsulate the state of the request for an accelerator, as it goes back and forth between Nova and Cyborg.\n\nFor example, say a host has a GPU and a FPGA. So there are 2 devices, each with one deployable, and say each deployable has 2 accelerators. Say the operator defines a device profile (a flavor for devices) that says: I want 2 FPGA accelerators and 1 GPU accelerator. When a user requests a VM with that device profile, 3 ARQs will be created, one for each requested accelerator. Nova will call Cyborg to create the 3 ARQs, then assign resource providers to each ARQ, then call Cyborg to bind each ARQ to that RP.Later, Nova virt driver will call Cyborg to get the bound ARQs and use the attach handles (PCI VFs) in the ARQs.\n\nIn this example, there are 2 devices, 4 accelerators and 3 ARQs. HTH.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"6daaa3c84141d85361d686fcbcebd788bc54970a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.obj_reset_changes()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @staticmethod"},{"line_number":81,"context_line":"    def _from_db_object(arq, db_arq):"},{"line_number":82,"context_line":"        \"\"\"Converts an ARQ to a formal object."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        :param arq: An object of the class ARQ"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_3d1068a8","line":81,"range":{"start_line":81,"start_character":29,"end_line":81,"end_character":36},"updated":"2019-02-12 21:39:29.000000000","message":"There is no db table for ARQ.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"e41d1e4b755d034d7423a37b5c1af643be1187b7","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.obj_reset_changes()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @staticmethod"},{"line_number":81,"context_line":"    def _from_db_object(arq, db_arq):"},{"line_number":82,"context_line":"        \"\"\"Converts an ARQ to a formal object."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        :param arq: An object of the class ARQ"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_1a1eb85e","line":81,"range":{"start_line":81,"start_character":29,"end_line":81,"end_character":36},"in_reply_to":"9fdfeff1_3d1068a8","updated":"2019-02-13 14:46:38.000000000","message":"Done","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"577d44e04dd346539e47a5fce3c43391c15a6626","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        attach_handle_id \u003d db_arq.pop(\u0027attach_handle_id\u0027, None)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        for field in arq.fields:"},{"line_number":92,"context_line":"            # if field \u003d\u003d \u0027device_profile\u0027:"},{"line_number":93,"context_line":"            #     arq._load_device_profile(device_profile_id)"},{"line_number":94,"context_line":"            # if field \u003d\u003d \u0027attach_handle\u0027:"},{"line_number":95,"context_line":"            #     arq._load_device_profile(attach_handle_id)"},{"line_number":96,"context_line":"            arq[field] \u003d db_arq[field]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        arq.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_00406f06","line":95,"range":{"start_line":92,"start_character":4,"end_line":95,"end_character":60},"updated":"2019-01-31 02:52:36.000000000","message":"Remove the lines that are commented out if they are not needed","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"e41d1e4b755d034d7423a37b5c1af643be1187b7","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        attach_handle_id \u003d db_arq.pop(\u0027attach_handle_id\u0027, None)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        for field in arq.fields:"},{"line_number":92,"context_line":"            # if field \u003d\u003d \u0027device_profile\u0027:"},{"line_number":93,"context_line":"            #     arq._load_device_profile(device_profile_id)"},{"line_number":94,"context_line":"            # if field \u003d\u003d \u0027attach_handle\u0027:"},{"line_number":95,"context_line":"            #     arq._load_device_profile(attach_handle_id)"},{"line_number":96,"context_line":"            arq[field] \u003d db_arq[field]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        arq.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_9a186876","line":95,"range":{"start_line":92,"start_character":4,"end_line":95,"end_character":60},"in_reply_to":"9fdfeff1_00406f06","updated":"2019-02-13 14:46:38.000000000","message":"Thx Rushil,\nIt is needed, but objects AttachHandle and DeviceProfile are not ready.So comment out these lines to pass the test case temporarily.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"}],"cyborg/objects/ext_arq.py":[{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"743753fbbac6c946c79f14fdb9414458bb2a21f9","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":28,"context_line":"class ExtArq(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":29,"context_line":"    # Version 1.0: Initial version"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a18e0025","line":26,"updated":"2019-01-21 03:37:29.000000000","message":"missing arq objects here.","commit_id":"d5eb2d2f01c1d0df1786a35f314421de10d6d2bc"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"3864fc09c298c08475cd0d7ef77dab4662f6bce1","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":28,"context_line":"class ExtArq(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":29,"context_line":"    # Version 1.0: Initial version"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_407dc51a","line":26,"in_reply_to":"9fdfeff1_a18e0025","updated":"2019-01-21 15:32:55.000000000","message":"Finish part of it, but not a final version.","commit_id":"d5eb2d2f01c1d0df1786a35f314421de10d6d2bc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"743753fbbac6c946c79f14fdb9414458bb2a21f9","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    # Version 1.0: Initial version"},{"line_number":30,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    dbapi \u003d dbapi.get_instance()"},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField(nullable\u003dFalse),"},{"line_number":36,"context_line":"        \u0027state\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027device_profile_id\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":38,"context_line":"        \u0027hostname\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":39,"context_line":"        \u0027device_rp_uuid\u0027: object_fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027device_instance_uuid\u0027: object_fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027attach_handle_id\u0027: object_fields.IntegerField(nullable\u003dTrue),"},{"line_number":42,"context_line":"    }"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create(self, context):"},{"line_number":45,"context_line":"        \"\"\"Create an ExtArq record in the DB.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_01d7ccef","line":42,"range":{"start_line":32,"start_character":0,"end_line":42,"end_character":5},"updated":"2019-01-21 03:37:29.000000000","message":"This need to be refactored. There should be 2 objects here, Arq and ExtArq, the Arq object contains the info needed to interact with nova, the ExtArq is cyborg\u0027s internal object which contains some private info(info that nova does not    really care about). These 2 objects all based on one table in cyborg DB.","commit_id":"d5eb2d2f01c1d0df1786a35f314421de10d6d2bc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"743753fbbac6c946c79f14fdb9414458bb2a21f9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        return obj_extarq"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @classmethod"},{"line_number":58,"context_line":"    def list(cls, context, limit, marker, sort_key, sort_dir):"},{"line_number":59,"context_line":"        \"\"\"Return a list of ExtArq objects.\"\"\""},{"line_number":60,"context_line":"        db_extarqs \u003d cls.dbapi.extarq_list(context, limit, marker, sort_key,"},{"line_number":61,"context_line":"                                           sort_dir)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a105a07c","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":62},"updated":"2019-01-21 03:37:29.000000000","message":"maybe it\u0027s better to apply a filter here.","commit_id":"d5eb2d2f01c1d0df1786a35f314421de10d6d2bc"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"52d17f464060fed7a4d63cd653239ebb53ff1f71","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        return obj_extarq"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @classmethod"},{"line_number":58,"context_line":"    def list(cls, context, limit, marker, sort_key, sort_dir):"},{"line_number":59,"context_line":"        \"\"\"Return a list of ExtArq objects.\"\"\""},{"line_number":60,"context_line":"        db_extarqs \u003d cls.dbapi.extarq_list(context, limit, marker, sort_key,"},{"line_number":61,"context_line":"                                           sort_dir)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_fffecb03","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":62},"in_reply_to":"9fdfeff1_20d761f0","updated":"2019-01-22 02:29:12.000000000","message":"IMHO, it is better to have filter in both obj layer and db layer.","commit_id":"d5eb2d2f01c1d0df1786a35f314421de10d6d2bc"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"3864fc09c298c08475cd0d7ef77dab4662f6bce1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        return obj_extarq"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @classmethod"},{"line_number":58,"context_line":"    def list(cls, context, limit, marker, sort_key, sort_dir):"},{"line_number":59,"context_line":"        \"\"\"Return a list of ExtArq objects.\"\"\""},{"line_number":60,"context_line":"        db_extarqs \u003d cls.dbapi.extarq_list(context, limit, marker, sort_key,"},{"line_number":61,"context_line":"                                           sort_dir)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_20d761f0","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":62},"in_reply_to":"9fdfeff1_a105a07c","updated":"2019-01-21 15:32:55.000000000","message":"It\u0027s in the db layer, do u prefer to place here?","commit_id":"d5eb2d2f01c1d0df1786a35f314421de10d6d2bc"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"e142192459a42739a0c1511e2b9ede89b4258b12","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":30,"context_line":"class ExtARQ(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":31,"context_line":"    \"\"\" ExtARQ is a wrapper around ARQ with Cyborg-private fields."},{"line_number":32,"context_line":"        Each ExtARQ object contains exactly one ARQ object as a field."},{"line_number":33,"context_line":"        But, in the db layer, ExtARQ and ARQ are represented together"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_d43ea5bf","line":30,"range":{"start_line":30,"start_character":6,"end_line":30,"end_character":12},"updated":"2019-01-31 08:32:04.000000000","message":"Also should be expanded.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"7cbdefb2dee8ca8bde49c29adcef5332c83e1dbf","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":30,"context_line":"class ExtARQ(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":31,"context_line":"    \"\"\" ExtARQ is a wrapper around ARQ with Cyborg-private fields."},{"line_number":32,"context_line":"        Each ExtARQ object contains exactly one ARQ object as a field."},{"line_number":33,"context_line":"        But, in the db layer, ExtARQ and ARQ are represented together"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_f34c689f","line":30,"range":{"start_line":30,"start_character":6,"end_line":30,"end_character":12},"in_reply_to":"9fdfeff1_d43ea5bf","updated":"2019-02-12 03:46:55.000000000","message":"This is internal to Cyborg. Not shared with Nova. IMHO, it becomes a little clunky to say \u0027ExtendedAcceleratorRequest\u0027 everywhere.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"e142192459a42739a0c1511e2b9ede89b4258b12","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":30,"context_line":"class ExtARQ(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":31,"context_line":"    \"\"\" ExtARQ is a wrapper around ARQ with Cyborg-private fields."},{"line_number":32,"context_line":"        Each ExtARQ object contains exactly one ARQ object as a field."},{"line_number":33,"context_line":"        But, in the db layer, ExtARQ and ARQ are represented together"},{"line_number":34,"context_line":"        as a row in a single table. Both share a single UUID."}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_74057910","line":31,"updated":"2019-01-31 08:32:04.000000000","message":"Do we really need a ExtARQ?\n\nIMO, As I mentioned in arq.py, I think we just need an Accelerator (make the view of cyborg and other service unified), and the extra info like \u0027substate\u0027, \u0027deployable_uuid\u0027 should be treated as the extra_info or attachment or metadata or some other thing.\n\nI just think If we have a ExtARQ in cyborg but ARQ in other services, it will make the thing complex.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"5e731c33c3eba8d00e8481024df00ea72be863d0","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":30,"context_line":"class ExtARQ(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":31,"context_line":"    \"\"\" ExtARQ is a wrapper around ARQ with Cyborg-private fields."},{"line_number":32,"context_line":"        Each ExtARQ object contains exactly one ARQ object as a field."},{"line_number":33,"context_line":"        But, in the db layer, ExtARQ and ARQ are represented together"},{"line_number":34,"context_line":"        as a row in a single table. Both share a single UUID."}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_737718d6","line":31,"in_reply_to":"9fdfeff1_74057910","updated":"2019-02-12 03:45:26.000000000","message":"An ARQ is shared between Nova and Cyborg. Its fields are interpreted by both sides. ExtARQ is private to Cyborg. It includes the ARQ, but has other fields that are not shared with Nova.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"792c73921206abdc9862051869a85bfa1751c61e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        # Cyborg-private fields"},{"line_number":47,"context_line":"        # Left substate open now, fill them out during design/implementation"},{"line_number":48,"context_line":"        # later."},{"line_number":49,"context_line":"        \u0027substate\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":50,"context_line":"        \u0027deployable_uuid\u0027:"},{"line_number":51,"context_line":"            object_fields.object_fields.UUIDField(nullable\u003dFalse)"},{"line_number":52,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_de410da8","line":49,"range":{"start_line":49,"start_character":34,"end_line":49,"end_character":45},"updated":"2019-02-18 06:46:15.000000000","message":"Pls change to Enum type.","commit_id":"a5d78d9da274a0dbecac9719f94a67d3de4cd98e"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"792c73921206abdc9862051869a85bfa1751c61e","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":31,"context_line":"class ExtARQ(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":32,"context_line":"    \"\"\" ExtARQ is a wrapper around ARQ with Cyborg-private fields."},{"line_number":33,"context_line":"        Each ExtARQ object contains exactly one ARQ object as a field."},{"line_number":34,"context_line":"        But, in the db layer, ExtARQ and ARQ are represented together"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_9f8ecd2b","line":31,"range":{"start_line":31,"start_character":6,"end_line":31,"end_character":12},"updated":"2019-02-18 06:46:15.000000000","message":"Full name instead of abbreviation?","commit_id":"2f1f372edefc0f341458dd2cda120a90eba72617"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"792c73921206abdc9862051869a85bfa1751c61e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        # Cyborg-private fields"},{"line_number":48,"context_line":"        # Left substate open now, fill them out during design/implementation"},{"line_number":49,"context_line":"        # later."},{"line_number":50,"context_line":"        \u0027substate\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":51,"context_line":"    }"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def create(self, context, device_profile_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_dfe8d5df","line":50,"range":{"start_line":50,"start_character":34,"end_line":50,"end_character":45},"updated":"2019-02-18 06:46:15.000000000","message":"It\u0027s merged now, but I think we can set the type same like ARO state and leave its value open for further discussion.","commit_id":"2f1f372edefc0f341458dd2cda120a90eba72617"}],"cyborg/objects/fields.py":[{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"792c73921206abdc9862051869a85bfa1751c61e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"EnumField \u003d object_fields.EnumField"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ARQState(object_fields.Enum):"},{"line_number":36,"context_line":"    ALL \u003d constants.ARQ_STATES"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_dfc1b54f","line":35,"range":{"start_line":35,"start_character":6,"end_line":35,"end_character":14},"updated":"2019-02-18 06:46:15.000000000","message":"As I said, create something for the \"substate\".","commit_id":"2f1f372edefc0f341458dd2cda120a90eba72617"}]}
