)]}'
{"tempest/config.py":[{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"b58afa921946e3d96c4cee931e1a7ed0b8da26f3","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"    cfg.StrOpt(\u0027node_uuid\u0027,"},{"line_number":1077,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":1078,"context_line":"               help\u003d\"UUID of a node to be used for deployment in Ironic \""},{"line_number":1079,"context_line":"                    \"standalone scenario.\"),"},{"line_number":1080,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":1081,"context_line":"               default\u003d\u0027publicURL\u0027,"},{"line_number":1082,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_a5d4dc1f","line":1079,"updated":"2015-05-08 13:28:09.000000000","message":"Please, do not use \u0027.\u0027 in the help messages for parameters.","commit_id":"341d01e9104669f783d70821c6e289dd6a6de5e2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"fad4ae2366dda77747a3502acc32196212cbfcfe","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"    cfg.StrOpt(\u0027node_uuid\u0027,"},{"line_number":1077,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":1078,"context_line":"               help\u003d\"UUID of a node to be used for deployment in Ironic \""},{"line_number":1079,"context_line":"                    \"standalone scenario.\"),"},{"line_number":1080,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":1081,"context_line":"               default\u003d\u0027publicURL\u0027,"},{"line_number":1082,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_da4a0ec5","line":1079,"in_reply_to":"1aca2d91_a5d4dc1f","updated":"2015-05-08 15:02:18.000000000","message":"Actually, style guide says to put periods - http://docs.openstack.org/developer/oslo.config/styleguide.html","commit_id":"341d01e9104669f783d70821c6e289dd6a6de5e2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2966b4b2cdc4a5e469a405c8eb733925f3e17ccd","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"    cfg.StrOpt(\u0027node_uuid\u0027,"},{"line_number":1077,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":1078,"context_line":"               help\u003d\"UUID of a node to be used for deployment in Ironic \""},{"line_number":1079,"context_line":"                    \"standalone scenario.\"),"},{"line_number":1080,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":1081,"context_line":"               default\u003d\u0027publicURL\u0027,"},{"line_number":1082,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_774bbcb1","line":1079,"updated":"2015-07-28 18:22:38.000000000","message":"just nits -- seems like it is more consistent NOT to end the help strings with a period.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"adf38c9f06cc6112749a0a470a7d9c9a4d0a92a2","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"    cfg.StrOpt(\u0027node_uuid\u0027,"},{"line_number":1077,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":1078,"context_line":"               help\u003d\"UUID of a node to be used for deployment in Ironic \""},{"line_number":1079,"context_line":"                    \"standalone scenario.\"),"},{"line_number":1080,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":1081,"context_line":"               default\u003d\u0027publicURL\u0027,"},{"line_number":1082,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_2a7071a3","line":1079,"in_reply_to":"3a50d1a3_774bbcb1","updated":"2015-08-12 13:24:06.000000000","message":"Done","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"}],"tempest/scenario/test_baremetal_basic_ops.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a90335f2d30d0bff1832bf95f542dc6dc978eca3","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            self.assertEqual(n_port[\u0027device_id\u0027], self.instance[\u0027id\u0027])"},{"line_number":120,"context_line":"            self.assertEqual(n_port[\u0027mac_address\u0027], port[\u0027address\u0027])"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @lockutils.synchronized(\u0027baremetal-scenario-lock\u0027, external\u003dTrue)"},{"line_number":123,"context_line":"    @test.idempotent_id(\u0027549173a5-38ec-42bb-b0e2-c8b9f4a08943\u0027)"},{"line_number":124,"context_line":"    @test.services(\u0027baremetal\u0027, \u0027compute\u0027, \u0027image\u0027, \u0027network\u0027)"},{"line_number":125,"context_line":"    def test_baremetal_server_ops(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aca2d91_ccc9335b","line":122,"updated":"2015-07-28 21:23:24.000000000","message":"You should use the lock fixture as the first line of the test instead of the decorator. For an example see:\n\nhttp://git.openstack.org/cgit/openstack/tempest/tree/tempest/api/compute/admin/test_aggregates.py#n148","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"adf38c9f06cc6112749a0a470a7d9c9a4d0a92a2","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            self.assertEqual(n_port[\u0027device_id\u0027], self.instance[\u0027id\u0027])"},{"line_number":120,"context_line":"            self.assertEqual(n_port[\u0027mac_address\u0027], port[\u0027address\u0027])"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @lockutils.synchronized(\u0027baremetal-scenario-lock\u0027, external\u003dTrue)"},{"line_number":123,"context_line":"    @test.idempotent_id(\u0027549173a5-38ec-42bb-b0e2-c8b9f4a08943\u0027)"},{"line_number":124,"context_line":"    @test.services(\u0027baremetal\u0027, \u0027compute\u0027, \u0027image\u0027, \u0027network\u0027)"},{"line_number":125,"context_line":"    def test_baremetal_server_ops(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_4a75bd95","line":122,"in_reply_to":"1aca2d91_ccc9335b","updated":"2015-08-12 13:24:06.000000000","message":"Done, thanks","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"}],"tempest/scenario/test_baremetal_standalone_ops.py":[{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"b58afa921946e3d96c4cee931e1a7ed0b8da26f3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"CONF.import_opt(\u0027img_file\u0027, \u0027tempest.config\u0027, group\u003d\u0027scenario\u0027)"},{"line_number":43,"context_line":"CONF.import_opt(\u0027aki_img_file\u0027, \u0027tempest.config\u0027, group\u003d\u0027scenario\u0027)"},{"line_number":44,"context_line":"CONF.import_opt(\u0027ami_img_file\u0027, \u0027tempest.config\u0027, group\u003d\u0027scenario\u0027)"},{"line_number":45,"context_line":"CONF.import_opt(\u0027ssh_user\u0027, \u0027tempest.config\u0027, group\u003d\u0027scenario\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_65b124e1","line":45,"updated":"2015-05-08 13:28:09.000000000","message":"Do we really need these strings here? Looks like we already will have all the options in CONF object (I\u0027m not sure, but we can check it)","commit_id":"341d01e9104669f783d70821c6e289dd6a6de5e2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"fad4ae2366dda77747a3502acc32196212cbfcfe","unresolved":false,"context_lines":[{"line_number":42,"context_line":"CONF.import_opt(\u0027img_file\u0027, \u0027tempest.config\u0027, group\u003d\u0027scenario\u0027)"},{"line_number":43,"context_line":"CONF.import_opt(\u0027aki_img_file\u0027, \u0027tempest.config\u0027, group\u003d\u0027scenario\u0027)"},{"line_number":44,"context_line":"CONF.import_opt(\u0027ami_img_file\u0027, \u0027tempest.config\u0027, group\u003d\u0027scenario\u0027)"},{"line_number":45,"context_line":"CONF.import_opt(\u0027ssh_user\u0027, \u0027tempest.config\u0027, group\u003d\u0027scenario\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_1a6f662c","line":45,"in_reply_to":"1aca2d91_65b124e1","updated":"2015-05-08 15:02:18.000000000","message":"Seems that you\u0027re right, thanks.","commit_id":"341d01e9104669f783d70821c6e289dd6a6de5e2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c6e6575839c264fd21dc459a68e9264ed53527f7","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        After creating the file, force a filesystem sync. Otherwise,"},{"line_number":259,"context_line":"        if we issue a rebuild too quickly, the file may not exist."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        client.exec_command(\u0027touch \u0027 + filename)"},{"line_number":262,"context_line":"        client.exec_command(\u0027sync\u0027)"},{"line_number":263,"context_line":"        out \u003d client.exec_command(\u0027ls \u0027 + filename).strip()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_62ef79b1","line":260,"updated":"2015-07-28 19:28:17.000000000","message":"Is the goal to create a file, or is it to verify the file has disappeared across a rebuild operation?  Seems like we would want to test for the presence of the filename before creating it.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"adf38c9f06cc6112749a0a470a7d9c9a4d0a92a2","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        After creating the file, force a filesystem sync. Otherwise,"},{"line_number":259,"context_line":"        if we issue a rebuild too quickly, the file may not exist."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        client.exec_command(\u0027touch \u0027 + filename)"},{"line_number":262,"context_line":"        client.exec_command(\u0027sync\u0027)"},{"line_number":263,"context_line":"        out \u003d client.exec_command(\u0027ls \u0027 + filename).strip()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_fb56d95c","line":260,"in_reply_to":"3a50d1a3_62ef79b1","updated":"2015-08-12 13:24:06.000000000","message":"Done","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"514913d601ad0d62747ad3a1f4b364c620392dac","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    @test.services(\u0027baremetal\u0027, \u0027compute\u0027, \u0027network\u0027)"},{"line_number":277,"context_line":"    def test_baremetal_server_standalone_ops(self):"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        test_filename \u003d \u0027/home/cirros/rebuild_test.txt\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        http_server_addr \u003d self.start_http_server()"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_e74b312a","line":279,"updated":"2015-07-13 02:08:46.000000000","message":"How about changing this to be more generic? For example, /tmp/rebuild_test.txt etc.\nBecause I think this test case is not only for cirros image (yeah, default setting is so, though :).","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"adf38c9f06cc6112749a0a470a7d9c9a4d0a92a2","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    @test.services(\u0027baremetal\u0027, \u0027compute\u0027, \u0027network\u0027)"},{"line_number":277,"context_line":"    def test_baremetal_server_standalone_ops(self):"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        test_filename \u003d \u0027/home/cirros/rebuild_test.txt\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        http_server_addr \u003d self.start_http_server()"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_e775e4ca","line":279,"in_reply_to":"3a50d1a3_82fde5b2","updated":"2015-08-12 13:24:06.000000000","message":"Done","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c6e6575839c264fd21dc459a68e9264ed53527f7","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    @test.services(\u0027baremetal\u0027, \u0027compute\u0027, \u0027network\u0027)"},{"line_number":277,"context_line":"    def test_baremetal_server_standalone_ops(self):"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        test_filename \u003d \u0027/home/cirros/rebuild_test.txt\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        http_server_addr \u003d self.start_http_server()"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_82fde5b2","line":279,"in_reply_to":"9a41bdd9_e74b312a","updated":"2015-07-28 19:28:17.000000000","message":"I kind of agree that this should be more generic, although depending on the OS, /tmp may be reset between reboots and allow the test to artificially pass.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"33f4fff7cc01a804b50c15cb4f49d5174ead9c1c","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        self.rebuild_node()"},{"line_number":300,"context_line":"        # Ensure that file does not exist after rebuild and it is possible to"},{"line_number":301,"context_line":"        # create it"},{"line_number":302,"context_line":"        self.create_remote_file(vm_client, test_filename)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        self.unprovision_node()"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_974d5674","line":302,"updated":"2015-09-11 08:10:24.000000000","message":"This create_remote_file does\n\n $ sudo touch \u003cfilename\u003e\n $ sync\n\nand even if the file exists already before \"touch\"ing again, the second \"touch\" succeeds like\n\n $ sudo touch /home/oomichi/100\n $ sudo touch /home/oomichi/100\n\nSo this check way doesn\u0027t work I think. How about just \"ls\"ing instead?\nIt will be easy to read the code and understand the purpose.","commit_id":"e99cb2adbc1391869fba321078f4dd9db7e22a11"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d814f04e7bdad9326048a5509c73d612add490b0","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        self.rebuild_node()"},{"line_number":300,"context_line":"        # Ensure that file does not exist after rebuild and it is possible to"},{"line_number":301,"context_line":"        # create it"},{"line_number":302,"context_line":"        self.create_remote_file(vm_client, test_filename)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        self.unprovision_node()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_c64d11c5","line":302,"in_reply_to":"9a1a9d01_891f6907","updated":"2015-12-21 18:09:16.000000000","message":"I\u0027m not sure we even need to test rebuild here; it\u0027s covered elsewhere.","commit_id":"e99cb2adbc1391869fba321078f4dd9db7e22a11"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"662b3917003a3c29861d39259f3e90bc8a1782bc","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        self.rebuild_node()"},{"line_number":300,"context_line":"        # Ensure that file does not exist after rebuild and it is possible to"},{"line_number":301,"context_line":"        # create it"},{"line_number":302,"context_line":"        self.create_remote_file(vm_client, test_filename)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        self.unprovision_node()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_891f6907","line":302,"in_reply_to":"da20952f_974d5674","updated":"2015-09-29 14:31:57.000000000","message":"I\u0027m not sure what you mean here, create_remote_file is changed, it first ensures that \u0027ls filename\u0027 raises an exception and only after that does the touch (L264-266)","commit_id":"e99cb2adbc1391869fba321078f4dd9db7e22a11"}],"tempest/services/baremetal/base.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"ee2a261441647a31ff954df349e3d76f3c7bee09","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    else:"},{"line_number":96,"context_line":"                        yield {\u0027path\u0027: path + name,"},{"line_number":97,"context_line":"                               \u0027value\u0027: value,"},{"line_number":98,"context_line":"                               \u0027op\u0027: \u0027add\u0027}"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        patch \u003d [ch for ch in get_change(kw)"},{"line_number":101,"context_line":"                 if ch[\u0027path\u0027].lstrip(\u0027/\u0027) in allowed_attributes]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_c99cdf5f","line":98,"updated":"2015-05-26 11:58:07.000000000","message":"This helper called from update_* named methods.\n\nI have doubts about is it wise to replace the \u0027replace\u0027 with \u0027add\u0027 in all cases.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"df8720b897e1262745acb888bf5bd54d74154947","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    else:"},{"line_number":96,"context_line":"                        yield {\u0027path\u0027: path + name,"},{"line_number":97,"context_line":"                               \u0027value\u0027: value,"},{"line_number":98,"context_line":"                               \u0027op\u0027: \u0027add\u0027}"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        patch \u003d [ch for ch in get_change(kw)"},{"line_number":101,"context_line":"                 if ch[\u0027path\u0027].lstrip(\u0027/\u0027) in allowed_attributes]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_bbab2ad6","line":98,"in_reply_to":"7a016987_1b1fde5c","updated":"2015-05-26 12:21:07.000000000","message":"And this way we can not only replace field values but also add new fields, without adding extra logic here. It was not needed before as nova and ironic were adding new fields by themselves instead of adding them via api directly, in standalone mode it is needed.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2966b4b2cdc4a5e469a405c8eb733925f3e17ccd","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    else:"},{"line_number":96,"context_line":"                        yield {\u0027path\u0027: path + name,"},{"line_number":97,"context_line":"                               \u0027value\u0027: value,"},{"line_number":98,"context_line":"                               \u0027op\u0027: \u0027add\u0027}"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        patch \u003d [ch for ch in get_change(kw)"},{"line_number":101,"context_line":"                 if ch[\u0027path\u0027].lstrip(\u0027/\u0027) in allowed_attributes]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_4964e8b7","line":98,"in_reply_to":"7a016987_bbab2ad6","updated":"2015-07-28 18:22:38.000000000","message":"wouldn\u0027t it be more flexible/extensible if we added an \u0027op\u0027 parameter to this method, so that we wouldn\u0027t need to guess which operator to use? eg, it could have values \u0027remove\u0027, \u0027replace\u0027, \u0027add\u0027. Although maybe that is outside the scope of this patch.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"70cdcb61d41bae19b5fdd98a09b44c2c2a6f5a4b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    else:"},{"line_number":96,"context_line":"                        yield {\u0027path\u0027: path + name,"},{"line_number":97,"context_line":"                               \u0027value\u0027: value,"},{"line_number":98,"context_line":"                               \u0027op\u0027: \u0027add\u0027}"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        patch \u003d [ch for ch in get_change(kw)"},{"line_number":101,"context_line":"                 if ch[\u0027path\u0027].lstrip(\u0027/\u0027) in allowed_attributes]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_1b1fde5c","line":98,"in_reply_to":"7a016987_c99cdf5f","updated":"2015-05-26 12:16:02.000000000","message":"This behaves the same as \u0027replace\u0027 in all cases but one - updating node.instance_uuid (there is a bug about that - https://bugs.launchpad.net/ironic/+bug/1310843), but we don\u0027t touch it in our tests, only nova itself does it, so I thought it would be ok to change it.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"}],"tempest/services/baremetal/v1/json/baremetal_client.py":[{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"630c8f67326b06730c9c6b54791011f7a4228039","unresolved":false,"context_lines":[{"line_number":389,"context_line":"    @base.handle_errors"},{"line_number":390,"context_line":"    def set_node_provision_state(self, node_uuid, state, configdrive\u003dNone):"},{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":"        Set provision state of the specified node."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        :param node_uuid: Unique identifier of the node in UUID format."},{"line_number":395,"context_line":"        :param state: desired state to set (active/deleted/rebuild)."}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_47731cb2","line":392,"updated":"2015-04-30 09:59:14.000000000","message":"I suggest to move this line to the start of doc string (to 1 line up).","commit_id":"132bba9ae82d3b38e8525a75162ab269c17229e3"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"6600da97cc356aacd015bf77ed40155228ffc29c","unresolved":false,"context_lines":[{"line_number":389,"context_line":"    @base.handle_errors"},{"line_number":390,"context_line":"    def set_node_provision_state(self, node_uuid, state, configdrive\u003dNone):"},{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":"        Set provision state of the specified node."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        :param node_uuid: Unique identifier of the node in UUID format."},{"line_number":395,"context_line":"        :param state: desired state to set (active/deleted/rebuild)."}],"source_content_type":"text/x-python","patch_set":2,"id":"1aca2d91_e55654d1","line":392,"in_reply_to":"3acd31a7_47731cb2","updated":"2015-05-08 13:20:11.000000000","message":"Done","commit_id":"132bba9ae82d3b38e8525a75162ab269c17229e3"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"b58afa921946e3d96c4cee931e1a7ed0b8da26f3","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        target \u003d {\"target\": state}"},{"line_number":394,"context_line":"        if configdrive:"},{"line_number":395,"context_line":"            target[\u0027configdrive\u0027] \u003d configdrive"},{"line_number":396,"context_line":"        resp, body \u003d self._put_request(\u0027nodes/%s/states/provision\u0027 % node_uuid,"},{"line_number":397,"context_line":"                                       target)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_a5905c44","line":394,"updated":"2015-05-08 13:28:09.000000000","message":"Let\u0027s use:\n\nif configdrive is not None:\n\ninstead of just \u0027if configdrive:\u0027","commit_id":"341d01e9104669f783d70821c6e289dd6a6de5e2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"fad4ae2366dda77747a3502acc32196212cbfcfe","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        target \u003d {\"target\": state}"},{"line_number":394,"context_line":"        if configdrive:"},{"line_number":395,"context_line":"            target[\u0027configdrive\u0027] \u003d configdrive"},{"line_number":396,"context_line":"        resp, body \u003d self._put_request(\u0027nodes/%s/states/provision\u0027 % node_uuid,"},{"line_number":397,"context_line":"                                       target)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_9ac81624","line":394,"in_reply_to":"1aca2d91_a5905c44","updated":"2015-05-08 15:02:18.000000000","message":"if configdrive is empty string (or zero, or False) it does not make sense to pass it further, so I think it\u0027s fine as it is.","commit_id":"341d01e9104669f783d70821c6e289dd6a6de5e2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2966b4b2cdc4a5e469a405c8eb733925f3e17ccd","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            \u0027instance_info/image_source\u0027,"},{"line_number":246,"context_line":"            \u0027instance_info/image_checksum\u0027,"},{"line_number":247,"context_line":"            \u0027instance_info/root_gb\u0027,"},{"line_number":248,"context_line":"        )"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        patch \u003d self._make_patch(node_attributes, **kwargs)"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_c9cf9854","line":248,"updated":"2015-07-28 18:22:38.000000000","message":"are we adding all possible node attributes, or only the ones that we need for current tests?\n\nwas wondering about instance_info/capabilities, instance_info/image_checksum","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"adf38c9f06cc6112749a0a470a7d9c9a4d0a92a2","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            \u0027instance_info/image_source\u0027,"},{"line_number":246,"context_line":"            \u0027instance_info/image_checksum\u0027,"},{"line_number":247,"context_line":"            \u0027instance_info/root_gb\u0027,"},{"line_number":248,"context_line":"        )"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        patch \u003d self._make_patch(node_attributes, **kwargs)"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_046a4eed","line":248,"in_reply_to":"3a50d1a3_c9cf9854","updated":"2015-08-12 13:24:06.000000000","message":"Here are only the ones that are needed for tests.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2966b4b2cdc4a5e469a405c8eb733925f3e17ccd","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        \"\"\"Set provision state of the specified node."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        :param node_uuid: Unique identifier of the node in UUID format."},{"line_number":389,"context_line":"        :param state: desired state to set (active/deleted/rebuild)."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_29ef1c88","line":389,"updated":"2015-07-28 18:22:38.000000000","message":"did you want this to list all the possible states, or are these examples of what it might be.\n\nCurrently, we have \u0027active\u0027, \u0027deleted\u0027, \u0027rebuild\u0027, \u0027inspect\u0027, \u0027provide\u0027, \u0027manage\u0027","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"adf38c9f06cc6112749a0a470a7d9c9a4d0a92a2","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        \"\"\"Set provision state of the specified node."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        :param node_uuid: Unique identifier of the node in UUID format."},{"line_number":389,"context_line":"        :param state: desired state to set (active/deleted/rebuild)."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_679b1419","line":389,"in_reply_to":"3a50d1a3_29ef1c88","updated":"2015-08-12 13:24:06.000000000","message":"I\u0027ll remove this to not have to sync it when new ones are added.","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2966b4b2cdc4a5e469a405c8eb733925f3e17ccd","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        :param node_uuid: Unique identifier of the node in UUID format."},{"line_number":389,"context_line":"        :param state: desired state to set (active/deleted/rebuild)."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        target \u003d {\"target\": state}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_09b82074","line":390,"updated":"2015-07-28 18:22:38.000000000","message":"what about \u0027:param configdrive:... \u0027?","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"adf38c9f06cc6112749a0a470a7d9c9a4d0a92a2","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        :param node_uuid: Unique identifier of the node in UUID format."},{"line_number":389,"context_line":"        :param state: desired state to set (active/deleted/rebuild)."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        target \u003d {\"target\": state}"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_079c900c","line":390,"in_reply_to":"3a50d1a3_09b82074","updated":"2015-08-12 13:24:06.000000000","message":"Done","commit_id":"2abc67d3e3d72f69a47cdd2b204fd8fc4e4f8019"}]}
