)]}'
{"cyborg/accelerator/configuration.py":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.local_conf \u003d CONF"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _ensure_config_values(self, accelerator_opts):"},{"line_number":32,"context_line":"        CONF.register_opts(accelerator_opts, group\u003dNone)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def append_config_values(self, accelerator_opts):"},{"line_number":35,"context_line":"        self._ensure_config_values(accelerator_opts)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_cd98d5c1","line":32,"updated":"2018-01-28 23:31:45.000000000","message":"Add docstrings describing what this method does? Same for all the methods below.","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def append_config_values(self, accelerator_opts):"},{"line_number":35,"context_line":"        self._ensure_config_values(accelerator_opts)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # get value from CONF"},{"line_number":38,"context_line":"    def safe_get(self, value):"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            return self.__getattr__(value)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_a1cb0470","line":37,"updated":"2018-01-29 17:05:02.000000000","message":"Put this below the method declaration and follow the guidelines defined here https://docs.openstack.org/hacking/latest/user/hacking.html","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def get(self, key, default\u003dNone):"},{"line_number":95,"context_line":"        return getattr(self, key, default)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    # get value from CONF"},{"line_number":98,"context_line":"    def safe_get(self, value):"},{"line_number":99,"context_line":"        try:"},{"line_number":100,"context_line":"            return self.__getattr__(value)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_61c5fc5a","line":97,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def append_config_values(self, accelerator_opts):"},{"line_number":131,"context_line":"        self.conf.append_config_values(accelerator_opts)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    # get value from CONF"},{"line_number":134,"context_line":"    def safe_get(self, value):"},{"line_number":135,"context_line":"        return self.conf.safe_get(value)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_01a2f8ae","line":133,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self._ensure_config_values(accelerator_opts)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def safe_get(self, value):"},{"line_number":38,"context_line":"        \"\"\"safe_get"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        get value from CONF."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_93cbbd70","line":38,"range":{"start_line":38,"start_character":11,"end_line":38,"end_character":19},"updated":"2018-01-29 19:13:30.000000000","message":"Please add more detail what this method does?","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            return None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __getattr__(self, value):"},{"line_number":51,"context_line":"        \"\"\"__getattr__"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"         Don\u0027t use self.local_conf to avoid reentrant call to __getattr__()."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_33cae96c","line":51,"range":{"start_line":51,"start_character":11,"end_line":51,"end_character":22},"updated":"2018-01-29 19:13:30.000000000","message":"ditto","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return getattr(self, key, default)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def safe_get(self, value):"},{"line_number":110,"context_line":"        \"\"\"safe_get"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        get value from CONF."},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_f3a1e1aa","line":110,"range":{"start_line":110,"start_character":11,"end_line":110,"end_character":19},"updated":"2018-01-29 19:13:30.000000000","message":"ditto","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        self.conf.append_config_values(accelerator_opts)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def safe_get(self, value):"},{"line_number":159,"context_line":"        \"\"\"safe_get"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        get value from CONF."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_b3ab5987","line":159,"range":{"start_line":159,"start_character":11,"end_line":159,"end_character":19},"updated":"2018-01-29 19:13:30.000000000","message":"Ditto","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        return self.conf.safe_get(value)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def __getattr__(self, value):"},{"line_number":170,"context_line":"        \"\"\"__getattr__"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        Don\u0027t use self.conf to avoid reentrant call to __getattr__()."},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_d3ae2597","line":170,"range":{"start_line":170,"start_character":0,"end_line":170,"end_character":22},"updated":"2018-01-29 19:13:30.000000000","message":"Ditto","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"}],"cyborg/accelerator/drivers/spdk/nvmf/nvmf.py":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            return self._get_one_accelerator()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_one_accelerator(self):"},{"line_number":32,"context_line":"        acc_client \u003d NvmfTgt(self.py)"},{"line_number":33,"context_line":"        bdevs \u003d acc_client.get_bdevs()"},{"line_number":34,"context_line":"        subsystems \u003d acc_client.get_nvmf_subsystems()"},{"line_number":35,"context_line":"        accelerator_obj \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_cdc6959b","line":32,"updated":"2018-01-28 23:31:45.000000000","message":"Add docstrings describing what this method does? Same for all the methods below.","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        super(NVMFDRIVER, self).__init__(*args, **kwargs)"},{"line_number":25,"context_line":"        self.py \u003d util.get_py_client(self.SERVER)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    # Discover a backend accelerator"},{"line_number":28,"context_line":"    def discover_accelerator(self):"},{"line_number":29,"context_line":"        if util.check_for_setup_error(self.py, self.SERVER):"},{"line_number":30,"context_line":"            return self._get_one_accelerator()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_81e7e812","line":27,"updated":"2018-01-29 17:05:02.000000000","message":"Move this below the method declaration and follow the guidelines defined at https://docs.openstack.org/hacking/latest/user/hacking.html","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        if util.check_for_setup_error(self.py, self.SERVER):"},{"line_number":30,"context_line":"            return self._get_one_accelerator()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _get_one_accelerator(self):"},{"line_number":33,"context_line":"        acc_client \u003d NvmfTgt(self.py)"},{"line_number":34,"context_line":"        # Display current blockdev list"},{"line_number":35,"context_line":"        bdevs \u003d acc_client.get_bdevs()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_a1e22400","line":32,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def uninstall_accelerator(self, driver_id, driver_type):"},{"line_number":49,"context_line":"        pass"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    # Discover a backend accelerator list"},{"line_number":52,"context_line":"    def accelerator_list(self):"},{"line_number":53,"context_line":"        return self._get_all_accelerators()"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_41f1e0cc","line":51,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def accelerator_list(self):"},{"line_number":53,"context_line":"        return self._get_all_accelerators()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _get_all_accelerators(self):"},{"line_number":56,"context_line":"        accelerators \u003d []"},{"line_number":57,"context_line":"        for accelerator_i in range(len(self.SERVERS)):"},{"line_number":58,"context_line":"            accelerator \u003d self.SERVERS[accelerator_i]"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_01bd18d7","line":55,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def detach_instance(self, instance_id):"},{"line_number":71,"context_line":"        pass"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    # Delete a nvmf subsystem"},{"line_number":74,"context_line":"    def delete_subsystem(self, nqn):"},{"line_number":75,"context_line":"        acc_client \u003d NvmfTgt(self.py)"},{"line_number":76,"context_line":"        acc_client.delete_nvmf_subsystem(nqn)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_21c05450","line":73,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        acc_client \u003d NvmfTgt(self.py)"},{"line_number":76,"context_line":"        acc_client.delete_nvmf_subsystem(nqn)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    # Add a nvmf subsystem"},{"line_number":79,"context_line":"    def construct_subsystem(self,"},{"line_number":80,"context_line":"                            nqn,"},{"line_number":81,"context_line":"                            listen,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_c1b650fb","line":78,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        pass"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def delete_subsystem(self, nqn):"},{"line_number":72,"context_line":"        \"\"\"delete_subsystem"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        Delete a nvmf subsystem."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_f38a4119","line":72,"range":{"start_line":72,"start_character":11,"end_line":72,"end_character":27},"updated":"2018-01-29 19:13:30.000000000","message":"Remove this and move Line 74 to this line","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                            serial_number,"},{"line_number":86,"context_line":"                            namespaces"},{"line_number":87,"context_line":"                            ):"},{"line_number":88,"context_line":"        \"\"\"construct_subsystem"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        Add a nvmf subsystem."},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_138ecd2d","line":88,"updated":"2018-01-29 19:13:30.000000000","message":"Ditto","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"}],"cyborg/accelerator/drivers/spdk/spdk.py":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":17,"context_line":"        for subclass in cls.__subclasses__():"},{"line_number":18,"context_line":"            if server \u003d\u003d subclass.SERVER:"},{"line_number":19,"context_line":"                return subclass(*args, **kwargs)"},{"line_number":20,"context_line":"        raise LookupError(\"Not find the SPDK driver for server %s\" % server)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":23,"context_line":"        super(SPDKDRIVER, self).__init__()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_ad46a94e","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":30},"updated":"2018-01-28 23:31:45.000000000","message":"Could not","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":23,"context_line":"        super(SPDKDRIVER, self).__init__()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    # Discover a backend accelerator"},{"line_number":26,"context_line":"    def discover_accelerator(self):"},{"line_number":27,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_e15a6c28","line":25,"range":{"start_line":25,"start_character":3,"end_line":25,"end_character":36},"updated":"2018-01-29 17:05:02.000000000","message":"This goes after the method declaration. And please follow the guidelines defined here https://docs.openstack.org/hacking/latest/user/hacking.html","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def discover_accelerator(self):"},{"line_number":27,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # install a backend accelerator"},{"line_number":30,"context_line":"    def install_accelerator(self, driver_id, driver_type):"},{"line_number":31,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_8141283c","line":29,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def install_accelerator(self, driver_id, driver_type):"},{"line_number":31,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    # uninstall a backend accelerator"},{"line_number":34,"context_line":"    def uninstall_accelerator(self, driver_id, driver_type):"},{"line_number":35,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_017758a2","line":33,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def uninstall_accelerator(self, driver_id, driver_type):"},{"line_number":35,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # Discover a backend accelerator list"},{"line_number":38,"context_line":"    def accelerator_list(self):"},{"line_number":39,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_217a9487","line":37,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def accelerator_list(self):"},{"line_number":39,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    # update"},{"line_number":42,"context_line":"    def update(self, driver_type, **kwargs):"},{"line_number":43,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_219ff4b4","line":41,"updated":"2018-01-29 17:05:02.000000000","message":"Update what? And ditto for the comment above","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def update(self, driver_type, **kwargs):"},{"line_number":43,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # attach a backend instance"},{"line_number":46,"context_line":"    def attach_instance(self, instance_id):"},{"line_number":47,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_e1a82cdc","line":45,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def attach_instance(self, instance_id):"},{"line_number":47,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # detach a backend instance"},{"line_number":50,"context_line":"    def detach_instance(self, instance_id):"},{"line_number":51,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_a1aa24cf","line":49,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    def discover_accelerator(self):"},{"line_number":26,"context_line":"        \"\"\"discover_accelerator"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        Discover a backend accelerator."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        :return: accelerator list."},{"line_number":31,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_d387050f","line":28,"range":{"start_line":28,"start_character":7,"end_line":28,"end_character":39},"updated":"2018-01-29 19:13:30.000000000","message":"Move this to Line 26 and remove Line 26","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def install_accelerator(self, driver_id, driver_type):"},{"line_number":35,"context_line":"        \"\"\"install_accelerator"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        install a backend accelerator."},{"line_number":38,"context_line":"        :param driver_id: driver id."}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_93797d30","line":35,"updated":"2018-01-29 19:13:30.000000000","message":"Ditto","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"f3bb3be146d29f14e2c7bc08f7b9b9335e6e139b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        raise NotImplementedError(\u0027Subclasses must implement this method.\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def uninstall_accelerator(self, driver_id, driver_type):"},{"line_number":46,"context_line":"        \"\"\"uninstall_accelerator"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        uninstall a backend accelerator."},{"line_number":49,"context_line":"        :param driver_id: driver id."}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_3378a928","line":46,"updated":"2018-01-29 19:13:30.000000000","message":"Ditto and same for methods below and methods in other files","commit_id":"aa07c6740e17a49f3b14a1a0738596f21adb3cd3"}],"cyborg/accelerator/drivers/spdk/util.py":[{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"933aee862851dcaf2f0c0370a8000bd504400f1a","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027spdk_dir\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027/home/wewe/spdk\u0027,"},{"line_number":34,"context_line":"               help\u003d_(\u0027the installation dir of spdk: /home/{user_name}/spdk by default\u0027)),"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    cfg.StrOpt(\u0027device_type\u0027,"},{"line_number":37,"context_line":"               default\u003d\u0027NVMe\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_427ef9e4","line":34,"updated":"2018-01-26 09:53:25.000000000","message":"please reduce line \u003c 79 charactors","commit_id":"7e9be339750b62b149d50e3f1ea39e78fbaab403"},{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"933aee862851dcaf2f0c0370a8000bd504400f1a","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    acc_client.construct_error_bdev(basename)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"def construct_nvme_bdev(py, accelerator, name, trtype, traddr, adrfam, trsvcid, subnqn):"},{"line_number":85,"context_line":"    acc_client \u003d get_accelerator_client(py, accelerator)"},{"line_number":86,"context_line":"    acc_client.construct_nvme_bdev(name, trtype, traddr, adrfam, trsvcid,subnqn)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_a26c9d36","line":84,"updated":"2018-01-26 09:53:25.000000000","message":"ditto","commit_id":"7e9be339750b62b149d50e3f1ea39e78fbaab403"},{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"933aee862851dcaf2f0c0370a8000bd504400f1a","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"def construct_nvme_bdev(py, accelerator, name, trtype, traddr, adrfam, trsvcid, subnqn):"},{"line_number":85,"context_line":"    acc_client \u003d get_accelerator_client(py, accelerator)"},{"line_number":86,"context_line":"    acc_client.construct_nvme_bdev(name, trtype, traddr, adrfam, trsvcid,subnqn)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"def construct_null_bdev(py, accelerator, name, total_size, block_size):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_c269a925","line":86,"updated":"2018-01-26 09:53:25.000000000","message":"ditto","commit_id":"7e9be339750b62b149d50e3f1ea39e78fbaab403"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":19,"context_line":"accelerator_opts \u003d ["},{"line_number":20,"context_line":"    cfg.StrOpt(\u0027spdk_conf_file\u0027,"},{"line_number":21,"context_line":"               default\u003d\u0027/etc/cyborg/spdk.conf\u0027,"},{"line_number":22,"context_line":"               help\u003d_(\u0027SPDK conf file to use for the SPDK driver in Cyborg;\u0027)),"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027accelerator_servers\u0027,"},{"line_number":25,"context_line":"               default\u003d[\u0027vhost\u0027, \u0027nvmf\u0027, \u0027iscsi_tgt\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_0d71dda9","line":22,"range":{"start_line":22,"start_character":74,"end_line":22,"end_character":75},"updated":"2018-01-28 23:31:45.000000000","message":"s/:/.","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":19,"context_line":"accelerator_opts \u003d ["},{"line_number":20,"context_line":"    cfg.StrOpt(\u0027spdk_conf_file\u0027,"},{"line_number":21,"context_line":"               default\u003d\u0027/etc/cyborg/spdk.conf\u0027,"},{"line_number":22,"context_line":"               help\u003d_(\u0027SPDK conf file to use for the SPDK driver in Cyborg;\u0027)),"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027accelerator_servers\u0027,"},{"line_number":25,"context_line":"               default\u003d[\u0027vhost\u0027, \u0027nvmf\u0027, \u0027iscsi_tgt\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_4d77e5a1","line":22,"range":{"start_line":22,"start_character":38,"end_line":22,"end_character":44},"updated":"2018-01-28 23:31:45.000000000","message":"to be used","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027accelerator_servers\u0027,"},{"line_number":25,"context_line":"               default\u003d[\u0027vhost\u0027, \u0027nvmf\u0027, \u0027iscsi_tgt\u0027],"},{"line_number":26,"context_line":"               help\u003d_(\u0027a list of accelerator_servers to enable by default\u0027)),"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027spdk_dir\u0027,"},{"line_number":29,"context_line":"               default\u003d\u0027/home/wewe/spdk\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_2d74d998","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":52},"updated":"2018-01-28 23:31:45.000000000","message":"A list of accelerator servers","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027spdk_dir\u0027,"},{"line_number":29,"context_line":"               default\u003d\u0027/home/wewe/spdk\u0027,"},{"line_number":30,"context_line":"               help\u003d_(\u0027the spdk dir: /home/{user_name}/spdkby default\u0027)),"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027device_type\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027NVMe\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_ad5f890c","line":30,"range":{"start_line":30,"start_character":23,"end_line":30,"end_character":69},"updated":"2018-01-28 23:31:45.000000000","message":"The SPDK directory is /home/{user_name}/spdkb by default","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027device_type\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027NVMe\u0027,"},{"line_number":34,"context_line":"               help\u003d_(\u0027backend device type: NVMe by default\u0027)),"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    cfg.BoolOpt(\u0027remoteable:\u0027,"},{"line_number":37,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_4d9cc5bf","line":34,"range":{"start_line":34,"start_character":23,"end_line":34,"end_character":31},"updated":"2018-01-28 23:31:45.000000000","message":"Backend","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    cfg.BoolOpt(\u0027remoteable:\u0027,"},{"line_number":37,"context_line":"                default\u003dFalse,"},{"line_number":38,"context_line":"                help\u003d_(\u0027remoteable is false by default\u0027))"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_0da6bd11","line":38,"range":{"start_line":38,"start_character":24,"end_line":38,"end_character":34},"updated":"2018-01-28 23:31:45.000000000","message":"Remoteable","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        acc_client \u003d NvmfTgt(py)"},{"line_number":133,"context_line":"        return acc_client"},{"line_number":134,"context_line":"    else:"},{"line_number":135,"context_line":"        exc_msg \u003d (_(\"accelerator_client is %(acc_client)\") % acc_client)"},{"line_number":136,"context_line":"        raise exception.InvalidAccelerator(exc_msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_adb46936","line":135,"range":{"start_line":135,"start_character":22,"end_line":135,"end_character":59},"updated":"2018-01-28 23:31:45.000000000","message":"accerator_client %(acc_client) is missing","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":48,"context_line":"SPDK_SERVER_APP_DIR \u003d os.path.join(configuration.safe_get(\u0027spdk_dir\u0027), \u0027app/\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# Discover backend servers according to the CONF"},{"line_number":52,"context_line":"def discover_servers():"},{"line_number":53,"context_line":"    servers \u003d set()"},{"line_number":54,"context_line":"    for p in glob.glob1(SPDK_SERVER_APP_DIR, \"*\"):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_e1cfccad","line":51,"updated":"2018-01-29 17:05:02.000000000","message":"Define it below the method declaration and follow the guidelines defined at https://docs.openstack.org/hacking/latest/user/hacking.html","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    return list(servers)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# Delete a blockdev"},{"line_number":62,"context_line":"def delete_bdev(py, accelerator, name):"},{"line_number":63,"context_line":"    acc_client \u003d get_accelerator_client(py, accelerator)"},{"line_number":64,"context_line":"    acc_client.delete_bdev(name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_41c0007c","line":61,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    acc_client.delete_bdev(name)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"# Send signal to instance"},{"line_number":68,"context_line":"def kill_instance(py, accelerator, sig_name):"},{"line_number":69,"context_line":"    acc_client \u003d get_accelerator_client(py, accelerator)"},{"line_number":70,"context_line":"    acc_client.kill_instance(sig_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_61bbbc0d","line":67,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    acc_client.kill_instance(sig_name)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"# Add a bdev with aio backend"},{"line_number":74,"context_line":"def construct_aio_bdev(py, accelerator, filename, name, block_size):"},{"line_number":75,"context_line":"    acc_client \u003d get_accelerator_client(py, accelerator)"},{"line_number":76,"context_line":"    acc_client.construct_aio_bdev(filename, name, block_size)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_213b749c","line":73,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    acc_client.construct_aio_bdev(filename, name, block_size)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"# Add a bdev with error backend"},{"line_number":80,"context_line":"def construct_error_bdev(py, accelerator, basename):"},{"line_number":81,"context_line":"    acc_client \u003d get_accelerator_client(py, accelerator)"},{"line_number":82,"context_line":"    acc_client.construct_error_bdev(basename)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_c141700d","line":79,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    acc_client.construct_error_bdev(basename)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"# Add a bdev with nvme backend"},{"line_number":86,"context_line":"def construct_nvme_bdev(py,"},{"line_number":87,"context_line":"                        accelerator,"},{"line_number":88,"context_line":"                        name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_a146a420","line":85,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                   )"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"# Add a bdev with null backend"},{"line_number":106,"context_line":"def construct_null_bdev(py,"},{"line_number":107,"context_line":"                        accelerator,"},{"line_number":108,"context_line":"                        name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_016198a9","line":105,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    acc_client.construct_null_bdev(name, total_size, block_size)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"# Get the py_client instance"},{"line_number":117,"context_line":"def get_py_client(server):"},{"line_number":118,"context_line":"    if server in SERVERS:"},{"line_number":119,"context_line":"        py \u003d PySPDK(server)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_c15ad0f1","line":116,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        raise exception.InvalidAccelerator(msg)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"# Check server\u0027s status"},{"line_number":127,"context_line":"def check_for_setup_error(py, server):"},{"line_number":128,"context_line":"    if py.is_alive():"},{"line_number":129,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_e15d8ce9","line":126,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        raise exception.AcceleratorException(msg)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"# Get the specific client that communicates with server"},{"line_number":136,"context_line":"def get_accelerator_client(py, accelerator):"},{"line_number":137,"context_line":"    acc_client \u003d None"},{"line_number":138,"context_line":"    if accelerator \u003d\u003d \u0027vhost\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_61697c89","line":135,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"}],"cyborg/accelerator/drivers/spdk/vhost/vhost.py":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a26f2b6c9c08c53139b8ecc1fa0db9d7519c6622","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.py \u003d util.get_py_client(self.SERVER)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def discover_accelerator(self):"},{"line_number":28,"context_line":"        if util.check_for_setup_error(self.py, self.SERVER):"},{"line_number":29,"context_line":"            return self._get_one_accelerator()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_one_accelerator(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_edc11182","line":28,"updated":"2018-01-28 23:31:45.000000000","message":"Add docstrings describing what this method does? Same for all the methods below.","commit_id":"e364c3bc53d76cae9d927d0f2d3f2ad22995bd37"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        self.servers \u003d util.discover_servers()"},{"line_number":25,"context_line":"        self.py \u003d util.get_py_client(self.SERVER)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    # Discover a backend accelerator"},{"line_number":28,"context_line":"    def discover_accelerator(self):"},{"line_number":29,"context_line":"        if util.check_for_setup_error(self.py, self.SERVER):"},{"line_number":30,"context_line":"            return self._get_one_accelerator()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_c1289035","line":27,"updated":"2018-01-29 17:05:02.000000000","message":"Move this below the method declaration and follow the guidelines defined here https://docs.openstack.org/hacking/latest/user/hacking.html","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        if util.check_for_setup_error(self.py, self.SERVER):"},{"line_number":30,"context_line":"            return self._get_one_accelerator()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _get_one_accelerator(self):"},{"line_number":33,"context_line":"        acc_client \u003d VhostTgt(self.py)"},{"line_number":34,"context_line":"        # Display current blockdev list"},{"line_number":35,"context_line":"        bdevs \u003d acc_client.get_bdevs()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_a11d4410","line":32,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def uninstall_accelerator(self, driver_id, driver_type):"},{"line_number":55,"context_line":"        pass"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    # Discover a backend accelerator list"},{"line_number":58,"context_line":"    def accelerator_list(self):"},{"line_number":59,"context_line":"        return self._get_all_accelerators()"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_81228851","line":57,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    def detach_instance(self, instance_id):"},{"line_number":77,"context_line":"        pass"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # Add IP address"},{"line_number":80,"context_line":"    def add_ip_address(self, ifc_index, ip_addr):"},{"line_number":81,"context_line":"        acc_client \u003d VhostTgt(self.py)"},{"line_number":82,"context_line":"        return acc_client.add_ip_address(ifc_index, ip_addr)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_01d4381f","line":79,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3e2a6c99c381d2d35e323ac771fe33556c4c0484","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        acc_client \u003d VhostTgt(self.py)"},{"line_number":82,"context_line":"        return acc_client.add_ip_address(ifc_index, ip_addr)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    # Delete IP address"},{"line_number":85,"context_line":"    def delete_ip_address(self, ifc_index, ip_addr):"},{"line_number":86,"context_line":"        acc_client \u003d VhostTgt(self.py)"},{"line_number":87,"context_line":"        return acc_client.delete_ip_address(ifc_index, ip_addr)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_21d7f425","line":84,"updated":"2018-01-29 17:05:02.000000000","message":"Ditto","commit_id":"67de260f72a35a24f5678e65658734a460875122"}],"cyborg/tests/unit/accelerator/drivers/spdk/nvmf/test_nvmf.py":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"d8edac706ec8321a02b0a1fa8fc4edbc79d3a492","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from cyborg.accelerator.drivers.spdk.nvmf.nvmf import NVMFDRIVER"},{"line_number":18,"context_line":"from cyborg.accelerator.common import exception"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestNVMFDRIVER(unittest.TestCase):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa0c359_dc96ad95","line":20,"updated":"2018-02-04 03:16:22.000000000","message":"These are not real tests. Please rewrite these so that we can land this.","commit_id":"0db146724f1a781fb9a0548ac32d08b8fad6af7a"}],"cyborg/tests/unit/accelerator/drivers/spdk/vhost/test_vhost.py":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"d8edac706ec8321a02b0a1fa8fc4edbc79d3a492","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class TestVHOSTDRIVER(unittest.TestCase):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def setUp(self):"},{"line_number":23,"context_line":"        self.vhost_driver \u003d VHOSTDRIVER()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa0c359_1c7df56d","line":22,"updated":"2018-02-04 03:16:22.000000000","message":"These are not real tests. Please rewrite these so that we can land this.","commit_id":"0db146724f1a781fb9a0548ac32d08b8fad6af7a"}]}
