)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"88ea3300525dc95e97783a6306e467bb635a7fe5","unresolved":true,"context_lines":[{"line_number":16,"context_line":"the inventory will reflect the value first discovered."},{"line_number":17,"context_line":"For example, a changed IP address in neutron will be"},{"line_number":18,"context_line":"reflected in the inventory even tough the overcloud"},{"line_number":19,"context_line":"heat stack is not yet aware of the change."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Partial-Implements: blueprint network-data-v2-ports"},{"line_number":22,"context_line":"Change-Id: I9e1851aeb92c9e257fd18fdc500ee5c01b1eb53e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"66d1758e_4c945503","line":19,"updated":"2020-12-09 23:22:39.000000000","message":"would be good to add unit test coverage for this","commit_id":"5fe50872c1f66605f2a2d4bcd2f8dc482db7d61d"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"bddc3cdcdf0b4ef715ad7b1cf166eb38296f81f2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"the inventory will reflect the value first discovered."},{"line_number":17,"context_line":"For example, a changed IP address in neutron will be"},{"line_number":18,"context_line":"reflected in the inventory even tough the overcloud"},{"line_number":19,"context_line":"heat stack is not yet aware of the change."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Partial-Implements: blueprint network-data-v2-ports"},{"line_number":22,"context_line":"Change-Id: I9e1851aeb92c9e257fd18fdc500ee5c01b1eb53e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"d7df2968_e83581be","line":19,"in_reply_to":"66d1758e_4c945503","updated":"2020-12-11 01:32:13.000000000","message":"Done","commit_id":"5fe50872c1f66605f2a2d4bcd2f8dc482db7d61d"}],"tripleo_common/inventory.py":[{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"0065ba610003695a26388a68b83eddb437fa066f","unresolved":true,"context_lines":[{"line_number":263,"context_line":"        try:"},{"line_number":264,"context_line":"            stack \u003d self.hclient.stacks.get(self.plan_name)"},{"line_number":265,"context_line":"        except HTTPNotFound:"},{"line_number":266,"context_line":"            LOG.warning(\"Stack not found: %s. Only the undercloud and neutron \""},{"line_number":267,"context_line":"                        \"data will be added to the inventory.\""},{"line_number":268,"context_line":"                        % self.plan_name)"},{"line_number":269,"context_line":"            stack \u003d None"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cb14be5e_4dfda2ca","line":267,"range":{"start_line":266,"start_character":24,"end_line":267,"end_character":62},"updated":"2020-12-08 19:38:33.000000000","message":"Nice! So I take it I could build a meaningful enough inventory from Neutron on the undercloud to configure the networks of nodes deployed by `openstack overcloud node provision` before I have a Heat stack.","commit_id":"6498a49ed04d7dd7570017e1466bd163420f8a8e"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"faae296b88991a1e98b38a844b6d753f2d4b9250","unresolved":true,"context_lines":[{"line_number":263,"context_line":"        try:"},{"line_number":264,"context_line":"            stack \u003d self.hclient.stacks.get(self.plan_name)"},{"line_number":265,"context_line":"        except HTTPNotFound:"},{"line_number":266,"context_line":"            LOG.warning(\"Stack not found: %s. Only the undercloud and neutron \""},{"line_number":267,"context_line":"                        \"data will be added to the inventory.\""},{"line_number":268,"context_line":"                        % self.plan_name)"},{"line_number":269,"context_line":"            stack \u003d None"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bcf3ce34_9c5411c7","line":267,"range":{"start_line":266,"start_character":24,"end_line":267,"end_character":62},"in_reply_to":"cb14be5e_4dfda2ca","updated":"2020-12-09 00:08:52.000000000","message":"Yes, that\u0027s the idea.\nIt would also be possible to add \"layers\" of data sources and \"enrich\" the inventory. I imagine for example that once ceph is deployed it could be another source enriching the inventory with the stuff needed for openstack integration?","commit_id":"6498a49ed04d7dd7570017e1466bd163420f8a8e"},{"author":{"_account_id":7144,"name":"James Slagle","email":"jslagle@redhat.com","username":"slagle"},"change_message_id":"2e072f5018ecceef53d5b395c02e8b3745f37fd8","unresolved":true,"context_lines":[{"line_number":392,"context_line":"            LOG.info(\"Session not set, neutron data will not be used to build \""},{"line_number":393,"context_line":"                     \"the inventory.\")"},{"line_number":394,"context_line":"            return"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        try:"},{"line_number":397,"context_line":"            conn \u003d openstack.connection.Connection(session\u003dself.session)"},{"line_number":398,"context_line":"            tags_filter \u003d [\u0027tripleo_stack_name\u003d{}\u0027.format(self.plan_name)]"}],"source_content_type":"text/x-python","patch_set":14,"id":"4093710a_8c20f775","line":395,"updated":"2021-02-02 01:08:00.000000000","message":"we also need a check to see if neutron is installed at all, and just return if it\u0027s not.","commit_id":"780df47c06fca9f9e07e5741aaa6f6fabc7580ef"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"c965728929c1d94e4000a704b23f198c4a8548a8","unresolved":false,"context_lines":[{"line_number":392,"context_line":"            LOG.info(\"Session not set, neutron data will not be used to build \""},{"line_number":393,"context_line":"                     \"the inventory.\")"},{"line_number":394,"context_line":"            return"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        try:"},{"line_number":397,"context_line":"            conn \u003d openstack.connection.Connection(session\u003dself.session)"},{"line_number":398,"context_line":"            tags_filter \u003d [\u0027tripleo_stack_name\u003d{}\u0027.format(self.plan_name)]"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba1ab157_8cc57540","line":395,"in_reply_to":"4093710a_8c20f775","updated":"2021-02-03 10:42:35.000000000","message":"I updated it to catch EndpointNotFound exception, log a warning and return None in that case.","commit_id":"780df47c06fca9f9e07e5741aaa6f6fabc7580ef"},{"author":{"_account_id":7144,"name":"James Slagle","email":"jslagle@redhat.com","username":"slagle"},"change_message_id":"2e072f5018ecceef53d5b395c02e8b3745f37fd8","unresolved":true,"context_lines":[{"line_number":406,"context_line":"            for net in networks:"},{"line_number":407,"context_line":"                subnets.extend(conn.network.subnets(network_id\u003dnet.id))"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        except exception.MissingMandatoryNeutronResourceTag:"},{"line_number":410,"context_line":"            # In case of missing required tags, neutron is useless as an"},{"line_number":411,"context_line":"            # inventory source, log warning and return None to disable the"},{"line_number":412,"context_line":"            # neutron source."}],"source_content_type":"text/x-python","patch_set":14,"id":"a5a291d7_e59f0602","line":409,"updated":"2021-02-02 01:08:00.000000000","message":"which line would raise this exception?","commit_id":"780df47c06fca9f9e07e5741aaa6f6fabc7580ef"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"c965728929c1d94e4000a704b23f198c4a8548a8","unresolved":false,"context_lines":[{"line_number":406,"context_line":"            for net in networks:"},{"line_number":407,"context_line":"                subnets.extend(conn.network.subnets(network_id\u003dnet.id))"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        except exception.MissingMandatoryNeutronResourceTag:"},{"line_number":410,"context_line":"            # In case of missing required tags, neutron is useless as an"},{"line_number":411,"context_line":"            # inventory source, log warning and return None to disable the"},{"line_number":412,"context_line":"            # neutron source."}],"source_content_type":"text/x-python","patch_set":14,"id":"e0060a80_12189fb5","line":409,"in_reply_to":"a5a291d7_e59f0602","updated":"2021-02-03 10:42:35.000000000","message":"L126 raises it, but I obviously need to move the \"NeutronData(networks, subnets, ports)\" in the return into this try clause for that to have the desired effect.\n\nNice catch, thanks James!","commit_id":"780df47c06fca9f9e07e5741aaa6f6fabc7580ef"},{"author":{"_account_id":7144,"name":"James Slagle","email":"jslagle@redhat.com","username":"slagle"},"change_message_id":"2e072f5018ecceef53d5b395c02e8b3745f37fd8","unresolved":true,"context_lines":[{"line_number":416,"context_line":"            return None"},{"line_number":417,"context_line":"        except Exception as err:"},{"line_number":418,"context_line":"            raise Exception("},{"line_number":419,"context_line":"                \"Failed to get information from neutron: {}\".format(err))"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        return NeutronData(networks, subnets, ports)"},{"line_number":422,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"2b37e0d4_a8f3c5b9","line":419,"updated":"2021-02-02 01:08:00.000000000","message":"or here you could check the exception I suppose. point being, we don\u0027t want to fail is Neutron is not in use.","commit_id":"780df47c06fca9f9e07e5741aaa6f6fabc7580ef"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"c965728929c1d94e4000a704b23f198c4a8548a8","unresolved":false,"context_lines":[{"line_number":416,"context_line":"            return None"},{"line_number":417,"context_line":"        except Exception as err:"},{"line_number":418,"context_line":"            raise Exception("},{"line_number":419,"context_line":"                \"Failed to get information from neutron: {}\".format(err))"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        return NeutronData(networks, subnets, ports)"},{"line_number":422,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"dce8d7ee_aed28c5e","line":419,"in_reply_to":"2b37e0d4_a8f3c5b9","updated":"2021-02-03 10:42:35.000000000","message":"Updated to catch EndpointNotFound exception and return None in that case.","commit_id":"780df47c06fca9f9e07e5741aaa6f6fabc7580ef"}]}
