)]}'
{"ironic_tempest_plugin/config.py":[{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"5a6bf5164158615644d4d18f76053601fc1e4c97","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    \"step in Node cleaning.\"),"},{"line_number":69,"context_line":"    cfg.IntOpt(\u0027resource_tracker_update_timeout\u0027,"},{"line_number":70,"context_line":"               default\u003d120,"},{"line_number":71,"context_line":"               help\u003d\"Timeout (in seconds) to wait for ironic resources to be \""},{"line_number":72,"context_line":"                    \"reported by nova.\"),"},{"line_number":73,"context_line":"    cfg.IntOpt(\u0027number_of_fake_resource_providers\u0027,"},{"line_number":74,"context_line":"               default\u003d20,"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a1ced50_6f61e1a8","line":71,"range":{"start_line":71,"start_character":54,"end_line":71,"end_character":60},"updated":"2017-03-22 13:37:47.000000000","message":"nit: usually Ironic and Nova (and other components) are written from capital letter here.","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"739370ce95382b26349235ac031676aa30bfd1ea","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    \"step in Node cleaning.\"),"},{"line_number":69,"context_line":"    cfg.IntOpt(\u0027resource_tracker_update_timeout\u0027,"},{"line_number":70,"context_line":"               default\u003d120,"},{"line_number":71,"context_line":"               help\u003d\"Timeout (in seconds) to wait for ironic resources to be \""},{"line_number":72,"context_line":"                    \"reported by nova.\"),"},{"line_number":73,"context_line":"    cfg.IntOpt(\u0027number_of_fake_resource_providers\u0027,"},{"line_number":74,"context_line":"               default\u003d20,"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_e8e160d2","line":71,"range":{"start_line":71,"start_character":54,"end_line":71,"end_character":60},"in_reply_to":"1a1ced50_6f61e1a8","updated":"2017-03-24 15:44:50.000000000","message":"Done","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"caf245e6337856e320e76aa332bda2899ce5a9dc","unresolved":false,"context_lines":[{"line_number":79,"context_line":"               default\u003d120,"},{"line_number":80,"context_line":"               help\u003d\"Timeout (in seconds) to wait for Ironic resources to be \""},{"line_number":81,"context_line":"                    \"reported by Nova.\"),"},{"line_number":82,"context_line":"    cfg.IntOpt(\u0027number_of_fake_resource_providers\u0027,"},{"line_number":83,"context_line":"               default\u003d20,"},{"line_number":84,"context_line":"               help\u003d\"Number of fake nodes having compute resources to be \""},{"line_number":85,"context_line":"                    \"created for testing the placement API.\"),"},{"line_number":86,"context_line":"    cfg.StrOpt(\u0027min_microversion\u0027,"},{"line_number":87,"context_line":"               help\u003d\"Lower version of the test target microversion range. \""},{"line_number":88,"context_line":"                    \"The format is \u0027X.Y\u0027, where \u0027X\u0027 and \u0027Y\u0027 are int values. \""}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_1cc3a6ef","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":62},"updated":"2017-08-09 17:49:44.000000000","message":"This feels like a mean, I can\u0027t help but wonder if we should test minimum and a theoretical maximum.  Then again, is it our place to really even test that.... :\\","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ebe0b1b4466e53634b275ebd761dc9becae80997","unresolved":false,"context_lines":[{"line_number":79,"context_line":"               default\u003d120,"},{"line_number":80,"context_line":"               help\u003d\"Timeout (in seconds) to wait for Ironic resources to be \""},{"line_number":81,"context_line":"                    \"reported by Nova.\"),"},{"line_number":82,"context_line":"    cfg.IntOpt(\u0027number_of_fake_resource_providers\u0027,"},{"line_number":83,"context_line":"               default\u003d20,"},{"line_number":84,"context_line":"               help\u003d\"Number of fake nodes having compute resources to be \""},{"line_number":85,"context_line":"                    \"created for testing the placement API.\"),"},{"line_number":86,"context_line":"    cfg.StrOpt(\u0027min_microversion\u0027,"},{"line_number":87,"context_line":"               help\u003d\"Lower version of the test target microversion range. \""},{"line_number":88,"context_line":"                    \"The format is \u0027X.Y\u0027, where \u0027X\u0027 and \u0027Y\u0027 are int values. \""}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_ddcdaa85","line":85,"range":{"start_line":82,"start_character":0,"end_line":85,"end_character":62},"in_reply_to":"9f436f4f_1cc3a6ef","updated":"2017-08-14 17:34:17.000000000","message":"the problem is, there is no common stuff for that in tempest, and a couple of months ago there was no plan to introduce this stuff there, so I decided to go this way.","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"}],"ironic_tempest_plugin/services/placement/placement_client.py":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"57e80d380d2a2ae80984624392990f1462eb303c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"PLACEMENT_MICROVERSION \u003d None"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class PlacementClient(rest_client.RestClient):"},{"line_number":23,"context_line":"    \"\"\"Stripped down REST client for Placement API.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    api_microversion_header_name \u003d \u0027OpenStack-API-Version\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_12eef821","line":22,"updated":"2017-03-24 14:04:04.000000000","message":"looks like this should be a part of Nova or Tempest.","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"739370ce95382b26349235ac031676aa30bfd1ea","unresolved":false,"context_lines":[{"line_number":19,"context_line":"PLACEMENT_MICROVERSION \u003d None"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class PlacementClient(rest_client.RestClient):"},{"line_number":23,"context_line":"    \"\"\"Stripped down REST client for Placement API.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    api_microversion_header_name \u003d \u0027OpenStack-API-Version\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_28d748f0","line":22,"in_reply_to":"ffe62b97_12eef821","updated":"2017-03-24 15:44:50.000000000","message":"There is no such plan yet. If it will be in some common place at some point I guess it will be either tempest or in tempest plugin of placement project when it\u0027s created, if I understand the intent correctly.","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"5a6bf5164158615644d4d18f76053601fc1e4c97","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        :param resource_provider_uuid: Unique identifier of the resource"},{"line_number":74,"context_line":"            provider in UUID format."},{"line_number":75,"context_line":"        :param resource_class_name: Unique identifier of the resource"},{"line_number":76,"context_line":"            class."},{"line_number":77,"context_line":"        :returns: Serialized resource class inventory as a dictionary."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1a1ced50_4f4425b6","line":75,"range":{"start_line":75,"start_character":43,"end_line":75,"end_character":53},"updated":"2017-03-22 13:37:47.000000000","message":"Unique name possibly?","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"739370ce95382b26349235ac031676aa30bfd1ea","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        :param resource_provider_uuid: Unique identifier of the resource"},{"line_number":74,"context_line":"            provider in UUID format."},{"line_number":75,"context_line":"        :param resource_class_name: Unique identifier of the resource"},{"line_number":76,"context_line":"            class."},{"line_number":77,"context_line":"        :returns: Serialized resource class inventory as a dictionary."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_0814849f","line":75,"range":{"start_line":75,"start_character":43,"end_line":75,"end_character":53},"in_reply_to":"1a1ced50_4f4425b6","updated":"2017-03-24 15:44:50.000000000","message":"Done","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"caf245e6337856e320e76aa332bda2899ce5a9dc","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class PlacementClient(rest_client.RestClient):"},{"line_number":33,"context_line":"    \"\"\"Stripped down REST client for Placement API.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    api_microversion_header_name \u003d \u0027OpenStack-API-Version\u0027"},{"line_number":36,"context_line":"    service_type \u003d \u0027placement\u0027"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_dc719ee2","line":33,"updated":"2017-08-09 17:49:44.000000000","message":"It feels odd that this is in ironic\u0027s tree.... is Ironic the only likely virtual driver that would connect to the placement service?","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ebe0b1b4466e53634b275ebd761dc9becae80997","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class PlacementClient(rest_client.RestClient):"},{"line_number":33,"context_line":"    \"\"\"Stripped down REST client for Placement API.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    api_microversion_header_name \u003d \u0027OpenStack-API-Version\u0027"},{"line_number":36,"context_line":"    service_type \u003d \u0027placement\u0027"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_fd950e41","line":33,"in_reply_to":"9f436f4f_dc719ee2","updated":"2017-08-14 17:34:17.000000000","message":"Yes. Neutron also connects to placement, but again, I asked, and there was no plan to introduce a tempest \"client\" for placement. I guess it will be done when placement gets into its own project.","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"da14f209c48a9af0e3e31cd78eb781689203de3d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class PlacementClient(rest_client.RestClient):"},{"line_number":33,"context_line":"    \"\"\"Stripped down REST client for Placement API.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    api_microversion_header_name \u003d \u0027OpenStack-API-Version\u0027"},{"line_number":36,"context_line":"    service_type \u003d \u0027placement\u0027"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_87855a09","line":33,"in_reply_to":"9f436f4f_fd950e41","updated":"2017-08-16 14:14:32.000000000","message":"Part of the reason is that if you\u0027ve got a token and python-requests (or the keystoneauth1 stuff), placement is straightforward to use by just making requests of URLs. Tempest and the various \u003cproject\u003eclient modules layer a bunch of classes and methods on top of that which obscures insight into the actual requests being made.\n\nAs you can see it would be pretty easy to make a generic client that provides python classes and methods for all the various http resources and methods that placement supports.\n\nAnother part of the reason is simply that nobody has gotten around to it yet. mlavalle started one long ago (which I guess is what eventually ended up in neutron) and then Roman P started: https://review.openstack.org/#/q/status:open+project:openstack/osc-placement+branch:master+topic:bp/placement-osc-plugin\n\nFor the client that you\u0027re using specifically for ironic I wouldn\u0027t bother with the microversion assertions and things like that. Instead explicitly state the min microversion that each request needs when you make the request. For example custom resource classes are a relatively late addition.","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"}],"ironic_tempest_plugin/tests/scenario/baremetal_manager.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"caf245e6337856e320e76aa332bda2899ce5a9dc","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        super(BaremetalScenarioTest, cls).setup_clients()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        cls.baremetal_client \u003d clients.Manager().baremetal_client"},{"line_number":98,"context_line":"        cls.placement_client \u003d clients.Manager().placement_client"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_bc5ffa3f","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":65},"updated":"2017-08-09 17:49:44.000000000","message":"shouldn\u0027t we only do this _if_ it is enabled?","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ebe0b1b4466e53634b275ebd761dc9becae80997","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        super(BaremetalScenarioTest, cls).setup_clients()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        cls.baremetal_client \u003d clients.Manager().baremetal_client"},{"line_number":98,"context_line":"        cls.placement_client \u003d clients.Manager().placement_client"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_dd924a57","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":65},"in_reply_to":"9f436f4f_bc5ffa3f","updated":"2017-08-14 17:34:17.000000000","message":"Can do, but this does not seem to cause any harm, this client construction does not do any calls or complex initialization.","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"}],"ironic_tempest_plugin/tests/scenario/test_baremetal_placement.py":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"57e80d380d2a2ae80984624392990f1462eb303c","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class PlacementBasicOps(baremetal_manager.BaremetalScenarioTest):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def resource_setup(cls):"},{"line_number":30,"context_line":"        super(PlacementBasicOps, cls).resource_setup()"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_f22154a1","line":27,"updated":"2017-03-24 14:04:04.000000000","message":"We should skip this if required ironic/placement API is not available","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"a728573557535b92abd4692fb414c5f0c0d89996","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class PlacementBasicOps(baremetal_manager.BaremetalScenarioTest):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def resource_setup(cls):"},{"line_number":30,"context_line":"        super(PlacementBasicOps, cls).resource_setup()"}],"source_content_type":"text/x-python","patch_set":28,"id":"dfeb2761_26fadb41","line":27,"in_reply_to":"ffe62b97_e8cba01b","updated":"2017-03-31 16:37:27.000000000","message":"I\u0027ll go with just checking for presence of nova for now.","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"739370ce95382b26349235ac031676aa30bfd1ea","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class PlacementBasicOps(baremetal_manager.BaremetalScenarioTest):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def resource_setup(cls):"},{"line_number":30,"context_line":"        super(PlacementBasicOps, cls).resource_setup()"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_e8cba01b","line":27,"in_reply_to":"ffe62b97_f22154a1","updated":"2017-03-24 15:44:50.000000000","message":"right, good catch, no reason to create the fake nodes if there is no nova (there is no placement type in tempest yet, will need to take a closer look how to check it, maybe request keystone catalog contents).","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"57e80d380d2a2ae80984624392990f1462eb303c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        placement \u003d self.placement_client"},{"line_number":112,"context_line":"        node_resource_class_mapping \u003d {}"},{"line_number":113,"context_line":"        for node in self.nodes:"},{"line_number":114,"context_line":"            resource_class \u003d \u0027resource_class_%s\u0027 % data_utils.rand_int_id()"},{"line_number":115,"context_line":"            self.baremetal_client.update_node(node[\u0027uuid\u0027],"},{"line_number":116,"context_line":"                                              resource_class\u003dresource_class)"},{"line_number":117,"context_line":"            node_resource_class_mapping[node[\u0027uuid\u0027]] \u003d resource_class"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_d2a9b0df","line":114,"updated":"2017-03-24 14:04:04.000000000","message":"what if we pick the same random value for different nodes, resource count should be N, where N - number of nodes with the same resource class?","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"739370ce95382b26349235ac031676aa30bfd1ea","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        placement \u003d self.placement_client"},{"line_number":112,"context_line":"        node_resource_class_mapping \u003d {}"},{"line_number":113,"context_line":"        for node in self.nodes:"},{"line_number":114,"context_line":"            resource_class \u003d \u0027resource_class_%s\u0027 % data_utils.rand_int_id()"},{"line_number":115,"context_line":"            self.baremetal_client.update_node(node[\u0027uuid\u0027],"},{"line_number":116,"context_line":"                                              resource_class\u003dresource_class)"},{"line_number":117,"context_line":"            node_resource_class_mapping[node[\u0027uuid\u0027]] \u003d resource_class"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_28e1889b","line":114,"in_reply_to":"ffe62b97_d2a9b0df","updated":"2017-03-24 15:44:50.000000000","message":"This is a random 31 bit integer. I can insert uuid here if it bothers you.","commit_id":"9c9f72f4cb05d27f436b09da5150a91d971fe292"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"246669344c285bd79b1e2f20a734f00f0a7f7c63","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    @classmethod"},{"line_number":62,"context_line":"    def resource_cleanup(cls):"},{"line_number":63,"context_line":"        for node in cls.nodes:"},{"line_number":64,"context_line":"            cls.baremetal_client.delete_node(node[\u0027uuid\u0027])"},{"line_number":65,"context_line":"        super(PlacementBasicOps, cls).resource_cleanup()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def wait_resource_class(self, resource_class_name):"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ff52f3f_e08e2ecf","line":64,"updated":"2017-04-13 13:20:58.000000000","message":"should we wait here and check that resource provider was deleted?","commit_id":"7707f3985549c49ad8b8887eaea04efd8e2b8fd3"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ccc21226d9b9086c550cb701b01cd3775f2b9fda","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    @classmethod"},{"line_number":62,"context_line":"    def resource_cleanup(cls):"},{"line_number":63,"context_line":"        for node in cls.nodes:"},{"line_number":64,"context_line":"            cls.baremetal_client.delete_node(node[\u0027uuid\u0027])"},{"line_number":65,"context_line":"        super(PlacementBasicOps, cls).resource_cleanup()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def wait_resource_class(self, resource_class_name):"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ff52f3f_ab3247a6","line":64,"in_reply_to":"9ff52f3f_e08e2ecf","updated":"2017-04-13 13:26:06.000000000","message":"Yeah, this might make sense, will add.","commit_id":"7707f3985549c49ad8b8887eaea04efd8e2b8fd3"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"246669344c285bd79b1e2f20a734f00f0a7f7c63","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            raise lib_exc.TimeoutException(msg)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @decorators.idempotent_id(\u002710e17627-7c19-4d5b-bac1-171a3693f47c\u0027)"},{"line_number":121,"context_line":"    @test.services(\u0027compute\u0027)"},{"line_number":122,"context_line":"    def test_baremetal_placement_different_resource_classes(self):"},{"line_number":123,"context_line":"        \"\"\"Updates all the nodes with different resource class values.\"\"\""},{"line_number":124,"context_line":"        self.useFixture("}],"source_content_type":"text/x-python","patch_set":33,"id":"9ff52f3f_8b566306","line":121,"updated":"2017-04-13 13:20:58.000000000","message":"Might be add them to smoke group, to launch on multinode and grenade.","commit_id":"7707f3985549c49ad8b8887eaea04efd8e2b8fd3"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ccc21226d9b9086c550cb701b01cd3775f2b9fda","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            raise lib_exc.TimeoutException(msg)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @decorators.idempotent_id(\u002710e17627-7c19-4d5b-bac1-171a3693f47c\u0027)"},{"line_number":121,"context_line":"    @test.services(\u0027compute\u0027)"},{"line_number":122,"context_line":"    def test_baremetal_placement_different_resource_classes(self):"},{"line_number":123,"context_line":"        \"\"\"Updates all the nodes with different resource class values.\"\"\""},{"line_number":124,"context_line":"        self.useFixture("}],"source_content_type":"text/x-python","patch_set":33,"id":"9ff52f3f_6b2c3f47","line":121,"in_reply_to":"9ff52f3f_8b566306","updated":"2017-04-13 13:26:06.000000000","message":"will see if it breaks anything :)","commit_id":"7707f3985549c49ad8b8887eaea04efd8e2b8fd3"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"77c76f478c0d70f52b15e1d7bacc6d2116aa484c","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            CONF.baremetal.number_of_fake_resource_providers)"},{"line_number":137,"context_line":"        super(PlacementSameResourceClassScenario, cls).resource_setup()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":140,"context_line":"    @decorators.idempotent_id(\u0027b40fc38a-4b84-4faf-bd75-f233251f829e\u0027)"},{"line_number":141,"context_line":"    @test.services(\u0027compute\u0027)"},{"line_number":142,"context_line":"    def test_baremetal_placement_same_resource_class(self):"}],"source_content_type":"text/x-python","patch_set":36,"id":"7ffa3b31_c7f0a6cc","line":139,"updated":"2017-04-18 10:07:08.000000000","message":"would be nice to fix deprecation warnings: http://logs.openstack.org/28/443628/36/check/gate-tempest-dsvm-ironic-ipa-wholedisk-agent_ipmitool-tinyipa-multinode-ubuntu-xenial/39019e9/console.html#_2017-04-18_08_13_07_276977","commit_id":"677d901f668e87a2978b0790c062f6ba8a45f7de"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"cd380065321183a27301926f6afe19aff17661a2","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            CONF.baremetal.number_of_fake_resource_providers)"},{"line_number":137,"context_line":"        super(PlacementSameResourceClassScenario, cls).resource_setup()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":140,"context_line":"    @decorators.idempotent_id(\u0027b40fc38a-4b84-4faf-bd75-f233251f829e\u0027)"},{"line_number":141,"context_line":"    @test.services(\u0027compute\u0027)"},{"line_number":142,"context_line":"    def test_baremetal_placement_same_resource_class(self):"}],"source_content_type":"text/x-python","patch_set":36,"id":"7ffa3b31_6792f24d","line":139,"in_reply_to":"7ffa3b31_c7f0a6cc","updated":"2017-04-18 10:11:10.000000000","message":"Good catch Vasyl, will do.","commit_id":"677d901f668e87a2978b0790c062f6ba8a45f7de"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"1d6dfbdb77aec43b05bcee338a0c13b234b7c1a3","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            cls.set_node_provision_state_and_wait(node[\u0027uuid\u0027], \u0027provide\u0027)"},{"line_number":85,"context_line":"            cls.node_mapping[node[\u0027uuid\u0027]] \u003d rc"},{"line_number":86,"context_line":"        placement_client.set_placement_api_microversion(\u00271.4\u0027)"},{"line_number":87,"context_line":"        cls.wait_for_resource_providers()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @classmethod"},{"line_number":90,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":37,"id":"7ffa3b31_21c60f9c","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":41},"updated":"2017-04-18 14:14:49.000000000","message":"Hmm, for some reason, this is not enough -- http://logs.openstack.org/28/443628/37/check/gate-tempest-dsvm-ironic-ipa-wholedisk-agent_ipmitool-tinyipa-multinode-ubuntu-xenial/e488195/console.html#_2017-04-18_13_09_53_067543, meaning that the resource provider was created, but node\u0027s resource class was not picked up for some reason?\n\nI guess I\u0027ll switch back to waiting for inventories.","commit_id":"0fdf81edb4557ab3c38dbd52ed40b529a5d99ed7"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8e6feaf1e158cfef51d6cbca8e77c4e060011ae2","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            cls.set_node_provision_state_and_wait(node[\u0027uuid\u0027], \u0027provide\u0027)"},{"line_number":85,"context_line":"            cls.node_mapping[node[\u0027uuid\u0027]] \u003d rc"},{"line_number":86,"context_line":"        placement_client.set_placement_api_microversion(\u00271.4\u0027)"},{"line_number":87,"context_line":"        cls.wait_for_resource_providers()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @classmethod"},{"line_number":90,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":37,"id":"7ffa3b31_da3c8de2","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":41},"in_reply_to":"7ffa3b31_21c60f9c","updated":"2017-04-21 10:41:40.000000000","message":"The reason seems to be the race between setting the power/provision states and the periodic resource update in nova.","commit_id":"0fdf81edb4557ab3c38dbd52ed40b529a5d99ed7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"caf245e6337856e320e76aa332bda2899ce5a9dc","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class PlacementBaseScenarioTest(baremetal_manager.BaremetalScenarioTest):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    min_microversion \u003d \u00271.21\u0027"},{"line_number":31,"context_line":"    placement_min_microversion \u003d None"},{"line_number":32,"context_line":"    placement_max_microversion \u003d api_version_utils.LATEST_MICROVERSION"},{"line_number":33,"context_line":"    resource_classes \u003d None"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_7c2e32a6","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":20},"updated":"2017-08-09 17:49:44.000000000","message":"nit: We likely ought to prefix this with \"ironic\" or \"baremetal\"given the proximity to the other microversion.","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ebe0b1b4466e53634b275ebd761dc9becae80997","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class PlacementBaseScenarioTest(baremetal_manager.BaremetalScenarioTest):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    min_microversion \u003d \u00271.21\u0027"},{"line_number":31,"context_line":"    placement_min_microversion \u003d None"},{"line_number":32,"context_line":"    placement_max_microversion \u003d api_version_utils.LATEST_MICROVERSION"},{"line_number":33,"context_line":"    resource_classes \u003d None"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f436f4f_5d909a4a","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":20},"in_reply_to":"9f436f4f_7c2e32a6","updated":"2017-08-14 17:34:17.000000000","message":"This is how it\u0027s defined in the base class logic :( do you want me to change this?","commit_id":"81d849a47ec1a4b3bb350b47816e82a303131e08"}]}
