)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d0a0c1d1a54a775fe7ff12b528adad392eec23c2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add DB api layer for bios setting operations"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: Ia2c14c5674e34decaa075c2754e7a552bbb1beab"},{"line_number":10,"context_line":"Change-Id: Ibbca0a30baaae1e19e015b4dddbbac0189ff80ba"},{"line_number":11,"context_line":"Partial-Bug: #1712032"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"df7087c5_6a7c7a71","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":53},"updated":"2018-03-16 06:34:20.000000000","message":"No need put dependency on the ironic patch. Rebase this patch on top of Ia2c14c5674e34decaa075c2754e7a552bbb1beab\n\nAlso add summary of changes done in this patch.","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"}],"ironic/common/exception.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d0a0c1d1a54a775fe7ff12b528adad392eec23c2","unresolved":false,"context_lines":[{"line_number":774,"context_line":""},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"class BIOSSettingAlreadyExists(Conflict):"},{"line_number":777,"context_line":"    _msg_fmt \u003d _(\"A BIOSSetting record for node %(node) already exists.\")"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_ef417ca7","line":777,"range":{"start_line":777,"start_character":18,"end_line":777,"end_character":39},"updated":"2018-03-16 06:34:20.000000000","message":"Should also provide \u0027name\u0027 of the BIOSSetting in the message.","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"dd11299f506d906d64eb73e497381add63e6ba47","unresolved":false,"context_lines":[{"line_number":774,"context_line":""},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"class BIOSSettingAlreadyExists(Conflict):"},{"line_number":777,"context_line":"    _msg_fmt \u003d _(\"A BIOSSetting record for node %(node) already exists.\")"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_3b257609","line":777,"range":{"start_line":777,"start_character":18,"end_line":777,"end_character":39},"in_reply_to":"df7087c5_ef417ca7","updated":"2018-03-16 09:43:01.000000000","message":"Done","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"01804360b5308d3989458fdb316e6524a7cca1fa","unresolved":false,"context_lines":[{"line_number":778,"context_line":""},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"class BIOSSettingAlreadyExists(Conflict):"},{"line_number":781,"context_line":"    _msg_fmt \u003d _(\u0027The BIOSSetting %(name) record for node %(node) \u0027"},{"line_number":782,"context_line":"                 \u0027already exists.\u0027)"},{"line_number":783,"context_line":""},{"line_number":784,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bf659307_032a388f","line":781,"range":{"start_line":781,"start_character":18,"end_line":781,"end_character":48},"updated":"2018-03-27 02:54:33.000000000","message":"\u0027A bios setting $(node)\u0027 might be better for consistency.","commit_id":"a35ba601420f4d845ce120e6890e29bb11e62e35"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"7848cedf6979859f56c5f4fcc8b6946c2558d6df","unresolved":false,"context_lines":[{"line_number":778,"context_line":""},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"class BIOSSettingAlreadyExists(Conflict):"},{"line_number":781,"context_line":"    _msg_fmt \u003d _(\u0027The BIOSSetting %(name) record for node %(node) \u0027"},{"line_number":782,"context_line":"                 \u0027already exists.\u0027)"},{"line_number":783,"context_line":""},{"line_number":784,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bf659307_147cacb3","line":781,"range":{"start_line":781,"start_character":18,"end_line":781,"end_character":48},"in_reply_to":"bf659307_032a388f","updated":"2018-03-28 03:35:31.000000000","message":"Done","commit_id":"a35ba601420f4d845ce120e6890e29bb11e62e35"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":778,"context_line":""},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"class BIOSSettingAlreadyExists(Conflict):"},{"line_number":781,"context_line":"    _msg_fmt \u003d _(\u0027A bios setting %(name)s for node %(node)s already exists.\u0027)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":""},{"line_number":784,"context_line":"class BIOSSettingNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_1e265469","line":781,"updated":"2018-04-04 11:19:30.000000000","message":"nit: s/bios/BIOS/","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":778,"context_line":""},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"class BIOSSettingAlreadyExists(Conflict):"},{"line_number":781,"context_line":"    _msg_fmt \u003d _(\u0027A bios setting %(name)s for node %(node)s already exists.\u0027)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":""},{"line_number":784,"context_line":"class BIOSSettingNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_a6fefa02","line":781,"in_reply_to":"bf659307_1e265469","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":782,"context_line":""},{"line_number":783,"context_line":""},{"line_number":784,"context_line":"class BIOSSettingNotFound(NotFound):"},{"line_number":785,"context_line":"    _msg_fmt \u003d _(\"Node %(node)s doesn\u0027t have a bios setting \u0027%(name)s\u0027\")"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_3e29d835","line":785,"updated":"2018-04-04 11:19:30.000000000","message":"ditto","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":782,"context_line":""},{"line_number":783,"context_line":""},{"line_number":784,"context_line":"class BIOSSettingNotFound(NotFound):"},{"line_number":785,"context_line":"    _msg_fmt \u003d _(\"Node %(node)s doesn\u0027t have a bios setting \u0027%(name)s\u0027\")"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_0302380c","line":785,"in_reply_to":"bf659307_3e29d835","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"}],"ironic/db/api.py":[{"author":{"_account_id":23375,"name":"Stenio Araujo","email":"stenioaraujo@lsd.ufcg.edu.br","username":"stenioaraujo"},"change_message_id":"0016df816431c2692b7c5354b1837712d18212cb","unresolved":false,"context_lines":[{"line_number":886,"context_line":"        \"\"\""},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"    @abc.abstractmethod"},{"line_number":889,"context_line":"    def create_node_bios(self, node_id, bios_config):"},{"line_number":890,"context_line":"        \"\"\"Create NodeBIOS record for a given node."},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"        :param node_id: The node uuid."}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_a8df1867","line":889,"range":{"start_line":889,"start_character":40,"end_line":889,"end_character":51},"updated":"2017-10-17 18:48:53.000000000","message":"nit: :param bios_config: Dictionary containing information about the bios configuration.","commit_id":"43123857907fb843c49cb64954f3ebcb0e47466f"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"5deba9af1ec6db47957fa5858aa1ee3d98e30fef","unresolved":false,"context_lines":[{"line_number":886,"context_line":"        \"\"\""},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"    @abc.abstractmethod"},{"line_number":889,"context_line":"    def create_node_bios(self, node_id, bios_config):"},{"line_number":890,"context_line":"        \"\"\"Create NodeBIOS record for a given node."},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"        :param node_id: The node uuid."}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_70fc626f","line":889,"range":{"start_line":889,"start_character":40,"end_line":889,"end_character":51},"in_reply_to":"5f4e5783_a8df1867","updated":"2017-10-18 01:32:14.000000000","message":"Done","commit_id":"43123857907fb843c49cb64954f3ebcb0e47466f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d0a0c1d1a54a775fe7ff12b528adad392eec23c2","unresolved":false,"context_lines":[{"line_number":987,"context_line":"        \"\"\""},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"    @abc.abstractmethod"},{"line_number":990,"context_line":"    def create_bios_settings(self, node_id, bios_name, bios_value):"},{"line_number":991,"context_line":"        \"\"\"Create BIOSSetting record for a given node."},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_ef1adcc3","line":990,"range":{"start_line":990,"start_character":35,"end_line":990,"end_character":65},"updated":"2018-03-16 06:34:20.000000000","message":"May be better to pass this as a dictionary as done for other  create APIs.","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"dd11299f506d906d64eb73e497381add63e6ba47","unresolved":false,"context_lines":[{"line_number":987,"context_line":"        \"\"\""},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"    @abc.abstractmethod"},{"line_number":990,"context_line":"    def create_bios_settings(self, node_id, bios_name, bios_value):"},{"line_number":991,"context_line":"        \"\"\"Create BIOSSetting record for a given node."},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_5b014969","line":990,"range":{"start_line":990,"start_character":35,"end_line":990,"end_character":65},"in_reply_to":"df7087c5_ef1adcc3","updated":"2018-03-16 09:43:01.000000000","message":"Done","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d0a0c1d1a54a775fe7ff12b528adad392eec23c2","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"        :param bios_name: String containing bios option name to configure."},{"line_number":1007,"context_line":"        :param bios_value: String containing value to be configured."},{"line_number":1008,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1009,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1010,"context_line":"        \"\"\""},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_cffb5844","line":1009,"range":{"start_line":1009,"start_character":8,"end_line":1009,"end_character":55},"updated":"2018-03-16 06:34:20.000000000","message":"What if the object with given \u0027bios_name\u0027 does not exist. Should it raise something like BIOSSettingNotFound?","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"dd11299f506d906d64eb73e497381add63e6ba47","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"        :param bios_name: String containing bios option name to configure."},{"line_number":1007,"context_line":"        :param bios_value: String containing value to be configured."},{"line_number":1008,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1009,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1010,"context_line":"        \"\"\""},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_7b0f6e87","line":1009,"range":{"start_line":1009,"start_character":8,"end_line":1009,"end_character":55},"in_reply_to":"df7087c5_cffb5844","updated":"2018-03-16 09:43:01.000000000","message":"Done","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d0a0c1d1a54a775fe7ff12b528adad392eec23c2","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"        :param bios_name: String containing name of bios option to be"},{"line_number":1018,"context_line":"            retrieved."},{"line_number":1019,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1020,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1021,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_0f8b90c2","line":1020,"range":{"start_line":1020,"start_character":9,"end_line":1020,"end_character":55},"updated":"2018-03-16 06:34:20.000000000","message":"What if the object with given \u0027bios_name\u0027 does not exist. Should it raise something like BIOSSettingNotFound?","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"dd11299f506d906d64eb73e497381add63e6ba47","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"        :param bios_name: String containing name of bios option to be"},{"line_number":1018,"context_line":"            retrieved."},{"line_number":1019,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1020,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1021,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_1b2af2d9","line":1020,"range":{"start_line":1020,"start_character":9,"end_line":1020,"end_character":55},"in_reply_to":"df7087c5_0f8b90c2","updated":"2018-03-16 09:43:01.000000000","message":"Done","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"cfadb8d1beecb91dd42bbba2a4f01197d16de4b0","unresolved":false,"context_lines":[{"line_number":990,"context_line":"    def create_bios_settings(self, values):"},{"line_number":991,"context_line":"        \"\"\"Create BIOSSetting record for a given node."},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        :param values: Dict of values with the following keys:"},{"line_number":994,"context_line":"                       \u0027node_id\u0027"},{"line_number":995,"context_line":"                       \u0027name\u0027"},{"line_number":996,"context_line":"                       \u0027value\u0027"},{"line_number":997,"context_line":"                       \u0027created_at\u0027"},{"line_number":998,"context_line":"                       \u0027updated_at\u0027"},{"line_number":999,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1000,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1001,"context_line":"        :raises: BIOSSettingAlreadyExists if the setting record already exists."}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_beb53d34","line":998,"range":{"start_line":993,"start_character":8,"end_line":998,"end_character":35},"updated":"2018-03-30 03:13:52.000000000","message":"this doesn\u0027t render well [1], please use a codeblock here if you want to provide dictionary details, you can check create_node for an example.\n\n[1] http://logs.openstack.org/02/511402/37/check/build-openstack-sphinx-docs/e5480c3/html/contributor/api/ironic.db.api.html#ironic.db.api.Connection.create_bios_settings","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"ebe874c9e90d119c738e9a262491c51d7e157697","unresolved":false,"context_lines":[{"line_number":990,"context_line":"    def create_bios_settings(self, values):"},{"line_number":991,"context_line":"        \"\"\"Create BIOSSetting record for a given node."},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        :param values: Dict of values with the following keys:"},{"line_number":994,"context_line":"                       \u0027node_id\u0027"},{"line_number":995,"context_line":"                       \u0027name\u0027"},{"line_number":996,"context_line":"                       \u0027value\u0027"},{"line_number":997,"context_line":"                       \u0027created_at\u0027"},{"line_number":998,"context_line":"                       \u0027updated_at\u0027"},{"line_number":999,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1000,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1001,"context_line":"        :raises: BIOSSettingAlreadyExists if the setting record already exists."}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_8effe8a9","line":998,"range":{"start_line":993,"start_character":8,"end_line":998,"end_character":35},"in_reply_to":"bf659307_beb53d34","updated":"2018-04-02 03:43:04.000000000","message":"Done","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"cfadb8d1beecb91dd42bbba2a4f01197d16de4b0","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"    def update_bios_settings(self, values):"},{"line_number":1019,"context_line":"        \"\"\"Update information for a BIOSSetting record."},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"        :param values: Dict of values with the following keys:"},{"line_number":1022,"context_line":"                       \u0027node_id\u0027"},{"line_number":1023,"context_line":"                       \u0027name\u0027"},{"line_number":1024,"context_line":"                       \u0027value\u0027"},{"line_number":1025,"context_line":"                       \u0027created_at\u0027"},{"line_number":1026,"context_line":"                       \u0027updated_at\u0027"},{"line_number":1027,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1028,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1029,"context_line":"        :raises: BIOSSettingNotFound if the bios_name is not found."}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_9e8ab967","line":1026,"range":{"start_line":1021,"start_character":8,"end_line":1026,"end_character":35},"updated":"2018-03-30 03:13:52.000000000","message":"ditto","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"ebe874c9e90d119c738e9a262491c51d7e157697","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"    def update_bios_settings(self, values):"},{"line_number":1019,"context_line":"        \"\"\"Update information for a BIOSSetting record."},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"        :param values: Dict of values with the following keys:"},{"line_number":1022,"context_line":"                       \u0027node_id\u0027"},{"line_number":1023,"context_line":"                       \u0027name\u0027"},{"line_number":1024,"context_line":"                       \u0027value\u0027"},{"line_number":1025,"context_line":"                       \u0027created_at\u0027"},{"line_number":1026,"context_line":"                       \u0027updated_at\u0027"},{"line_number":1027,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1028,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1029,"context_line":"        :raises: BIOSSettingNotFound if the bios_name is not found."}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_aefc2cb5","line":1026,"range":{"start_line":1021,"start_character":8,"end_line":1026,"end_character":35},"in_reply_to":"bf659307_9e8ab967","updated":"2018-04-02 03:43:04.000000000","message":"Done","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":987,"context_line":"        \"\"\""},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"    @abc.abstractmethod"},{"line_number":990,"context_line":"    def create_bios_settings(self, values):"},{"line_number":991,"context_line":"        \"\"\"Create BIOSSetting record for a given node."},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        :param values: Dict of values with the following keys:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_0dc5b75b","line":990,"updated":"2018-04-05 11:00:03.000000000","message":"create_bios_setting?\n\nAlso I think all the other methods should be singular: \u0027setting\u0027.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":987,"context_line":"        \"\"\""},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"    @abc.abstractmethod"},{"line_number":990,"context_line":"    def create_bios_settings(self, values):"},{"line_number":991,"context_line":"        \"\"\"Create BIOSSetting record for a given node."},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        :param values: Dict of values with the following keys:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_406ee696","line":990,"in_reply_to":"bf659307_0dc5b75b","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":994,"context_line":""},{"line_number":995,"context_line":"                       ::"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":"                        {"},{"line_number":998,"context_line":"                         \u0027node_id\u0027: id,"},{"line_number":999,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1000,"context_line":"                         \u0027value\u0027: { ... },"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_0da85775","line":997,"updated":"2018-04-05 11:00:03.000000000","message":"Should this contain the version?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":994,"context_line":""},{"line_number":995,"context_line":"                       ::"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":"                        {"},{"line_number":998,"context_line":"                         \u0027node_id\u0027: id,"},{"line_number":999,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1000,"context_line":"                         \u0027value\u0027: { ... },"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_a004a2c7","line":997,"in_reply_to":"bf659307_0da85775","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":998,"context_line":"                         \u0027node_id\u0027: id,"},{"line_number":999,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1000,"context_line":"                         \u0027value\u0027: { ... },"},{"line_number":1001,"context_line":"                         \u0027created_at\u0027: DateTime,"},{"line_number":1002,"context_line":"                         \u0027updated_at\u0027: DateTime,"},{"line_number":1003,"context_line":"                        }"},{"line_number":1004,"context_line":"        :returns: The BIOSSetting object."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_7ed8b051","line":1001,"updated":"2018-04-04 11:19:30.000000000","message":"we don\u0027t need created_at, we can generate it right here","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":998,"context_line":"                         \u0027node_id\u0027: id,"},{"line_number":999,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1000,"context_line":"                         \u0027value\u0027: { ... },"},{"line_number":1001,"context_line":"                         \u0027created_at\u0027: DateTime,"},{"line_number":1002,"context_line":"                         \u0027updated_at\u0027: DateTime,"},{"line_number":1003,"context_line":"                        }"},{"line_number":1004,"context_line":"        :returns: The BIOSSetting object."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_c00756c9","line":1001,"in_reply_to":"bf659307_7ed8b051","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":999,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1000,"context_line":"                         \u0027value\u0027: { ... },"},{"line_number":1001,"context_line":"                         \u0027created_at\u0027: DateTime,"},{"line_number":1002,"context_line":"                         \u0027updated_at\u0027: DateTime,"},{"line_number":1003,"context_line":"                        }"},{"line_number":1004,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1005,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_1edbb44e","line":1002,"updated":"2018-04-04 11:19:30.000000000","message":"and this is not needed either for creating","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":999,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1000,"context_line":"                         \u0027value\u0027: { ... },"},{"line_number":1001,"context_line":"                         \u0027created_at\u0027: DateTime,"},{"line_number":1002,"context_line":"                         \u0027updated_at\u0027: DateTime,"},{"line_number":1003,"context_line":"                        }"},{"line_number":1004,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1005,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_600e8ae6","line":1002,"in_reply_to":"bf659307_1edbb44e","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"        \"\"\""},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    @abc.abstractmethod"},{"line_number":1010,"context_line":"    def create_bios_settings_list(self, node_id, settings, version):"},{"line_number":1011,"context_line":"        \"\"\"Create a list of BIOSSetting records for a given node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_2db0bb8b","line":1010,"updated":"2018-04-05 11:00:03.000000000","message":"Is there any benefit to having both singular and plural versions of these methods? Upper layers could easily perform a singular operation if provided with a plural method:\n\ndb.create_bios_settings(node.id, [setting])\n\nFor comparison with traits/tags, the distinction there was add a single trait vs replace all traits. In hindsight that could have been add multiple traits vs replace all traits.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"62d73cc8beda41ffcb8bc31d92c5cda90f22cfcd","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"        \"\"\""},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    @abc.abstractmethod"},{"line_number":1010,"context_line":"    def create_bios_settings_list(self, node_id, settings, version):"},{"line_number":1011,"context_line":"        \"\"\"Create a list of BIOSSetting records for a given node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_31177748","line":1010,"in_reply_to":"bf659307_2db0bb8b","updated":"2018-04-09 09:52:07.000000000","message":"?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"16c36666b5962db3242ab5805f5f29a4d488f3f8","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"        \"\"\""},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    @abc.abstractmethod"},{"line_number":1010,"context_line":"    def create_bios_settings_list(self, node_id, settings, version):"},{"line_number":1011,"context_line":"        \"\"\"Create a list of BIOSSetting records for a given node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_bca00944","line":1010,"in_reply_to":"bf659307_31177748","updated":"2018-04-11 02:03:21.000000000","message":"Sorry for missing this one.\nInitially I just want to provide a plural one for caching a bunch of bios settings together because when the first time we do the caching of bios settings in _do_node_clean, it doesn\u0027t have to iterate over the singular one in each of driver implementations.\nAlso as Dmitry commented we could use the plural one to optimize this call by only creating the transation and calling flush once[1].\n\n[1]: https://review.openstack.org/#/c/511402/42/ironic/db/sqlalchemy/api.py@1411","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"b5464c2aa723748328cdc8a41e362e008bf3473f","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"        \"\"\""},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    @abc.abstractmethod"},{"line_number":1010,"context_line":"    def create_bios_settings_list(self, node_id, settings, version):"},{"line_number":1011,"context_line":"        \"\"\"Create a list of BIOSSetting records for a given node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_3ef06691","line":1010,"in_reply_to":"bf659307_bca00944","updated":"2018-04-11 09:21:28.000000000","message":"No problem. I agree that the plural method is required. What I\u0027m suggesting is that in order to keep the number of methods in the DB API small, we could use the plural method in the RPC object layer to create/update/delete a single setting:\n\n  db.create_bios_settings_list(node.id, [setting], self.VERSION)\n\nIt\u0027s just a suggestion really, the code is fine as it is currently.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"        \"\"\"Create a list of BIOSSetting records for a given node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"        :param node_id: The node id."},{"line_number":1014,"context_line":"        :param settings: A list of BIOS Settings to be created."},{"line_number":1015,"context_line":"        :param version: the version of the object.BIOSSetting."},{"line_number":1016,"context_line":"        :returns: A list of BIOSSetting object."},{"line_number":1017,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_3edeb83d","line":1014,"updated":"2018-04-04 11:19:30.000000000","message":"format of each setting?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"        \"\"\"Create a list of BIOSSetting records for a given node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"        :param node_id: The node id."},{"line_number":1014,"context_line":"        :param settings: A list of BIOS Settings to be created."},{"line_number":1015,"context_line":"        :param version: the version of the object.BIOSSetting."},{"line_number":1016,"context_line":"        :returns: A list of BIOSSetting object."},{"line_number":1017,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_80e95eb8","line":1014,"in_reply_to":"bf659307_3edeb83d","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"        :param node_id: The node id."},{"line_number":1014,"context_line":"        :param settings: A list of BIOS Settings to be created."},{"line_number":1015,"context_line":"        :param version: the version of the object.BIOSSetting."},{"line_number":1016,"context_line":"        :returns: A list of BIOSSetting object."},{"line_number":1017,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1018,"context_line":"        :raises: BIOSSettingAlreadyExists if any of the setting records"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_dee8dce2","line":1015,"updated":"2018-04-04 11:19:30.000000000","message":"why do we need this separate version field? I don\u0027t see it in other creation methods here","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"        :param node_id: The node id."},{"line_number":1014,"context_line":"        :param settings: A list of BIOS Settings to be created."},{"line_number":1015,"context_line":"        :param version: the version of the object.BIOSSetting."},{"line_number":1016,"context_line":"        :returns: A list of BIOSSetting object."},{"line_number":1017,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1018,"context_line":"        :raises: BIOSSettingAlreadyExists if any of the setting records"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_60e68aeb","line":1015,"in_reply_to":"bf659307_dee8dce2","updated":"2018-04-08 09:28:17.000000000","message":"added version field in other APIs.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"        \"\"\""},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    @abc.abstractmethod"},{"line_number":1023,"context_line":"    def update_bios_settings(self, values):"},{"line_number":1024,"context_line":"        \"\"\"Update information for a BIOSSetting record."},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"        :param values: Dict of values with the following keys:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_fee36003","line":1023,"updated":"2018-04-04 11:19:30.000000000","message":"this should take node_id and name separately, I guess, since we\u0027re going to do lookup based on them","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"        \"\"\""},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    @abc.abstractmethod"},{"line_number":1023,"context_line":"    def update_bios_settings(self, values):"},{"line_number":1024,"context_line":"        \"\"\"Update information for a BIOSSetting record."},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"        :param values: Dict of values with the following keys:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_0329d899","line":1023,"in_reply_to":"bf659307_fee36003","updated":"2018-04-08 09:28:17.000000000","message":"if separating node_id and name, then the version and value fields will also need to be passed separately which may require more parameters in this function, for example in below, value is referred with values[\u0027value\u0027] and version is referred with values[\u0027version\u0027].","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"                         \u0027node_id\u0027: id,"},{"line_number":1032,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1033,"context_line":"                         \u0027value\u0027: { ... },"},{"line_number":1034,"context_line":"                         \u0027created_at\u0027: DateTime,"},{"line_number":1035,"context_line":"                         \u0027updated_at\u0027: DateTime,"},{"line_number":1036,"context_line":"                        }"},{"line_number":1037,"context_line":"        :returns: The BIOSSetting object."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_9eeee4ea","line":1034,"updated":"2018-04-04 11:19:30.000000000","message":"created_at cannot be updated","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"                         \u0027node_id\u0027: id,"},{"line_number":1032,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1033,"context_line":"                         \u0027value\u0027: { ... },"},{"line_number":1034,"context_line":"                         \u0027created_at\u0027: DateTime,"},{"line_number":1035,"context_line":"                         \u0027updated_at\u0027: DateTime,"},{"line_number":1036,"context_line":"                        }"},{"line_number":1037,"context_line":"        :returns: The BIOSSetting object."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_20e65218","line":1034,"in_reply_to":"bf659307_9eeee4ea","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1033,"context_line":"                         \u0027value\u0027: { ... },"},{"line_number":1034,"context_line":"                         \u0027created_at\u0027: DateTime,"},{"line_number":1035,"context_line":"                         \u0027updated_at\u0027: DateTime,"},{"line_number":1036,"context_line":"                        }"},{"line_number":1037,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1038,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_bee968e3","line":1035,"updated":"2018-04-04 11:19:30.000000000","message":"nit: this can be generated automatically","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"                         \u0027name\u0027: String,"},{"line_number":1033,"context_line":"                         \u0027value\u0027: { ... },"},{"line_number":1034,"context_line":"                         \u0027created_at\u0027: DateTime,"},{"line_number":1035,"context_line":"                         \u0027updated_at\u0027: DateTime,"},{"line_number":1036,"context_line":"                        }"},{"line_number":1037,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1038,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_40e106fc","line":1035,"in_reply_to":"bf659307_bee968e3","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"                        }"},{"line_number":1037,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1038,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1039,"context_line":"        :raises: BIOSSettingNotFound if the bios_name is not found."},{"line_number":1040,"context_line":"        \"\"\""},{"line_number":1041,"context_line":""},{"line_number":1042,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_0dc1372f","line":1039,"updated":"2018-04-05 11:00:03.000000000","message":"nit: bios_setting","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"                        }"},{"line_number":1037,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1038,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1039,"context_line":"        :raises: BIOSSettingNotFound if the bios_name is not found."},{"line_number":1040,"context_line":"        \"\"\""},{"line_number":1041,"context_line":""},{"line_number":1042,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_e0effae6","line":1039,"in_reply_to":"bf659307_0dc1372f","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"        \"\"\"Update a list of BIOSSetting records."},{"line_number":1045,"context_line":""},{"line_number":1046,"context_line":"        :param node_id: The node id."},{"line_number":1047,"context_line":"        :param settings: A list of BIOS Settings to be created."},{"line_number":1048,"context_line":"        :param version: the version of the object.BIOSSetting."},{"line_number":1049,"context_line":"        :returns: A list of BIOSSetting objects."},{"line_number":1050,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_5ebe0cd5","line":1047,"updated":"2018-04-04 11:19:30.000000000","message":"format of settings?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"        \"\"\"Update a list of BIOSSetting records."},{"line_number":1045,"context_line":""},{"line_number":1046,"context_line":"        :param node_id: The node id."},{"line_number":1047,"context_line":"        :param settings: A list of BIOS Settings to be created."},{"line_number":1048,"context_line":"        :param version: the version of the object.BIOSSetting."},{"line_number":1049,"context_line":"        :returns: A list of BIOSSetting objects."},{"line_number":1050,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_e0d93a22","line":1047,"in_reply_to":"bf659307_5ebe0cd5","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":1045,"context_line":""},{"line_number":1046,"context_line":"        :param node_id: The node id."},{"line_number":1047,"context_line":"        :param settings: A list of BIOS Settings to be created."},{"line_number":1048,"context_line":"        :param version: the version of the object.BIOSSetting."},{"line_number":1049,"context_line":"        :returns: A list of BIOSSetting objects."},{"line_number":1050,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1051,"context_line":"        :raises: BIOSSettingNotFound if any of the settings is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_6de553dc","line":1048,"updated":"2018-04-05 11:00:03.000000000","message":"Why pass version separately?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1045,"context_line":""},{"line_number":1046,"context_line":"        :param node_id: The node id."},{"line_number":1047,"context_line":"        :param settings: A list of BIOS Settings to be created."},{"line_number":1048,"context_line":"        :param version: the version of the object.BIOSSetting."},{"line_number":1049,"context_line":"        :returns: A list of BIOSSetting objects."},{"line_number":1050,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1051,"context_line":"        :raises: BIOSSettingNotFound if any of the settings is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_e0c4da42","line":1048,"in_reply_to":"bf659307_6de553dc","updated":"2018-04-08 09:28:17.000000000","message":"version is retrieved separately via BIOSSetting.get_target_version when calling this api in rpc method, so just passing it as a separate parameter in this function, I didn\u0027t see why we need to associate it with other parameters, do you mean we don\u0027t need this version param or why it only appears in this function? if the latter, I\u0027ll add the missing version in each api.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        \"\"\"Retrieve BIOSSetting value."},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":"        :param node_id: The node id."},{"line_number":1059,"context_line":"        :param bios_name: String containing name of bios option to be"},{"line_number":1060,"context_line":"            retrieved."},{"line_number":1061,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1062,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_7ec19053","line":1059,"updated":"2018-04-04 11:19:30.000000000","message":"I think we should use just \"name\" as everywhere else","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        \"\"\"Retrieve BIOSSetting value."},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":"        :param node_id: The node id."},{"line_number":1059,"context_line":"        :param bios_name: String containing name of bios option to be"},{"line_number":1060,"context_line":"            retrieved."},{"line_number":1061,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1062,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_ad128bb3","line":1059,"in_reply_to":"bf659307_7ec19053","updated":"2018-04-05 11:00:03.000000000","message":"+1","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        \"\"\"Retrieve BIOSSetting value."},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":"        :param node_id: The node id."},{"line_number":1059,"context_line":"        :param bios_name: String containing name of bios option to be"},{"line_number":1060,"context_line":"            retrieved."},{"line_number":1061,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1062,"context_line":"        :raises: NodeNotFound if the node is not found."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_a0bb42e3","line":1059,"in_reply_to":"bf659307_ad128bb3","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            retrieved."},{"line_number":1061,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1062,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1063,"context_line":"        :raises: BIOSSettingNotFound if the bios_name is not found."},{"line_number":1064,"context_line":"        \"\"\""},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_2dcf5b58","line":1063,"updated":"2018-04-05 11:00:03.000000000","message":"nit: bios_setting","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            retrieved."},{"line_number":1061,"context_line":"        :returns: The BIOSSetting object."},{"line_number":1062,"context_line":"        :raises: NodeNotFound if the node is not found."},{"line_number":1063,"context_line":"        :raises: BIOSSettingNotFound if the bios_name is not found."},{"line_number":1064,"context_line":"        \"\"\""},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_80b87ee5","line":1063,"in_reply_to":"bf659307_2dcf5b58","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        \"\"\""},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    @abc.abstractmethod"},{"line_number":1067,"context_line":"    def get_node_bios_settings_by_node_id(self, node_id):"},{"line_number":1068,"context_line":"        \"\"\"Retrieve BIOSSettings of a given node."},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_1eb414f1","line":1067,"updated":"2018-04-04 11:19:30.000000000","message":"I guess it should be something like get_node_bios_settings_list, _by_node_id does not add much","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        \"\"\""},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    @abc.abstractmethod"},{"line_number":1067,"context_line":"    def get_node_bios_settings_by_node_id(self, node_id):"},{"line_number":1068,"context_line":"        \"\"\"Retrieve BIOSSettings of a given node."},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_ad292bf3","line":1067,"in_reply_to":"bf659307_1eb414f1","updated":"2018-04-05 11:00:03.000000000","message":"We don\u0027t call them node_bios_settings anywhere else - how about \u0027get_bios_setting_list\u0027","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        \"\"\""},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    @abc.abstractmethod"},{"line_number":1067,"context_line":"    def get_node_bios_settings_by_node_id(self, node_id):"},{"line_number":1068,"context_line":"        \"\"\"Retrieve BIOSSettings of a given node."},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"        :param node_id: The node id."}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_809b9e64","line":1067,"in_reply_to":"bf659307_ad292bf3","updated":"2018-04-08 09:28:17.000000000","message":"the initial thought is that node_bios_setting has an indication that bios settings are from the node and node_id is the parameter of that function. if we don\u0027t call it node_xxx, then adding the suffix _by_node_id can do the same.\nif either name looks redundant by adding node, I will just use get_bios_setting_list.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"bf659307_4d688f20","line":1074,"updated":"2018-04-05 11:00:03.000000000","message":"Won\u0027t we also need methods for deleting settings?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"62d73cc8beda41ffcb8bc31d92c5cda90f22cfcd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"bf659307_b6a13d49","line":1074,"in_reply_to":"bf659307_408fc62d","updated":"2018-04-09 09:52:07.000000000","message":"Perhaps a firmware may remove options when it is updated? Or some options may depend on the hardware configuration of the node? What happens if we change the node\u0027s driver or BIOS interface?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"bf659307_408fc62d","line":1074,"in_reply_to":"bf659307_4d688f20","updated":"2018-04-08 09:28:17.000000000","message":"why need to delete bios settings, it will be cached automatically if supported by driver and be updated if any setting is changed. I think the only possibility of deleting bios setting is when the node is deleted? then all the associated bios setting will be deleted along with node destroy.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"16c36666b5962db3242ab5805f5f29a4d488f3f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"bf659307_9c42e567","line":1074,"in_reply_to":"bf659307_b6a13d49","updated":"2018-04-11 02:03:21.000000000","message":"Good point! Thanks Mark, will add.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"62d73cc8beda41ffcb8bc31d92c5cda90f22cfcd","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"        \"\"\""},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    @abc.abstractmethod"},{"line_number":1036,"context_line":"    def update_bios_setting(self, node_id, name):"},{"line_number":1037,"context_line":"        \"\"\"Update information for a BIOSSetting record."},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        :param values: Dict of values with the following keys:"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf659307_51aeabe7","line":1036,"updated":"2018-04-09 09:52:07.000000000","message":"Also needs value and version, or pass them in via \u0027values\u0027","commit_id":"b2e7e25ce2638e400bd95eea8df948d64f03eff6"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"16c36666b5962db3242ab5805f5f29a4d488f3f8","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"        \"\"\""},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    @abc.abstractmethod"},{"line_number":1036,"context_line":"    def update_bios_setting(self, node_id, name):"},{"line_number":1037,"context_line":"        \"\"\"Update information for a BIOSSetting record."},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        :param values: Dict of values with the following keys:"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf659307_7c74b1cf","line":1036,"in_reply_to":"bf659307_51aeabe7","updated":"2018-04-11 02:03:21.000000000","message":"will fix","commit_id":"b2e7e25ce2638e400bd95eea8df948d64f03eff6"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d2a34324d66976bd5da310bb2fdb35f794ae00b2","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"                        ["},{"line_number":1009,"context_line":"                          {"},{"line_number":1010,"context_line":"                           \u0027name\u0027: String,"},{"line_number":1011,"context_line":"                           \u0027value\u0027: { ... },"},{"line_number":1012,"context_line":"                          },"},{"line_number":1013,"context_line":"                          {"},{"line_number":1014,"context_line":"                           \u0027name\u0027: String,"}],"source_content_type":"text/x-python","patch_set":43,"id":"bf659307_35cdc3b6","line":1011,"updated":"2018-04-12 08:19:31.000000000","message":"These are now strings :)","commit_id":"36a63d0ec0f3bc0594c75955797a91d7911449b7"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"2005fde7f6793cc975a286954a96afefc36e963f","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"                        ["},{"line_number":1009,"context_line":"                          {"},{"line_number":1010,"context_line":"                           \u0027name\u0027: String,"},{"line_number":1011,"context_line":"                           \u0027value\u0027: { ... },"},{"line_number":1012,"context_line":"                          },"},{"line_number":1013,"context_line":"                          {"},{"line_number":1014,"context_line":"                           \u0027name\u0027: String,"}],"source_content_type":"text/x-python","patch_set":43,"id":"bf659307_1653e63a","line":1011,"in_reply_to":"bf659307_35cdc3b6","updated":"2018-04-12 13:26:10.000000000","message":"Done","commit_id":"36a63d0ec0f3bc0594c75955797a91d7911449b7"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"6502924fbd2d92969ea71b80ebab193802bd2b66","unresolved":false,"context_lines":[{"line_number":400,"context_line":"            port_query \u003d add_port_filter_by_node(port_query, node_id)"},{"line_number":401,"context_line":"            port_query.delete()"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"            node_bios_query \u003d model_query("},{"line_number":404,"context_line":"                models.NodeBIOS).filter_by(node_uuid\u003dnode_id)"},{"line_number":405,"context_line":"            node_bios_query.delete()"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"            portgroup_query \u003d model_query(models.Portgroup)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf8cb3f7_14eb28b0","line":404,"range":{"start_line":403,"start_character":12,"end_line":404,"end_character":61},"updated":"2017-12-27 10:25:51.000000000","message":"To be consistent it is better to make it two separate statements like others::\n  node_bios_query \u003d model_query(models.NodeBIOS)\n  node_bios_query \u003d add_node_bios_filter_by_node(..)","commit_id":"92f0ba02afb5ac17e2e0ce771c03ed4fefe3bc28"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d0a0c1d1a54a775fe7ff12b528adad392eec23c2","unresolved":false,"context_lines":[{"line_number":1368,"context_line":""},{"line_number":1369,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1370,"context_line":"    def create_bios_settings(self, node_id, bios_name, bios_value):"},{"line_number":1371,"context_line":"        bios_setting \u003d models.BIOSSetting("},{"line_number":1372,"context_line":"            node_id\u003dnode_id,"},{"line_number":1373,"context_line":"            created_at\u003ddatetime.datetime.utcnow(),"},{"line_number":1374,"context_line":"            name\u003dbios_name, value\u003dbios_value)"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_ea1aca6c","line":1371,"range":{"start_line":1371,"start_character":8,"end_line":1371,"end_character":42},"updated":"2018-03-16 06:34:20.000000000","message":"We should perform existence of node_id check here as well\nself._check_node_exists(node_id)","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"dd11299f506d906d64eb73e497381add63e6ba47","unresolved":false,"context_lines":[{"line_number":1368,"context_line":""},{"line_number":1369,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1370,"context_line":"    def create_bios_settings(self, node_id, bios_name, bios_value):"},{"line_number":1371,"context_line":"        bios_setting \u003d models.BIOSSetting("},{"line_number":1372,"context_line":"            node_id\u003dnode_id,"},{"line_number":1373,"context_line":"            created_at\u003ddatetime.datetime.utcnow(),"},{"line_number":1374,"context_line":"            name\u003dbios_name, value\u003dbios_value)"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_5b262a6a","line":1371,"range":{"start_line":1371,"start_character":8,"end_line":1371,"end_character":42},"in_reply_to":"df7087c5_ea1aca6c","updated":"2018-03-16 09:43:01.000000000","message":"Done","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d0a0c1d1a54a775fe7ff12b528adad392eec23c2","unresolved":false,"context_lines":[{"line_number":1386,"context_line":"        with _session_for_write() as session:"},{"line_number":1387,"context_line":"            query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1388,"context_line":"                node_id\u003dnode_id, name\u003dbios_name)"},{"line_number":1389,"context_line":"            ref \u003d query.one()"},{"line_number":1390,"context_line":"            ref.update({\u0027updated_at\u0027: timeutils.utcnow,"},{"line_number":1391,"context_line":"                        \u0027value\u0027: bios_value})"},{"line_number":1392,"context_line":"            session.flush()"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_ea616ad4","line":1389,"range":{"start_line":1389,"start_character":12,"end_line":1389,"end_character":29},"updated":"2018-03-16 06:34:20.000000000","message":"Should handle NoResultFound exception.","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"dd11299f506d906d64eb73e497381add63e6ba47","unresolved":false,"context_lines":[{"line_number":1386,"context_line":"        with _session_for_write() as session:"},{"line_number":1387,"context_line":"            query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1388,"context_line":"                node_id\u003dnode_id, name\u003dbios_name)"},{"line_number":1389,"context_line":"            ref \u003d query.one()"},{"line_number":1390,"context_line":"            ref.update({\u0027updated_at\u0027: timeutils.utcnow,"},{"line_number":1391,"context_line":"                        \u0027value\u0027: bios_value})"},{"line_number":1392,"context_line":"            session.flush()"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_fb485eb3","line":1389,"range":{"start_line":1389,"start_character":12,"end_line":1389,"end_character":29},"in_reply_to":"df7087c5_ea616ad4","updated":"2018-03-16 09:43:01.000000000","message":"Done","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d0a0c1d1a54a775fe7ff12b528adad392eec23c2","unresolved":false,"context_lines":[{"line_number":1397,"context_line":"        self._check_node_exists(node_id)"},{"line_number":1398,"context_line":"        query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1399,"context_line":"            node_id\u003dnode_id, name\u003dbios_name)"},{"line_number":1400,"context_line":"        ref \u003d query.one()"},{"line_number":1401,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_2ab1a247","line":1400,"range":{"start_line":1400,"start_character":8,"end_line":1400,"end_character":25},"updated":"2018-03-16 06:34:20.000000000","message":"Should handle NoResultFound exception.","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"dd11299f506d906d64eb73e497381add63e6ba47","unresolved":false,"context_lines":[{"line_number":1397,"context_line":"        self._check_node_exists(node_id)"},{"line_number":1398,"context_line":"        query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1399,"context_line":"            node_id\u003dnode_id, name\u003dbios_name)"},{"line_number":1400,"context_line":"        ref \u003d query.one()"},{"line_number":1401,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":24,"id":"df7087c5_9bc92227","line":1400,"range":{"start_line":1400,"start_character":8,"end_line":1400,"end_character":25},"in_reply_to":"df7087c5_2ab1a247","updated":"2018-03-16 09:43:01.000000000","message":"Done","commit_id":"249fddbd7316200198eb6feb5dda491c98742788"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"4b6a6f409f35438f0a65ab4033e9678690f49013","unresolved":false,"context_lines":[{"line_number":1370,"context_line":"    def create_bios_settings(self, values):"},{"line_number":1371,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1372,"context_line":"        if not values.get(\u0027created_at\u0027):"},{"line_number":1373,"context_line":"            values[\u0027created_at\u0027] \u003d datetime.datetime.utcnow()"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        bios_setting \u003d models.BIOSSetting()"},{"line_number":1376,"context_line":"        bios_setting.update(values)"}],"source_content_type":"text/x-python","patch_set":28,"id":"df7087c5_10c4e73f","line":1373,"updated":"2018-03-19 09:01:49.000000000","message":"I don\u0027t think this is necessary because the default value is already defined in the parent model[1].\n\n[1] https://github.com/openstack/oslo.db/blob/master/oslo_db/sqlalchemy/models.py#L138","commit_id":"c4ab27754f6ee32ed7addab182903a0100ef47f4"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b3072be8caf3a7dc0ff735dba209884d59b0fd9","unresolved":false,"context_lines":[{"line_number":1370,"context_line":"    def create_bios_settings(self, values):"},{"line_number":1371,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1372,"context_line":"        if not values.get(\u0027created_at\u0027):"},{"line_number":1373,"context_line":"            values[\u0027created_at\u0027] \u003d datetime.datetime.utcnow()"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        bios_setting \u003d models.BIOSSetting()"},{"line_number":1376,"context_line":"        bios_setting.update(values)"}],"source_content_type":"text/x-python","patch_set":28,"id":"df7087c5_37bb06e6","line":1373,"in_reply_to":"df7087c5_10c4e73f","updated":"2018-03-20 04:53:59.000000000","message":"Done","commit_id":"c4ab27754f6ee32ed7addab182903a0100ef47f4"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"4b6a6f409f35438f0a65ab4033e9678690f49013","unresolved":false,"context_lines":[{"line_number":1416,"context_line":"            except NoResultFound:"},{"line_number":1417,"context_line":"                raise exception.BIOSSettingNotFound("},{"line_number":1418,"context_line":"                    node\u003dnode_id, name\u003dbios_name)"},{"line_number":1419,"context_line":"            ref.update({\u0027updated_at\u0027: timeutils.utcnow,"},{"line_number":1420,"context_line":"                        \u0027value\u0027: bios_value})"},{"line_number":1421,"context_line":"            session.flush()"},{"line_number":1422,"context_line":"            return ref"}],"source_content_type":"text/x-python","patch_set":28,"id":"df7087c5_b0edfb8c","line":1419,"updated":"2018-03-19 09:01:49.000000000","message":"\u0027update_at\u0027 is also set automatically[1].\n\n[1] https://github.com/openstack/oslo.db/blob/master/oslo_db/sqlalchemy/models.py#L139","commit_id":"c4ab27754f6ee32ed7addab182903a0100ef47f4"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b3072be8caf3a7dc0ff735dba209884d59b0fd9","unresolved":false,"context_lines":[{"line_number":1416,"context_line":"            except NoResultFound:"},{"line_number":1417,"context_line":"                raise exception.BIOSSettingNotFound("},{"line_number":1418,"context_line":"                    node\u003dnode_id, name\u003dbios_name)"},{"line_number":1419,"context_line":"            ref.update({\u0027updated_at\u0027: timeutils.utcnow,"},{"line_number":1420,"context_line":"                        \u0027value\u0027: bios_value})"},{"line_number":1421,"context_line":"            session.flush()"},{"line_number":1422,"context_line":"            return ref"}],"source_content_type":"text/x-python","patch_set":28,"id":"df7087c5_57c0fa50","line":1419,"in_reply_to":"df7087c5_b0edfb8c","updated":"2018-03-20 04:53:59.000000000","message":"Done","commit_id":"c4ab27754f6ee32ed7addab182903a0100ef47f4"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"01804360b5308d3989458fdb316e6524a7cca1fa","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"                bios_setting \u003d models.BIOSSetting("},{"line_number":1391,"context_line":"                    node_id\u003dnode_id,"},{"line_number":1392,"context_line":"                    name\u003dsetting[\u0027name\u0027],"},{"line_number":1393,"context_line":"                    value\u003dsetting[\u0027value\u0027])"},{"line_number":1394,"context_line":"                try:"},{"line_number":1395,"context_line":"                    session.add(bios_setting)"},{"line_number":1396,"context_line":"                except db_exc.DBDuplicateEntry:"}],"source_content_type":"text/x-python","patch_set":33,"id":"bf659307_431d900d","line":1393,"updated":"2018-03-27 02:54:33.000000000","message":"version is also necessary. This would be passed as an argument like add_node_trait().","commit_id":"a35ba601420f4d845ce120e6890e29bb11e62e35"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"7848cedf6979859f56c5f4fcc8b6946c2558d6df","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"                bios_setting \u003d models.BIOSSetting("},{"line_number":1391,"context_line":"                    node_id\u003dnode_id,"},{"line_number":1392,"context_line":"                    name\u003dsetting[\u0027name\u0027],"},{"line_number":1393,"context_line":"                    value\u003dsetting[\u0027value\u0027])"},{"line_number":1394,"context_line":"                try:"},{"line_number":1395,"context_line":"                    session.add(bios_setting)"},{"line_number":1396,"context_line":"                except db_exc.DBDuplicateEntry:"}],"source_content_type":"text/x-python","patch_set":33,"id":"bf659307_2f415d3a","line":1393,"in_reply_to":"bf659307_431d900d","updated":"2018-03-28 03:35:31.000000000","message":"Done","commit_id":"a35ba601420f4d845ce120e6890e29bb11e62e35"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"01804360b5308d3989458fdb316e6524a7cca1fa","unresolved":false,"context_lines":[{"line_number":1401,"context_line":"        return bios_settings"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1404,"context_line":"    def update_bios_settings(self, node_id, bios_name, bios_value):"},{"line_number":1405,"context_line":"        self._check_node_exists(node_id)"},{"line_number":1406,"context_line":"        with _session_for_write() as session:"},{"line_number":1407,"context_line":"            query \u003d model_query(models.BIOSSetting).filter_by("}],"source_content_type":"text/x-python","patch_set":33,"id":"bf659307_e3e4e4ae","line":1404,"updated":"2018-03-27 02:54:33.000000000","message":"version is missing for updating.","commit_id":"a35ba601420f4d845ce120e6890e29bb11e62e35"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"7848cedf6979859f56c5f4fcc8b6946c2558d6df","unresolved":false,"context_lines":[{"line_number":1401,"context_line":"        return bios_settings"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1404,"context_line":"    def update_bios_settings(self, node_id, bios_name, bios_value):"},{"line_number":1405,"context_line":"        self._check_node_exists(node_id)"},{"line_number":1406,"context_line":"        with _session_for_write() as session:"},{"line_number":1407,"context_line":"            query \u003d model_query(models.BIOSSetting).filter_by("}],"source_content_type":"text/x-python","patch_set":33,"id":"bf659307_8f5ae927","line":1404,"in_reply_to":"bf659307_e3e4e4ae","updated":"2018-03-28 03:35:31.000000000","message":"Done","commit_id":"a35ba601420f4d845ce120e6890e29bb11e62e35"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"01804360b5308d3989458fdb316e6524a7cca1fa","unresolved":false,"context_lines":[{"line_number":1429,"context_line":"                except NoResultFound:"},{"line_number":1430,"context_line":"                    raise exception.BIOSSettingNotFound("},{"line_number":1431,"context_line":"                        node\u003dnode_id, name\u003dsetting[\u0027name\u0027])"},{"line_number":1432,"context_line":"                ref.update({\u0027value\u0027: setting[\u0027value\u0027]})"},{"line_number":1433,"context_line":"                bios_settings.append(ref)"},{"line_number":1434,"context_line":"            session.flush()"},{"line_number":1435,"context_line":"        return bios_settings"}],"source_content_type":"text/x-python","patch_set":33,"id":"bf659307_a3f02c69","line":1432,"updated":"2018-03-27 02:54:33.000000000","message":"version is also necessary here.","commit_id":"a35ba601420f4d845ce120e6890e29bb11e62e35"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"7848cedf6979859f56c5f4fcc8b6946c2558d6df","unresolved":false,"context_lines":[{"line_number":1429,"context_line":"                except NoResultFound:"},{"line_number":1430,"context_line":"                    raise exception.BIOSSettingNotFound("},{"line_number":1431,"context_line":"                        node\u003dnode_id, name\u003dsetting[\u0027name\u0027])"},{"line_number":1432,"context_line":"                ref.update({\u0027value\u0027: setting[\u0027value\u0027]})"},{"line_number":1433,"context_line":"                bios_settings.append(ref)"},{"line_number":1434,"context_line":"            session.flush()"},{"line_number":1435,"context_line":"        return bios_settings"}],"source_content_type":"text/x-python","patch_set":33,"id":"bf659307_cf50e10d","line":1432,"in_reply_to":"bf659307_a3f02c69","updated":"2018-03-28 03:35:31.000000000","message":"Done","commit_id":"a35ba601420f4d845ce120e6890e29bb11e62e35"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"cfadb8d1beecb91dd42bbba2a4f01197d16de4b0","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"        with _session_for_write() as session:"},{"line_number":1407,"context_line":"            query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1408,"context_line":"                node_id\u003dvalues[\u0027node_id\u0027], name\u003dvalues[\u0027name\u0027])"},{"line_number":1409,"context_line":"            try:"},{"line_number":1410,"context_line":"                ref \u003d query.one()"},{"line_number":1411,"context_line":"            except NoResultFound:"},{"line_number":1412,"context_line":"                raise exception.BIOSSettingNotFound("}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_beed3df1","line":1409,"range":{"start_line":1409,"start_character":12,"end_line":1409,"end_character":16},"updated":"2018-03-30 03:13:52.000000000","message":"Let\u0027s move this before L1406, otherwise exception raised outside of the block will not be captured.","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"ebe874c9e90d119c738e9a262491c51d7e157697","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"        with _session_for_write() as session:"},{"line_number":1407,"context_line":"            query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1408,"context_line":"                node_id\u003dvalues[\u0027node_id\u0027], name\u003dvalues[\u0027name\u0027])"},{"line_number":1409,"context_line":"            try:"},{"line_number":1410,"context_line":"                ref \u003d query.one()"},{"line_number":1411,"context_line":"            except NoResultFound:"},{"line_number":1412,"context_line":"                raise exception.BIOSSettingNotFound("}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_6e90544b","line":1409,"range":{"start_line":1409,"start_character":12,"end_line":1409,"end_character":16},"in_reply_to":"bf659307_beed3df1","updated":"2018-04-02 03:43:04.000000000","message":"Done","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"cfadb8d1beecb91dd42bbba2a4f01197d16de4b0","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"        for setting in settings:"},{"line_number":1424,"context_line":"            query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1425,"context_line":"                node_id\u003dnode_id, name\u003dsetting[\u0027name\u0027])"},{"line_number":1426,"context_line":"            try:"},{"line_number":1427,"context_line":"                with _session_for_write() as session:"},{"line_number":1428,"context_line":"                    ref \u003d query.one()"},{"line_number":1429,"context_line":"                    ref.update({\u0027value\u0027: setting[\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_7ebd65d6","line":1426,"range":{"start_line":1426,"start_character":12,"end_line":1426,"end_character":16},"updated":"2018-03-30 03:13:52.000000000","message":"ditto","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"ebe874c9e90d119c738e9a262491c51d7e157697","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"        for setting in settings:"},{"line_number":1424,"context_line":"            query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1425,"context_line":"                node_id\u003dnode_id, name\u003dsetting[\u0027name\u0027])"},{"line_number":1426,"context_line":"            try:"},{"line_number":1427,"context_line":"                with _session_for_write() as session:"},{"line_number":1428,"context_line":"                    ref \u003d query.one()"},{"line_number":1429,"context_line":"                    ref.update({\u0027value\u0027: setting[\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_0e8198fb","line":1426,"range":{"start_line":1426,"start_character":12,"end_line":1426,"end_character":16},"in_reply_to":"bf659307_7ebd65d6","updated":"2018-04-02 03:43:04.000000000","message":"this is already outside of session try?","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"cfadb8d1beecb91dd42bbba2a4f01197d16de4b0","unresolved":false,"context_lines":[{"line_number":1445,"context_line":"            raise exception.BIOSSettingNotFound(node\u003dnode_id, name\u003dbios_name)"},{"line_number":1446,"context_line":"        return ref"},{"line_number":1447,"context_line":""},{"line_number":1448,"context_line":"    def get_node_bios_settings_by_node_id(self, node_id):"},{"line_number":1449,"context_line":"        self._check_node_exists(node_id)"},{"line_number":1450,"context_line":"        result \u003d (model_query(models.BIOSSetting)"},{"line_number":1451,"context_line":"                  .filter_by(node_id\u003dnode_id)"}],"source_content_type":"text/x-python","patch_set":37,"id":"bf659307_fe7e5517","line":1448,"range":{"start_line":1448,"start_character":8,"end_line":1448,"end_character":41},"updated":"2018-03-30 03:13:52.000000000","message":"I presume actually it should be called to get_node_bios_settings_list_by_node_id.\n\nAs you used bios_settings for one setting, bios_settings_list for a group of settings, I think we should be more precisely on these words, e.g., use bios_setting for one bios option, use bios_setting_list for a group of bios options.\n\nMaybe it involves some changes (perhaps some already merged), so, I\u0027m not insisting.","commit_id":"9c30a615d66f00bbae19fbeb21f6627511767882"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1369,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1370,"context_line":"    def create_bios_settings(self, values):"},{"line_number":1371,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1372,"context_line":"        bios_setting \u003d models.BIOSSetting(version\u003dvalues[\u0027version\u0027])"},{"line_number":1373,"context_line":"        bios_setting.update(values)"},{"line_number":1374,"context_line":"        try:"},{"line_number":1375,"context_line":"            with _session_for_write() as session:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_de23fc54","line":1372,"updated":"2018-04-04 11:19:30.000000000","message":"nit:\n\n models.BIOSSetting(version\u003d..., **values)","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1369,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1370,"context_line":"    def create_bios_settings(self, values):"},{"line_number":1371,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1372,"context_line":"        bios_setting \u003d models.BIOSSetting(version\u003dvalues[\u0027version\u0027])"},{"line_number":1373,"context_line":"        bios_setting.update(values)"},{"line_number":1374,"context_line":"        try:"},{"line_number":1375,"context_line":"            with _session_for_write() as session:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_60344a4b","line":1372,"in_reply_to":"bf659307_6d6b13f1","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":1369,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1370,"context_line":"    def create_bios_settings(self, values):"},{"line_number":1371,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1372,"context_line":"        bios_setting \u003d models.BIOSSetting(version\u003dvalues[\u0027version\u0027])"},{"line_number":1373,"context_line":"        bios_setting.update(values)"},{"line_number":1374,"context_line":"        try:"},{"line_number":1375,"context_line":"            with _session_for_write() as session:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_6d6b13f1","line":1372,"in_reply_to":"bf659307_de23fc54","updated":"2018-04-05 11:00:03.000000000","message":"If version is in values, we can just do:\n\n  models.BIOSSetting(**values)","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1389,"context_line":"                node_id\u003dnode_id,"},{"line_number":1390,"context_line":"                name\u003dsetting[\u0027name\u0027],"},{"line_number":1391,"context_line":"                value\u003dsetting[\u0027value\u0027],"},{"line_number":1392,"context_line":"                version\u003dversion)"},{"line_number":1393,"context_line":"            try:"},{"line_number":1394,"context_line":"                with _session_for_write() as session:"},{"line_number":1395,"context_line":"                    session.add(bios_setting)"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_fe1e000a","line":1392,"updated":"2018-04-04 11:19:30.000000000","message":"why not just call create_bios_settings in a loop? Or maybe you want to optimize this call by only creating the transation and calling flush once? Actually, I think we should do the latter to make sure that either all or none are added.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1389,"context_line":"                node_id\u003dnode_id,"},{"line_number":1390,"context_line":"                name\u003dsetting[\u0027name\u0027],"},{"line_number":1391,"context_line":"                value\u003dsetting[\u0027value\u0027],"},{"line_number":1392,"context_line":"                version\u003dversion)"},{"line_number":1393,"context_line":"            try:"},{"line_number":1394,"context_line":"                with _session_for_write() as session:"},{"line_number":1395,"context_line":"                    session.add(bios_setting)"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_8085ded1","line":1392,"in_reply_to":"bf659307_b3774809","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":1389,"context_line":"                node_id\u003dnode_id,"},{"line_number":1390,"context_line":"                name\u003dsetting[\u0027name\u0027],"},{"line_number":1391,"context_line":"                value\u003dsetting[\u0027value\u0027],"},{"line_number":1392,"context_line":"                version\u003dversion)"},{"line_number":1393,"context_line":"            try:"},{"line_number":1394,"context_line":"                with _session_for_write() as session:"},{"line_number":1395,"context_line":"                    session.add(bios_setting)"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_b3774809","line":1392,"in_reply_to":"bf659307_fe1e000a","updated":"2018-04-05 11:00:03.000000000","message":"+1 - put the session outside the loop.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"                    session.flush()"},{"line_number":1397,"context_line":"            except db_exc.DBDuplicateEntry:"},{"line_number":1398,"context_line":"                raise exception.BIOSSettingAlreadyExists("},{"line_number":1399,"context_line":"                    node\u003dnode_id, name\u003dsetting[\u0027name\u0027])"},{"line_number":1400,"context_line":"            bios_settings.append(bios_setting)"},{"line_number":1401,"context_line":"        return bios_settings"},{"line_number":1402,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_9e190423","line":1399,"updated":"2018-04-04 11:19:30.000000000","message":"... although this logic won\u0027t work if you do it in one transaction.. hmm. but anyway, this is just a copy-paste of create_bios_settings","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"                    session.flush()"},{"line_number":1397,"context_line":"            except db_exc.DBDuplicateEntry:"},{"line_number":1398,"context_line":"                raise exception.BIOSSettingAlreadyExists("},{"line_number":1399,"context_line":"                    node\u003dnode_id, name\u003dsetting[\u0027name\u0027])"},{"line_number":1400,"context_line":"            bios_settings.append(bios_setting)"},{"line_number":1401,"context_line":"        return bios_settings"},{"line_number":1402,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_c31c4079","line":1399,"in_reply_to":"bf659307_9e190423","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"        try:"},{"line_number":1407,"context_line":"            with _session_for_write() as session:"},{"line_number":1408,"context_line":"                query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1409,"context_line":"                    node_id\u003dvalues[\u0027node_id\u0027], name\u003dvalues[\u0027name\u0027])"},{"line_number":1410,"context_line":"                ref \u003d query.one()"},{"line_number":1411,"context_line":"                ref.update({\u0027value\u0027: values[\u0027value\u0027],"},{"line_number":1412,"context_line":"                            \u0027version\u0027: values[\u0027version\u0027]})"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_be1408ea","line":1409,"updated":"2018-04-04 11:19:30.000000000","message":"aha, this is why you need node_id and name as separate arguments to this method","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"        try:"},{"line_number":1407,"context_line":"            with _session_for_write() as session:"},{"line_number":1408,"context_line":"                query \u003d model_query(models.BIOSSetting).filter_by("},{"line_number":1409,"context_line":"                    node_id\u003dvalues[\u0027node_id\u0027], name\u003dvalues[\u0027name\u0027])"},{"line_number":1410,"context_line":"                ref \u003d query.one()"},{"line_number":1411,"context_line":"                ref.update({\u0027value\u0027: values[\u0027value\u0027],"},{"line_number":1412,"context_line":"                            \u0027version\u0027: values[\u0027version\u0027]})"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_80d39ed5","line":1409,"in_reply_to":"bf659307_be1408ea","updated":"2018-04-08 09:28:17.000000000","message":"if separating node_id and name, then the version and value fields will also need to be passed separately which may require more parameters in this function, for example in below, value is referred with values[\u0027value\u0027] and version is referred with values[\u0027version\u0027].","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77be975712c8c2b1bf885eb5f436b98dd4b66a3a","unresolved":false,"context_lines":[{"line_number":1417,"context_line":"        return ref"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1420,"context_line":"    def update_bios_settings_list(self, node_id, settings, version):"},{"line_number":1421,"context_line":"        self._check_node_exists(node_id)"},{"line_number":1422,"context_line":"        bios_settings \u003d []"},{"line_number":1423,"context_line":"        for setting in settings:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_5ed5ac1a","line":1420,"updated":"2018-04-04 11:19:30.000000000","message":"similar to creation, this method does not look useful as it is. it\u0027s equivalent to calling update_bios_settings in a loop.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":1417,"context_line":"        return ref"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1420,"context_line":"    def update_bios_settings_list(self, node_id, settings, version):"},{"line_number":1421,"context_line":"        self._check_node_exists(node_id)"},{"line_number":1422,"context_line":"        bios_settings \u003d []"},{"line_number":1423,"context_line":"        for setting in settings:"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_e04e1ac0","line":1420,"in_reply_to":"bf659307_5ed5ac1a","updated":"2018-04-08 09:28:17.000000000","message":"changed to creating transaction once.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"62d73cc8beda41ffcb8bc31d92c5cda90f22cfcd","unresolved":false,"context_lines":[{"line_number":1401,"context_line":"        return bios_settings"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1404,"context_line":"    def update_bios_setting(self, values):"},{"line_number":1405,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1406,"context_line":"        try:"},{"line_number":1407,"context_line":"            with _session_for_write() as session:"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf659307_b1806748","line":1404,"updated":"2018-04-09 09:52:07.000000000","message":"node_id, name, version, value","commit_id":"b2e7e25ce2638e400bd95eea8df948d64f03eff6"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"b5464c2aa723748328cdc8a41e362e008bf3473f","unresolved":false,"context_lines":[{"line_number":1401,"context_line":"        return bios_settings"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1404,"context_line":"    def update_bios_setting(self, values):"},{"line_number":1405,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1406,"context_line":"        try:"},{"line_number":1407,"context_line":"            with _session_for_write() as session:"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf659307_de15aa4a","line":1404,"in_reply_to":"bf659307_7cafd129","updated":"2018-04-11 09:21:28.000000000","message":"It needs to match the method signature in ironic.db.api.","commit_id":"b2e7e25ce2638e400bd95eea8df948d64f03eff6"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"16c36666b5962db3242ab5805f5f29a4d488f3f8","unresolved":false,"context_lines":[{"line_number":1401,"context_line":"        return bios_settings"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1404,"context_line":"    def update_bios_setting(self, values):"},{"line_number":1405,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1406,"context_line":"        try:"},{"line_number":1407,"context_line":"            with _session_for_write() as session:"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf659307_7cafd129","line":1404,"in_reply_to":"bf659307_b1806748","updated":"2018-04-11 02:03:21.000000000","message":"why not using unified values and adding separating ones?","commit_id":"b2e7e25ce2638e400bd95eea8df948d64f03eff6"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"2005fde7f6793cc975a286954a96afefc36e963f","unresolved":false,"context_lines":[{"line_number":1401,"context_line":"        return bios_settings"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    @oslo_db_api.retry_on_deadlock"},{"line_number":1404,"context_line":"    def update_bios_setting(self, values):"},{"line_number":1405,"context_line":"        self._check_node_exists(values[\u0027node_id\u0027])"},{"line_number":1406,"context_line":"        try:"},{"line_number":1407,"context_line":"            with _session_for_write() as session:"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf659307_3ec84da6","line":1404,"in_reply_to":"bf659307_de15aa4a","updated":"2018-04-12 13:26:10.000000000","message":"Done","commit_id":"b2e7e25ce2638e400bd95eea8df948d64f03eff6"}],"ironic/tests/unit/db/test_bios_settings.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.assertEqual(result[0][\u0027node_id\u0027], self.node.id)"},{"line_number":92,"context_line":"        self.assertEqual(result[0][\u0027name\u0027], \u0027virtualization\u0027)"},{"line_number":93,"context_line":"        self.assertEqual(result[0][\u0027value\u0027], {\u0027virtualization\u0027: \u0027on\u0027})"},{"line_number":94,"context_line":"        self.assertEqual(result[0][\u0027version\u0027], \u00271.0\u0027)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_get_node_bios_settings_by_node_id_node_not_exist(self):"},{"line_number":97,"context_line":"        self.assertRaises(exception.NodeNotFound,"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_de61a3d5","line":94,"updated":"2018-04-05 11:00:03.000000000","message":"Could also check the length here.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.assertEqual(result[0][\u0027node_id\u0027], self.node.id)"},{"line_number":92,"context_line":"        self.assertEqual(result[0][\u0027name\u0027], \u0027virtualization\u0027)"},{"line_number":93,"context_line":"        self.assertEqual(result[0][\u0027value\u0027], {\u0027virtualization\u0027: \u0027on\u0027})"},{"line_number":94,"context_line":"        self.assertEqual(result[0][\u0027version\u0027], \u00271.0\u0027)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_get_node_bios_settings_by_node_id_node_not_exist(self):"},{"line_number":97,"context_line":"        self.assertRaises(exception.NodeNotFound,"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_e32dc4a8","line":94,"in_reply_to":"bf659307_de61a3d5","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d2a34324d66976bd5da310bb2fdb35f794ae00b2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            self.node.id, settings, \u00271.0\u0027)"},{"line_number":83,"context_line":"        self.assertItemsEqual([\u0027virtualization\u0027, \u0027hyperthread\u0027, \u0027numlock\u0027],"},{"line_number":84,"context_line":"                              [setting.name for setting in result])"},{"line_number":85,"context_line":"        self.assertItemsEqual([\u0027on\u0027, \u0027on\u0027, \u0027on\u0027],"},{"line_number":86,"context_line":"                              [setting.value for setting in result])"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_create_bios_setting_list_duplicate(self):"}],"source_content_type":"text/x-python","patch_set":43,"id":"bf659307_b5979345","line":85,"updated":"2018-04-12 08:19:31.000000000","message":"micro nit: using the same value for all of these settings wouldn\u0027t catch cases where the setting -\u003e value mapping was incorrect, e.g. if a method used the value of the first for all settings.","commit_id":"36a63d0ec0f3bc0594c75955797a91d7911449b7"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"2005fde7f6793cc975a286954a96afefc36e963f","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            self.node.id, settings, \u00271.0\u0027)"},{"line_number":83,"context_line":"        self.assertItemsEqual([\u0027virtualization\u0027, \u0027hyperthread\u0027, \u0027numlock\u0027],"},{"line_number":84,"context_line":"                              [setting.name for setting in result])"},{"line_number":85,"context_line":"        self.assertItemsEqual([\u0027on\u0027, \u0027on\u0027, \u0027on\u0027],"},{"line_number":86,"context_line":"                              [setting.value for setting in result])"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_create_bios_setting_list_duplicate(self):"}],"source_content_type":"text/x-python","patch_set":43,"id":"bf659307_a5f0be68","line":85,"in_reply_to":"bf659307_b5979345","updated":"2018-04-12 13:26:10.000000000","message":"Done","commit_id":"36a63d0ec0f3bc0594c75955797a91d7911449b7"}],"ironic/tests/unit/db/utils.py":[{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"917f8a745bcd07feaa45459ca03b1178240c6d5e","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        \u0027node_id\u0027: kw.get(\u0027node_id\u0027, \u0027123\u0027),"},{"line_number":567,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027virtualization\u0027),"},{"line_number":568,"context_line":"        \u0027value\u0027: kw.get(\u0027value\u0027, {\u0027virtualization\u0027: \u0027on\u0027}),"},{"line_number":569,"context_line":"        \u0027version\u0027: kw.get(\u0027version\u0027, bios.BIOSSetting.VERSION),"},{"line_number":570,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":571,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"},{"line_number":572,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":36,"id":"bf659307_85f7e5d3","line":569,"range":{"start_line":569,"start_character":37,"end_line":569,"end_character":61},"updated":"2018-03-29 02:50:53.000000000","message":"bios object patch is applied after this DB API patch, so importing of bios from ironic.objects failed for various unit tests, going to replace bios.BIOSSetting.VERSION with \u00271.0\u0027 for this patchset, will revert it after RPC object is added.","commit_id":"18ef0c15fc5e6cb97e32842496e2506818d8e636"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":564,"context_line":"    return {"},{"line_number":565,"context_line":"        \u0027node_id\u0027: kw.get(\u0027node_id\u0027, \u0027123\u0027),"},{"line_number":566,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027virtualization\u0027),"},{"line_number":567,"context_line":"        \u0027value\u0027: kw.get(\u0027value\u0027, {\u0027virtualization\u0027: \u0027on\u0027}),"},{"line_number":568,"context_line":"        \u0027version\u0027: kw.get(\u0027version\u0027, \u00271.0\u0027),"},{"line_number":569,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":570,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_b3bc286d","line":567,"updated":"2018-04-05 11:00:03.000000000","message":"Is this the expected format of the dict value? Would be nice to have something representative here. It looks a little odd as-is.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"62d73cc8beda41ffcb8bc31d92c5cda90f22cfcd","unresolved":false,"context_lines":[{"line_number":564,"context_line":"    return {"},{"line_number":565,"context_line":"        \u0027node_id\u0027: kw.get(\u0027node_id\u0027, \u0027123\u0027),"},{"line_number":566,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027virtualization\u0027),"},{"line_number":567,"context_line":"        \u0027value\u0027: kw.get(\u0027value\u0027, {\u0027virtualization\u0027: \u0027on\u0027}),"},{"line_number":568,"context_line":"        \u0027version\u0027: kw.get(\u0027version\u0027, \u00271.0\u0027),"},{"line_number":569,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":570,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_f6c015e3","line":567,"in_reply_to":"bf659307_004f8e34","updated":"2018-04-09 09:52:07.000000000","message":"If this is the expected format, then it\u0027s fine.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":564,"context_line":"    return {"},{"line_number":565,"context_line":"        \u0027node_id\u0027: kw.get(\u0027node_id\u0027, \u0027123\u0027),"},{"line_number":566,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027virtualization\u0027),"},{"line_number":567,"context_line":"        \u0027value\u0027: kw.get(\u0027value\u0027, {\u0027virtualization\u0027: \u0027on\u0027}),"},{"line_number":568,"context_line":"        \u0027version\u0027: kw.get(\u0027version\u0027, \u00271.0\u0027),"},{"line_number":569,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":570,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_004f8e34","line":567,"in_reply_to":"bf659307_b3bc286d","updated":"2018-04-08 09:28:17.000000000","message":"yes, it\u0027s the expected dict format which contains a simple single key:value pair. It could also be a nested dict contains multiple key:value pairs with dependencies.\nAre you prefer to having a nested one?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        \u0027node_id\u0027: kw.get(\u0027node_id\u0027, \u0027123\u0027),"},{"line_number":566,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027virtualization\u0027),"},{"line_number":567,"context_line":"        \u0027value\u0027: kw.get(\u0027value\u0027, {\u0027virtualization\u0027: \u0027on\u0027}),"},{"line_number":568,"context_line":"        \u0027version\u0027: kw.get(\u0027version\u0027, \u00271.0\u0027),"},{"line_number":569,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":570,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"},{"line_number":571,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_3387b8b9","line":568,"updated":"2018-04-05 11:00:03.000000000","message":"Will this be changed to bios_setting.BIOSSetting.VERSION in a later patch? Maybe add a TODO if so.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        \u0027node_id\u0027: kw.get(\u0027node_id\u0027, \u0027123\u0027),"},{"line_number":566,"context_line":"        \u0027name\u0027: kw.get(\u0027name\u0027, \u0027virtualization\u0027),"},{"line_number":567,"context_line":"        \u0027value\u0027: kw.get(\u0027value\u0027, {\u0027virtualization\u0027: \u0027on\u0027}),"},{"line_number":568,"context_line":"        \u0027version\u0027: kw.get(\u0027version\u0027, \u00271.0\u0027),"},{"line_number":569,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":570,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"},{"line_number":571,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_607d2a6d","line":568,"in_reply_to":"bf659307_3387b8b9","updated":"2018-04-08 09:28:17.000000000","message":"Done","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"62d73cc8beda41ffcb8bc31d92c5cda90f22cfcd","unresolved":false,"context_lines":[{"line_number":571,"context_line":"    }"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"def get_test_bios_settings_setting_list():"},{"line_number":575,"context_line":"    return ["},{"line_number":576,"context_line":"        {\u0027name\u0027: \u0027virtualization\u0027,"},{"line_number":577,"context_line":"         \u0027value\u0027: {\u0027virtualization\u0027: \u0027on\u0027}},"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_f6333512","line":574,"updated":"2018-04-09 09:52:07.000000000","message":"nit: Only need one setting here.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"16c36666b5962db3242ab5805f5f29a4d488f3f8","unresolved":false,"context_lines":[{"line_number":571,"context_line":"    }"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"def get_test_bios_settings_setting_list():"},{"line_number":575,"context_line":"    return ["},{"line_number":576,"context_line":"        {\u0027name\u0027: \u0027virtualization\u0027,"},{"line_number":577,"context_line":"         \u0027value\u0027: {\u0027virtualization\u0027: \u0027on\u0027}},"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_3cedd9b6","line":574,"in_reply_to":"bf659307_f6333512","updated":"2018-04-11 02:03:21.000000000","message":"I was thinking the first settings comes from object name bios_settings which it tests, the second is to indicate this method is to return a list of settings. but I\u0027m fine to only use one setting.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"74baf942ba4b71d54cbcfc8609a3b6f21d95ea5e","unresolved":false,"context_lines":[{"line_number":579,"context_line":"         \u0027value\u0027: {\u0027hyperthread\u0027: \u0027on\u0027}},"},{"line_number":580,"context_line":"        {\u0027name\u0027: \u0027numlock\u0027,"},{"line_number":581,"context_line":"         \u0027value\u0027: {\u0027numlock\u0027: \u0027on\u0027}}"},{"line_number":582,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_fee1072c","line":582,"updated":"2018-04-05 11:00:03.000000000","message":"How about iterating over this list and calling get_test_bios_settings() for each? Could also incorporate some kwargs to allow setting a node_id etc.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"16c36666b5962db3242ab5805f5f29a4d488f3f8","unresolved":false,"context_lines":[{"line_number":579,"context_line":"         \u0027value\u0027: {\u0027hyperthread\u0027: \u0027on\u0027}},"},{"line_number":580,"context_line":"        {\u0027name\u0027: \u0027numlock\u0027,"},{"line_number":581,"context_line":"         \u0027value\u0027: {\u0027numlock\u0027: \u0027on\u0027}}"},{"line_number":582,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_7ccef15a","line":582,"in_reply_to":"bf659307_36020d0d","updated":"2018-04-11 02:03:21.000000000","message":"Thanks for the explanation, Mark!\nThis method (get_test_bios_settings_setting_list() ) is used to return a list of settings, not a list of objects, so I didn\u0027t iterate over get_test_bios_settings(); otherwise it needs to parse the result from get_test_bios_settings() and return only the name \u0026 value fields as a list of dict which doesn\u0027t seem to reduce the code complexity because we will also need to pass the name \u0026 value fields in order to call get_test_bios_settings() method.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"62d73cc8beda41ffcb8bc31d92c5cda90f22cfcd","unresolved":false,"context_lines":[{"line_number":579,"context_line":"         \u0027value\u0027: {\u0027hyperthread\u0027: \u0027on\u0027}},"},{"line_number":580,"context_line":"        {\u0027name\u0027: \u0027numlock\u0027,"},{"line_number":581,"context_line":"         \u0027value\u0027: {\u0027numlock\u0027: \u0027on\u0027}}"},{"line_number":582,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_36020d0d","line":582,"in_reply_to":"bf659307_e0be1afe","updated":"2018-04-09 09:52:07.000000000","message":"I\u0027m not sure I follow you here. I\u0027m suggesting that this function could return a list of dicts of the same format as the one returned by get_test_bios_settings, by calling get_test_bios_settings for each item in the list defined here. What do you think?","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"6b9d6cba04b6df4ef07129f39fb24c2ec5955f58","unresolved":false,"context_lines":[{"line_number":579,"context_line":"         \u0027value\u0027: {\u0027hyperthread\u0027: \u0027on\u0027}},"},{"line_number":580,"context_line":"        {\u0027name\u0027: \u0027numlock\u0027,"},{"line_number":581,"context_line":"         \u0027value\u0027: {\u0027numlock\u0027: \u0027on\u0027}}"},{"line_number":582,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":39,"id":"bf659307_e0be1afe","line":582,"in_reply_to":"bf659307_fee1072c","updated":"2018-04-08 09:28:17.000000000","message":"this is to get a default list of settings(name, value) for testing purpose, it doesn\u0027t contain other fields like node_id, version etc. If get_test_bios_settings is called, we still need to pass the value dict and name key as parameters, also the return value needs to be handled for retrieving name and value properties.","commit_id":"8492c1efb645d6d9d5835170057a4674edbd708b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d2a34324d66976bd5da310bb2fdb35f794ae00b2","unresolved":false,"context_lines":[{"line_number":561,"context_line":"    version \u003d bios_setting[\u0027version\u0027]"},{"line_number":562,"context_line":"    settings \u003d [{\u0027name\u0027: bios_setting[\u0027name\u0027],"},{"line_number":563,"context_line":"                 \u0027value\u0027: bios_setting[\u0027value\u0027]}]"},{"line_number":564,"context_line":"    return dbapi.create_bios_setting_list(node_id, settings, version)"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"def get_test_bios_setting(**kw):"}],"source_content_type":"text/x-python","patch_set":43,"id":"bf659307_fa85faad","line":564,"updated":"2018-04-12 08:19:31.000000000","message":"Guess you need to return the first item in the list?","commit_id":"36a63d0ec0f3bc0594c75955797a91d7911449b7"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"2005fde7f6793cc975a286954a96afefc36e963f","unresolved":false,"context_lines":[{"line_number":561,"context_line":"    version \u003d bios_setting[\u0027version\u0027]"},{"line_number":562,"context_line":"    settings \u003d [{\u0027name\u0027: bios_setting[\u0027name\u0027],"},{"line_number":563,"context_line":"                 \u0027value\u0027: bios_setting[\u0027value\u0027]}]"},{"line_number":564,"context_line":"    return dbapi.create_bios_setting_list(node_id, settings, version)"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"def get_test_bios_setting(**kw):"}],"source_content_type":"text/x-python","patch_set":43,"id":"bf659307_f62af28e","line":564,"in_reply_to":"bf659307_fa85faad","updated":"2018-04-12 13:26:10.000000000","message":"Done","commit_id":"36a63d0ec0f3bc0594c75955797a91d7911449b7"}]}
