)]}'
{"tripleo_ansible/ansible_plugins/modules/tripleo_os_net_config_mappings.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d4c8f2803c547693bc162f40fc3cd901b6be2add","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        nic2: enp6s0"},{"line_number":76,"context_line":"\u0027\u0027\u0027"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def _get_interfaces():"},{"line_number":79,"context_line":"    eth_addr \u003d ["},{"line_number":80,"context_line":"        # cast to lower case for MAC address match"},{"line_number":81,"context_line":"        open(\u0027/sys/class/net/{}/address\u0027.format(x)).read().strip().lower()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_09281e95","line":78,"updated":"2020-09-03 08:33:22.000000000","message":"linters: E302 expected 2 blank lines, found 1","commit_id":"da972278dc14451b0a21c525645ea9a494f535eb"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d4c8f2803c547693bc162f40fc3cd901b6be2add","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    return eth_addr"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def _get_mappings(data):"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    eth_addr \u003d _get_interfaces()"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_6918ba83","line":87,"updated":"2020-09-03 08:33:22.000000000","message":"linters: E302 expected 2 blank lines, found 1","commit_id":"da972278dc14451b0a21c525645ea9a494f535eb"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"00ba0c3090705242a637c6a64e83f1e9ff422f9f","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    return eth_addr"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"def _get_mappings(data):"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    eth_addr \u003d _get_interfaces()"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_bef7a159","line":105,"updated":"2020-09-03 11:13:41.000000000","message":"linters: E302 expected 2 blank lines, found 1","commit_id":"c04a41c73e59060c978ea58aa39d23b864b64b22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"00ba0c3090705242a637c6a64e83f1e9ff422f9f","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            if data[node].get(\u0027id\u0027).lower() \u003d\u003d out.rstrip().lower():"},{"line_number":134,"context_line":"                return {\u0027interface_mapping\u0027: lc_iface_mapping}"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"def main():"},{"line_number":137,"context_line":"    module \u003d AnsibleModule("},{"line_number":138,"context_line":"        argument_spec\u003dyaml.safe_load(DOCUMENTATION)[\u0027options\u0027],"},{"line_number":139,"context_line":"        supports_check_mode\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_1e94cde7","line":136,"updated":"2020-09-03 11:13:41.000000000","message":"linters: E302 expected 2 blank lines, found 1","commit_id":"c04a41c73e59060c978ea58aa39d23b864b64b22"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"e1c2fc451d7663eab31309797681979ca6675c26","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        # If data contain dmiString and id keys, try to match node(group)"},{"line_number":127,"context_line":"        if \u0027dmiString\u0027 in data[node] and \u0027id\u0027 in data[node]:"},{"line_number":128,"context_line":"            ps \u003d subprocess.Popen("},{"line_number":129,"context_line":"                [\u0027dmidecode\u0027, \u0027--string\u0027, data[node][\u0027dmiString\u0027]],"},{"line_number":130,"context_line":"                stdout\u003dsubprocess.PIPE, universal_newlines\u003dTrue)"},{"line_number":131,"context_line":"            out, err \u003d ps.communicate()"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_bb3f66b3","line":129,"range":{"start_line":128,"start_character":11,"end_line":129,"end_character":67},"updated":"2020-09-09 02:41:38.000000000","message":"I think we should use python-dmidecode here rather than spawning a process in an ansible module.\n\n[heat-admin@controller-0 ~]$ rpm -qa | grep dmidecode\npython3-dmidecode-3.12.2-15.el8.x86_64\ndmidecode-3.2-3.el8.x86_64","commit_id":"6bd7eeb7cccc52863e33d0b33adb5deb05816862"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"ab999dc336a7779ebca5b88838beb2a41ae5009f","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        # If data contain dmiString and id keys, try to match node(group)"},{"line_number":127,"context_line":"        if \u0027dmiString\u0027 in data[node] and \u0027id\u0027 in data[node]:"},{"line_number":128,"context_line":"            ps \u003d subprocess.Popen("},{"line_number":129,"context_line":"                [\u0027dmidecode\u0027, \u0027--string\u0027, data[node][\u0027dmiString\u0027]],"},{"line_number":130,"context_line":"                stdout\u003dsubprocess.PIPE, universal_newlines\u003dTrue)"},{"line_number":131,"context_line":"            out, err \u003d ps.communicate()"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_f50e0a30","line":129,"range":{"start_line":128,"start_character":11,"end_line":129,"end_character":67},"in_reply_to":"9f560f44_111e336f","updated":"2020-09-09 07:39:54.000000000","message":"then that\u0027s makes sense indeed.\nWhere is the place to check pre-installed packages?\nLike for this example patch https://review.opendev.org/#/c/749817/1/deployment/ipa/ipaservices-baremetal-ansible.yaml it\u0027s always good to know which packages may be missing on target hosts when composing a change into an ansible module...","commit_id":"6bd7eeb7cccc52863e33d0b33adb5deb05816862"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"0152623d64734fd82ec050b567e87fc546521ccb","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        # If data contain dmiString and id keys, try to match node(group)"},{"line_number":127,"context_line":"        if \u0027dmiString\u0027 in data[node] and \u0027id\u0027 in data[node]:"},{"line_number":128,"context_line":"            ps \u003d subprocess.Popen("},{"line_number":129,"context_line":"                [\u0027dmidecode\u0027, \u0027--string\u0027, data[node][\u0027dmiString\u0027]],"},{"line_number":130,"context_line":"                stdout\u003dsubprocess.PIPE, universal_newlines\u003dTrue)"},{"line_number":131,"context_line":"            out, err \u003d ps.communicate()"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_111e336f","line":129,"range":{"start_line":128,"start_character":11,"end_line":129,"end_character":67},"in_reply_to":"9f560f44_918403b3","updated":"2020-09-09 07:35:49.000000000","message":"It\u0027s already there in CentOS 8 and RHEL8 is what I\u0027m saying and IMO it\u0027s definitely better to use a lib rather than spawning a process in an ansible module.","commit_id":"6bd7eeb7cccc52863e33d0b33adb5deb05816862"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"8237d0ff69ca3cd823f7954ddbb294365d50b2ee","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        # If data contain dmiString and id keys, try to match node(group)"},{"line_number":127,"context_line":"        if \u0027dmiString\u0027 in data[node] and \u0027id\u0027 in data[node]:"},{"line_number":128,"context_line":"            ps \u003d subprocess.Popen("},{"line_number":129,"context_line":"                [\u0027dmidecode\u0027, \u0027--string\u0027, data[node][\u0027dmiString\u0027]],"},{"line_number":130,"context_line":"                stdout\u003dsubprocess.PIPE, universal_newlines\u003dTrue)"},{"line_number":131,"context_line":"            out, err \u003d ps.communicate()"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_918403b3","line":129,"range":{"start_line":128,"start_character":11,"end_line":129,"end_character":67},"in_reply_to":"9f560f44_bb3f66b3","updated":"2020-09-09 07:28:25.000000000","message":"that would require this package installed on all hosts, right?\nAFAIK if possible, modules should avoid external dependencies.","commit_id":"6bd7eeb7cccc52863e33d0b33adb5deb05816862"}],"tripleo_ansible/roles/tripleo_network_config/molecule/default/prepare.yml":[{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"52781ac7f8e9ffaf1f1e90d96bb0264179fea11b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    - import_role:"},{"line_number":22,"context_line":"        name: test_deps"},{"line_number":23,"context_line":"      vars:"},{"line_number":24,"context_line":"        test_deps_setup_tripleo: true"},{"line_number":25,"context_line":"    - name: Ensure legacy scripts installed"},{"line_number":26,"context_line":"      package:"},{"line_number":27,"context_line":"        name: network-scripts"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_6196fc96","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":31},"updated":"2020-09-04 08:01:48.000000000","message":"i had to go digging to find that ... so it will cause repo \u0026 packages setup  https://opendev.org/openstack/tripleo-ansible/src/commit/ff730321a2f3af8dda8139f25101b1d73b8448e8/tripleo_ansible/roles/test_deps/tasks/main.yml#L66-L74\n\nI don\u0027t follow the relevance to the rest of the change though","commit_id":"6bd7eeb7cccc52863e33d0b33adb5deb05816862"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"1ac8141e91253ff041f5f74737a7877093d867fa","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    - import_role:"},{"line_number":22,"context_line":"        name: test_deps"},{"line_number":23,"context_line":"      vars:"},{"line_number":24,"context_line":"        test_deps_setup_tripleo: true"},{"line_number":25,"context_line":"    - name: Ensure legacy scripts installed"},{"line_number":26,"context_line":"      package:"},{"line_number":27,"context_line":"        name: network-scripts"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_7c1b3fc9","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":31},"in_reply_to":"9f560f44_6196fc96","updated":"2020-09-04 09:43:18.000000000","message":"I\u0027m importing yaml in the module. Without setup the test_deps I got \"ImportError: No module named yaml\" when running tests.","commit_id":"6bd7eeb7cccc52863e33d0b33adb5deb05816862"}],"tripleo_ansible/tests/modules/test_tripleo_os_net_config_mappings.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"00ba0c3090705242a637c6a64e83f1e9ff422f9f","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestTripleoOsNetConfigMappings(tests_base.TestCase):"},{"line_number":23,"context_line":"    @mock.patch(\u0027subprocess.Popen\u0027)"},{"line_number":24,"context_line":"    def test_run(self, mock_Popen):"},{"line_number":25,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_fe9639ef","line":22,"updated":"2020-09-03 11:13:41.000000000","message":"linters: E302 expected 2 blank lines, found 1","commit_id":"c04a41c73e59060c978ea58aa39d23b864b64b22"}]}
