)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"59bb9c0aa2822234a70bf67b3d30509f92864f68","unresolved":false,"context_lines":[{"line_number":15,"context_line":"test_nodes were updated first to add additional test classes which"},{"line_number":16,"context_line":"build off one another to test later versions of the API."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Before this merges, the default enabled API versions should be"},{"line_number":19,"context_line":"made \u0027None\u0027 to ensure stable/juno skips microversion tests. We\u0027ll"},{"line_number":20,"context_line":"need devstack patch to set that in its stable/juno branch, then we"},{"line_number":21,"context_line":"can enable \u0027all\u0027 microversions here."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bab921fb_023335ac","line":18,"updated":"2015-04-27 08:00:43.000000000","message":"Can you explain this ?\n\nThe regular jobs are passing with juno.\n\nDo you need a devstack change before this landing ?","commit_id":"771b010362758f2ff687f07c829493ee655d59c8"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"bd13f8253dc13abb9a99d2e1ebbffdf15bb376d4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"test_nodes were updated first to add additional test classes which"},{"line_number":16,"context_line":"build off one another to test later versions of the API."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Before this merges, the default enabled API versions should be"},{"line_number":19,"context_line":"made \u0027None\u0027 to ensure stable/juno skips microversion tests. We\u0027ll"},{"line_number":20,"context_line":"need devstack patch to set that in its stable/juno branch, then we"},{"line_number":21,"context_line":"can enable \u0027all\u0027 microversions here."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa32b979_51cdb75b","line":18,"in_reply_to":"bab921fb_023335ac","updated":"2015-06-23 04:24:55.000000000","message":"Yes, I think so. I will post a patch into devstack\u0027s stable/juno which makes API version in tempest.conf None. Adam, if my concern is wrong, could you please answer?","commit_id":"771b010362758f2ff687f07c829493ee655d59c8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"acac0084f426f77c5509421d0c4136e89cb73798","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Before this merges, the default enabled API versions should be"},{"line_number":19,"context_line":"made \u0027None\u0027 to ensure stable/juno skips microversion tests. We\u0027ll"},{"line_number":20,"context_line":"need devstack patch to set that in its stable/juno branch, then we"},{"line_number":21,"context_line":"can enable \u0027all\u0027 microversions here."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"To follow: negative tests that test server incompatibility."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a50d1a3_d850190d","line":21,"updated":"2015-07-27 08:53:12.000000000","message":"I\u0027m not sure I agree with this approach. I believe we should add one more option to only test versions supported by the current service.","commit_id":"605c141f74d98748762e86282a38d1d29f9be1b4"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e9dc4ef513fadbc221a390dca337e31e4259c3a5","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Before this merges, the default enabled API versions should be"},{"line_number":19,"context_line":"made \u0027None\u0027 to ensure stable/juno skips microversion tests. We\u0027ll"},{"line_number":20,"context_line":"need devstack patch to set that in its stable/juno branch, then we"},{"line_number":21,"context_line":"can enable \u0027all\u0027 microversions here."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"To follow: negative tests that test server incompatibility."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a50d1a3_48ab2c76","line":21,"in_reply_to":"3a50d1a3_d850190d","updated":"2015-07-30 08:59:48.000000000","message":"Thank you for your suggestion. Let\u0027s discuss about it with Ironic folks at first, then if everyone agree, I will post a follow-up patches.","commit_id":"605c141f74d98748762e86282a38d1d29f9be1b4"}],"tempest/api/baremetal/admin/base.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"0cd2d0e66ebc2df7f0a55994a768c7a27c9b30ea","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        versions \u003d CONF.baremetal.api_microversions"},{"line_number":72,"context_line":"        skip_api \u003d None"},{"line_number":73,"context_line":"        if \u0027all\u0027 in versions:"},{"line_number":74,"context_line":"            skip_api \u003d False"},{"line_number":75,"context_line":"        elif str(cls.api_microversion) in versions:"},{"line_number":76,"context_line":"            skip_api \u003d False"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_fa075b16","line":73,"updated":"2015-07-16 20:14:14.000000000","message":"Can we move this whole block to tempest/test.py and make it a common method like:\n\ndef requires_microversion(service, min, max):\n\nwhich will return true if the configured microversion allows the test to be run or false if we should skip the test. Take a look at is_extension_available() for the basic idea I had in mind.\n\nThe reason I think we should make this common is because we\u0027ll want to do the same thing for nova, and other services as they add support for microversions.","commit_id":"1cc7cc996a4217fb945191daca07c4b4188bda69"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"16d14f346744df6f8277c01f59d8801ffeed4438","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        versions \u003d CONF.baremetal.api_microversions"},{"line_number":72,"context_line":"        skip_api \u003d None"},{"line_number":73,"context_line":"        if \u0027all\u0027 in versions:"},{"line_number":74,"context_line":"            skip_api \u003d False"},{"line_number":75,"context_line":"        elif str(cls.api_microversion) in versions:"},{"line_number":76,"context_line":"            skip_api \u003d False"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_ad785f90","line":73,"in_reply_to":"3a50d1a3_22a543a1","updated":"2015-07-21 16:47:12.000000000","message":"Yeah, excellent point for me.\n\nThe unified interface for microversions tests between projects was what I really wanted before.\nOn current this patch, each microversion test run for baremetal node APIs only and the other baremetal APIs are tested on minimum microversion only.\n\nOn the other hand, I have a plan to test all *compute* APIs by each microversion on qa-spec[1] because backwards compatible changes *without* microversions also should be blocked with Tempest.\n\nThat(how to handle backwards compatible changes with microversions) was a discussion point between nova and ironic on openstack-dev ml. I feel it is possible to allow backwards compatible changes without microversions in ironic during the discussion. If so, current test way of the qa-spec is overkill for ironic and this patch way is enough for ironic.\n\nbut current this version check way will not work for nova if current qa-spec is approved. That is a reason why I feel this way is not so common for microversions.\n\n---\n[1]: https://review.openstack.org/#/c/169126/","commit_id":"1cc7cc996a4217fb945191daca07c4b4188bda69"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"31649dab94c191f30267983c9f71b0dfb87adf23","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        versions \u003d CONF.baremetal.api_microversions"},{"line_number":72,"context_line":"        skip_api \u003d None"},{"line_number":73,"context_line":"        if \u0027all\u0027 in versions:"},{"line_number":74,"context_line":"            skip_api \u003d False"},{"line_number":75,"context_line":"        elif str(cls.api_microversion) in versions:"},{"line_number":76,"context_line":"            skip_api \u003d False"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_22a543a1","line":73,"in_reply_to":"3a50d1a3_8a780cf4","updated":"2015-07-21 14:31:24.000000000","message":"I disagree, while the policy around test policy for microversions hasn\u0027t been 100% decided yet for every project, I don\u0027t think that\u0027s a blocker for having a common method to decide whether a test should run or not.\n\nWe can always change or use separate logic per service in the common method, But, I think have a unified interface for tests to describe which microversion it needs to work with and get an answer whether it will work or not is something good to have. I\u0027d really rather see that interface be used here instead of doing it as a one off.","commit_id":"1cc7cc996a4217fb945191daca07c4b4188bda69"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4ed4bac75f64625083ed032c9d5468c0677d0205","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        versions \u003d CONF.baremetal.api_microversions"},{"line_number":72,"context_line":"        skip_api \u003d None"},{"line_number":73,"context_line":"        if \u0027all\u0027 in versions:"},{"line_number":74,"context_line":"            skip_api \u003d False"},{"line_number":75,"context_line":"        elif str(cls.api_microversion) in versions:"},{"line_number":76,"context_line":"            skip_api \u003d False"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_8a780cf4","line":73,"in_reply_to":"9a41bdd9_fa075b16","updated":"2015-07-21 06:00:48.000000000","message":"I feel it is premature to implement requires_microversion() as common method because the microversion testing way is not concrete yet.\nSo I\u0027m fine to implement it in baremetal specific like this patch.","commit_id":"1cc7cc996a4217fb945191daca07c4b4188bda69"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2549456211dd2d8b604e1b82f42afbd873f56644","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        \"\"\""},{"line_number":142,"context_line":"        node \u003d {"},{"line_number":143,"context_line":"            \u0027chassis_uuid\u0027: chassis_id,"},{"line_number":144,"context_line":"            \u0027driver\u0027: kwargs.pop(\u0027driver\u0027, \u0027fake\u0027)"},{"line_number":145,"context_line":"        }"},{"line_number":146,"context_line":"        node.update(kwargs)"},{"line_number":147,"context_line":"        resp, body \u003d cls.client.create_node(**node)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_97f953cb","line":144,"updated":"2015-07-19 19:02:56.000000000","message":"Can we use cls.driver instead of \u0027fake\u0027 like the previous change?\n\nI know fake driver is used on the gate, but this static value seems a little strange since the previous code.","commit_id":"90d661d5fe8178fdd09ad3bb1d997c82013d8c38"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"f37ebf9d5ee2e611b6e1da9ac837ca926ee1a2af","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        \"\"\""},{"line_number":142,"context_line":"        node \u003d {"},{"line_number":143,"context_line":"            \u0027chassis_uuid\u0027: chassis_id,"},{"line_number":144,"context_line":"            \u0027driver\u0027: kwargs.pop(\u0027driver\u0027, \u0027fake\u0027)"},{"line_number":145,"context_line":"        }"},{"line_number":146,"context_line":"        node.update(kwargs)"},{"line_number":147,"context_line":"        resp, body \u003d cls.client.create_node(**node)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_4a052478","line":144,"in_reply_to":"3a50d1a3_97f953cb","updated":"2015-07-21 10:05:38.000000000","message":"Done","commit_id":"90d661d5fe8178fdd09ad3bb1d997c82013d8c38"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"2d7c0133c51a636a6d5d5741dc14f82e038744fc","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        versions \u003d CONF.baremetal.api_microversions"},{"line_number":72,"context_line":"        skip_api \u003d None"},{"line_number":73,"context_line":"        if \u0027all\u0027 in versions:"},{"line_number":74,"context_line":"            skip_api \u003d False"},{"line_number":75,"context_line":"        elif str(cls.api_microversion) in versions:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_7a91e751","line":72,"updated":"2015-08-14 14:12:01.000000000","message":"Just a thought..  Instead of using skip_api, you could combine the \"else\" with the second \"if\" by using \"pass\" after the if and elif\u0027s, like this:\n\nif \u0027all\u0027 in versions:\n    pass\nelif ...\n    pass\n...\nelse:\n    skip_msg \u003d ...\n...","commit_id":"5c059f9eeab11248374e7f9d1caa69da5c1059d7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b72b2363cc36cdfd705bdec955bd8789f396808b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        versions \u003d CONF.baremetal.api_microversions"},{"line_number":72,"context_line":"        skip_api \u003d None"},{"line_number":73,"context_line":"        if \u0027all\u0027 in versions:"},{"line_number":74,"context_line":"            skip_api \u003d False"},{"line_number":75,"context_line":"        elif str(cls.api_microversion) in versions:"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa1b9901_86d30038","line":72,"in_reply_to":"1a4dcd0f_7a91e751","updated":"2015-08-25 10:33:23.000000000","message":"Done","commit_id":"5c059f9eeab11248374e7f9d1caa69da5c1059d7"}],"tempest/api/baremetal/admin/test_nodes.py":[{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"036b70f172647657a114ff5ef904999d1fa38a99","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"class TestNodesv1_1(TestNodes):"},{"line_number":208,"context_line":"    api_microversion \u003d \u00271.1\u0027"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"class TestNodesv1_2(TestNodesv1_1):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9b358b_9a572f02","line":208,"updated":"2015-03-30 18:25:40.000000000","message":"should this be 1.0 if https://review.openstack.org/#/c/164369 lands?","commit_id":"771b010362758f2ff687f07c829493ee655d59c8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"bf2f042b5a4314b00e97d8b51c14194690a1be30","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"class TestNodesv1_1(TestNodes):"},{"line_number":208,"context_line":"    api_microversion \u003d \u00271.1\u0027"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"class TestNodesv1_2(TestNodesv1_1):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_2fde8c3f","line":208,"in_reply_to":"da9b358b_9a572f02","updated":"2015-04-07 23:27:15.000000000","message":"I\u0027ve abandoned that work.\n\nThe proposal here to use v1.1 is fine.","commit_id":"771b010362758f2ff687f07c829493ee655d59c8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"acac0084f426f77c5509421d0c4136e89cb73798","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    def test_node_driver_internal_info(self):"},{"line_number":212,"context_line":"        _, node \u003d self.client.show_node(self.node[\u0027uuid\u0027])"},{"line_number":213,"context_line":"        self.assertIn(\u0027driver_internal_info\u0027, node)"},{"line_number":214,"context_line":"        self.assertTrue(isinstance(node[\u0027driver_internal_info\u0027], dict))"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"class TestNodesv1_5(TestNodesv1_3):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_185e8112","line":214,"updated":"2015-07-27 08:53:12.000000000","message":"iirc there is assertIsInstance, but I may be wrong","commit_id":"605c141f74d98748762e86282a38d1d29f9be1b4"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e9dc4ef513fadbc221a390dca337e31e4259c3a5","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    def test_node_driver_internal_info(self):"},{"line_number":212,"context_line":"        _, node \u003d self.client.show_node(self.node[\u0027uuid\u0027])"},{"line_number":213,"context_line":"        self.assertIn(\u0027driver_internal_info\u0027, node)"},{"line_number":214,"context_line":"        self.assertTrue(isinstance(node[\u0027driver_internal_info\u0027], dict))"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"class TestNodesv1_5(TestNodesv1_3):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_e1ec402b","line":214,"in_reply_to":"3a50d1a3_185e8112","updated":"2015-07-30 08:59:48.000000000","message":"Done. Nice catch, you\u0027re right. https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertIsInstance","commit_id":"605c141f74d98748762e86282a38d1d29f9be1b4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d364403d96f3ee688a31c4624d08819464593328","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class TestNodesLatest(TestNodesv1_11):"},{"line_number":249,"context_line":"    api_microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_5c9f4450","line":249,"updated":"2015-07-31 00:56:54.000000000","message":"After re-considering this patch, I guess this \u0027latest\u0027 test will become a problem on the ironic gate in the future.\n\nThe microversions supports backwards incompatible changes as you know, and some \u0027latest\u0027 change will be on ironic. However after this patch, the microversions tests for the gate exist in tempest, and it will be difficult to make backwards incompatible changes because this \u0027latest\u0027 test tries to run on the latest microversion even if tempest doesn\u0027t support the microversion at the time.\n\nso if adding the corresponding test to temepst before ironic, the test will fail because the default config value of tested microversions is \u0027all\u0027 and ironic code doesn\u0027t contain it.\n\nSo this \u0027latest\u0027 test will make egg-and-chicken situation, I guess.\nIs it acceptable to remove this latest test and how about adding it again after migrating ironic gate tests to ironic repo from tempest?\n\nAfter migrating, we can make backwards incompatible change in a single patch because ironic repo contains both.","commit_id":"d3a4697a36d5c950bd5de6a4c8622af84ff035f5"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"6145b8c7e0ee28e4119eeba220361cfb55bfc855","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class TestNodesLatest(TestNodesv1_11):"},{"line_number":249,"context_line":"    api_microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_244c4841","line":249,"in_reply_to":"3a50d1a3_4ff548c9","updated":"2015-08-03 07:58:50.000000000","message":"Done","commit_id":"d3a4697a36d5c950bd5de6a4c8622af84ff035f5"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"07effde7782ff1cd9be2dc078cc6feea2a5546a4","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class TestNodesLatest(TestNodesv1_11):"},{"line_number":249,"context_line":"    api_microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_8fcd90b9","line":249,"in_reply_to":"3a50d1a3_5c9f4450","updated":"2015-07-31 01:14:26.000000000","message":"OK, how about removing this class and just adding note like below?\n\n # NOTE(yuikotakada) Add a class TestNodesLatest for test latest microversion after migration into Ironic tree will have been finished.","commit_id":"d3a4697a36d5c950bd5de6a4c8622af84ff035f5"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6a434eee3798f0bf25949b1589e0bd72784f34fa","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class TestNodesLatest(TestNodesv1_11):"},{"line_number":249,"context_line":"    api_microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_4ff548c9","line":249,"in_reply_to":"3a50d1a3_8fcd90b9","updated":"2015-07-31 01:15:21.000000000","message":"The NOTE seems helpful for me, thanks for considering.","commit_id":"d3a4697a36d5c950bd5de6a4c8622af84ff035f5"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"91701ec0d9b1dfa61f207289c5546e94731e3f36","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    default_provision_state \u003d \u0027enroll\u0027"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# NOTE(yuikotakada): Add a class TestNodesLatest for test latest microversion"},{"line_number":249,"context_line":"# after migration into Ironic tree will have been finished."}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_d4bc946e","line":248,"updated":"2015-08-04 10:29:39.000000000","message":"s/for/to","commit_id":"9e21151e00f884f5f5f29b52844f1fc09d24d522"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e3fd0d06fdd37e3eb5962c0ae76e15beb2315c7f","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    default_provision_state \u003d \u0027enroll\u0027"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# NOTE(yuikotakada): Add a class TestNodesLatest for test latest microversion"},{"line_number":249,"context_line":"# after migration into Ironic tree will have been finished."}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_d7ffb6ff","line":248,"in_reply_to":"1a4dcd0f_d4bc946e","updated":"2015-08-04 10:30:33.000000000","message":"It feels more like a TODO instead of NOTE","commit_id":"9e21151e00f884f5f5f29b52844f1fc09d24d522"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"91701ec0d9b1dfa61f207289c5546e94731e3f36","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# NOTE(yuikotakada): Add a class TestNodesLatest for test latest microversion"},{"line_number":249,"context_line":"# after migration into Ironic tree will have been finished."}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_945a8c82","line":249,"updated":"2015-08-04 10:29:39.000000000","message":"s/will//\n\nOr\n\n\"after migrating the Ironic tempest tests to the Ironic tree\".","commit_id":"9e21151e00f884f5f5f29b52844f1fc09d24d522"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"ab63cbaccb92743dcf02e5f9648f20578083a2e7","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# NOTE(yuikotakada): Add a class TestNodesLatest for test latest microversion"},{"line_number":249,"context_line":"# after migration into Ironic tree will have been finished."}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_b7b0eaf5","line":249,"in_reply_to":"1a4dcd0f_945a8c82","updated":"2015-08-04 10:37:28.000000000","message":"Done","commit_id":"9e21151e00f884f5f5f29b52844f1fc09d24d522"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3a15cae259d33177912f4cb80fa3c02bda02cccc","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# TODO(yuikotakada): Add a class TestNodesLatest to test latest microversion"},{"line_number":249,"context_line":"# after migration the Ironic tempest tests to the Ironic tree"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_3a535fe3","line":249,"updated":"2015-08-04 10:49:38.000000000","message":"s/migration/migrating\n\n(But it\u0027s all good, don\u0027t need to bother putting a new patch-set for it)","commit_id":"1d15504169306fb115c5068d226db4045d3c30ec"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"2d7c0133c51a636a6d5d5741dc14f82e038744fc","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class TestNodes(base.BaseBaremetalTest):"},{"line_number":27,"context_line":"    \"\"\"Base tests for baremetal nodes.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # Base tests test with no microversion specified, targetting the original"},{"line_number":30,"context_line":"    # v1.0 API."},{"line_number":31,"context_line":"    api_microversion \u003d None"},{"line_number":32,"context_line":"    # Default state for newly enrolled nodes"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_5a250b08","line":29,"updated":"2015-08-14 14:12:01.000000000","message":"s/targetting/targeting","commit_id":"5c059f9eeab11248374e7f9d1caa69da5c1059d7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b72b2363cc36cdfd705bdec955bd8789f396808b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class TestNodes(base.BaseBaremetalTest):"},{"line_number":27,"context_line":"    \"\"\"Base tests for baremetal nodes.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # Base tests test with no microversion specified, targetting the original"},{"line_number":30,"context_line":"    # v1.0 API."},{"line_number":31,"context_line":"    api_microversion \u003d None"},{"line_number":32,"context_line":"    # Default state for newly enrolled nodes"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa1b9901_46dde840","line":29,"in_reply_to":"1a4dcd0f_5a250b08","updated":"2015-08-25 10:33:23.000000000","message":"Done","commit_id":"5c059f9eeab11248374e7f9d1caa69da5c1059d7"}],"tempest/config.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"0cd2d0e66ebc2df7f0a55994a768c7a27c9b30ea","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"                    \"Takes longer since Kilo as Ironic performs an extra \""},{"line_number":1128,"context_line":"                    \"step in Node cleaning.\"),"},{"line_number":1129,"context_line":"    cfg.ListOpt(\u0027api_microversions\u0027,"},{"line_number":1130,"context_line":"                default\u003d[\u0027all\u0027],"},{"line_number":1131,"context_line":"                help\u003d\u0027A list of enabled Ironic API microversions with a \u0027"},{"line_number":1132,"context_line":"                     \u0027special entry all which indicates every microversion \u0027"},{"line_number":1133,"context_line":"                     \u0027are enabled. Valid entries include numeric versions \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_3acf03b5","line":1130,"updated":"2015-07-16 20:14:14.000000000","message":"So I\u0027m not sure a ListOpt makes sense for this. This is really a range right? There\u0027s a minimum microversion and a maximum and everything in between should be available. For example I don\u0027t think deployers have the option to deploy with microversions:\n\n[1.0, 1.2, 1.5, 1.8]\n\nI\u0027m not sure there is an oslo opt type that fits this model well, but why not have 2 opts min and max microversion and if they aren\u0027t set we assume there is no min we assume 1.0 and if there is no max we assume any microversion will work?","commit_id":"1cc7cc996a4217fb945191daca07c4b4188bda69"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"31649dab94c191f30267983c9f71b0dfb87adf23","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"                    \"Takes longer since Kilo as Ironic performs an extra \""},{"line_number":1128,"context_line":"                    \"step in Node cleaning.\"),"},{"line_number":1129,"context_line":"    cfg.ListOpt(\u0027api_microversions\u0027,"},{"line_number":1130,"context_line":"                default\u003d[\u0027all\u0027],"},{"line_number":1131,"context_line":"                help\u003d\u0027A list of enabled Ironic API microversions with a \u0027"},{"line_number":1132,"context_line":"                     \u0027special entry all which indicates every microversion \u0027"},{"line_number":1133,"context_line":"                     \u0027are enabled. Valid entries include numeric versions \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_c21c9f79","line":1130,"in_reply_to":"3a50d1a3_aae1489c","updated":"2015-07-21 14:31:24.000000000","message":"Sure, but you can do that with min, max right? My argument is that there will always be a linear range for microversions you want to run. Whether it\u0027s a range of 1 or many.  I think requiring to specify indvidual microversion is overly verbose and not really necessary useful. I really don\u0027t want a repeat of the api_extensions options. (although there a list is necessary)","commit_id":"1cc7cc996a4217fb945191daca07c4b4188bda69"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4ed4bac75f64625083ed032c9d5468c0677d0205","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"                    \"Takes longer since Kilo as Ironic performs an extra \""},{"line_number":1128,"context_line":"                    \"step in Node cleaning.\"),"},{"line_number":1129,"context_line":"    cfg.ListOpt(\u0027api_microversions\u0027,"},{"line_number":1130,"context_line":"                default\u003d[\u0027all\u0027],"},{"line_number":1131,"context_line":"                help\u003d\u0027A list of enabled Ironic API microversions with a \u0027"},{"line_number":1132,"context_line":"                     \u0027special entry all which indicates every microversion \u0027"},{"line_number":1133,"context_line":"                     \u0027are enabled. Valid entries include numeric versions \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_aae1489c","line":1130,"in_reply_to":"9a41bdd9_3acf03b5","updated":"2015-07-21 06:00:48.000000000","message":"Maybe list of microversions will work as well, because tester want to run several microversions including release boundaries.","commit_id":"1cc7cc996a4217fb945191daca07c4b4188bda69"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ad2cb467b841327349dce99ad847c0a97a386900","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"               help\u003d\"Timeout for unprovisioning an Ironic node. \""},{"line_number":1174,"context_line":"                    \"Takes longer since Kilo as Ironic performs an extra \""},{"line_number":1175,"context_line":"                    \"step in Node cleaning.\"),"},{"line_number":1176,"context_line":"    cfg.ListOpt(\u0027api_microversions\u0027,"},{"line_number":1177,"context_line":"                default\u003d[\u0027all\u0027],"},{"line_number":1178,"context_line":"                help\u003d\u0027A list of enabled Ironic API microversions with a \u0027"},{"line_number":1179,"context_line":"                     \u0027special entry all which indicates every microversion \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_743488dd","line":1176,"updated":"2015-09-21 21:38:29.000000000","message":"I still find using a list opt for this very bizarre. Unless you expecting to test with discontinuities in the versions that are being deployed, like test [1.1, 1.2, 1.5, 1.6] which honestly doesn\u0027t make much sense to me. I think doing this as a min, max pair of options would be easier for users.\n\nI\u0027m just thinking of the potential future where there are dozens of microversions, and you want to do 1.3 -\u003e 1.29 (which is not the latest version, 1.30 is) this would require listing all the versions in between.","commit_id":"aaa3f5c83389c7f443b4682e9acb045f3726f4f5"}],"tempest/services/baremetal/v1/json/baremetal_client.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"978428c8b564d761dd32785862aa37a0ddd6cb4c","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                           \u0027properties/local_gb\u0027,"},{"line_number":227,"context_line":"                           \u0027properties/memory_mb\u0027,"},{"line_number":228,"context_line":"                           \u0027driver\u0027,"},{"line_number":229,"context_line":"                           \u0027driver_internal_info\u0027,"},{"line_number":230,"context_line":"                           \u0027instance_uuid\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        patch \u003d self._make_patch(node_attributes, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_7ac01ce0","line":229,"updated":"2015-03-20 21:45:43.000000000","message":"driver_internal_info is read-only, so I don\u0027t think it should be added here","commit_id":"dabe4b473708903be61140573ef955b01f27b5e3"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"16b9e53bb514448f483258f4afd9db58ea8f881a","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                           \u0027properties/local_gb\u0027,"},{"line_number":227,"context_line":"                           \u0027properties/memory_mb\u0027,"},{"line_number":228,"context_line":"                           \u0027driver\u0027,"},{"line_number":229,"context_line":"                           \u0027driver_internal_info\u0027,"},{"line_number":230,"context_line":"                           \u0027instance_uuid\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        patch \u003d self._make_patch(node_attributes, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_98679824","line":229,"in_reply_to":"9a80dd14_7ac01ce0","updated":"2015-03-20 23:03:53.000000000","message":"Doh, yeah.. had a test in here to update those settings before realizing they were read-only :)","commit_id":"dabe4b473708903be61140573ef955b01f27b5e3"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"2d7c0133c51a636a6d5d5741dc14f82e038744fc","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        :return: A tuple with the server response and the created node."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        \"\"\""},{"line_number":142,"context_line":"        resp \u003d self._create_request(\u0027nodes\u0027, kwargs)"},{"line_number":143,"context_line":"        return resp"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @base.handle_errors"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_5aaf4b2b","line":142,"updated":"2015-08-14 14:12:01.000000000","message":"Why not just:\n\nreturn self._create_request(\u0027nodes\u0027, kwargs)","commit_id":"5c059f9eeab11248374e7f9d1caa69da5c1059d7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b72b2363cc36cdfd705bdec955bd8789f396808b","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        :return: A tuple with the server response and the created node."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        \"\"\""},{"line_number":142,"context_line":"        resp \u003d self._create_request(\u0027nodes\u0027, kwargs)"},{"line_number":143,"context_line":"        return resp"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @base.handle_errors"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa1b9901_06e850e1","line":142,"in_reply_to":"1a4dcd0f_5aaf4b2b","updated":"2015-08-25 10:33:23.000000000","message":"Done","commit_id":"5c059f9eeab11248374e7f9d1caa69da5c1059d7"}]}
