)]}'
{"ironic_python_agent/hardware.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"afabaf4e6c93df4282c0601af53359872152b26b","unresolved":false,"context_lines":[{"line_number":766,"context_line":"                            if \u0027children\u0027 in core_child:"},{"line_number":767,"context_line":"                                for memory_child in core_child[\u0027children\u0027]:"},{"line_number":768,"context_line":"                                    if memory_child.get(\u0027size\u0027):"},{"line_number":769,"context_line":"                                        value \u003d \"%(size)s %(units)s\" % memory_child"},{"line_number":770,"context_line":"                                        physical +\u003d int("},{"line_number":771,"context_line":"                                            UNIT_CONVERTER(value).to(\u0027MB\u0027).magnitude)"},{"line_number":772,"context_line":"            if not physical:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_03a9558e","line":769,"updated":"2019-03-27 12:04:17.000000000","message":"please respect column limit of 80 characters","commit_id":"8206152553916a20afaa60682ddc8f78707cfa65"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"afabaf4e6c93df4282c0601af53359872152b26b","unresolved":false,"context_lines":[{"line_number":768,"context_line":"                                    if memory_child.get(\u0027size\u0027):"},{"line_number":769,"context_line":"                                        value \u003d \"%(size)s %(units)s\" % memory_child"},{"line_number":770,"context_line":"                                        physical +\u003d int("},{"line_number":771,"context_line":"                                            UNIT_CONVERTER(value).to(\u0027MB\u0027).magnitude)"},{"line_number":772,"context_line":"            if not physical:"},{"line_number":773,"context_line":"                LOG.warning(\u0027Did not find any physical RAM\u0027)"},{"line_number":774,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_c396ed4c","line":771,"updated":"2019-03-27 12:04:17.000000000","message":"ditto","commit_id":"8206152553916a20afaa60682ddc8f78707cfa65"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"b1afc3ff5ca70a99826871f904760dbd8fb35ec4","unresolved":false,"context_lines":[{"line_number":761,"context_line":"                if sys_child[\u0027id\u0027] \u003d\u003d \u0027core\u0027:"},{"line_number":762,"context_line":"                    for core_child in sys_child[\u0027children\u0027]:"},{"line_number":763,"context_line":"                        if re.match("},{"line_number":764,"context_line":"                            r\u0027(^memory:[0-9])|(^memory$)\u0027,"},{"line_number":765,"context_line":"                            core_child[\u0027id\u0027]):"},{"line_number":766,"context_line":"                            if \u0027children\u0027 in core_child:"},{"line_number":767,"context_line":"                                for memory_child in core_child[\u0027children\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5fc1f717_55d4c51f","line":764,"updated":"2019-03-29 11:02:47.000000000","message":"this looks like a break change, it doesn\u0027t cover the case where \"size\" is on the same level as \"memory\"\ne.g.\n[...]\n    \"id\" : \"memory\",\n    \"class\" : \"memory\",\n    \"claimed\" : true,\n    \"description\" : \"System memory\",\n    \"physid\" : \"0\",\n    \"units\" : \"bytes\",\n    \"size\" : 34359738368\n[...]\n\nlshw -version\nB.02.18","commit_id":"9e0f933ae708a4f71fefb223bc64cbf5c67af2f9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a72d7cef808702bac677d74cf46b5eaf497c0848","unresolved":false,"context_lines":[{"line_number":760,"context_line":"            for sys_child in sys_dict[\u0027children\u0027]:"},{"line_number":761,"context_line":"                if sys_child[\u0027id\u0027] \u003d\u003d \u0027core\u0027:"},{"line_number":762,"context_line":"                    for core_child in sys_child[\u0027children\u0027]:"},{"line_number":763,"context_line":"                        if re.match("},{"line_number":764,"context_line":"                            r\u0027(^memory:[0-9])|(^memory$)\u0027,"},{"line_number":765,"context_line":"                            core_child[\u0027id\u0027]):"},{"line_number":766,"context_line":"                            if core_child.get(\u0027size\u0027):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_ae76d80b","line":763,"updated":"2019-04-01 14:41:37.000000000","message":"I think we\u0027re going to need an explicit unit test to validate behavior.","commit_id":"fe96f331b1f6781396b00ca0ab80015899b5e5a4"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"dae883b732b5da6d096444bd64c30318c04fc3ed","unresolved":false,"context_lines":[{"line_number":763,"context_line":"                        if re.match("},{"line_number":764,"context_line":"                            r\u0027(^memory:[0-9])|(^memory$)\u0027,"},{"line_number":765,"context_line":"                            core_child[\u0027id\u0027]):"},{"line_number":766,"context_line":"                            if core_child.get(\u0027size\u0027):"},{"line_number":767,"context_line":"                                value \u003d (\"%(size)s %(units)s\" %"},{"line_number":768,"context_line":"                                         core_child)"},{"line_number":769,"context_line":"                                physical +\u003d int(UNIT_CONVERTER("}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_f04928b7","line":766,"updated":"2019-04-01 09:18:12.000000000","message":"Just a thought, should we make the 2 ifs exclusive ?\nWhat I mean is considering the size only under \u0027\u0027memory\u0027\u0027 or \u0027\u0027memory:[0-9]\u0027\u0027 and not both to avoid wrong values coming from the sum of memory total and single banks.\nI doubt it will ever happen, since the behavior of lshw seems to produce one scheme or the other, but never say never :)","commit_id":"fe96f331b1f6781396b00ca0ab80015899b5e5a4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"045686d8f4efab9447b15c362b5279bb8acca3ae","unresolved":false,"context_lines":[{"line_number":760,"context_line":"            for sys_child in sys_dict[\u0027children\u0027]:"},{"line_number":761,"context_line":"                if sys_child[\u0027id\u0027] \u003d\u003d \u0027core\u0027:"},{"line_number":762,"context_line":"                    for core_child in sys_child[\u0027children\u0027]:"},{"line_number":763,"context_line":"                        if re.match(r\u0027(^memory$)|(^memory:[0-9]{1,2}$)\u0027,"},{"line_number":764,"context_line":"                                    core_child[\u0027id\u0027]):"},{"line_number":765,"context_line":"                            if \u0027children\u0027 in core_child:"},{"line_number":766,"context_line":"                                for memory_child in core_child[\u0027children\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_82c71e65","line":763,"updated":"2019-04-02 11:22:27.000000000","message":"could you split this block into a helper function? the indentation is too deep to be readable here.","commit_id":"b28d5ba97e1272c3075ae31d208d6504f6ee68f3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"045686d8f4efab9447b15c362b5279bb8acca3ae","unresolved":false,"context_lines":[{"line_number":761,"context_line":"                if sys_child[\u0027id\u0027] \u003d\u003d \u0027core\u0027:"},{"line_number":762,"context_line":"                    for core_child in sys_child[\u0027children\u0027]:"},{"line_number":763,"context_line":"                        if re.match(r\u0027(^memory$)|(^memory:[0-9]{1,2}$)\u0027,"},{"line_number":764,"context_line":"                                    core_child[\u0027id\u0027]):"},{"line_number":765,"context_line":"                            if \u0027children\u0027 in core_child:"},{"line_number":766,"context_line":"                                for memory_child in core_child[\u0027children\u0027]:"},{"line_number":767,"context_line":"                                    if memory_child.get(\u0027size\u0027):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_a2c49a60","line":764,"updated":"2019-04-02 11:22:27.000000000","message":"Cannot we compare \"class\" to \"memory\" instead of matching IDs?","commit_id":"b28d5ba97e1272c3075ae31d208d6504f6ee68f3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"045686d8f4efab9447b15c362b5279bb8acca3ae","unresolved":false,"context_lines":[{"line_number":763,"context_line":"                        if re.match(r\u0027(^memory$)|(^memory:[0-9]{1,2}$)\u0027,"},{"line_number":764,"context_line":"                                    core_child[\u0027id\u0027]):"},{"line_number":765,"context_line":"                            if \u0027children\u0027 in core_child:"},{"line_number":766,"context_line":"                                for memory_child in core_child[\u0027children\u0027]:"},{"line_number":767,"context_line":"                                    if memory_child.get(\u0027size\u0027):"},{"line_number":768,"context_line":"                                        value \u003d (\"%(size)s %(units)s\" %"},{"line_number":769,"context_line":"                                                 memory_child)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_429ff664","line":766,"updated":"2019-04-02 11:22:27.000000000","message":"nit: you could avoid \"if\" by doing\n\n for bank in core_child.get(\u0027children\u0027, ()):\n\n(note s/memory_child/bank/ for clarity)","commit_id":"b28d5ba97e1272c3075ae31d208d6504f6ee68f3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"da33f1ab8109e017618299cab85bbf93b5d96c2f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"UNIT_CONVERTER \u003d pint.UnitRegistry(filename\u003dNone)"},{"line_number":49,"context_line":"UNIT_CONVERTER.define(\u0027bytes \u003d []\u0027)"},{"line_number":50,"context_line":"UNIT_CONVERTER.define(\u0027MB \u003d 1048576 bytes\u0027)"},{"line_number":51,"context_line":"_MEMORY_ID_RE \u003d re.compile(r\u0027(^memory$)|(^memory:[0-9]{1,2}$)\u0027)"},{"line_number":52,"context_line":"NODE \u003d None"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fce034c_0cd70cc2","line":51,"updated":"2019-04-11 10:06:47.000000000","message":"nit: can probably be written as r\u0027^memory(:\\d{1,2})?$\u0027. are you sure it never has (or will have) 3 digits though?","commit_id":"c10e699af1980e0c6122217674e2aa1f278342ac"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b4fe78778e8cd1dbc69a34ead18d363ceffabfa3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"UNIT_CONVERTER \u003d pint.UnitRegistry(filename\u003dNone)"},{"line_number":49,"context_line":"UNIT_CONVERTER.define(\u0027bytes \u003d []\u0027)"},{"line_number":50,"context_line":"UNIT_CONVERTER.define(\u0027MB \u003d 1048576 bytes\u0027)"},{"line_number":51,"context_line":"_MEMORY_ID_RE \u003d re.compile(r\u0027(^memory$)|(^memory:[0-9]{1,2}$)\u0027)"},{"line_number":52,"context_line":"NODE \u003d None"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fce034c_8147211e","line":51,"in_reply_to":"3fce034c_0cd70cc2","updated":"2019-04-12 21:18:44.000000000","message":"I\u0027ve heard of operators speak of on the order of 192GB for a single node... so if we are constraining the length it seems like a bad idea.","commit_id":"c10e699af1980e0c6122217674e2aa1f278342ac"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7801153a367614d9c7e72b3c0d001dee4f6e61d0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"UNIT_CONVERTER \u003d pint.UnitRegistry(filename\u003dNone)"},{"line_number":49,"context_line":"UNIT_CONVERTER.define(\u0027bytes \u003d []\u0027)"},{"line_number":50,"context_line":"UNIT_CONVERTER.define(\u0027MB \u003d 1048576 bytes\u0027)"},{"line_number":51,"context_line":"_MEMORY_ID_RE \u003d re.compile(r\u0027(^memory$)|(^memory:[0-9]{1,2}$)\u0027)"},{"line_number":52,"context_line":"NODE \u003d None"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fce034c_070ed03a","line":51,"in_reply_to":"3fce034c_8147211e","updated":"2019-04-15 09:58:19.000000000","message":"I don\u0027t know if there can be more than 99 memory units, but everything is possible :)\n\nP.S. I\u0027ve heard of people with TiB of RAM using Ironic Oo","commit_id":"c10e699af1980e0c6122217674e2aa1f278342ac"}],"releasenotes/notes/get-physical-memory-535a32362bcdf83a.yaml":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"9e642ebce4fc2139626f81a52539aebe844dfecc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes an issue with retriving all available physical memory."},{"line_number":5,"context_line":"    For more details see:"},{"line_number":6,"context_line":"    `story 2005308 \u003chttps://storyboard.openstack.org/#!/story/2005308\u003e`"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5fc1f717_4971600c","line":4,"range":{"start_line":4,"start_character":24,"end_line":4,"end_character":33},"updated":"2019-04-02 08:30:26.000000000","message":"nit: retrieving","commit_id":"7ce6a9d44f955f275526dd7ea78f4e15d532e395"}]}
