Skip to content

Commit 85d2cdd

Browse files
committed
Add POST interface for IANA/RFC Editor for triggering updates, add
discrepancies report for seeing differences between the Datatracker/RFC Editor/IANA, add tests of IANA/RFC Editor integration, add script for weekly discrepancies emails - Legacy-Id: 4851
1 parent 5282bd1 commit 85d2cdd

File tree

11 files changed

+716
-0
lines changed

11 files changed

+716
-0
lines changed

ietf/bin/email-sync-discrepancies

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env python
2+
3+
import sys, os
4+
import syslog
5+
6+
# boilerplate
7+
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
8+
sys.path = [ basedir ] + sys.path
9+
10+
from ietf import settings
11+
from django.core import management
12+
management.setup_environ(settings)
13+
14+
15+
from optparse import OptionParser
16+
17+
parser = OptionParser()
18+
parser.add_option("-t", "--to", dest="to",
19+
help="Email address to send report to", metavar="EMAIL")
20+
21+
options, args = parser.parse_args()
22+
23+
24+
syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_LOCAL0)
25+
26+
from ietf.sync.mails import email_discrepancies
27+
28+
receivers = ["iesg-secretary@ietf.org"]
29+
30+
if options.to:
31+
receivers = [options.to]
32+
33+
email_discrepancies(receivers)
34+
35+
syslog.syslog("Emailed sync discrepancies to %s" % receivers)

ietf/sync/discrepancies.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from ietf.doc.models import *
2+
3+
def find_discrepancies():
4+
res = []
5+
6+
title = "Drafts that have been sent to the RFC Editor but do not have an RFC Editor state"
7+
8+
docs = Document.objects.filter(states__in=list(State.objects.filter(type="draft-iesg", slug__in=("ann", "rfcqueue")))).exclude(states__in=list(State.objects.filter(type="draft-rfceditor")))
9+
10+
res.append((title, docs))
11+
12+
title = "Drafts that have the IANA Action state \"In Progress\" but do not have a \"IANA\" RFC-Editor state/tag"
13+
14+
docs = Document.objects.filter(states__in=list(State.objects.filter(type="draft-iana-action", slug__in=("inprog",)))).exclude(tags="iana").exclude(states__in=list(State.objects.filter(type="draft-rfceditor", slug="iana")))
15+
16+
res.append((title, docs))
17+
18+
title = "Drafts that have the IANA Action state \"Waiting on RFC Editor\" or \"RFC-Ed-Ack\" but are in the RFC Editor state \"IANA\"/tagged with \"IANA\""
19+
20+
docs = Document.objects.filter(states__in=list(State.objects.filter(type="draft-iana-action", slug__in=("waitrfc", "rfcedack")))).filter(models.Q(tags="iana") | models.Q(states__in=list(State.objects.filter(type="draft-rfceditor", slug="iana"))))
21+
22+
res.append((title, docs))
23+
24+
title = "Drafts that have a state other than \"RFC Ed Queue\", \"RFC Published\" or \"Sent to the RFC Editor\" and have an RFC Editor or IANA Action state"
25+
26+
docs = Document.objects.exclude(states__in=list(State.objects.filter(type="draft-iesg", slug__in=("rfcqueue", "pub"))) + list(State.objects.filter(type__in=("draft-stream-iab", "draft-stream-ise", "draft-stream-irtf"), slug="rfc-edit"))).filter(states__in=list(State.objects.filter(type__in=("draft-iana-action", "draft-rfceditor"))))
27+
28+
res.append((title, docs))
29+
30+
for _, docs in res:
31+
for d in docs:
32+
d.iesg_state = d.get_state("draft-iesg")
33+
d.rfc_state = d.get_state("draft-rfceditor")
34+
d.iana_action_state = d.get_state("draft-iana-action")
35+
36+
return res
37+

ietf/sync/mails.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from django.core.urlresolvers import reverse as urlreverse
2+
from django.conf import settings
3+
4+
from ietf.utils.mail import send_mail
5+
6+
from ietf.sync.discrepancies import find_discrepancies
7+
8+
def email_discrepancies(receivers):
9+
sections = find_discrepancies()
10+
11+
send_mail(None,
12+
receivers,
13+
None,
14+
"Datatracker Sync Discrepancies Report",
15+
"sync/discrepancies_report.txt",
16+
dict(sections=sections,
17+
url=settings.IDTRACKER_BASE_URL + urlreverse("ietf.sync.views.discrepancies"),
18+
base_url=settings.IDTRACKER_BASE_URL,
19+
))
20+
21+

0 commit comments

Comments
 (0)