aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/left_right.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/left_right.py')
-rw-r--r--scripts/rpki/left_right.py35
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() }