From 7b9b0497d27905d5f55be0186033548014b5958d Mon Sep 17 00:00:00 2001 From: Q Misell Date: Mon, 28 Oct 2024 13:17:51 +0100 Subject: [PATCH] org on objects --- irrd/rpsl/rpsl_objects.py | 24 ++++++++++-- .../versions/f56387c94696_add_org_ref.py | 39 +++++++++++++++++++ irrd/storage/models.py | 1 + 3 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 irrd/storage/alembic/versions/f56387c94696_add_org_ref.py diff --git a/irrd/rpsl/rpsl_objects.py b/irrd/rpsl/rpsl_objects.py index 3229bf3..92de3eb 100644 --- a/irrd/rpsl/rpsl_objects.py +++ b/irrd/rpsl/rpsl_objects.py @@ -81,6 +81,7 @@ class RPSLAsBlock(RPSLObject): ("tech-c", RPSLReferenceField(lookup_key=True, multiple=True, referring=["role", "person"])), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -128,6 +129,7 @@ class RPSLAsSet(RPSLSet): ), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -159,9 +161,10 @@ class RPSLAutNum(RPSLObject): ("tech-c", RPSLReferenceField(lookup_key=True, multiple=True, referring=["role", "person"])), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ( "mnt-by", - RPSLReferenceListField(lookup_key=True, optional=True, multiple=True, referring=["mntner"]), + RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"]), ), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -186,6 +189,7 @@ class RPSLDomain(RPSLObject): ("refer", RPSLTextField(optional=True)), # ??? ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ( "mnt-by", RPSLReferenceListField(lookup_key=True, optional=True, multiple=True, referring=["mntner"]), @@ -217,6 +221,7 @@ class RPSLFilterSet(RPSLSet): ), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -257,6 +262,7 @@ class RPSLInetRtr(RPSLObject): ), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -278,6 +284,7 @@ class RPSLInet6Num(RPSLObject): ("geofeed", RPSLURLField(optional=True)), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -299,6 +306,7 @@ class RPSLInetnum(RPSLObject): ("geofeed", RPSLURLField(optional=True)), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -329,6 +337,7 @@ class RPSLIrt(RPSLObject): ), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -450,6 +459,7 @@ class RPSLMntner(RPSLObject): ("auth", RPSLAuthField(multiple=True)), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, optional=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -520,7 +530,7 @@ class RPSLOrganisation(RPSLObject): ("organisation", RPSLGenericNameField(primary_key=True, lookup_key=True)), ("org-name", RPSLTextField()), ("country", RPSLTextField(multiple=True)), - ("address", RPSLTextField(multiple=True)), + ("address", RPSLTextField(optional=True, multiple=True)), ("phone", RPSLTextField(optional=True, multiple=True)), ("fax-no", RPSLTextField(optional=True, multiple=True)), ("e-mail", RPSLEmailField(multiple=True)), @@ -566,6 +576,7 @@ class RPSLPeeringSet(RPSLSet): ), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -577,8 +588,8 @@ class RPSLPerson(RPSLObject): fields = OrderedDict( [ ("person", RPSLTextField(lookup_key=True)), - ("address", RPSLTextField(multiple=True)), - ("phone", RPSLTextField(multiple=True)), + ("address", RPSLTextField(optional=True, multiple=True)), + ("phone", RPSLTextField(optional=True, multiple=True)), ("fax-no", RPSLTextField(optional=True, multiple=True)), ("e-mail", RPSLEmailField(multiple=True)), ("nic-hdl", RPSLGenericNameField(primary_key=True, lookup_key=True, non_strict_allow_any=True)), @@ -615,6 +626,7 @@ class RPSLRole(RPSLObject): ("nic-hdl", RPSLGenericNameField(primary_key=True, lookup_key=True, non_strict_allow_any=True)), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -658,6 +670,7 @@ class RPSLRoute(RPSLObject): ("roa-uri", RPSLTextField(optional=True)), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -703,6 +716,7 @@ class RPSLRouteSet(RPSLSet): ), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -746,6 +760,7 @@ class RPSLRoute6(RPSLObject): ("roa-uri", RPSLTextField(optional=True)), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), @@ -803,6 +818,7 @@ class RPSLRtrSet(RPSLSet): ), ("remarks", RPSLTextField(optional=True, multiple=True)), ("notify", RPSLEmailField(optional=True, multiple=True)), + ("org", RPSLReferenceField(lookup_key=True, multiple=True, referring=["organisation"])), ("mnt-by", RPSLReferenceListField(lookup_key=True, multiple=True, referring=["mntner"])), ("changed", RPSLChangedField(optional=True, multiple=True)), ("source", RPSLGenericNameField()), diff --git a/irrd/storage/alembic/versions/f56387c94696_add_org_ref.py b/irrd/storage/alembic/versions/f56387c94696_add_org_ref.py new file mode 100644 index 0000000..12e041a --- /dev/null +++ b/irrd/storage/alembic/versions/f56387c94696_add_org_ref.py @@ -0,0 +1,39 @@ +"""Add org ref + +Revision ID: f56387c94696 +Revises: b7b3c367f9ba +Create Date: 2024-10-28 12:58:32.798679 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'f56387c94696' +down_revision = 'b7b3c367f9ba' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('rpsl_database_journal', 'serial_global', + existing_type=sa.BIGINT(), + nullable=False, + existing_server_default=sa.text("nextval('rpsl_database_journal_serial_global_seq'::regclass)")) + + op.create_index(op.f('ix_rpsl_objects_parsed_data_org'), 'rpsl_objects', + [sa.text("((parsed_data->'org'))")], unique=False, postgresql_using='gin') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('rpsl_database_journal', 'serial_global', + existing_type=sa.BIGINT(), + nullable=True, + existing_server_default=sa.text("nextval('rpsl_database_journal_serial_global_seq'::regclass)")) + + op.drop_index(op.f('ix_rpsl_objects_parsed_data_org'), table_name='rpsl_objects') + # ### end Alembic commands ### diff --git a/irrd/storage/models.py b/irrd/storage/models.py index 97a6f5f..322eae6 100644 --- a/irrd/storage/models.py +++ b/irrd/storage/models.py @@ -655,6 +655,7 @@ def description(self) -> str: "mp-members", "origin", "mbrs-by-ref", + "org", } if sorted(lookup_field_names()) != sorted(expected_lookup_field_names): # pragma: no cover raise RuntimeError(