)]}'
{"shade/openstackcloud.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c00d5937a7eafe100acb7865ed838ebff2b36c3f","unresolved":false,"context_lines":[{"line_number":3809,"context_line":"                    if router[\u0027admin_state_up\u0027]:"},{"line_number":3810,"context_line":"                        network_id \u003d router.get("},{"line_number":3811,"context_line":"                            \u0027external_gateway_info\u0027, {}).get(\u0027network_id\u0027)"},{"line_number":3812,"context_line":"                        if network_id:"},{"line_number":3813,"context_line":"                            self._floating_network_by_router \u003d network_id"},{"line_number":3814,"context_line":"            finally:"},{"line_number":3815,"context_line":"                self._floating_network_by_router_run \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_f3aad418","line":3812,"updated":"2016-11-07 20:07:19.000000000","message":"yay bug fixes.","commit_id":"f22af7f1b2e92d71477eabdbcbaa60905438a298"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c00d5937a7eafe100acb7865ed838ebff2b36c3f","unresolved":false,"context_lines":[{"line_number":3885,"context_line":"                            net\u003dnetwork)"},{"line_number":3886,"context_line":"                    )"},{"line_number":3887,"context_line":"            else:"},{"line_number":3888,"context_line":"                # Get first existing external IPv4 network"},{"line_number":3889,"context_line":"                networks \u003d self.get_external_ipv4_floating_networks()"},{"line_number":3890,"context_line":"                if networks:"},{"line_number":3891,"context_line":"                    floating_network_id \u003d networks[0][\u0027id\u0027]"},{"line_number":3892,"context_line":"                else:"},{"line_number":3893,"context_line":"                    floating_network \u003d self._find_floating_network_by_router()"},{"line_number":3894,"context_line":"                    if floating_network:"},{"line_number":3895,"context_line":"                        floating_network_id \u003d floating_network"},{"line_number":3896,"context_line":"                    else:"},{"line_number":3897,"context_line":"                        raise OpenStackCloudResourceNotFound("},{"line_number":3898,"context_line":"                            \"unable to find an external network\")"},{"line_number":3899,"context_line":""},{"line_number":3900,"context_line":"            filters \u003d {"},{"line_number":3901,"context_line":"                \u0027port_id\u0027: None,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_b6684abc","line":3898,"range":{"start_line":3888,"start_character":0,"end_line":3898,"end_character":65},"updated":"2016-11-07 20:07:19.000000000","message":"It seems like this wants to be a function because we do the same thing below (also highlighted).","commit_id":"f22af7f1b2e92d71477eabdbcbaa60905438a298"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c00d5937a7eafe100acb7865ed838ebff2b36c3f","unresolved":false,"context_lines":[{"line_number":4035,"context_line":"                            \"{0}\".format(network_name_or_id))"},{"line_number":4036,"context_line":"                    network_id \u003d network[\u0027id\u0027]"},{"line_number":4037,"context_line":"                else:"},{"line_number":4038,"context_line":"                    networks \u003d self.get_external_ipv4_floating_networks()"},{"line_number":4039,"context_line":"                    if networks:"},{"line_number":4040,"context_line":"                        network_id \u003d networks[0][\u0027id\u0027]"},{"line_number":4041,"context_line":"                    else:"},{"line_number":4042,"context_line":"                        network_id \u003d self._find_floating_network_by_router()"},{"line_number":4043,"context_line":"                        if not network_id:"},{"line_number":4044,"context_line":"                            raise OpenStackCloudResourceNotFound("},{"line_number":4045,"context_line":"                                \"Unable to find an external network in this\""},{"line_number":4046,"context_line":"                                \" cloud which makes getting a floating IP\""},{"line_number":4047,"context_line":"                                \" impossible\")"},{"line_number":4048,"context_line":"            kwargs \u003d {"},{"line_number":4049,"context_line":"                \u0027floating_network_id\u0027: network_id,"},{"line_number":4050,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_56a0cef4","line":4047,"range":{"start_line":4038,"start_character":1,"end_line":4047,"end_character":46},"updated":"2016-11-07 20:07:19.000000000","message":"Here is the other chunk of duplicate code.","commit_id":"f22af7f1b2e92d71477eabdbcbaa60905438a298"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c00d5937a7eafe100acb7865ed838ebff2b36c3f","unresolved":false,"context_lines":[{"line_number":4675,"context_line":"            return True"},{"line_number":4676,"context_line":""},{"line_number":4677,"context_line":"        # No external IPv4 network - no FIPs"},{"line_number":4678,"context_line":"        networks \u003d self.get_external_ipv4_networks()"},{"line_number":4679,"context_line":"        if not networks:"},{"line_number":4680,"context_line":"            network \u003d self._find_floating_network_by_router()"},{"line_number":4681,"context_line":"            if not network:"},{"line_number":4682,"context_line":"                return False"},{"line_number":4683,"context_line":""},{"line_number":4684,"context_line":"        (port_obj, fixed_ip_address) \u003d self._nat_destination_port("},{"line_number":4685,"context_line":"            server, nat_destination\u003dnat_destination)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_767cf272","line":4682,"range":{"start_line":4678,"start_character":0,"end_line":4682,"end_character":28},"updated":"2016-11-07 20:07:19.000000000","message":"And you can likely use that same function here as well.","commit_id":"f22af7f1b2e92d71477eabdbcbaa60905438a298"}]}
