diff options
Diffstat (limited to 'scripts/rpki/left_right.py')
-rw-r--r-- | scripts/rpki/left_right.py | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/scripts/rpki/left_right.py b/scripts/rpki/left_right.py index f04deb2e..d244cf72 100644 --- a/scripts/rpki/left_right.py +++ b/scripts/rpki/left_right.py @@ -63,6 +63,7 @@ class extension_preference_elt(base_elt, rpki.sql.sql_persistant): sql_delete_cmd = """DELETE FROM self_pref WHERE self_id = %(self_id)s AND pref_name = %(name)s""" def sql_decode(self, sql_parent, self_id, name, value): + assert isinstance(sql_parent, self_elt) self.self_obj = sql_parent self.name = name self.value = value @@ -136,6 +137,35 @@ class parent_elt(base_elt, rpki.sql.sql_persistant): attributes = ("action", "type", "self_id", "parent_id", "bsc_link", "repository_link", "peer_contact", "sia_base") booleans = ("rekey", "reissue", "revoke") + sql_id_name = "parent_id" + sql_select_cmd = """SELECT parent_id, ta, uri, sia_base, self_id, bsc_id, repos_id FROM parent + WHERE self_id = %(self_id)s""" + sql_insert_cmd = """INSERT parent (ta, url, sia_base, self_id, bsc_id, repos_id) + VALUES (%(ta)s, %(url)s, %(sia_base)s, %(self_id)s, %(bsc_id)s, %(repos_id)s)""" + sql_update_cmd = """UPDATE repos SET ta = %(ta)s, uri = %(uri)s, sia_base = %(sia_base)s, self_id = %(self_id)s, bsc_id = %(bsc_id)s, repos_id = %(repos_id)s + WHERE parent_id = %(parent_id)s""" + sql_delete_cmd = """DELETE FROM parent WHERE parent_id = %(parent_id)s""" + + def sql_decode(self, sql_parent, parent_id, ta, uri, sia_base, self_id, bsc_id, repos_id): + assert isinstance(sql_parent, self_elt) + self.self_obj = sql_parent + self.bsc_obj = self.self_obj.bscs[bsc_id] + self.repository_obj = self.self_obj.repos[repos_id] + self.self_id = self_id + self.bsc_link = bsc_id + self.repository_link = repos_id + self.peer_contact = uri + self.peer_ta = rpki.x509.X509(DER=ta) + + def sql_encode(self): + return { "self_id" : self.self_obj.self_id, + "bsc_id" : self.bsc_obj.bsc_id, + "repos_id" : self.repository_obj.repository_id, + "parent_id" : self.parent_id, + "uri" : self.peer_contact, + "ta" : self.peer_ta.get_DER(), + "sia_head" : self.sia_head } + peer_ta = None def startElement(self, stack, name, attrs): @@ -196,12 +226,13 @@ class repository_elt(base_elt, rpki.sql.sql_persistant): attributes = ("action", "type", "self_id", "repository_id", "bsc_link", "peer_contact") sql_id_name = "repos_id" - sql_select_cmd = """SELECT self_id, bsc_id, repos_id, uri, ta FROM repos WHERE self_id = %(self_id)s AND bsc_id = %(bsc_id)s""" + sql_select_cmd = """SELECT self_id, bsc_id, repos_id, uri, ta FROM repos WHERE self_id = %(self_id)s""" sql_insert_cmd = """INSERT repos (uri, ta, bsc_id, self_id) VALUES (%(uri)s, %(ta)s, %(bsc_id)s, %(self_id)s)""" sql_update_cmd = """UPDATE repos SET uri = %(uri)s, ta = %(ta)s, bsc_id = %(bsc_id)s, self_id = %(self_id)s WHERE repos_id = %(repos_id)s""" sql_delete_cmd = """DELETE FROM repos WHERE repos_id = %(repos_id)s""" def sql_decode(self, sql_parent, self_id, bsc_id, repos_id, uri, ta): + assert isinstance(sql_parent, self_elt) self.self_obj = sql_parent self.bsc_obj = self.self_obj.bscs[bsc_id] self.self_id = self_id @@ -212,7 +243,7 @@ class repository_elt(base_elt, rpki.sql.sql_persistant): def sql_encode(self): return { "self_id" : self.self_obj.self_id, - "bsc_id" : self.bsc_link.bsc_id, + "bsc_id" : self.bsc_obj.bsc_id, "repos_id" : self.repository_id, "uri" : self.peer_contact, "ta" : self.peer_ta.get_DER() } |