mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
+2
-2
@@ -98,7 +98,7 @@ Utilities for geocoding and geo normalization.
|
||||
|
||||
## [import_views.py](/docs/dev/modules/import_views.py.md)
|
||||
|
||||
Define ix-f import preview, review and post-mortem views.
|
||||
Define IX-F import preview, review and post-mortem views.
|
||||
|
||||
## [inet.py](/docs/dev/modules/inet.py.md)
|
||||
|
||||
@@ -112,7 +112,7 @@ Prefix renumbering.
|
||||
|
||||
IX-F importer implementation.
|
||||
|
||||
Handles import of ix-f feeds, creation of suggestions for networks and exchanges
|
||||
Handles import of IX-F feeds, creation of suggestions for networks and exchanges
|
||||
to follow.
|
||||
|
||||
Handles notifications of networks and exchanges as part of that process.
|
||||
|
||||
@@ -41,8 +41,8 @@ Returns:
|
||||
ToolIXFIXPMemberImport(peeringdb_server.admin_commandline_tools.CommandLineToolWrapper)
|
||||
```
|
||||
|
||||
Allows resets for various parts of the ix-f member data import protocol.
|
||||
And import ix-f member data for a single Ixlan at a time.
|
||||
Allows resets for various parts of the IX-F member data import protocol.
|
||||
And import IX-F member data for a single Ixlan at a time.
|
||||
|
||||
|
||||
### Instanced Attributes
|
||||
|
||||
@@ -2,7 +2,7 @@ Generated from import_views.py on 2023-04-12 10:09:44.563425
|
||||
|
||||
# peeringdb_server.import_views
|
||||
|
||||
Define ix-f import preview, review and post-mortem views.
|
||||
Define IX-F import preview, review and post-mortem views.
|
||||
|
||||
# Functions
|
||||
---
|
||||
|
||||
@@ -4,7 +4,7 @@ Generated from ixf.py on 2023-04-12 10:09:44.563425
|
||||
|
||||
IX-F importer implementation.
|
||||
|
||||
Handles import of ix-f feeds, creation of suggestions for networks and exchanges
|
||||
Handles import of IX-F feeds, creation of suggestions for networks and exchanges
|
||||
to follow.
|
||||
|
||||
Handles notifications of networks and exchanges as part of that process.
|
||||
@@ -20,7 +20,7 @@ A substantial part of the import logic is handled through models.py::IXFMemberDa
|
||||
MultipleVlansInPrefix(builtins.ValueError)
|
||||
```
|
||||
|
||||
This error is raised when an ix-f export contains
|
||||
This error is raised when an IX-F export contains
|
||||
multiple vlan ids for the prefixes defined in the processed ixlan.
|
||||
|
||||
Since peeringdb treats each vlan as it's own exchange this currently
|
||||
@@ -42,7 +42,7 @@ Initialize self. See help(type(self)) for accurate signature.
|
||||
PostMortem(builtins.object)
|
||||
```
|
||||
|
||||
Generate postmortem report for ix-f import.
|
||||
Generate postmortem report for IX-F import.
|
||||
|
||||
|
||||
### Methods
|
||||
|
||||
@@ -564,7 +564,7 @@ A copy of all emails sent by the IX-F importer.
|
||||
IXFMemberData(django_peeringdb.models.abstract.NetworkIXLanBase)
|
||||
```
|
||||
|
||||
Describes a potential data update that arose during an ix-f import
|
||||
Describes a potential data update that arose during an IX-F import
|
||||
attempt for a specific member (asn, ip4, ip6) to netixlan
|
||||
(asn, ip4, ip6) where the importer could not complete the
|
||||
update automatically.
|
||||
@@ -615,14 +615,14 @@ this entry.
|
||||
- ix_contacts (`@property`): Returns a list of email addresses that
|
||||
are suitable contact points for conflict resolution
|
||||
at the exchange end.
|
||||
- ixf_id (`@property`): Returns a tuple that identifies the ix-f member
|
||||
- ixf_id (`@property`): Returns a tuple that identifies the IX-F member
|
||||
as a unqiue record by asn, ip4 and ip6 address.
|
||||
- ixf_id_pretty_str (`@property`): None
|
||||
- json (`@property`): Returns dict for self.data
|
||||
- marked_for_removal (`@property`): Returns whether or not this entry implies that
|
||||
the related netixlan should be removed.
|
||||
|
||||
We do this by checking if the ix-f data was provided
|
||||
We do this by checking if the IX-F data was provided
|
||||
or not.
|
||||
- modify_is_rs_peer (`@property`): Returns whether or not the `is_rs_peer` property
|
||||
is enabled to receive modify updates or not (#793).
|
||||
@@ -669,7 +669,7 @@ If an empty dict is returned that means no changes.
|
||||
had data at the IX-F source.
|
||||
|
||||
If not it indicates that it does not exist at the
|
||||
ix-f source.
|
||||
IX-F source.
|
||||
- requirements (`@property`): Returns list of all IXFMemberData objects
|
||||
that are still active requirements for this
|
||||
IXFMemberData object.
|
||||
@@ -887,7 +887,7 @@ instance to ac, ix and net as warranted.
|
||||
#### validate_speed
|
||||
`def validate_speed(self)`
|
||||
|
||||
Speed errors in ix-f data are raised during parse
|
||||
Speed errors in IX-F data are raised during parse
|
||||
and speed will be on the attribute.
|
||||
|
||||
In order to properly handle invalid speed values,
|
||||
@@ -1035,7 +1035,7 @@ the change.
|
||||
These attributes / properties will be available on instances of the class
|
||||
|
||||
- changes (`@property`): Returns a dict of changes between the netixlan version
|
||||
saved by the ix-f import and the version before.
|
||||
saved by the IX-F import and the version before.
|
||||
|
||||
Fields `created`, `updated` and `version` will be ignored.
|
||||
|
||||
@@ -1619,7 +1619,7 @@ DataChangeNotificationQueue
|
||||
- ix_result_name (`@property`): None
|
||||
- ix_sub_result_name (`@property`): None
|
||||
- ixf_id (`@property`): Returns a tuple that identifies the netixlan
|
||||
in the context of an ix-f member data entry as a unqiue record by asn, ip4 and ip6 address.
|
||||
in the context of an IX-F member data entry as a unqiue record by asn, ip4 and ip6 address.
|
||||
- ixf_id_pretty_str (`@property`): None
|
||||
- name (`@property`): None
|
||||
- net_id (`@property`): None
|
||||
@@ -1722,7 +1722,7 @@ NetworkProtocolsDisabled(builtins.ValueError)
|
||||
```
|
||||
|
||||
Raised when a network has both ipv6 and ipv4 support
|
||||
disabled during ix-f import.
|
||||
disabled during IX-F import.
|
||||
|
||||
|
||||
## OAuthApplication
|
||||
|
||||
@@ -298,7 +298,7 @@ object, exposed to api/ix/{id}/{action}
|
||||
#### request_ixf_import
|
||||
`def request_ixf_import(self, request, *args, **kwargs)`
|
||||
|
||||
Allows managers of an ix to request an ix-f import.
|
||||
Allows managers of an ix to request an IX-F import.
|
||||
(#779)
|
||||
|
||||
---
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ PeeringDB specific javascript code can be found in these files:
|
||||
- custom 20c-edit input types
|
||||
- custom 20c-edit editor handlers
|
||||
- data loaders
|
||||
- ix-f post mortem, preview and review tools
|
||||
- IX-F post mortem, preview and review tools
|
||||
- quick search
|
||||
- api key permissions
|
||||
- user permissions
|
||||
|
||||
@@ -1171,24 +1171,24 @@ set_option(
|
||||
|
||||
set_option("IXF_POSTMORTEM_LIMIT", 250)
|
||||
|
||||
# when encountering problems where an exchange's ix-f feed
|
||||
# when encountering problems where an exchange's IX-F feed
|
||||
# becomes unavilable / unparsable this setting controls
|
||||
# the interval in which we communicate the issue to them (hours)
|
||||
set_option("IXF_PARSE_ERROR_NOTIFICATION_PERIOD", 360)
|
||||
|
||||
# toggle the creation of DeskPRO tickets from ix-f importer
|
||||
# toggle the creation of DeskPRO tickets from IX-F importer
|
||||
# conflicts
|
||||
set_option("IXF_TICKET_ON_CONFLICT", True)
|
||||
|
||||
# send the ix-f importer generated tickets to deskpro
|
||||
# send the IX-F importer generated tickets to deskpro
|
||||
set_option("IXF_SEND_TICKETS", False)
|
||||
|
||||
# toggle the notification of exchanges via email
|
||||
# for ix-f importer conflicts
|
||||
# for IX-F importer conflicts
|
||||
set_option("IXF_NOTIFY_IX_ON_CONFLICT", False)
|
||||
|
||||
# toggle the notification of networks via email
|
||||
# for ix-f importer conflicts
|
||||
# for IX-F importer conflicts
|
||||
set_option("IXF_NOTIFY_NET_ON_CONFLICT", False)
|
||||
|
||||
# number of days of a conflict being unresolved before
|
||||
@@ -1208,7 +1208,7 @@ set_option("IXF_REMOVE_STALE_NETIXLAN_NOTIFY_COUNT", 3)
|
||||
set_option("IXF_REMOVE_STALE_NETIXLAN_NOTIFY_PERIOD", 30)
|
||||
|
||||
# on / off toggle for automatic stale netixlan removal
|
||||
# through ix-f (#1271)
|
||||
# through IX-F (#1271)
|
||||
#
|
||||
# default was changed to False as part of #1360
|
||||
set_option("IXF_REMOVE_STALE_NETIXLAN", False)
|
||||
|
||||
@@ -419,8 +419,8 @@ class ToolUndelete(CommandLineToolWrapper):
|
||||
@register_tool
|
||||
class ToolIXFIXPMemberImport(CommandLineToolWrapper):
|
||||
"""
|
||||
Allows resets for various parts of the ix-f member data import protocol.
|
||||
And import ix-f member data for a single Ixlan at a time.
|
||||
Allows resets for various parts of the IX-F member data import protocol.
|
||||
And import IX-F member data for a single Ixlan at a time.
|
||||
"""
|
||||
|
||||
tool = "pdb_ixf_ixp_member_import"
|
||||
@@ -431,7 +431,7 @@ class ToolIXFIXPMemberImport(CommandLineToolWrapper):
|
||||
queryset=InternetExchange.objects.all(),
|
||||
widget=autocomplete.ModelSelect2(url="/autocomplete/ix/json"),
|
||||
help_text=_(
|
||||
"Select an Internet Exchange to perform an ix-f memberdata import"
|
||||
"Select an Internet Exchange to perform an IX-F memberdata import"
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"""
|
||||
Define ix-f import preview, review and post-mortem views.
|
||||
Define IX-F import preview, review and post-mortem views.
|
||||
"""
|
||||
|
||||
import base64
|
||||
|
||||
+16
-16
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
IX-F importer implementation.
|
||||
|
||||
Handles import of ix-f feeds, creation of suggestions for networks and exchanges
|
||||
Handles import of IX-F feeds, creation of suggestions for networks and exchanges
|
||||
to follow.
|
||||
|
||||
Handles notifications of networks and exchanges as part of that process.
|
||||
@@ -61,7 +61,7 @@ REASON_VALUES_CHANGED = _(
|
||||
class MultipleVlansInPrefix(ValueError):
|
||||
|
||||
"""
|
||||
This error is raised when an ix-f export contains
|
||||
This error is raised when an IX-F export contains
|
||||
multiple vlan ids for the prefixes defined in the processed ixlan.
|
||||
|
||||
Since peeringdb treats each vlan as it's own exchange this currently
|
||||
@@ -118,7 +118,7 @@ class Importer:
|
||||
@property
|
||||
def tickets_enabled(self):
|
||||
"""
|
||||
Return whether deskpr ticket creation for ix-f
|
||||
Return whether deskpr ticket creation for IX-F
|
||||
conflicts are enabled or not.
|
||||
|
||||
This can be controlled by the IXF_TICKET_ON_CONFLICT
|
||||
@@ -221,7 +221,7 @@ class Importer:
|
||||
|
||||
def cache_key(self, url):
|
||||
"""
|
||||
Return the django cache key to use for caching ix-f data.
|
||||
Return the django cache key to use for caching IX-F data.
|
||||
|
||||
Argument:
|
||||
|
||||
@@ -377,7 +377,7 @@ class Importer:
|
||||
|
||||
id = vlan.get("vlan_id", 0)
|
||||
|
||||
# the ix-f schema allows setting ipv4 and ipv6 to
|
||||
# the IX-F schema allows setting ipv4 and ipv6 to
|
||||
# null, in which case remove the property
|
||||
|
||||
if "ipv4" in vlan and not vlan.get("ipv4"):
|
||||
@@ -443,13 +443,13 @@ class Importer:
|
||||
# handle `null` properties inside connection list
|
||||
|
||||
for conn in member.get("connection_list", []):
|
||||
# handle case where ix-f feed has set `vlan_list` to `null` (#1244)
|
||||
# handle case where IX-F feed has set `vlan_list` to `null` (#1244)
|
||||
# treat same as if it wasn't set at all
|
||||
|
||||
if conn.get("vlan_list", []) is None:
|
||||
conn.pop("vlan_list")
|
||||
|
||||
# handle case where ix-f feed has set `if_list` to `null` (#1244)
|
||||
# handle case where IX-F feed has set `if_list` to `null` (#1244)
|
||||
# treat same as if it wasn't set at all
|
||||
|
||||
if conn.get("if_list", []) is None:
|
||||
@@ -558,7 +558,7 @@ class Importer:
|
||||
self.log_error(f"Internal Error 'KeyError': {exc}", save=save)
|
||||
return False
|
||||
|
||||
# null ix-f error note on ixlan if it had error'd before
|
||||
# null IX-F error note on ixlan if it had error'd before
|
||||
if self.ixlan.ixf_ixp_import_error:
|
||||
with transaction.atomic():
|
||||
with reversion.create_revision():
|
||||
@@ -752,7 +752,7 @@ class Importer:
|
||||
|
||||
qset = qset.filter(asn=self.asn)
|
||||
|
||||
# clean up old ix-f memeber data objects
|
||||
# clean up old IX-F memeber data objects
|
||||
|
||||
for ixf_member in qset:
|
||||
# proposed deletion got fulfilled
|
||||
@@ -773,7 +773,7 @@ class Importer:
|
||||
self.queue_notification(ixf_member, "resolved")
|
||||
|
||||
# proposed change / addition is now gone from
|
||||
# ix-f data
|
||||
# IX-F data
|
||||
|
||||
elif not self.skip_import and ixf_member.ixf_id not in self.ixf_ids:
|
||||
if ixf_member.action in ["add", "modify"]:
|
||||
@@ -844,7 +844,7 @@ class Importer:
|
||||
if self.asn and asn != self.asn:
|
||||
continue
|
||||
|
||||
# keep track of asns we find in the ix-f data
|
||||
# keep track of asns we find in the IX-F data
|
||||
if asn not in self.asns:
|
||||
self.asns.append(asn)
|
||||
|
||||
@@ -1907,8 +1907,8 @@ class Importer:
|
||||
if ixf_member_data.requirement_of_id:
|
||||
continue
|
||||
|
||||
# check the date of when the ix-f information that suggests
|
||||
# the netixlan removal was last seen in the ix-f data.
|
||||
# check the date of when the IX-F information that suggests
|
||||
# the netixlan removal was last seen in the IX-F data.
|
||||
# ignore any that were not seen the last time the importer ran
|
||||
#
|
||||
# this is to catch edge cases where the ix has had i turned off
|
||||
@@ -1980,8 +1980,8 @@ class Importer:
|
||||
if ixf_member_data.requirement_of_id:
|
||||
continue
|
||||
|
||||
# check the date of when the ix-f information that suggests
|
||||
# the netixlan removal was last seen in the ix-f data.
|
||||
# check the date of when the IX-F information that suggests
|
||||
# the netixlan removal was last seen in the IX-F data.
|
||||
# ignore any that were not seen the last time the importer ran
|
||||
#
|
||||
# this is to catch edge cases where the ix has had i turned off
|
||||
@@ -2212,7 +2212,7 @@ class Importer:
|
||||
class PostMortem:
|
||||
|
||||
"""
|
||||
Generate postmortem report for ix-f import.
|
||||
Generate postmortem report for IX-F import.
|
||||
"""
|
||||
|
||||
def reset(self, asn, **kwargs):
|
||||
|
||||
@@ -55,7 +55,7 @@ class Migration(migrations.Migration):
|
||||
"data",
|
||||
models.TextField(
|
||||
default="{}",
|
||||
help_text="JSON snapshot of the ix-f member data that created this entry",
|
||||
help_text="JSON snapshot of the IX-F member data that created this entry",
|
||||
),
|
||||
),
|
||||
(
|
||||
|
||||
@@ -31,7 +31,7 @@ class Migration(migrations.Migration):
|
||||
("finished", "Finished"),
|
||||
],
|
||||
default="queued",
|
||||
help_text="The current status of the manual ix-f import request",
|
||||
help_text="The current status of the manual IX-F import request",
|
||||
max_length=32,
|
||||
verbose_name="Manual IX-F import status",
|
||||
),
|
||||
@@ -41,7 +41,7 @@ class Migration(migrations.Migration):
|
||||
name="ixf_import_request_user",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
help_text="The user that triggered the manual ix-f import request",
|
||||
help_text="The user that triggered the manual IX-F import request",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="requested_ixf_imports",
|
||||
|
||||
@@ -22,7 +22,7 @@ class Migration(migrations.Migration):
|
||||
("error", "Import failed"),
|
||||
],
|
||||
default="queued",
|
||||
help_text="The current status of the manual ix-f import request",
|
||||
help_text="The current status of the manual IX-F import request",
|
||||
max_length=32,
|
||||
verbose_name="Manual IX-F import status",
|
||||
),
|
||||
|
||||
+13
-13
@@ -2206,7 +2206,7 @@ class InternetExchange(
|
||||
|
||||
ixf_import_request_status = models.CharField(
|
||||
_("Manual IX-F import status"),
|
||||
help_text=_("The current status of the manual ix-f import request"),
|
||||
help_text=_("The current status of the manual IX-F import request"),
|
||||
choices=(
|
||||
("queued", _("Queued")),
|
||||
("importing", _("Importing")),
|
||||
@@ -2221,7 +2221,7 @@ class InternetExchange(
|
||||
"peeringdb_server.User",
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text=_("The user that triggered the manual ix-f import request"),
|
||||
help_text=_("The user that triggered the manual IX-F import request"),
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="requested_ixf_imports",
|
||||
)
|
||||
@@ -3388,7 +3388,7 @@ class IXLanIXFMemberImportLogEntry(models.Model):
|
||||
def changes(self):
|
||||
"""
|
||||
Returns a dict of changes between the netixlan version
|
||||
saved by the ix-f import and the version before.
|
||||
saved by the IX-F import and the version before.
|
||||
|
||||
Fields `created`, `updated` and `version` will be ignored.
|
||||
"""
|
||||
@@ -3429,14 +3429,14 @@ class IXLanIXFMemberImportLogEntry(models.Model):
|
||||
class NetworkProtocolsDisabled(ValueError):
|
||||
"""
|
||||
Raised when a network has both ipv6 and ipv4 support
|
||||
disabled during ix-f import.
|
||||
disabled during IX-F import.
|
||||
"""
|
||||
|
||||
|
||||
class IXFMemberData(pdb_models.NetworkIXLanBase):
|
||||
|
||||
"""
|
||||
Describes a potential data update that arose during an ix-f import
|
||||
Describes a potential data update that arose during an IX-F import
|
||||
attempt for a specific member (asn, ip4, ip6) to netixlan
|
||||
(asn, ip4, ip6) where the importer could not complete the
|
||||
update automatically.
|
||||
@@ -3445,7 +3445,7 @@ class IXFMemberData(pdb_models.NetworkIXLanBase):
|
||||
data = models.TextField(
|
||||
null=False,
|
||||
default="{}",
|
||||
help_text=_("JSON snapshot of the ix-f member data that " "created this entry"),
|
||||
help_text=_("JSON snapshot of the IX-F member data that " "created this entry"),
|
||||
)
|
||||
|
||||
log = models.TextField(blank=True, help_text=_("Activity for this entry"))
|
||||
@@ -3513,7 +3513,7 @@ class IXFMemberData(pdb_models.NetworkIXLanBase):
|
||||
)
|
||||
|
||||
# field names of fields that can receive
|
||||
# modifications from ix-f
|
||||
# modifications from IX-F
|
||||
|
||||
data_fields = [
|
||||
"speed",
|
||||
@@ -3896,7 +3896,7 @@ class IXFMemberData(pdb_models.NetworkIXLanBase):
|
||||
@property
|
||||
def ixf_id(self):
|
||||
"""
|
||||
Returns a tuple that identifies the ix-f member
|
||||
Returns a tuple that identifies the IX-F member
|
||||
as a unqiue record by asn, ip4 and ip6 address.
|
||||
"""
|
||||
|
||||
@@ -4035,7 +4035,7 @@ class IXFMemberData(pdb_models.NetworkIXLanBase):
|
||||
had data at the IX-F source.
|
||||
|
||||
If not it indicates that it does not exist at the
|
||||
ix-f source.
|
||||
IX-F source.
|
||||
"""
|
||||
|
||||
return self.data == "{}" or not self.data
|
||||
@@ -4046,7 +4046,7 @@ class IXFMemberData(pdb_models.NetworkIXLanBase):
|
||||
Returns whether or not this entry implies that
|
||||
the related netixlan should be removed.
|
||||
|
||||
We do this by checking if the ix-f data was provided
|
||||
We do this by checking if the IX-F data was provided
|
||||
or not.
|
||||
"""
|
||||
|
||||
@@ -4372,7 +4372,7 @@ class IXFMemberData(pdb_models.NetworkIXLanBase):
|
||||
|
||||
def validate_speed(self):
|
||||
"""
|
||||
Speed errors in ix-f data are raised during parse
|
||||
Speed errors in IX-F data are raised during parse
|
||||
and speed will be on the attribute.
|
||||
|
||||
In order to properly handle invalid speed values,
|
||||
@@ -4505,7 +4505,7 @@ class IXFMemberData(pdb_models.NetworkIXLanBase):
|
||||
"""
|
||||
self.reason = reason
|
||||
|
||||
# we perist this ix-f member data that proposes removal
|
||||
# we perist this IX-F member data that proposes removal
|
||||
# if any of these conditions are met
|
||||
|
||||
# marked for removal, but not saved
|
||||
@@ -5297,7 +5297,7 @@ class NetworkIXLan(pdb_models.NetworkIXLanBase, ParentStatusCheckMixin):
|
||||
def ixf_id(self):
|
||||
"""
|
||||
Returns a tuple that identifies the netixlan
|
||||
in the context of an ix-f member data entry as a unqiue record by asn, ip4 and ip6 address.
|
||||
in the context of an IX-F member data entry as a unqiue record by asn, ip4 and ip6 address.
|
||||
"""
|
||||
|
||||
self.network
|
||||
|
||||
@@ -891,7 +891,7 @@ class InternetExchangeMixin:
|
||||
@action(detail=True, methods=["POST"], throttle_classes=[IXFImportThrottle])
|
||||
def request_ixf_import(self, request, *args, **kwargs):
|
||||
"""
|
||||
Allows managers of an ix to request an ix-f import.
|
||||
Allows managers of an ix to request an IX-F import.
|
||||
(#779)
|
||||
"""
|
||||
|
||||
|
||||
@@ -13059,7 +13059,7 @@ paths:
|
||||
type: date-time
|
||||
- name: ixf_import_request_status
|
||||
in: query
|
||||
description: 'The current status of the manual ix-f import request
|
||||
description: 'The current status of the manual IX-F import request
|
||||
|
||||
|
||||
Filter results by matching a value against this field.
|
||||
@@ -13074,7 +13074,7 @@ paths:
|
||||
type: string
|
||||
- name: ixf_import_request_user
|
||||
in: query
|
||||
description: 'The user that triggered the manual ix-f import request
|
||||
description: 'The user that triggered the manual IX-F import request
|
||||
|
||||
|
||||
Filter results by matching a value against this field.
|
||||
@@ -14738,7 +14738,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -15653,7 +15653,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -16521,7 +16521,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -17214,7 +17214,7 @@ paths:
|
||||
type: date-time
|
||||
- name: ix__ixf_import_request_status
|
||||
in: query
|
||||
description: 'The current status of the manual ix-f import request
|
||||
description: 'The current status of the manual IX-F import request
|
||||
|
||||
|
||||
Filter results by matching a value against this field.
|
||||
@@ -18393,7 +18393,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -20592,7 +20592,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -22743,7 +22743,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -24320,7 +24320,7 @@ paths:
|
||||
type: date-time
|
||||
- name: ix__ixf_import_request_status
|
||||
in: query
|
||||
description: 'The current status of the manual ix-f import request
|
||||
description: 'The current status of the manual IX-F import request
|
||||
|
||||
|
||||
Filter results by matching a value against this field.
|
||||
@@ -25606,7 +25606,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -26948,7 +26948,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import
|
||||
description: The current status of the manual IX-F import
|
||||
request
|
||||
service_level:
|
||||
enum:
|
||||
@@ -27974,7 +27974,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import
|
||||
description: The current status of the manual IX-F import
|
||||
request
|
||||
service_level:
|
||||
enum:
|
||||
@@ -28952,7 +28952,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import
|
||||
description: The current status of the manual IX-F import
|
||||
request
|
||||
service_level:
|
||||
enum:
|
||||
@@ -44499,7 +44499,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import
|
||||
description: The current status of the manual IX-F import
|
||||
request
|
||||
service_level:
|
||||
enum:
|
||||
@@ -46189,7 +46189,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import
|
||||
description: The current status of the manual IX-F import
|
||||
request
|
||||
service_level:
|
||||
enum:
|
||||
@@ -47830,7 +47830,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import
|
||||
description: The current status of the manual IX-F import
|
||||
request
|
||||
service_level:
|
||||
enum:
|
||||
@@ -54600,7 +54600,7 @@ paths:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -58990,7 +58990,7 @@ components:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -59823,7 +59823,7 @@ components:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -61913,7 +61913,7 @@ components:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -62811,7 +62811,7 @@ components:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
@@ -67641,7 +67641,7 @@ components:
|
||||
- finished
|
||||
- error
|
||||
type: string
|
||||
description: The current status of the manual ix-f import request
|
||||
description: The current status of the manual IX-F import request
|
||||
service_level:
|
||||
enum:
|
||||
- ''
|
||||
|
||||
@@ -1084,7 +1084,7 @@ PeeringDB.IXFPreview = twentyc.cls.define(
|
||||
|
||||
render_data : function(data, renderTo) {
|
||||
/**
|
||||
* Renders the changes made by the ix-f import, called automatically
|
||||
* Renders the changes made by the IX-F import, called automatically
|
||||
* by `render`
|
||||
*
|
||||
* @method render_data
|
||||
@@ -1151,7 +1151,7 @@ PeeringDB.IXFNetPreview = twentyc.cls.extend(
|
||||
|
||||
render_data : function(data, renderTo) {
|
||||
/**
|
||||
* Renders the changes made by the ix-f import, called automatically
|
||||
* Renders the changes made by the IX-F import, called automatically
|
||||
* by `render`
|
||||
*
|
||||
* @method render_data
|
||||
@@ -1230,7 +1230,7 @@ PeeringDB.IXFNetPostmortem = twentyc.cls.extend(
|
||||
|
||||
render_data : function(data, renderTo) {
|
||||
/**
|
||||
* Renders the changes made by the ix-f import, called automatically
|
||||
* Renders the changes made by the IX-F import, called automatically
|
||||
* by `render`
|
||||
*
|
||||
* @method render_data
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
The ix-f data for this entry has changes
|
||||
The IX-F data for this entry has changes
|
||||
{% for name, value in instance.remote_changes.items %}
|
||||
- {{ name }}: {{ value.from }} to {{ value.to }}
|
||||
{% endfor %}
|
||||
{% if recipient=="net" %}
|
||||
Your network currently has automatic ix-f updates disabled. You may review and manually accept this proposed change at <a href="{{ instance.net_url }}" target="_blank">{{ instance.net_url }}</a>
|
||||
Your network currently has automatic IX-F updates disabled. You may review and manually accept this proposed change at <a href="{{ instance.net_url }}" target="_blank">{{ instance.net_url }}</a>
|
||||
{% endif %}
|
||||
|
||||
{% if ixf_url_public %}- IX-F Data: <a href="{{ ixf_url }}" target="_blank">{{ ixf_url }}</a>{% endif %}
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
<div class="ixf-result"></div>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane ixf-errors" id="ixf-errors">
|
||||
<div>{% blocktrans %}Sometimes we encounter some errors when parsing ix-f data, these will usually affect the import, you can view any of those errors below{% endblocktrans %}</div>
|
||||
<div>{% blocktrans %}Sometimes we encounter some errors when parsing IX-F data, these will usually affect the import, you can view any of those errors below{% endblocktrans %}</div>
|
||||
<div class="ixf-errors-list"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
<div class="ixf-result"></div>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane ixf-errors" id="ixf-errors">
|
||||
<div>{% blocktrans %}Sometimes we encounter some errors when parsing ix-f data, these will usually affect the import, you can view any of those errors below{% endblocktrans %}</div>
|
||||
<div>{% blocktrans %}Sometimes we encounter some errors when parsing IX-F data, these will usually affect the import, you can view any of those errors below{% endblocktrans %}</div>
|
||||
<div class="ixf-errors-list"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+2
-2
@@ -616,7 +616,7 @@ class AdminTests(TestCase):
|
||||
# create partnership we can check
|
||||
_ = models.Partnership.objects.create(org=org)
|
||||
|
||||
# create ixlan ix-f import log we can check
|
||||
# create ixlan IX-F import log we can check
|
||||
ixfmemberdata = models.IXFMemberData.instantiate(
|
||||
ixlan=models.NetworkIXLan.objects.first().ixlan,
|
||||
ipaddr4=models.NetworkIXLan.objects.first().ipaddr4,
|
||||
@@ -625,7 +625,7 @@ class AdminTests(TestCase):
|
||||
)
|
||||
ixfmemberdata.save()
|
||||
|
||||
# create ixlan ix-f import log we can check
|
||||
# create ixlan IX-F import log we can check
|
||||
_ = models.IXLanIXFMemberImportLog.objects.create(
|
||||
ixlan=models.IXLan.objects.all().first()
|
||||
)
|
||||
|
||||
@@ -208,7 +208,7 @@ def test_resolve_local_ixf_stale_netixlan(entities, use_ip, save):
|
||||
if not save:
|
||||
return assert_idempotent(importer, ixlan, data, save=False)
|
||||
|
||||
# first update should not remove the netixlan or ix-f entry
|
||||
# first update should not remove the netixlan or IX-F entry
|
||||
# since the notification count requirement is not met
|
||||
|
||||
importer.update(ixlan, data=data)
|
||||
@@ -230,7 +230,7 @@ def test_resolve_local_ixf_stale_netixlan(entities, use_ip, save):
|
||||
# this initial ixf import will send two additional emails (one to the net, one to the ix)
|
||||
# due to protocol mismatch which we need to account for here - this is due to the test
|
||||
# data which is not otherwise relevant to this test, but
|
||||
# needs to be there for the ix-f import to be valid
|
||||
# needs to be there for the IX-F import to be valid
|
||||
#
|
||||
# then we also expect one re-notificaiton email about the stale network
|
||||
|
||||
@@ -241,7 +241,7 @@ def test_resolve_local_ixf_stale_netixlan(entities, use_ip, save):
|
||||
assert IXFImportEmail.objects.count() == 1
|
||||
|
||||
# now notification count rquirement is set to the required amount
|
||||
# stale netixlan and ix-f entry should be removed
|
||||
# stale netixlan and IX-F entry should be removed
|
||||
|
||||
ixm.extra_notifications_net_num = settings.IXF_REMOVE_STALE_NETIXLAN_NOTIFY_COUNT
|
||||
ixm.save()
|
||||
@@ -325,7 +325,7 @@ def test_resolve_local_ixf_stale_netixlan_import_disabled(entities, use_ip, save
|
||||
if not save:
|
||||
return assert_idempotent(importer, ixlan, data, save=False)
|
||||
|
||||
# first update should not remove the netixlan or ix-f entry
|
||||
# first update should not remove the netixlan or IX-F entry
|
||||
# since the notification count requirement is not met
|
||||
|
||||
importer.update(ixlan, data=data)
|
||||
@@ -347,7 +347,7 @@ def test_resolve_local_ixf_stale_netixlan_import_disabled(entities, use_ip, save
|
||||
# this initial ixf import will send two additional emails (one to the net, one to the ix)
|
||||
# due to protocol mismatch which we need to account for here - this is due to the test
|
||||
# data which is not otherwise relevant to this test, but
|
||||
# needs to be there for the ix-f import to be valid
|
||||
# needs to be there for the IX-F import to be valid
|
||||
#
|
||||
# then we also expect one re-notificaiton email about the stale network
|
||||
|
||||
@@ -445,7 +445,7 @@ def test_resolve_local_ixf_stale_netixlan_removal_disabled(entities, save):
|
||||
if not save:
|
||||
return assert_idempotent(importer, ixlan, data, save=False)
|
||||
|
||||
# first update should not remove the netixlan or ix-f entry
|
||||
# first update should not remove the netixlan or IX-F entry
|
||||
|
||||
importer.update(ixlan, data=data)
|
||||
importer.notify_proposals()
|
||||
@@ -888,7 +888,7 @@ def test_suggest_modify_local_ixf(entities, use_ip, save):
|
||||
elif (network.ipv4_support and network.ipv6_support and not use_ip(4)) or (
|
||||
network.ipv6_support and network.ipv4_support and not use_ip(6)
|
||||
):
|
||||
# network supports both protocols, old ix-f data only has one
|
||||
# network supports both protocols, old IX-F data only has one
|
||||
# of the ips set, suggest adding the other
|
||||
# #770 #771
|
||||
|
||||
@@ -1586,13 +1586,13 @@ def test_suggest_add_delete(entities, use_ip_alt, save):
|
||||
network = entities["net"]["UPDATE_DISABLED"] # asn1001
|
||||
ixlan = entities["ixlan"][0]
|
||||
|
||||
# remove ip from ix-f data as per use_ip_alt fixture
|
||||
# remove ip from IX-F data as per use_ip_alt fixture
|
||||
if not use_ip_alt(4):
|
||||
del data["member_list"][0]["connection_list"][0]["vlan_list"][0]["ipv4"]
|
||||
elif not use_ip_alt(6):
|
||||
del data["member_list"][0]["connection_list"][0]["vlan_list"][0]["ipv6"]
|
||||
|
||||
# we don't want the extra ix-f entry for this test
|
||||
# we don't want the extra IX-F entry for this test
|
||||
del data["member_list"][0]["connection_list"][1]
|
||||
|
||||
# This appears in the remote-ixf data so should not
|
||||
@@ -3602,7 +3602,7 @@ def entities_base():
|
||||
|
||||
for ixlan in entities["ixlan"]:
|
||||
ixlan.ixf_ixp_import_enabled = True
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/ix-f"
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/IX-F"
|
||||
ixlan.save()
|
||||
|
||||
# create ixlan prefix(s)
|
||||
|
||||
@@ -449,7 +449,7 @@ def entities():
|
||||
|
||||
for ixlan in entities["ixlan"]:
|
||||
ixlan.ixf_ixp_import_enabled = True
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/ix-f"
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/IX-F"
|
||||
ixlan.save()
|
||||
|
||||
# create ixlan prefix(s)
|
||||
|
||||
+15
-15
@@ -416,7 +416,7 @@ def test_ghost_peer_vs_real_peer_one_netixlan():
|
||||
asn=1010, name="AS1010", status="ok", org=org
|
||||
)
|
||||
ixlan = ix.ixlan
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/ix-f"
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/IX-F"
|
||||
ixlan.save()
|
||||
|
||||
IXLanPrefix.objects.create(
|
||||
@@ -448,20 +448,20 @@ def test_ghost_peer_vs_real_peer_one_netixlan():
|
||||
operational=False,
|
||||
)
|
||||
|
||||
# setup ix-f cache
|
||||
# setup IX-F cache
|
||||
|
||||
data = setup_test_data("ixf.member.1")
|
||||
cache.set(f"IXF-CACHE-{ix.ixlan.ixf_ixp_member_list_url}", data)
|
||||
|
||||
ix = ixlan.ix
|
||||
|
||||
# real peer should exist in ix-f data
|
||||
# real peer should exist in IX-F data
|
||||
|
||||
real4, real6 = ix.peer_exists_in_ixf_data(1001, IP4, IP6)
|
||||
assert real4
|
||||
assert real6
|
||||
|
||||
# ghost peer should NOT exist in ix-f data
|
||||
# ghost peer should NOT exist in IX-F data
|
||||
|
||||
ghost4, ghost6 = ix.peer_exists_in_ixf_data(1010, IP4, IP6)
|
||||
assert not ghost4
|
||||
@@ -513,7 +513,7 @@ def test_ghost_peer_vs_real_peer_two_netixlan():
|
||||
asn=1010, name="AS1010", status="ok", org=org
|
||||
)
|
||||
ixlan = ix.ixlan
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/ix-f"
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/IX-F"
|
||||
ixlan.save()
|
||||
|
||||
IXLanPrefix.objects.create(
|
||||
@@ -557,20 +557,20 @@ def test_ghost_peer_vs_real_peer_two_netixlan():
|
||||
operational=False,
|
||||
)
|
||||
|
||||
# setup ix-f data
|
||||
# setup IX-F data
|
||||
|
||||
data = setup_test_data("ixf.member.1")
|
||||
cache.set(f"IXF-CACHE-{ix.ixlan.ixf_ixp_member_list_url}", data)
|
||||
|
||||
ix = ixlan.ix
|
||||
|
||||
# real peer should exist in ix-f data
|
||||
# real peer should exist in IX-F data
|
||||
|
||||
real4, real6 = ix.peer_exists_in_ixf_data(1001, IP4, IP6)
|
||||
assert real4
|
||||
assert real6
|
||||
|
||||
# ghost peer should NOT exist in ix-f data
|
||||
# ghost peer should NOT exist in IX-F data
|
||||
|
||||
ghost4, ghost6 = ix.peer_exists_in_ixf_data(1010, IP4, IP6)
|
||||
assert not ghost4
|
||||
@@ -623,7 +623,7 @@ def test_ghost_peer_vs_real_peer_two_netixlan_partial():
|
||||
asn=1010, name="AS1010", status="ok", org=org
|
||||
)
|
||||
ixlan = ix.ixlan
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/ix-f"
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/IX-F"
|
||||
ixlan.save()
|
||||
|
||||
IXLanPrefix.objects.create(
|
||||
@@ -667,20 +667,20 @@ def test_ghost_peer_vs_real_peer_two_netixlan_partial():
|
||||
operational=False,
|
||||
)
|
||||
|
||||
# setup ix-f data
|
||||
# setup IX-F data
|
||||
|
||||
data = setup_test_data("ixf.member.1")
|
||||
cache.set(f"IXF-CACHE-{ix.ixlan.ixf_ixp_member_list_url}", data)
|
||||
|
||||
ix = ixlan.ix
|
||||
|
||||
# real peer should exist in ix-f data
|
||||
# real peer should exist in IX-F data
|
||||
|
||||
real4, real6 = ix.peer_exists_in_ixf_data(1001, IP4, IP6)
|
||||
assert real4
|
||||
assert real6
|
||||
|
||||
# ghost peer should NOT exist in ix-f data
|
||||
# ghost peer should NOT exist in IX-F data
|
||||
|
||||
ghost4, ghost6 = ix.peer_exists_in_ixf_data(1010, IP4, IP6)
|
||||
assert not ghost4
|
||||
@@ -724,7 +724,7 @@ def test_ghost_peer_vs_real_peer_invalid_ixf_data():
|
||||
"""
|
||||
Tests that a real peer can claim the ip addresses of a gohst peer. #983
|
||||
|
||||
Test the handling of invalid ix-f data, in which case the ghost peer vs real peer
|
||||
Test the handling of invalid IX-F data, in which case the ghost peer vs real peer
|
||||
logic should be skipped.
|
||||
"""
|
||||
|
||||
@@ -737,7 +737,7 @@ def test_ghost_peer_vs_real_peer_invalid_ixf_data():
|
||||
asn=1010, name="AS1010", status="ok", org=org
|
||||
)
|
||||
ixlan = ix.ixlan
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/ix-f"
|
||||
ixlan.ixf_ixp_member_list_url = "https://localhost/IX-F"
|
||||
ixlan.save()
|
||||
|
||||
IXLanPrefix.objects.create(
|
||||
@@ -768,7 +768,7 @@ def test_ghost_peer_vs_real_peer_invalid_ixf_data():
|
||||
is_rs_peer=False,
|
||||
operational=False,
|
||||
)
|
||||
# setup ix-f data
|
||||
# setup IX-F data
|
||||
|
||||
cache.set(f"IXF-CACHE-{ix.ixlan.ixf_ixp_member_list_url}", {"invalid": "data"})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user