)]}'
{"cyborg/accelerator/drivers/fpga/intel/driver.py":[{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"0f0d4dac44550e8115cc871787a2138ab27cf98d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def program_v2(self, controlpath_id, image_file_path):"},{"line_number":63,"context_line":"        \"\"\"Program the FPGA with the provided bitstream image."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"           TODO(Sundar): Is it secure to store the image as a file?"},{"line_number":66,"context_line":"               Need to handle retries."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"           :param: controlpath_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_ae840dd4","line":65,"range":{"start_line":65,"start_character":25,"end_line":65,"end_character":66},"updated":"2019-08-01 16:59:39.000000000","message":"The IP core is buy by the tenants, please make sure the secure.","commit_id":"9d916de6e7d0388a08f82f0d0f3ace1985984651"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"74eab56cf198abc3f39d4375be6ea7b13ca11c24","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def program_v2(self, controlpath_id, image_file_path):"},{"line_number":63,"context_line":"        \"\"\"Program the FPGA with the provided bitstream image."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"           TODO(Sundar): Is it secure to store the image as a file?"},{"line_number":66,"context_line":"               Need to handle retries."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"           :param: controlpath_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_fe49e58d","line":65,"range":{"start_line":65,"start_character":25,"end_line":65,"end_character":66},"in_reply_to":"7faddb67_ae840dd4","updated":"2019-08-09 06:42:35.000000000","message":"On reflection, this same question could be raised when the image is stored in Glance. The bitstream encryption and authentication need to be enforced by the underlying software stack and/or FPGA device. Cyborg can recommend and clarify that.","commit_id":"9d916de6e7d0388a08f82f0d0f3ace1985984651"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"027c72c7f9be617f75e4acdc1dbc73b3da962e90","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        cmd.append(image_file_path)"},{"line_number":91,"context_line":"        LOG.info(\u0027Running command: %s\u0027, cmd)"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            # TODO Use oslo.privsep, not subprocess.Popen"},{"line_number":94,"context_line":"            out \u003d subprocess.check_output(cmd, stderr\u003dsubprocess.STDOUT,"},{"line_number":95,"context_line":"                                          shell\u003dFalse)"},{"line_number":96,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_530e06e6","line":93,"updated":"2019-09-06 14:10:04.000000000","message":"I was going to ask about this.","commit_id":"03bf969f2b7c80ad79c44ed23dfa2166d9bdf697"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"a680a1db513955e81cac6816d10012678951ea20","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        cmd.append(image_file_path)"},{"line_number":91,"context_line":"        LOG.info(\u0027Running command: %s\u0027, cmd)"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            # TODO Use oslo.privsep, not subprocess.Popen"},{"line_number":94,"context_line":"            out \u003d subprocess.check_output(cmd, stderr\u003dsubprocess.STDOUT,"},{"line_number":95,"context_line":"                                          shell\u003dFalse)"},{"line_number":96,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_596f05c5","line":93,"in_reply_to":"5faad753_530e06e6","updated":"2019-09-06 15:11:32.000000000","message":"We have this WIP: https://review.opendev.org/#/c/673957/","commit_id":"03bf969f2b7c80ad79c44ed23dfa2166d9bdf697"}],"cyborg/agent/rpcapi.py":[{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"0f0d4dac44550e8115cc871787a2138ab27cf98d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                          deployable_uuid\u003ddeployable_uuid,"},{"line_number":74,"context_line":"                          image_uuid\u003dbitstream_uuid)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def fpga_program_v2(self, context, hostname, controlpath_id,"},{"line_number":77,"context_line":"                        bitstream_uuid, driver_name):"},{"line_number":78,"context_line":"        LOG.info(\u0027Agent fpga_program_v2: hostname: (%s) \u0027 +"},{"line_number":79,"context_line":"                 \u0027bitstream_id: (%s)\u0027, hostname, bitstream_uuid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_8eb4b183","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":23},"updated":"2019-08-01 16:59:39.000000000","message":"why need a V2 instead of improvement on V1?","commit_id":"9d916de6e7d0388a08f82f0d0f3ace1985984651"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"74eab56cf198abc3f39d4375be6ea7b13ca11c24","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                          deployable_uuid\u003ddeployable_uuid,"},{"line_number":74,"context_line":"                          image_uuid\u003dbitstream_uuid)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def fpga_program_v2(self, context, hostname, controlpath_id,"},{"line_number":77,"context_line":"                        bitstream_uuid, driver_name):"},{"line_number":78,"context_line":"        LOG.info(\u0027Agent fpga_program_v2: hostname: (%s) \u0027 +"},{"line_number":79,"context_line":"                 \u0027bitstream_id: (%s)\u0027, hostname, bitstream_uuid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_990d6b37","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":23},"in_reply_to":"7faddb67_8eb4b183","updated":"2019-08-09 06:42:35.000000000","message":"Because the method parameters are different. This method needs the host name, control path id etc., which are already available with the caller. So, instead of reading the db again using the deployable object, we just pass them in from the caller.","commit_id":"9d916de6e7d0388a08f82f0d0f3ace1985984651"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"b3d822fac9deda8658b20b88c9c2e6d61981e92a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                        bitstream_uuid, driver_name):"},{"line_number":78,"context_line":"        LOG.info(\u0027Agent fpga_program_v2: hostname: (%s) \u0027 +"},{"line_number":79,"context_line":"                 \u0027bitstream_id: (%s)\u0027, hostname, bitstream_uuid)"},{"line_number":80,"context_line":"        version \u003d \u00271.0\u0027"},{"line_number":81,"context_line":"        cctxt \u003d self.client.prepare(server\u003dhostname, version\u003dversion)"},{"line_number":82,"context_line":"        return cctxt.call(context, \u0027fpga_program_v2\u0027,"},{"line_number":83,"context_line":"                          controlpath_id\u003dcontrolpath_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_513a11cd","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":15},"updated":"2019-08-14 13:59:39.000000000","message":"here the version is still 1.0\n\nIt is really strange we define a function with _v2 as suffix.\nWhy not use version to distinguish this function?","commit_id":"97df9e9911cf395abc3c6a6fa7ec525c246fdfb7"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"c18fa6ce95280972e315b6a5b50fbc617268aefd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                 \u0027bitstream_id: (%s)\u0027, hostname, bitstream_uuid)"},{"line_number":80,"context_line":"        version \u003d \u00271.0\u0027"},{"line_number":81,"context_line":"        cctxt \u003d self.client.prepare(server\u003dhostname, version\u003dversion)"},{"line_number":82,"context_line":"        return cctxt.call(context, \u0027fpga_program_v2\u0027,"},{"line_number":83,"context_line":"                          controlpath_id\u003dcontrolpath_id,"},{"line_number":84,"context_line":"                          bitstream_uuid\u003dbitstream_uuid,"},{"line_number":85,"context_line":"                          driver_name\u003ddriver_name)"}],"source_content_type":"text/x-python","patch_set":27,"id":"5faad753_8493db4f","line":82,"updated":"2019-09-06 09:39:48.000000000","message":"fpga_program_v2 in manager return nothing. So I think it\u0027s better to use cast here.","commit_id":"24ea55811dd1f48f89113d071a006c8204462dcd"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"a84d0e7f2d05d94318d928cd6279ca4228bd10d9","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                 \u0027bitstream_id: (%s)\u0027, hostname, bitstream_uuid)"},{"line_number":80,"context_line":"        version \u003d \u00271.0\u0027"},{"line_number":81,"context_line":"        cctxt \u003d self.client.prepare(server\u003dhostname, version\u003dversion)"},{"line_number":82,"context_line":"        return cctxt.call(context, \u0027fpga_program_v2\u0027,"},{"line_number":83,"context_line":"                          controlpath_id\u003dcontrolpath_id,"},{"line_number":84,"context_line":"                          bitstream_uuid\u003dbitstream_uuid,"},{"line_number":85,"context_line":"                          driver_name\u003ddriver_name)"}],"source_content_type":"text/x-python","patch_set":27,"id":"5faad753_e7117155","line":82,"in_reply_to":"5faad753_8493db4f","updated":"2019-09-06 10:05:45.000000000","message":"If the programming fails or returns a retry-able error code, the agent manager may have to take some action, like retry or propagate error tot he conductor. That is not implemented today because the underlying mechanisms are not fully set yet. I am expecting that we should handle these errors later, may be in Train itself, once we have the errors from os.privsep for programming too.","commit_id":"24ea55811dd1f48f89113d071a006c8204462dcd"}]}
