public inbox for location@lists.ipfire.org
 help / color / mirror / Atom feed
From: "Peter Müller" <peter.mueller@ipfire.org>
To: location@lists.ipfire.org
Subject: Re: [PATCH] location-importer.in: Attempt to provide meaningful AS names if organisation handles are missing
Date: Thu, 05 Aug 2021 20:49:55 +0200	[thread overview]
Message-ID: <dd8c54ce-0144-3f15-adf7-f05e522c2e6c@ipfire.org> (raw)
In-Reply-To: <2F401D87-C58F-45CE-8E94-CEA624592E48@ipfire.org>

[-- Attachment #1: Type: text/plain, Size: 4520 bytes --]

Hi Michael,

> Hey,
> 
>> On 21 Jul 2021, at 22:23, Peter Müller <peter.mueller(a)ipfire.org> wrote:
>>
>> Hello Michael,
>>
>> thanks for your reply.
>>
>> I would leave this up to you - some data-related issues are still on my list, but I
>> am unfortunately really short on spare time at the moment. So I guess we should get
>> in production what we have at hand... :-)
> 
> Since we do not make too much use of this data, yet, I would like to leave another release for a little bit and wait until the rest is coming in.

thought about this again, I think we could apply this patch to libloc running on location01,
as we probably won't release a next version of libloc within the next few weeks - primarily
due to me lacking spare time. :-/

Albeit it is hacky, I think it would be worth it. What do you think?

> I generally like the release early and often thing. We should keep doing that.

ACK.

Thanks, and best regards,
Peter Müller

> 
>> By the way: Thank you for fixing location01, SSH login works fine for me again. :-)
> 
> -Michael
> 
>>
>> Thanks, and best regards,
>> Peter Müller
>>
>>
>>> Thank you. Merged.
>>>
>>> Do we plan a release because of this soon?
>>>
>>>> On 19 Jul 2021, at 22:34, Peter Müller <peter.mueller(a)ipfire.org> wrote:
>>>>
>>>> A decent amount of autnum objects - especially, but not exclusively in
>>>> the APNIC sector - does not contain a link to an organisation handle.
>>>>
>>>> In such cases, this patch is going to use the first description line of
>>>> the atunum object in question (if available) as a string for its name.
>>>> The overwhelming majority of affected ASNs contains a valuable
>>>> information there, so this is almost as good as having an organisation
>>>> handle linked to it.
>>>>
>>>> Fixes: #12660
>>>>
>>>> Signed-off-by: Peter Müller <peter.mueller(a)ipfire.org>
>>>> ---
>>>> src/python/location-importer.in | 28 +++++++++++++++++++++++++---
>>>> 1 file changed, 25 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/src/python/location-importer.in b/src/python/location-importer.in
>>>> index d4b0ca2..bec0b62 100644
>>>> --- a/src/python/location-importer.in
>>>> +++ b/src/python/location-importer.in
>>>> @@ -393,11 +393,11 @@ class CLI(object):
>>>> 		with self.db.transaction():
>>>> 			# Create some temporary tables to store parsed data
>>>> 			self.db.execute("""
>>>> -				CREATE TEMPORARY TABLE _autnums(number integer, organization text, source text NOT NULL)
>>>> +				CREATE TEMPORARY TABLE _autnums(number integer NOT NULL, organization text NOT NULL, source text NOT NULL)
>>>> 					ON COMMIT DROP;
>>>> 				CREATE UNIQUE INDEX _autnums_number ON _autnums(number);
>>>>
>>>> -				CREATE TEMPORARY TABLE _organizations(handle text, name text NOT NULL, source text NOT NULL)
>>>> +				CREATE TEMPORARY TABLE _organizations(handle text NOT NULL, name text NOT NULL, source text NOT NULL)
>>>> 					ON COMMIT DROP;
>>>> 				CREATE UNIQUE INDEX _organizations_handle ON _organizations(handle);
>>>>
>>>> @@ -604,10 +604,32 @@ class CLI(object):
>>>> 			elif key == "org":
>>>> 				autnum[key] = val.upper()
>>>>
>>>> +			elif key == "descr":
>>>> +				# Save the first description line as well...
>>>> +				if not key in autnum:
>>>> +					autnum[key] = val
>>>> +
>>>> 		# Skip empty objects
>>>> -		if not autnum:
>>>> +		if not autnum or not "asn" in autnum:
>>>> 			return
>>>>
>>>> +		# Insert a dummy organisation handle into our temporary organisations
>>>> +		# table in case the AS does not have an organisation handle set, but
>>>> +		# has a description (a quirk often observed in APNIC area), so we can
>>>> +		# later display at least some string for this AS.
>>>> +		if not "org" in autnum:
>>>> +			if "descr" in autnum:
>>>> +				autnum["org"] = "LIBLOC-%s-ORGHANDLE" % autnum.get("asn")
>>>> +
>>>> +				self.db.execute("INSERT INTO _organizations(handle, name, source) \
>>>> +					VALUES(%s, %s, %s) ON CONFLICT (handle) DO NOTHING",
>>>> +					autnum.get("org"), autnum.get("descr"), source_key,
>>>> +				)
>>>> +			else:
>>>> +				log.warning("ASN %s neither has an organisation handle nor a description line set, omitting" % \
>>>> +						autnum.get("asn"))
>>>> +				return
>>>> +
>>>> 		# Insert into database
>>>> 		self.db.execute("INSERT INTO _autnums(number, organization, source) \
>>>> 			VALUES(%s, %s, %s) ON CONFLICT (number) DO UPDATE SET \
>>>> -- 
>>>> 2.20.1
>>>>
>>>
> 

  reply	other threads:[~2021-08-05 18:49 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-19 21:34 Peter Müller
2021-07-20 12:18 ` Michael Tremer
2021-07-21 21:23   ` Peter Müller
2021-07-23 13:38     ` Michael Tremer
2021-08-05 18:49       ` Peter Müller [this message]
2021-08-05 20:09         ` Michael Tremer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dd8c54ce-0144-3f15-adf7-f05e522c2e6c@ipfire.org \
    --to=peter.mueller@ipfire.org \
    --cc=location@lists.ipfire.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox