)]}'
{"ironic/drivers/modules/ilo/inspect.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"93215a7ae76d73ac0cbf799581bcdfad26d930e4","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                             by baremetal with inspection."},{"line_number":155,"context_line":"    :returns: The capability string after adding/updating the"},{"line_number":156,"context_line":"              node_capabilities with new_capabilities"},{"line_number":157,"context_line":"    :raises: HardwareInspectionFailure, if node_capabilities is malformed."},{"line_number":158,"context_line":"    \"\"\""},{"line_number":159,"context_line":"    cap_dict \u003d {}"},{"line_number":160,"context_line":"    node_capabilities \u003d node.properties.get(\u0027capabilities\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_dafd0db3","line":157,"updated":"2015-03-18 12:49:58.000000000","message":"It raises both InvalidParameterValue and HardwareInspectionFailure.","commit_id":"d7f4fd35a14132056f593497154d669e83144970"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"c03ede23e3905591c3ff895cd069771a9e47387c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                             by baremetal with inspection."},{"line_number":155,"context_line":"    :returns: The capability string after adding/updating the"},{"line_number":156,"context_line":"              node_capabilities with new_capabilities"},{"line_number":157,"context_line":"    :raises: HardwareInspectionFailure, if node_capabilities is malformed."},{"line_number":158,"context_line":"    \"\"\""},{"line_number":159,"context_line":"    cap_dict \u003d {}"},{"line_number":160,"context_line":"    node_capabilities \u003d node.properties.get(\u0027capabilities\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_a8bd6e04","line":157,"in_reply_to":"9a80dd14_dafd0db3","updated":"2015-03-18 14:49:32.000000000","message":"ah :( will add","commit_id":"d7f4fd35a14132056f593497154d669e83144970"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"daf6b2244ce39ee37822f87cb4970c75afa449f2","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        cap_dict.update(new_capabilities)"},{"line_number":179,"context_line":"    else:"},{"line_number":180,"context_line":"        msg \u003d (_(\"The expected format of capabilities from inspection \""},{"line_number":181,"context_line":"                 \"is dictionary while node %(node)s returned \""},{"line_number":182,"context_line":"                 \"%(capabilities)s.\"), {\u0027node\u0027: node.uuid,"},{"line_number":183,"context_line":"                 \u0027capabilities\u0027: new_capabilities})"},{"line_number":184,"context_line":"        raise exception.HardwareInspectionFailure(error\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_ddbc1dde","line":181,"updated":"2015-03-18 16:04:43.000000000","message":"\"%\" instead of \",\"","commit_id":"4b1de61f32b062674c8f46b6fa6ebd2d79d11cf8"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ea9e0ae274ce1a5127e6717dfe5cb58bbc8719b4","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        cap_dict.update(new_capabilities)"},{"line_number":179,"context_line":"    else:"},{"line_number":180,"context_line":"        msg \u003d (_(\"The expected format of capabilities from inspection \""},{"line_number":181,"context_line":"                 \"is dictionary while node %(node)s returned \""},{"line_number":182,"context_line":"                 \"%(capabilities)s.\"), {\u0027node\u0027: node.uuid,"},{"line_number":183,"context_line":"                 \u0027capabilities\u0027: new_capabilities})"},{"line_number":184,"context_line":"        raise exception.HardwareInspectionFailure(error\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_c601a905","line":181,"in_reply_to":"9a80dd14_d206c484","updated":"2015-03-18 18:10:46.000000000","message":"I don\u0027t think you should use \u0027,\u0027 here is what he is saying.  I think he is saying have to use \u0027%\u0027.\n\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html#adding-variables-to-translated-messages","commit_id":"4b1de61f32b062674c8f46b6fa6ebd2d79d11cf8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"47dd933557bd085c53707b763b67a3a248a98e93","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        cap_dict.update(new_capabilities)"},{"line_number":179,"context_line":"    else:"},{"line_number":180,"context_line":"        msg \u003d (_(\"The expected format of capabilities from inspection \""},{"line_number":181,"context_line":"                 \"is dictionary while node %(node)s returned \""},{"line_number":182,"context_line":"                 \"%(capabilities)s.\"), {\u0027node\u0027: node.uuid,"},{"line_number":183,"context_line":"                 \u0027capabilities\u0027: new_capabilities})"},{"line_number":184,"context_line":"        raise exception.HardwareInspectionFailure(error\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_7d1fb1b7","line":181,"in_reply_to":"9a80dd14_ddbc1dde","updated":"2015-03-18 16:06:18.000000000","message":"on l182 sorry gerrit bug","commit_id":"4b1de61f32b062674c8f46b6fa6ebd2d79d11cf8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"e6025b125f258620325dd09b57da1b3c11ee5b80","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        cap_dict.update(new_capabilities)"},{"line_number":179,"context_line":"    else:"},{"line_number":180,"context_line":"        msg \u003d (_(\"The expected format of capabilities from inspection \""},{"line_number":181,"context_line":"                 \"is dictionary while node %(node)s returned \""},{"line_number":182,"context_line":"                 \"%(capabilities)s.\"), {\u0027node\u0027: node.uuid,"},{"line_number":183,"context_line":"                 \u0027capabilities\u0027: new_capabilities})"},{"line_number":184,"context_line":"        raise exception.HardwareInspectionFailure(error\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_d206c484","line":181,"in_reply_to":"9a80dd14_ddbc1dde","updated":"2015-03-18 18:03:58.000000000","message":"sorry... didnt get","commit_id":"4b1de61f32b062674c8f46b6fa6ebd2d79d11cf8"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"83a31354e7b21db5942afb30a4bb032d2430bbe5","unresolved":false,"context_lines":[{"line_number":156,"context_line":"              node_capabilities with new_capabilities"},{"line_number":157,"context_line":"    :raises: InvalidParameterValue, if node_capabilities is malformed."},{"line_number":158,"context_line":"    :raises: HardwareInspectionFailure, if inspected capabilities"},{"line_number":159,"context_line":"             are not in dictionary format or is None."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    \"\"\""},{"line_number":162,"context_line":"    cap_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_8f224bb7","line":159,"updated":"2015-03-19 08:32:04.000000000","message":"nit - just \u0027not a dictionary\u0027 would be enough - you could check just isinstance(new_capabilities, dict) on L177","commit_id":"6df8b0365ab1dfcc54c92709044328d41e78dce9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"611e7ca32f7e1d9b6a82c92d65590e4955edbb51","unresolved":false,"context_lines":[{"line_number":156,"context_line":"              node_capabilities with new_capabilities"},{"line_number":157,"context_line":"    :raises: InvalidParameterValue, if node_capabilities is malformed."},{"line_number":158,"context_line":"    :raises: HardwareInspectionFailure, if inspected capabilities"},{"line_number":159,"context_line":"             are not in dictionary format or is None."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    \"\"\""},{"line_number":162,"context_line":"    cap_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_bda3c541","line":159,"in_reply_to":"9a80dd14_8f224bb7","updated":"2015-03-19 09:17:43.000000000","message":"hmmm ok","commit_id":"6df8b0365ab1dfcc54c92709044328d41e78dce9"}],"ironic/tests/drivers/ilo/test_inspect.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"93215a7ae76d73ac0cbf799581bcdfad26d930e4","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        node_capabilities \u003d {\u0027capabilities\u0027: \u0027foo:bar\u0027}"},{"line_number":505,"context_line":"        self.node.properties.update(node_capabilities)"},{"line_number":506,"context_line":"        new_capabilities \u003d {\u0027BootMode\u0027: \u0027uefi\u0027}"},{"line_number":507,"context_line":"        expected_capabilities \u003d \u0027BootMode:uefi,foo:bar\u0027"},{"line_number":508,"context_line":"        cap_returned \u003d ilo_inspect._update_capabilities(self.node,"},{"line_number":509,"context_line":"                                                        new_capabilities)"},{"line_number":510,"context_line":"        set1 \u003d set(expected_capabilities.split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_fa5f3173","line":507,"updated":"2015-03-18 12:49:58.000000000","message":"I guess what Ruby meant here is to add to new_capabilities something like this:\n\n new_capabilities \u003d {\u0027BootMode\u0027: \u0027uefi\u0027, \u0027foo\u0027: \u0027buzz\u0027}\n\nand then expected capabilities are \u0027BootMode:uefi,foo:buzz\u0027","commit_id":"d7f4fd35a14132056f593497154d669e83144970"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b9754d45d6cd841455efd1cd274c6f678956c7ea","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        node_capabilities \u003d {\u0027capabilities\u0027: \u0027foo:bar\u0027}"},{"line_number":505,"context_line":"        self.node.properties.update(node_capabilities)"},{"line_number":506,"context_line":"        new_capabilities \u003d {\u0027BootMode\u0027: \u0027uefi\u0027}"},{"line_number":507,"context_line":"        expected_capabilities \u003d \u0027BootMode:uefi,foo:bar\u0027"},{"line_number":508,"context_line":"        cap_returned \u003d ilo_inspect._update_capabilities(self.node,"},{"line_number":509,"context_line":"                                                        new_capabilities)"},{"line_number":510,"context_line":"        set1 \u003d set(expected_capabilities.split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_be8a0462","line":507,"in_reply_to":"9a80dd14_4312150a","updated":"2015-03-18 15:25:39.000000000","message":"I may be wrong, but in test__update_capabilities_multiple_keys node.properties.capabilities are empty initially. Whereas the other possible option is to have something in node\u0027s capabilities initially (on L505 it is foo:bar), and then hardware reports other thing (foo:buzz) so that it should be updated (if it is possible, I may be wrong as I said, I did not dig much into introspection patch).","commit_id":"d7f4fd35a14132056f593497154d669e83144970"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1dac4ac8a9aabd9e02dc4f4f10cc69174786bf88","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        node_capabilities \u003d {\u0027capabilities\u0027: \u0027foo:bar\u0027}"},{"line_number":505,"context_line":"        self.node.properties.update(node_capabilities)"},{"line_number":506,"context_line":"        new_capabilities \u003d {\u0027BootMode\u0027: \u0027uefi\u0027}"},{"line_number":507,"context_line":"        expected_capabilities \u003d \u0027BootMode:uefi,foo:bar\u0027"},{"line_number":508,"context_line":"        cap_returned \u003d ilo_inspect._update_capabilities(self.node,"},{"line_number":509,"context_line":"                                                        new_capabilities)"},{"line_number":510,"context_line":"        set1 \u003d set(expected_capabilities.split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_03d65d27","line":507,"in_reply_to":"9a80dd14_68dc5675","updated":"2015-03-18 15:06:31.000000000","message":"You\u0027re both right. I wanted tests that tested both scenarios :-)","commit_id":"d7f4fd35a14132056f593497154d669e83144970"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"c03ede23e3905591c3ff895cd069771a9e47387c","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        node_capabilities \u003d {\u0027capabilities\u0027: \u0027foo:bar\u0027}"},{"line_number":505,"context_line":"        self.node.properties.update(node_capabilities)"},{"line_number":506,"context_line":"        new_capabilities \u003d {\u0027BootMode\u0027: \u0027uefi\u0027}"},{"line_number":507,"context_line":"        expected_capabilities \u003d \u0027BootMode:uefi,foo:bar\u0027"},{"line_number":508,"context_line":"        cap_returned \u003d ilo_inspect._update_capabilities(self.node,"},{"line_number":509,"context_line":"                                                        new_capabilities)"},{"line_number":510,"context_line":"        set1 \u003d set(expected_capabilities.split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_68dc5675","line":507,"in_reply_to":"9a80dd14_fa5f3173","updated":"2015-03-18 14:49:32.000000000","message":"VDrok, as i understood what the test case should be is that node already has some capabilities set, and the inspection also gets some capabilities then inspection should append the capabilities to existing capabilities.","commit_id":"d7f4fd35a14132056f593497154d669e83144970"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"88eb41a97cd7dbaec4c3998a4400dd64ec3209d0","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        node_capabilities \u003d {\u0027capabilities\u0027: \u0027foo:bar\u0027}"},{"line_number":505,"context_line":"        self.node.properties.update(node_capabilities)"},{"line_number":506,"context_line":"        new_capabilities \u003d {\u0027BootMode\u0027: \u0027uefi\u0027}"},{"line_number":507,"context_line":"        expected_capabilities \u003d \u0027BootMode:uefi,foo:bar\u0027"},{"line_number":508,"context_line":"        cap_returned \u003d ilo_inspect._update_capabilities(self.node,"},{"line_number":509,"context_line":"                                                        new_capabilities)"},{"line_number":510,"context_line":"        set1 \u003d set(expected_capabilities.split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_4312150a","line":507,"in_reply_to":"9a80dd14_fa5f3173","updated":"2015-03-18 15:06:14.000000000","message":"the scenario explained by you is already existing as test__update_capabilities_multiple_keys.","commit_id":"d7f4fd35a14132056f593497154d669e83144970"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bc7dd8f837eb946aa4dbd9d46e88d1427d43b1b2","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        set2 \u003d set(cap_returned.split(\u0027,\u0027))"},{"line_number":512,"context_line":"        self.assertEqual(set1, set2)"},{"line_number":513,"context_line":"        self.assertIsInstance(cap_returned, str)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"    def test__get_macs_for_desired_ports(self):"},{"line_number":516,"context_line":"        driver_info_mock \u003d {\u0027inspect_ports\u0027: \u00271,2\u0027}"},{"line_number":517,"context_line":"        self.node.driver_info \u003d driver_info_mock"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_1ac94e5a","line":514,"updated":"2015-03-18 19:47:11.000000000","message":"But what about a test where node capability eg foo:bar, changed to eg: foo:reallybar? (I thought Vladyslav already commented about that.)","commit_id":"a10b6a5ae808e96a881f0c3481c67e3060539e35"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"4442e6cab093a9048d412b518a1cb203704df874","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        set2 \u003d set(cap_returned.split(\u0027,\u0027))"},{"line_number":512,"context_line":"        self.assertEqual(set1, set2)"},{"line_number":513,"context_line":"        self.assertIsInstance(cap_returned, str)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"    def test__get_macs_for_desired_ports(self):"},{"line_number":516,"context_line":"        driver_info_mock \u003d {\u0027inspect_ports\u0027: \u00271,2\u0027}"},{"line_number":517,"context_line":"        self.node.driver_info \u003d driver_info_mock"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_91135c00","line":514,"in_reply_to":"9a80dd14_1ac94e5a","updated":"2015-03-19 04:54:17.000000000","message":"oh u meant that","commit_id":"a10b6a5ae808e96a881f0c3481c67e3060539e35"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"477ba7dd67cd4444bad0db066a7af1c54d9b6c8c","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                          ilo_inspect._update_capabilities,"},{"line_number":501,"context_line":"                          self.node, capabilities)"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    def test__update_capabilities_existing_capabilities(self):"},{"line_number":504,"context_line":"        node_capabilities \u003d {\u0027capabilities\u0027: \u0027foo:bar\u0027}"},{"line_number":505,"context_line":"        self.node.properties.update(node_capabilities)"},{"line_number":506,"context_line":"        new_capabilities \u003d {\u0027BootMode\u0027: \u0027uefi\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_35f4495a","line":503,"updated":"2015-03-19 10:50:29.000000000","message":"Strange things happen - the second test that was in PS 4 disappeared :)","commit_id":"5359f05123b35d7b4fe654a08d21dd913ec112d3"}]}
