)]}'
{"ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"266fb38103a665eb17ded34e21c8b81ca7087539","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        if cls.rescue_interface:"},{"line_number":392,"context_line":"            boot_kwargs[\u0027rescue_interface\u0027] \u003d cls.rescue_interface"},{"line_number":393,"context_line":"        if cls.call_boot_node:"},{"line_number":394,"context_line":"            cls.node \u003d cls.boot_node(cls.driver, cls.image_ref, **boot_kwargs)"},{"line_number":395,"context_line":"            if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":396,"context_line":"                cls.node_ip \u003d cls.add_floatingip_to_node(cls.node[\u0027uuid\u0027])"},{"line_number":397,"context_line":"            elif CONF.validation.connect_method \u003d\u003d \u0027fixed\u0027:"},{"line_number":398,"context_line":"                cls.node_ip \u003d cls.get_server_ip(cls.node[\u0027uuid\u0027])"},{"line_number":399,"context_line":"            else:"},{"line_number":400,"context_line":"                m \u003d (\u0027Configuration option \"[validation]/connect_method\" \u0027"},{"line_number":401,"context_line":"                     \u0027must be set.\u0027)"},{"line_number":402,"context_line":"                raise lib_exc.InvalidConfiguration(m)"},{"line_number":403,"context_line":"        else:"},{"line_number":404,"context_line":"            # just get an available node"},{"line_number":405,"context_line":"            cls.node \u003d cls.get_and_reserve_node()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_d8bdadb1","line":402,"range":{"start_line":394,"start_character":0,"end_line":402,"end_character":53},"updated":"2018-06-11 13:36:40.000000000","message":"let\u0027s make it a method and call it explicitly?","commit_id":"f73dc17aac42cfad6ea27a55adb5d95e3f53567e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"266fb38103a665eb17ded34e21c8b81ca7087539","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                     \u0027must be set.\u0027)"},{"line_number":402,"context_line":"                raise lib_exc.InvalidConfiguration(m)"},{"line_number":403,"context_line":"        else:"},{"line_number":404,"context_line":"            # just get an available node"},{"line_number":405,"context_line":"            cls.node \u003d cls.get_and_reserve_node()"},{"line_number":406,"context_line":"            cls.update_node_driver(cls.node[\u0027uuid\u0027], cls.driver, **boot_kwargs)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    @classmethod"},{"line_number":409,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_78dc9917","line":406,"range":{"start_line":404,"start_character":0,"end_line":406,"end_character":79},"updated":"2018-06-11 13:36:40.000000000","message":"This can be done in any case, I think","commit_id":"f73dc17aac42cfad6ea27a55adb5d95e3f53567e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e10ecc0fe7a40dad95052ee644b5f5bf8132a4ec","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        :param image_ref: Reference to user image to boot node with."},{"line_number":232,"context_line":"        :param image_checksum: md5sum of image specified in image_ref."},{"line_number":233,"context_line":"                               Needed only when direct HTTP link is provided."},{"line_number":234,"context_line":"        :returns: Ironic node."},{"line_number":235,"context_line":"        \"\"\""},{"line_number":236,"context_line":"        network, subnet, router \u003d cls.create_networks()"},{"line_number":237,"context_line":"        n_port \u003d cls.create_neutron_port(network_id\u003dnetwork[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_015480fd","line":234,"updated":"2018-06-18 10:44:41.000000000","message":"no longer","commit_id":"f6ab34f60e6b53c7da7234df3f420ca349aacea7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e10ecc0fe7a40dad95052ee644b5f5bf8132a4ec","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                \u0027Partitioned images are not supported with multitenancy.\u0027)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    @classmethod"},{"line_number":419,"context_line":"    def set_node_to_active(cls, image_ref, image_checksum\u003dNone):"},{"line_number":420,"context_line":"        cls.boot_node(image_ref, image_checksum)"},{"line_number":421,"context_line":"        if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":422,"context_line":"            cls.node_ip \u003d cls.add_floatingip_to_node(cls.node[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_21597c34","line":419,"updated":"2018-06-18 10:44:41.000000000","message":"why not default image_ref to self.image_ref and image_checksum to self.image_checksum? that would save some redundant typing","commit_id":"f6ab34f60e6b53c7da7234df3f420ca349aacea7"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0d5d941fc2b7c56babe3e8df62b44770860da357","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                cls.ports_client.delete_port(vif)"},{"line_number":469,"context_line":"            except lib_exc.NotFound:"},{"line_number":470,"context_line":"                pass"},{"line_number":471,"context_line":"        cls.terminate_node(cls.node[\u0027uuid\u0027])"},{"line_number":472,"context_line":"        base.reset_baremetal_api_microversion()"},{"line_number":473,"context_line":"        super(BaremetalStandaloneManager, cls).resource_cleanup()"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_bf59d7fd","line":471,"updated":"2018-06-21 05:57:34.000000000","message":"Isn\u0027t it necessary to unreserve a node (remove instance_uuid set at reserving) when delete_node is False?","commit_id":"c69e6a4f07edcab94a8850b10cfafdcdf30c6ab0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5f043cfcf57af14926b7cd6fe9c691884b6748e1","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                cls.ports_client.delete_port(vif)"},{"line_number":469,"context_line":"            except lib_exc.NotFound:"},{"line_number":470,"context_line":"                pass"},{"line_number":471,"context_line":"        cls.terminate_node(cls.node[\u0027uuid\u0027])"},{"line_number":472,"context_line":"        base.reset_baremetal_api_microversion()"},{"line_number":473,"context_line":"        super(BaremetalStandaloneManager, cls).resource_cleanup()"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_67f9364c","line":471,"in_reply_to":"5f7c97a3_6b292a9a","updated":"2018-06-25 13:55:30.000000000","message":"We\u0027ve kind of encountered issues along that line before, and I think we will just need to look address them as they arise. :(","commit_id":"c69e6a4f07edcab94a8850b10cfafdcdf30c6ab0"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"c77c148110b670c0b7ae347a793c127f0a6ae7f4","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                cls.ports_client.delete_port(vif)"},{"line_number":469,"context_line":"            except lib_exc.NotFound:"},{"line_number":470,"context_line":"                pass"},{"line_number":471,"context_line":"        cls.terminate_node(cls.node[\u0027uuid\u0027])"},{"line_number":472,"context_line":"        base.reset_baremetal_api_microversion()"},{"line_number":473,"context_line":"        super(BaremetalStandaloneManager, cls).resource_cleanup()"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_6b292a9a","line":471,"in_reply_to":"5f7c97a3_9a3bc999","updated":"2018-06-22 03:07:39.000000000","message":"Because of this change, instance_uuid remains in a node. When a node gets \u0027available\u0027 by tearing down after once deployed, the instance_uuid is removed during tearing down. Because this change prepare an available node without deployment, there is no change to remove instance_uuid. This may cause a node shortage in the future when tests using only available nodes are added.","commit_id":"c69e6a4f07edcab94a8850b10cfafdcdf30c6ab0"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e63217715e06e67887058a90fad1f5a33dabec34","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                cls.ports_client.delete_port(vif)"},{"line_number":469,"context_line":"            except lib_exc.NotFound:"},{"line_number":470,"context_line":"                pass"},{"line_number":471,"context_line":"        cls.terminate_node(cls.node[\u0027uuid\u0027])"},{"line_number":472,"context_line":"        base.reset_baremetal_api_microversion()"},{"line_number":473,"context_line":"        super(BaremetalStandaloneManager, cls).resource_cleanup()"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_9a3bc999","line":471,"in_reply_to":"5f7c97a3_bf59d7fd","updated":"2018-06-21 06:54:42.000000000","message":"This is not part of this change, but from the previous one that was already merged. Currently, the way the tests work, i don\u0027t think they even consider if the node has an uuuid assigned or not, they just take an available node and execute cleanup operations on then. I think that for another kind of testing you\u0027re right, and we could remove the instance_uuid. But i should do it in another patch, as this was not part of the concept of this change.","commit_id":"c69e6a4f07edcab94a8850b10cfafdcdf30c6ab0"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0d5d941fc2b7c56babe3e8df62b44770860da357","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        base.reset_baremetal_api_microversion()"},{"line_number":473,"context_line":"        super(BaremetalStandaloneManager, cls).resource_cleanup()"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def boot_and_verify_node(cls, image_ref\u003dNone, image_checksum\u003dNone,"},{"line_number":476,"context_line":"                             should_succeed\u003dTrue):"},{"line_number":477,"context_line":"        cls.set_node_to_active(image_ref, image_checksum)"},{"line_number":478,"context_line":"        cls.assertTrue(cls.ping_ip_address(cls.node_ip,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_f4f3f671","line":475,"updated":"2018-06-21 05:57:34.000000000","message":"Is this a class method? If so, @classmethod is missing. If not, it would be better to replace \u0027cls\u0027 with \u0027self\u0027.","commit_id":"c69e6a4f07edcab94a8850b10cfafdcdf30c6ab0"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e63217715e06e67887058a90fad1f5a33dabec34","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        base.reset_baremetal_api_microversion()"},{"line_number":473,"context_line":"        super(BaremetalStandaloneManager, cls).resource_cleanup()"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def boot_and_verify_node(cls, image_ref\u003dNone, image_checksum\u003dNone,"},{"line_number":476,"context_line":"                             should_succeed\u003dTrue):"},{"line_number":477,"context_line":"        cls.set_node_to_active(image_ref, image_checksum)"},{"line_number":478,"context_line":"        cls.assertTrue(cls.ping_ip_address(cls.node_ip,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_fa63ddaf","line":475,"in_reply_to":"5f7c97a3_f4f3f671","updated":"2018-06-21 06:54:42.000000000","message":"I needed to remove the class_method flag from here. Because it calls ping_ip_address, and it was expecting to have an isntantiated class there, see previous test failures.","commit_id":"c69e6a4f07edcab94a8850b10cfafdcdf30c6ab0"}],"ironic_tempest_plugin/tests/scenario/ironic_standalone/test_basic_ops.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e10ecc0fe7a40dad95052ee644b5f5bf8132a4ec","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_ip_access_to_server(self):"},{"line_number":35,"context_line":"        self.set_node_to_active(self.image_ref)"},{"line_number":36,"context_line":"        self.assertTrue(self.ping_ip_address(self.node_ip,"},{"line_number":37,"context_line":"                                             should_succeed\u003dTrue))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class BaremetalAgentIpmitoolWholediskHttpLink("}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_c13d28bd","line":37,"updated":"2018-06-18 10:44:41.000000000","message":"we could make it even shorter:\n\n self.boot_and_verify_node()\n\nwhere\n\n def boot_and_verify_node(self, image_ref\u003dNone, should_succeed\u003dTrue)\n\ndefaults to taking image_ref from self.image_ref","commit_id":"f6ab34f60e6b53c7da7234df3f420ca349aacea7"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"2c9c610cb9df273fc7888f99e12ea7a3f38460b8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_ip_access_to_server(self):"},{"line_number":35,"context_line":"        self.set_node_to_active(self.image_ref)"},{"line_number":36,"context_line":"        self.assertTrue(self.ping_ip_address(self.node_ip,"},{"line_number":37,"context_line":"                                             should_succeed\u003dTrue))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class BaremetalAgentIpmitoolWholediskHttpLink("}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_e182a4a5","line":37,"in_reply_to":"5f7c97a3_c13d28bd","updated":"2018-06-18 11:21:33.000000000","message":"Do you want to make it part of the BaremetalStandaloneScenarioTest class? should_succeed should be called when should_succeed\u003dTrue? I find strange to include those asserts on the class directly, and not on the individual tests","commit_id":"f6ab34f60e6b53c7da7234df3f420ca349aacea7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7d07cb95d8e49205577037e67257bf1a53aa5a0b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_ip_access_to_server(self):"},{"line_number":35,"context_line":"        self.set_node_to_active(self.image_ref)"},{"line_number":36,"context_line":"        self.assertTrue(self.ping_ip_address(self.node_ip,"},{"line_number":37,"context_line":"                                             should_succeed\u003dTrue))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class BaremetalAgentIpmitoolWholediskHttpLink("}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_86de61d8","line":37,"in_reply_to":"5f7c97a3_e182a4a5","updated":"2018-06-18 13:53:09.000000000","message":"I\u0027m merely suggesting to avoid copy-pasting the same thing over and over again. So I\u0027m proposing to convert these two calls to one simple call.","commit_id":"f6ab34f60e6b53c7da7234df3f420ca349aacea7"}]}
