)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"ec50a8e8f56df231f8a760600755dad56ca3059b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add node BIOS support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- RPC object"},{"line_number":10,"context_line":"- Add db migration and model for node bios table"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4901dd4ce018b84c92f4f58ef29a7fbc79851a25"},{"line_number":13,"context_line":"Partial-Bug: #1712032"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f485f77_da1e486f","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":48},"updated":"2017-11-12 21:29:22.000000000","message":"It would be better to post these changes by separated patches. I believe the DB API patch should be ahead of the RPC object patch in this chain because the RPC object depends on DB API.","commit_id":"390cea4ccaddec556dd89312367d92e0b5d6db6c"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"dbdddc03d42f38182605954208898d3f4e08c83b","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"                if not supported_versions:"},{"line_number":1192,"context_line":"                    continue"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"                # NOTE(zshi): bios_settings table is not exist in Queens,"},{"line_number":1195,"context_line":"                #             query from the table will fail with:"},{"line_number":1196,"context_line":"                #             \"Table \u0027ironic.bios_settings\u0027 doesn\u0027t exist\"."},{"line_number":1197,"context_line":"                #             skip version check for BIOSSetting model."},{"line_number":1198,"context_line":"                if model.__name__ in \u0027BIOSSetting\u0027:"},{"line_number":1199,"context_line":"                    continue"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bf659307_2ba7ae0d","line":1197,"range":{"start_line":1194,"start_character":16,"end_line":1197,"end_character":71},"updated":"2018-03-30 05:36:21.000000000","message":"I\u0027m not clearly understand why this test is bypassed, for we have no code merged in Queens cycle.\nIf the check is failed due to version field is null after db upgrade, I guess we can set an initial version in the alembic script? I don\u0027t know.\nI wonder how node_traits table handles this, for it\u0027s the first table created after version field is introduced.","commit_id":"4cd989b72e925b03dfd3be79341ee3e57974ed2a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"a396b6b5ea49c36cc1cb8658a346f238301834d3","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"                if not supported_versions:"},{"line_number":1192,"context_line":"                    continue"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"                # NOTE(zshi): bios_settings table is not exist in Queens,"},{"line_number":1195,"context_line":"                #             query from the table will fail with:"},{"line_number":1196,"context_line":"                #             \"Table \u0027ironic.bios_settings\u0027 doesn\u0027t exist\"."},{"line_number":1197,"context_line":"                #             skip version check for BIOSSetting model."},{"line_number":1198,"context_line":"                if model.__name__ in \u0027BIOSSetting\u0027:"},{"line_number":1199,"context_line":"                    continue"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bf659307_53ef1ee8","line":1197,"range":{"start_line":1194,"start_character":16,"end_line":1197,"end_character":71},"in_reply_to":"bf659307_2ba7ae0d","updated":"2018-04-02 03:43:06.000000000","message":"As Hironori mentioned in Patch Set 18, NodeTrait is not checked in check_version since the db model name is different from object name which means the condition \u0027if model.__name__ in object_versions\u0027 is false. I\u0027m not sure if this is intended, otherwise it\u0027s a bug that not checking NodeTraits.\n\nthe version field is None after db upgrade and query count will be true which in turn causes the check_version failed.\nadding a initial value to version field may solve the problem, but I\u0027m not sure if this is the best practice.","commit_id":"4cd989b72e925b03dfd3be79341ee3e57974ed2a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"dbdddc03d42f38182605954208898d3f4e08c83b","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                #             query from the table will fail with:"},{"line_number":1196,"context_line":"                #             \"Table \u0027ironic.bios_settings\u0027 doesn\u0027t exist\"."},{"line_number":1197,"context_line":"                #             skip version check for BIOSSetting model."},{"line_number":1198,"context_line":"                if model.__name__ in \u0027BIOSSetting\u0027:"},{"line_number":1199,"context_line":"                    continue"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"                # NOTE(rloo): we use model.version, not model, because we"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf659307_eb953688","line":1198,"range":{"start_line":1198,"start_character":34,"end_line":1198,"end_character":36},"updated":"2018-03-30 05:36:21.000000000","message":"It should be \u0027\u003d\u003d\u0027, if I have a table named \u0027BIOS\u0027 or something be part of the string, it will be bypassed too.","commit_id":"4cd989b72e925b03dfd3be79341ee3e57974ed2a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"a396b6b5ea49c36cc1cb8658a346f238301834d3","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                #             query from the table will fail with:"},{"line_number":1196,"context_line":"                #             \"Table \u0027ironic.bios_settings\u0027 doesn\u0027t exist\"."},{"line_number":1197,"context_line":"                #             skip version check for BIOSSetting model."},{"line_number":1198,"context_line":"                if model.__name__ in \u0027BIOSSetting\u0027:"},{"line_number":1199,"context_line":"                    continue"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"                # NOTE(rloo): we use model.version, not model, because we"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf659307_73ea62d8","line":1198,"range":{"start_line":1198,"start_character":34,"end_line":1198,"end_character":36},"in_reply_to":"bf659307_eb953688","updated":"2018-04-02 03:43:06.000000000","message":"Done","commit_id":"4cd989b72e925b03dfd3be79341ee3e57974ed2a"}],"ironic/db/sqlalchemy/models.py":[{"author":{"_account_id":22255,"name":"Tuan","email":"tuanla@vn.fujitsu.com","username":"Tuan"},"change_message_id":"804a9cedb53f36f80ebdb3ee59c10ed527ed757a","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                                name\u003d\u0027uniq_nodesbios0node_id0\u0027),"},{"line_number":289,"context_line":"        table_args())"},{"line_number":290,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":291,"context_line":"    node_id \u003d Column(String(36), nullable\u003dTrue)"},{"line_number":292,"context_line":"    created_at \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":293,"context_line":"    updated_at \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":294,"context_line":"    settings \u003d Column(db_types.JsonEncodedDict, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_c2e5d50a","line":291,"range":{"start_line":291,"start_character":4,"end_line":291,"end_character":47},"updated":"2017-11-16 08:10:33.000000000","message":"node_id should be a ForeignKey(\u0027nodes.id\u0027)","commit_id":"390cea4ccaddec556dd89312367d92e0b5d6db6c"}],"ironic/objects/__init__.py":[{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0ede47c269fcad7370aeb2c537ef57fea127d5c5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    __import__(\u0027ironic.objects.trait\u0027)"},{"line_number":33,"context_line":"    __import__(\u0027ironic.objects.volume_connector\u0027)"},{"line_number":34,"context_line":"    __import__(\u0027ironic.objects.volume_target\u0027)"},{"line_number":35,"context_line":"    __import__(\u0027ironic.objects.bios\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_374c6675","line":35,"updated":"2018-03-20 05:43:14.000000000","message":"Probably, alphabetical order is better.","commit_id":"14ec1e0aa04d870042509286e7739683747de828"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"cd1a4ba3b1eb633a957d28a85ebb6517945eba3b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    __import__(\u0027ironic.objects.trait\u0027)"},{"line_number":33,"context_line":"    __import__(\u0027ironic.objects.volume_connector\u0027)"},{"line_number":34,"context_line":"    __import__(\u0027ironic.objects.volume_target\u0027)"},{"line_number":35,"context_line":"    __import__(\u0027ironic.objects.bios\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_12393040","line":35,"in_reply_to":"df7087c5_374c6675","updated":"2018-03-20 06:31:31.000000000","message":"Done","commit_id":"14ec1e0aa04d870042509286e7739683747de828"}],"ironic/objects/bios.py":[{"author":{"_account_id":27039,"name":"Gustavo Diniz Monteiro","email":"gustavomonteiro@lsd.ufcg.edu.br","username":"gmonteiro"},"change_message_id":"94f1510268e16534844be90663a57f4a96af0e70","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                        A context should be set when instantiating the"},{"line_number":46,"context_line":"                        object, e.g.: NodeBIOS(context)"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        self.dbapi.create_node_bios(self.node_id, self.settings)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def save(self, context\u003dNone):"},{"line_number":51,"context_line":"        \"\"\"Save NodeBIOS information in DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_7540a608","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":35},"updated":"2017-11-10 00:39:26.000000000","message":"sorry, I could not find the implementation of this method, could you please show me where the implementation is made?","commit_id":"390cea4ccaddec556dd89312367d92e0b5d6db6c"},{"author":{"_account_id":27039,"name":"Gustavo Diniz Monteiro","email":"gustavomonteiro@lsd.ufcg.edu.br","username":"gmonteiro"},"change_message_id":"ce601a738e0b511e42927fc9ba4bf56a34b42c8a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                        A context should be set when instantiating the"},{"line_number":46,"context_line":"                        object, e.g.: NodeBIOS(context)"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        self.dbapi.create_node_bios(self.node_id, self.settings)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def save(self, context\u003dNone):"},{"line_number":51,"context_line":"        \"\"\"Save NodeBIOS information in DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_189f6751","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":35},"in_reply_to":"1f485f77_18e3e707","updated":"2017-11-10 02:32:57.000000000","message":"ok, looks good, thank you for the informations.","commit_id":"390cea4ccaddec556dd89312367d92e0b5d6db6c"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"2e5b9ae4d5609e8acb1680b7f2d2565231c0a6d6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                        A context should be set when instantiating the"},{"line_number":46,"context_line":"                        object, e.g.: NodeBIOS(context)"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        self.dbapi.create_node_bios(self.node_id, self.settings)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def save(self, context\u003dNone):"},{"line_number":51,"context_line":"        \"\"\"Save NodeBIOS information in DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_b5b73ed9","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":35},"in_reply_to":"1f485f77_7540a608","updated":"2017-11-10 01:09:36.000000000","message":"the db layer operations are implemented in a separate patchset : https://review.openstack.org/#/c/511402/7\n\nthe exact file containing create_node_bios is : https://review.openstack.org/#/c/511402/7/ironic/db/sqlalchemy/api.py\n\nI put them in separate commits for considerations of passing CI and one focusing on each layer of function, like REST API, RPC, DB operation, DB schema etc.","commit_id":"390cea4ccaddec556dd89312367d92e0b5d6db6c"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"23a7f820901da00940cc5ee6697372a444cf7990","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                        A context should be set when instantiating the"},{"line_number":46,"context_line":"                        object, e.g.: NodeBIOS(context)"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        self.dbapi.create_node_bios(self.node_id, self.settings)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def save(self, context\u003dNone):"},{"line_number":51,"context_line":"        \"\"\"Save NodeBIOS information in DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_18e3e707","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":35},"in_reply_to":"1f485f77_75b78688","updated":"2017-11-10 02:21:07.000000000","message":"the creation of NodeBIOS likely happens when node going from enroll to manageable state and is triggered by node-set-provision-state which is an asynchronous call, it won\u0027t return immediately, but user can check the state of node with node-show.","commit_id":"390cea4ccaddec556dd89312367d92e0b5d6db6c"},{"author":{"_account_id":27039,"name":"Gustavo Diniz Monteiro","email":"gustavomonteiro@lsd.ufcg.edu.br","username":"gmonteiro"},"change_message_id":"ad72ad20ae36eff15e511a3907f8c40a7bfa40d6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                        A context should be set when instantiating the"},{"line_number":46,"context_line":"                        object, e.g.: NodeBIOS(context)"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        self.dbapi.create_node_bios(self.node_id, self.settings)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def save(self, context\u003dNone):"},{"line_number":51,"context_line":"        \"\"\"Save NodeBIOS information in DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_75b78688","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":35},"in_reply_to":"1f485f77_b5b73ed9","updated":"2017-11-10 01:35:37.000000000","message":"Thanks for the references. I think it would be desirable to return in some way if the operation was done with success or not.","commit_id":"390cea4ccaddec556dd89312367d92e0b5d6db6c"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0ede47c269fcad7370aeb2c537ef57fea127d5c5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":73,"context_line":"        updated_bios_setting \u003d self.dbapi.update_bios_settings("},{"line_number":74,"context_line":"            values[\u0027node_id\u0027], values[\u0027name\u0027], values[\u0027value\u0027])"},{"line_number":75,"context_line":"        self._from_db_object(self._context, self, updated_bios_setting)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_17afe294","line":74,"range":{"start_line":74,"start_character":47,"end_line":74,"end_character":60},"updated":"2018-03-20 05:43:14.000000000","message":"nit: It slightly looks confusing that there are 2 \u0027value\u0027.","commit_id":"14ec1e0aa04d870042509286e7739683747de828"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"cd1a4ba3b1eb633a957d28a85ebb6517945eba3b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":73,"context_line":"        updated_bios_setting \u003d self.dbapi.update_bios_settings("},{"line_number":74,"context_line":"            values[\u0027node_id\u0027], values[\u0027name\u0027], values[\u0027value\u0027])"},{"line_number":75,"context_line":"        self._from_db_object(self._context, self, updated_bios_setting)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_72750cfa","line":74,"range":{"start_line":74,"start_character":47,"end_line":74,"end_character":60},"in_reply_to":"df7087c5_17afe294","updated":"2018-03-20 06:31:31.000000000","message":"yep, it may look confusing.\nthe outer values is kept consistent with others naming convention, inner value happens to be one of the key names in bios_settings.\nmaybe we just keep as it is :-)","commit_id":"14ec1e0aa04d870042509286e7739683747de828"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0ede47c269fcad7370aeb2c537ef57fea127d5c5","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        \"\"\""},{"line_number":155,"context_line":"        version \u003d BIOSSetting.get_target_version()"},{"line_number":156,"context_line":"        updated_settings_list \u003d cls.dbapi.update_bios_settings_list("},{"line_number":157,"context_line":"            node_id, settings, version)"},{"line_number":158,"context_line":"        return object_base.obj_make_list("},{"line_number":159,"context_line":"            context, cls(), BIOSSetting, updated_settings_list)"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_77fc1e3e","line":157,"range":{"start_line":157,"start_character":31,"end_line":157,"end_character":38},"updated":"2018-03-20 05:43:14.000000000","message":"version is not required from this db api.","commit_id":"14ec1e0aa04d870042509286e7739683747de828"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"cd1a4ba3b1eb633a957d28a85ebb6517945eba3b","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        \"\"\""},{"line_number":155,"context_line":"        version \u003d BIOSSetting.get_target_version()"},{"line_number":156,"context_line":"        updated_settings_list \u003d cls.dbapi.update_bios_settings_list("},{"line_number":157,"context_line":"            node_id, settings, version)"},{"line_number":158,"context_line":"        return object_base.obj_make_list("},{"line_number":159,"context_line":"            context, cls(), BIOSSetting, updated_settings_list)"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_72f2ec9c","line":157,"range":{"start_line":157,"start_character":31,"end_line":157,"end_character":38},"in_reply_to":"df7087c5_77fc1e3e","updated":"2018-03-20 06:31:31.000000000","message":"Done","commit_id":"14ec1e0aa04d870042509286e7739683747de828"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"07133bea65bc9221803814620e6ed29af2eae391","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        :raises: NodeNotFound if the node id is not found."},{"line_number":50,"context_line":"        :raises: BIOSSettingAlreadyExists if the setting record already exists."},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":53,"context_line":"        db_bios_setting \u003d self.dbapi.create_bios_settings(values)"},{"line_number":54,"context_line":"        self._from_db_object(self._context, self, db_bios_setting)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_66a54204","line":52,"updated":"2018-03-27 05:13:15.000000000","message":"We need to add the new classes to the release mapping[1] for do_version_change_for_db().\n\n[1] https://github.com/openstack/ironic/blob/master/ironic/common/release_mappings.py#L115","commit_id":"563126d88d05399872154efcaf82ee1e65dc55e6"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"4fdd193e1fa55b28bb0629788dbd977cb30f140f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        :raises: NodeNotFound if the node id is not found."},{"line_number":50,"context_line":"        :raises: BIOSSettingAlreadyExists if the setting record already exists."},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":53,"context_line":"        db_bios_setting \u003d self.dbapi.create_bios_settings(values)"},{"line_number":54,"context_line":"        self._from_db_object(self._context, self, db_bios_setting)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_5a46cd23","line":52,"in_reply_to":"bf659307_66a54204","updated":"2018-03-28 03:34:43.000000000","message":"Done","commit_id":"563126d88d05399872154efcaf82ee1e65dc55e6"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"07133bea65bc9221803814620e6ed29af2eae391","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":73,"context_line":"        updated_bios_setting \u003d self.dbapi.update_bios_settings("},{"line_number":74,"context_line":"            values[\u0027node_id\u0027], values[\u0027name\u0027], values[\u0027value\u0027])"},{"line_number":75,"context_line":"        self._from_db_object(self._context, self, updated_bios_setting)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_a9d24d5b","line":74,"updated":"2018-03-27 05:13:15.000000000","message":"It is necessary to pass version, which may be changed in do_version_changes_for_db().","commit_id":"563126d88d05399872154efcaf82ee1e65dc55e6"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"4fdd193e1fa55b28bb0629788dbd977cb30f140f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":73,"context_line":"        updated_bios_setting \u003d self.dbapi.update_bios_settings("},{"line_number":74,"context_line":"            values[\u0027node_id\u0027], values[\u0027name\u0027], values[\u0027value\u0027])"},{"line_number":75,"context_line":"        self._from_db_object(self._context, self, updated_bios_setting)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_1a5055d4","line":74,"in_reply_to":"bf659307_a9d24d5b","updated":"2018-03-28 03:34:43.000000000","message":"Done","commit_id":"563126d88d05399872154efcaf82ee1e65dc55e6"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"4fdd193e1fa55b28bb0629788dbd977cb30f140f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":73,"context_line":"        updated_bios_setting \u003d self.dbapi.update_bios_settings("},{"line_number":74,"context_line":"            values[\u0027node_id\u0027], values[\u0027name\u0027], values[\u0027value\u0027])"},{"line_number":75,"context_line":"        self._from_db_object(self._context, self, updated_bios_setting)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_ef2e05a4","line":74,"in_reply_to":"bf659307_a9d24d5b","updated":"2018-03-28 03:34:43.000000000","message":"Done","commit_id":"563126d88d05399872154efcaf82ee1e65dc55e6"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"07133bea65bc9221803814620e6ed29af2eae391","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        :raises: BIOSSettingAlreadyExists if any of the setting records"},{"line_number":125,"context_line":"            already exists."},{"line_number":126,"context_line":"        :return: A list of BIOSSetting objects."},{"line_number":127,"context_line":"        \"\"\""},{"line_number":128,"context_line":"        db_settings_list \u003d cls.dbapi.create_bios_settings_list("},{"line_number":129,"context_line":"            node_id, settings)"},{"line_number":130,"context_line":"        return object_base.obj_make_list("}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_495b7153","line":127,"updated":"2018-03-27 05:13:15.000000000","message":"Probably, we need to pass the version to db api like creating a trait list[1].\n\n[1] https://github.com/openstack/ironic/blob/master/ironic/objects/trait.py#L153","commit_id":"563126d88d05399872154efcaf82ee1e65dc55e6"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"4fdd193e1fa55b28bb0629788dbd977cb30f140f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        :raises: BIOSSettingAlreadyExists if any of the setting records"},{"line_number":125,"context_line":"            already exists."},{"line_number":126,"context_line":"        :return: A list of BIOSSetting objects."},{"line_number":127,"context_line":"        \"\"\""},{"line_number":128,"context_line":"        db_settings_list \u003d cls.dbapi.create_bios_settings_list("},{"line_number":129,"context_line":"            node_id, settings)"},{"line_number":130,"context_line":"        return object_base.obj_make_list("}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_4f2051b1","line":127,"in_reply_to":"bf659307_495b7153","updated":"2018-03-28 03:34:43.000000000","message":"Done","commit_id":"563126d88d05399872154efcaf82ee1e65dc55e6"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"4fdd193e1fa55b28bb0629788dbd977cb30f140f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        :raises: BIOSSettingAlreadyExists if any of the setting records"},{"line_number":125,"context_line":"            already exists."},{"line_number":126,"context_line":"        :return: A list of BIOSSetting objects."},{"line_number":127,"context_line":"        \"\"\""},{"line_number":128,"context_line":"        db_settings_list \u003d cls.dbapi.create_bios_settings_list("},{"line_number":129,"context_line":"            node_id, settings)"},{"line_number":130,"context_line":"        return object_base.obj_make_list("}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_da63bdb0","line":127,"in_reply_to":"bf659307_495b7153","updated":"2018-03-28 03:34:43.000000000","message":"Done","commit_id":"563126d88d05399872154efcaf82ee1e65dc55e6"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"dbdddc03d42f38182605954208898d3f4e08c83b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    fields \u003d {"},{"line_number":31,"context_line":"        \u0027node_id\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":32,"context_line":"        \u0027name\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":33,"context_line":"        \u0027value\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"    }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf659307_59a19b45","line":33,"range":{"start_line":33,"start_character":31,"end_line":33,"end_character":42},"updated":"2018-03-30 05:36:21.000000000","message":"it should be a FlexibleDictField according to model definition in previous patches.","commit_id":"4cd989b72e925b03dfd3be79341ee3e57974ed2a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"a396b6b5ea49c36cc1cb8658a346f238301834d3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    fields \u003d {"},{"line_number":31,"context_line":"        \u0027node_id\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":32,"context_line":"        \u0027name\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":33,"context_line":"        \u0027value\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"    }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf659307_73e02227","line":33,"range":{"start_line":33,"start_character":31,"end_line":33,"end_character":42},"in_reply_to":"bf659307_59a19b45","updated":"2018-04-02 03:43:06.000000000","message":"Done","commit_id":"4cd989b72e925b03dfd3be79341ee3e57974ed2a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4f602d40cbc00466d5dbeb9cd889f343fbfe168a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        :raises: BIOSSettingAlreadyExists if the setting record already exists."},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":53,"context_line":"        db_bios_setting \u003d self.dbapi.create_bios_settings(values)"},{"line_number":54,"context_line":"        self._from_db_object(self._context, self, db_bios_setting)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_bfaff692","line":53,"updated":"2018-04-17 07:50:24.000000000","message":"create_bios_setting_list(...)","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"24855b63945727e2588f43c40611224837a31e74","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        :raises: BIOSSettingAlreadyExists if the setting record already exists."},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":53,"context_line":"        db_bios_setting \u003d self.dbapi.create_bios_settings(values)"},{"line_number":54,"context_line":"        self._from_db_object(self._context, self, db_bios_setting)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # NOTE(xek): We don\u0027t want to enable RPC on this call just yet. Remotable"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_95b77387","line":53,"in_reply_to":"9f6a8fd7_bfaff692","updated":"2018-04-18 06:59:42.000000000","message":"Done","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4f602d40cbc00466d5dbeb9cd889f343fbfe168a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        :raises: BIOSSettingNotFound if the bios setting name is not found."},{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":73,"context_line":"        updated_bios_setting \u003d self.dbapi.update_bios_settings("},{"line_number":74,"context_line":"            values[\u0027node_id\u0027], values[\u0027name\u0027], values[\u0027value\u0027])"},{"line_number":75,"context_line":"        self._from_db_object(self._context, self, updated_bios_setting)"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_3f9be672","line":73,"updated":"2018-04-17 07:50:24.000000000","message":"update_bios_setting_list","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"24855b63945727e2588f43c40611224837a31e74","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        :raises: BIOSSettingNotFound if the bios setting name is not found."},{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        values \u003d self.do_version_changes_for_db()"},{"line_number":73,"context_line":"        updated_bios_setting \u003d self.dbapi.update_bios_settings("},{"line_number":74,"context_line":"            values[\u0027node_id\u0027], values[\u0027name\u0027], values[\u0027value\u0027])"},{"line_number":75,"context_line":"        self._from_db_object(self._context, self, updated_bios_setting)"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_d562cb16","line":73,"in_reply_to":"9f6a8fd7_3f9be672","updated":"2018-04-18 06:59:42.000000000","message":"Done","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4f602d40cbc00466d5dbeb9cd889f343fbfe168a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        :raises: BIOSSettingNotFound if the bios setting name is not found."},{"line_number":90,"context_line":"        :returns: A :class:\u0027BIOSSetting\u0027 object."},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        db_bios_setting \u003d cls.dbapi.get_bios_settings(node_id, bios_name)"},{"line_number":93,"context_line":"        return cls._from_db_object(context, cls(), db_bios_setting)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_7f7abe24","line":92,"updated":"2018-04-17 07:50:24.000000000","message":"get_bios_setting","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"24855b63945727e2588f43c40611224837a31e74","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        :raises: BIOSSettingNotFound if the bios setting name is not found."},{"line_number":90,"context_line":"        :returns: A :class:\u0027BIOSSetting\u0027 object."},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        db_bios_setting \u003d cls.dbapi.get_bios_settings(node_id, bios_name)"},{"line_number":93,"context_line":"        return cls._from_db_object(context, cls(), db_bios_setting)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_7573bfe8","line":92,"in_reply_to":"9f6a8fd7_7f7abe24","updated":"2018-04-18 06:59:42.000000000","message":"Done","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4f602d40cbc00466d5dbeb9cd889f343fbfe168a","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        db_bios_setting \u003d cls.dbapi.get_bios_settings(node_id, bios_name)"},{"line_number":93,"context_line":"        return cls._from_db_object(context, cls(), db_bios_setting)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"@base.IronicObjectRegistry.register"},{"line_number":97,"context_line":"class BIOSSettingList(base.IronicObjectListBase, base.IronicObject):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_bf9db65a","line":94,"updated":"2018-04-17 07:50:24.000000000","message":"Also need a delete() method.","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"24855b63945727e2588f43c40611224837a31e74","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        db_bios_setting \u003d cls.dbapi.get_bios_settings(node_id, bios_name)"},{"line_number":93,"context_line":"        return cls._from_db_object(context, cls(), db_bios_setting)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"@base.IronicObjectRegistry.register"},{"line_number":97,"context_line":"class BIOSSettingList(base.IronicObjectListBase, base.IronicObject):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_3360e801","line":94,"in_reply_to":"9f6a8fd7_bf9db65a","updated":"2018-04-18 06:59:42.000000000","message":"Done","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4f602d40cbc00466d5dbeb9cd889f343fbfe168a","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            already exists."},{"line_number":126,"context_line":"        :return: A list of BIOSSetting objects."},{"line_number":127,"context_line":"        \"\"\""},{"line_number":128,"context_line":"        db_settings_list \u003d cls.dbapi.create_bios_settings_list("},{"line_number":129,"context_line":"            node_id, settings)"},{"line_number":130,"context_line":"        return object_base.obj_make_list("},{"line_number":131,"context_line":"            context, cls(), BIOSSetting, db_settings_list)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_5fa25a9c","line":128,"updated":"2018-04-17 07:50:24.000000000","message":"create_bios_setting_list","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"24855b63945727e2588f43c40611224837a31e74","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            already exists."},{"line_number":126,"context_line":"        :return: A list of BIOSSetting objects."},{"line_number":127,"context_line":"        \"\"\""},{"line_number":128,"context_line":"        db_settings_list \u003d cls.dbapi.create_bios_settings_list("},{"line_number":129,"context_line":"            node_id, settings)"},{"line_number":130,"context_line":"        return object_base.obj_make_list("},{"line_number":131,"context_line":"            context, cls(), BIOSSetting, db_settings_list)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_d54bab84","line":128,"in_reply_to":"9f6a8fd7_5fa25a9c","updated":"2018-04-18 06:59:42.000000000","message":"Done","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4f602d40cbc00466d5dbeb9cd889f343fbfe168a","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            is not found."},{"line_number":152,"context_line":"        :return: A list of BIOSSetting objects."},{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":"        updated_settings_list \u003d cls.dbapi.update_bios_settings_list("},{"line_number":155,"context_line":"            node_id, settings)"},{"line_number":156,"context_line":"        return object_base.obj_make_list("},{"line_number":157,"context_line":"            context, cls(), BIOSSetting, updated_settings_list)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_7fc87e54","line":154,"updated":"2018-04-17 07:50:24.000000000","message":"update_bios_setting_list","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"24855b63945727e2588f43c40611224837a31e74","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            is not found."},{"line_number":152,"context_line":"        :return: A list of BIOSSetting objects."},{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":"        updated_settings_list \u003d cls.dbapi.update_bios_settings_list("},{"line_number":155,"context_line":"            node_id, settings)"},{"line_number":156,"context_line":"        return object_base.obj_make_list("},{"line_number":157,"context_line":"            context, cls(), BIOSSetting, updated_settings_list)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_f5502f35","line":154,"in_reply_to":"9f6a8fd7_7fc87e54","updated":"2018-04-18 06:59:42.000000000","message":"Done","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4f602d40cbc00466d5dbeb9cd889f343fbfe168a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        :raises: NodeNotFound if the node id is not found."},{"line_number":170,"context_line":"        :return: A list of BIOSSetting objects."},{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":"        node_bios_settings \u003d cls.dbapi.get_node_bios_settings_by_node_id("},{"line_number":173,"context_line":"            node_id)"},{"line_number":174,"context_line":"        return object_base.obj_make_list("},{"line_number":175,"context_line":"            context, cls(), BIOSSetting, node_bios_settings)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_ffe1eed1","line":172,"updated":"2018-04-17 07:50:24.000000000","message":"Can\u0027t remember the proper name for this, but it changed.","commit_id":"09717ef4fc206fd80f1aab6202668121af22423a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a095dadd177a1d2ee57c7f32ca8da03c802575c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# coding\u003dutf-8"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_1e68db84","line":1,"updated":"2018-04-23 13:44:53.000000000","message":"We typically don\u0027t keep the encoding tags around, for what it is worth, although I\u0027ve not checked the contents of the file to see if we legitimately have UTF8 chars in it.","commit_id":"9706944386a9d24564a1e670376da2d5369e12dd"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4674108df944fed84dc431fff68f685d56052522","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                        A context should be set when instantiating the"},{"line_number":139,"context_line":"                        object, e.g.: BIOSSetting(context)"},{"line_number":140,"context_line":"        :param node_id: The node id."},{"line_number":141,"context_line":"        :param settings: A list of bios settings."},{"line_number":142,"context_line":"        :raises: NodeNotFound if the node id is not found."},{"line_number":143,"context_line":"        :raises: BIOSSettingAlreadyExists if any of the setting records"},{"line_number":144,"context_line":"            already exists."}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_17051946","line":141,"updated":"2018-04-23 18:20:28.000000000","message":"nit: this could be clearer. This is a list of dicts, containing \u0027name\u0027 and \u0027value\u0027 items, right?","commit_id":"9706944386a9d24564a1e670376da2d5369e12dd"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4674108df944fed84dc431fff68f685d56052522","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                        A context should be set when instantiating the"},{"line_number":166,"context_line":"                        object, e.g.: BIOSSetting(context)"},{"line_number":167,"context_line":"        :param node_id: The node id."},{"line_number":168,"context_line":"        :param settings: A list of bios settings."},{"line_number":169,"context_line":"        :raises: NodeNotFound if the node id is not found."},{"line_number":170,"context_line":"        :raises: BIOSSettingNotFound if any of the bios setting names"},{"line_number":171,"context_line":"            is not found."}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_d7fa4141","line":168,"updated":"2018-04-23 18:20:28.000000000","message":"As above.","commit_id":"9706944386a9d24564a1e670376da2d5369e12dd"}]}
