Skip to content

Commit 154876a

Browse files
committed
Merged in ^/trunk@17782 (just ahead of release 6.130.0)
- Legacy-Id: 17783
2 parents 6d7c5b5 + 4f4c3fd commit 154876a

56 files changed

Lines changed: 1179 additions & 406 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

bin/daily

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,4 @@ $DTDIR/ietf/manage.py fetch_meeting_attendance --latest 2
6161
$DTDIR/ietf/bin/send-review-reminders
6262

6363
# Purge old request_profiler records
64-
$DTDIR/ietf/manage.py purge_request_profiler_records
64+
$DTDIR/ietf/manage.py purge_request_profiler_records -d2

bin/dump-to-names-json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash
2+
3+
# This script provides a limited selected dump of database content with the
4+
# purpose of generating a test fixture that provides the test data needed
5+
# by the test suite.
6+
#
7+
# The generated data fixture is sorted and normalized in order to produce
8+
# minimal commit diffs which reflect only actual changes in the fixture data,
9+
# without apparent changes resulting only from ordering changes.
10+
11+
set -x
12+
ietf/manage.py dumpdata --indent 1 doc.State doc.BallotType doc.StateType \
13+
mailtrigger.MailTrigger mailtrigger.Recipient name utils.VersionInfo \
14+
group.GroupFeatures stats.CountryAlias dbtemplate.DBTemplate \
15+
| jq --sort-keys "sort_by(.model, .pk)" \
16+
| jq '[.[] | select(.model!="dbtemplate.dbtemplate" or .pk==354)]' > ietf/name/fixtures/names.json

bin/every15m

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,5 @@ source $DTDIR/env/bin/activate
1616

1717
logger -p user.info -t cron "Running $DTDIR/bin/every15m"
1818

19-
20-
21-
22-
19+
# Send mail scheduled to go out at certain times
20+
$DTDIR/ietf/bin/send-scheduled-mail all

bin/test-crawl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ def check_html_valid(url, response, args):
138138
key = re.sub("/dir/[a-z0-9-]+/", "/dir/foo/", key)
139139
key = re.sub("/draft-[a-z0-9-]+/", "/draft-foo/", key)
140140
key = re.sub("/group/[a-z0-9-]+/", "/group/foo/", key)
141+
key = re.sub("/html/[a-z0-9-]+", "/html/foo/", key)
141142
key = re.sub("/ipr/search/.*", "/ipr/search/", key)
142143
key = re.sub("/meeting/[-0-9a-z]+/agenda/[0-9a-z]+/", "/meeting/nn/agenda/foo/", key)
143144
key = re.sub("/release/[0-9dev.]+/", "/release/n.n.n/", key)

bin/weekly

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,6 @@ logger -p user.info -t cron "Running $DTDIR/bin/weekly"
2020

2121
$DTDIR/ietf/manage.py send_apikey_usage_emails
2222

23+
# Send notifications about coming expirations
24+
$DTDIR/ietf/bin/notify-expirations
25+

buildbot/masters/datatracker/master.cfg

Lines changed: 56 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,16 @@ c = BuildmasterConfig = {}
2020
# slave name and password must be configured on the slave.
2121
from buildbot.buildslave import BuildSlave
2222
c['slaves'] = [
23-
BuildSlave("datatracker_lin_py27_1", datatracker_lin_py27_1_pw),
24-
BuildSlave("datatracker_lin_py27_2", datatracker_lin_py27_2_pw),
25-
BuildSlave("datatracker_lin_py27_3", datatracker_lin_py27_3_pw),
26-
BuildSlave("datatracker_osx_py27_4", datatracker_osx_py27_4_pw),
27-
BuildSlave("datatracker_lin_py27_5", datatracker_lin_py27_5_pw),
28-
BuildSlave("datatracker_lin_py27_6", datatracker_lin_py27_6_pw),
2923
#
30-
BuildSlave("datatracker_lin_py36_1", datatracker_lin_py36_1_pw),
31-
BuildSlave("datatracker_lin_py36_2", datatracker_lin_py36_2_pw),
32-
BuildSlave("datatracker_lin_py36_3", datatracker_lin_py36_3_pw),
33-
BuildSlave("datatracker_lin_py36_4", datatracker_lin_py36_4_pw),
34-
BuildSlave("datatracker_lin_py36_5", datatracker_lin_py36_5_pw),
35-
BuildSlave("datatracker_lin_py36_6", datatracker_lin_py36_6_pw),
24+
BuildSlave("dunkelfelder_lin_py36_1", dunkelfelder_lin_py36_1_pw),
25+
BuildSlave("dunkelfelder_lin_py36_2", dunkelfelder_lin_py36_2_pw),
26+
BuildSlave("dunkelfelder_lin_py36_3", dunkelfelder_lin_py36_3_pw),
27+
BuildSlave("dunkelfelder_lin_py36_4", dunkelfelder_lin_py36_4_pw),
28+
29+
BuildSlave("dornfelder_lin_py36_1", dornfelder_lin_py36_1_pw),
30+
BuildSlave("dornfelder_lin_py36_2", dornfelder_lin_py36_2_pw),
31+
BuildSlave("dornfelder_lin_py36_3", dornfelder_lin_py36_3_pw),
32+
BuildSlave("dornfelder_lin_py36_4", dornfelder_lin_py36_4_pw),
3633
]
3734

3835
# 'protocols' contains information about protocols which master will use for
@@ -93,7 +90,7 @@ c['schedulers'] = [
9390
# Periodic Schedulers
9491
Nightly(name="lin_test_old_libs", hour=16, minute=12, branch="trunk", builderNames=["Verify Minimum Libs"],),
9592
Nightly(name="lin_test_libs", hour=16, minute=42, branch="trunk", builderNames=["Verify Latest Libs"],),
96-
Nightly(name="crawler", hour=9, minute=00, branch="trunk", onlyIfChanged=True, builderNames=["Test-Crawler"],),
93+
Nightly(name="crawler", hour=23, minute=00, branch="trunk", onlyIfChanged=True, builderNames=["Test-Crawler"],),
9794

9895
# Force schedulers
9996
ForceScheduler(name="force_pyflakes", builderNames=["Check PyFlakes"]),
@@ -311,6 +308,7 @@ c['builders'] = []
311308
# -*- section Builder_Run_pyflakes -*-
312309

313310
factory = BuildFactory()
311+
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
314312
factory.addStep(SVN(
315313
username='buildbot@tools.ietf.org',
316314
descriptionDone="svn update",
@@ -320,7 +318,13 @@ factory.addStep(SVN(
320318
repourl=Interpolate('https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s'),
321319
descriptionSuffix=[Interpolate('%(src::branch)s %(src::revision)s')],
322320
))
323-
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
321+
factory.addStep(ShellCommand(
322+
descriptionDone="install requirements",
323+
workdir=Interpolate('build/%(src::branch)s'),
324+
haltOnFailure=True,
325+
usePTY=False,
326+
command=["pip", "install", "-r", "requirements.txt"],
327+
))
324328
factory.addStep(ShellCommand(
325329
descriptionDone="seting up settings_local.py",
326330
workdir=Interpolate('build/%(src::branch)s'),
@@ -338,21 +342,23 @@ factory.addStep(PyFlakes(
338342
factory.addStep(ShellCommand(
339343
descriptionDone="mark as passed",
340344
workdir=Interpolate('build/%(src::branch)s'),
345+
flunkOnFailure=False,
341346
usePTY=False,
342347
command=["svn", "--username=buildbot@tools.ietf.org", "--non-interactive",
343348
"propset", "--revprop", "-r", Property('got_revision'), "test:pyflakes", "passed" ],
344349
))
345350

346351
c['builders'].append(BuilderConfig(name="Check PyFlakes", factory=factory, category="1. trunk",
347-
slavenames=["datatracker_lin_py36_1", "datatracker_lin_py36_4", ]))
352+
slavenames=["dunkelfelder_lin_py36_1", "dornfelder_lin_py36_1", ]))
348353
c['builders'].append(BuilderConfig(name="[branch] Check PyFlakes", factory=factory, category="2. branch",
349-
slavenames=["datatracker_lin_py36_2", ]))
354+
slavenames=["dunkelfelder_lin_py36_2", "dornfelder_lin_py36_2", ]))
350355
c['builders'].append(BuilderConfig(name="[personal] Check PyFlakes", factory=factory, category="3. personal",
351-
slavenames=["datatracker_lin_py36_3", ]))
356+
slavenames=["dunkelfelder_lin_py36_2",]))
352357

353358
# -*- section Builder_TestSuite -*-
354359

355360
factory = BuildFactory()
361+
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
356362
factory.addStep(SVN(
357363
username='buildbot@tools.ietf.org',
358364
descriptionDone="svn update",
@@ -362,7 +368,7 @@ factory.addStep(SVN(
362368
repourl=Interpolate('https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s'),
363369
descriptionSuffix=[Interpolate('%(src::branch)s %(src::revision)s')],
364370
))
365-
factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s')))
371+
factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s'), usePTY=False))
366372
factory.addStep(ShellCommand(
367373
descriptionDone="remove tmp-* dirs",
368374
workdir=Interpolate('build/%(src::branch)s'),
@@ -377,7 +383,6 @@ factory.addStep(ShellCommand(
377383
usePTY=False,
378384
command=["pip", "install", "-r", "requirements.txt"],
379385
))
380-
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
381386
factory.addStep(ShellCommand(
382387
descriptionDone="copy settings_local.py",
383388
workdir=Interpolate('build/%(src::branch)s'),
@@ -403,22 +408,32 @@ factory.addStep(UnitTest(
403408
factory.addStep(ShellCommand(
404409
descriptionDone="mark as passed",
405410
workdir=Interpolate('build/%(src::branch)s'),
411+
flunkOnFailure=False,
406412
usePTY=False,
407413
command=["svn", "--username=buildbot@tools.ietf.org", "--non-interactive",
408414
"propset", "--revprop", "-r", Property('got_revision'), "test:unittest", "passed" ],
409415
))
410416

411417
c['builders'].append(BuilderConfig(name="Test Suite", factory=factory, category="1. trunk",
412-
slavenames=["datatracker_lin_py36_1", "datatracker_lin_py36_4", ]))
418+
slavenames=["dunkelfelder_lin_py36_1", "dornfelder_lin_py36_1", ]))
413419
c['builders'].append(BuilderConfig(name="[branch] Test Suite", factory=factory, category="2. branch",
414-
slavenames=["datatracker_lin_py36_2", ]))
420+
slavenames=["dunkelfelder_lin_py36_2", "dornfelder_lin_py36_2", ]))
415421
c['builders'].append(BuilderConfig(name="[personal] Test Suite", factory=factory, category="3. personal",
416-
slavenames=["datatracker_lin_py36_3", ]))
422+
slavenames=["dunkelfelder_lin_py36_2", "dornfelder_lin_py36_2", ]))
417423

418424

419425
# -*- section Builder_TestCrawler -*-
420426

421427
factory = BuildFactory()
428+
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
429+
factory.addStep(ShellCommand(
430+
descriptionDone="update database",
431+
workdir=Interpolate('build/%(src::branch)s'),
432+
haltOnFailure=True,
433+
usePTY=False,
434+
timeout=3600, # 1 hour
435+
command=["docker/updatedb", "-q"],
436+
))
422437
factory.addStep(SVN(
423438
username='buildbot@tools.ietf.org',
424439
descriptionDone="svn update",
@@ -428,15 +443,14 @@ factory.addStep(SVN(
428443
repourl=Interpolate('https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s'),
429444
descriptionSuffix=[Interpolate('%(src::branch)s %(src::revision)s')],
430445
))
431-
factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s')))
446+
factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s'), usePTY=False))
432447
factory.addStep(ShellCommand(
433448
descriptionDone="install requirements",
434449
workdir=Interpolate('build/%(src::branch)s'),
435450
haltOnFailure=True,
436451
usePTY=False,
437452
command=["pip", "install", "-r", "requirements.txt"],
438453
))
439-
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
440454
factory.addStep(ShellCommand(
441455
descriptionDone="copy settings_local.py",
442456
workdir=Interpolate('build/%(src::branch)s'),
@@ -451,6 +465,14 @@ factory.addStep(ShellCommand(
451465
usePTY=False,
452466
command=["ietf/manage.py", "migrate"],
453467
))
468+
# This will not only do a prelimnary sanity check, but also patch libs as needed:
469+
factory.addStep(ShellCommand(
470+
descriptionDone="run django checks",
471+
workdir=Interpolate('build/%(src::branch)s'),
472+
haltOnFailure=True,
473+
usePTY=False,
474+
command=["ietf/manage.py", "check"],
475+
))
454476
factory.addStep(TestCrawlerShellCommand(
455477
workdir=Interpolate('build/%(src::branch)s'),
456478
haltOnFailure=True,
@@ -461,13 +483,14 @@ factory.addStep(TestCrawlerShellCommand(
461483
factory.addStep(ShellCommand(
462484
descriptionDone="mark as passed",
463485
workdir=Interpolate('build/%(src::branch)s'),
486+
flunkOnFailure=False,
464487
usePTY=False,
465488
command=["svn", "--username=buildbot@tools.ietf.org", "--non-interactive",
466489
"propset", "--revprop", "-r", Property('got_revision'), "test:crawler", "passed" ],
467490
))
468491

469492
c['builders'].append(BuilderConfig(name="Test-Crawler", factory=factory, category="1. trunk",
470-
slavenames=["datatracker_lin_py36_6", ]))
493+
slavenames=["dunkelfelder_lin_py36_4", ]))
471494

472495

473496
# -*- section Builder_Verify_Old_Libs -*-
@@ -479,6 +502,7 @@ c['builders'].append(BuilderConfig(name="Test-Crawler", factory=factory, categor
479502
# dependencies.
480503

481504
factory = BuildFactory()
505+
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
482506
factory.addStep(ShellCommand(
483507
descriptionDone="remove tweaked requirements",
484508
workdir=Interpolate('build/%(src::branch)s'),
@@ -497,7 +521,7 @@ factory.addStep(SVN(
497521
repourl=Interpolate('https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s'),
498522
descriptionSuffix=[Interpolate('%(src::branch)s %(src::revision)s')],
499523
))
500-
factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s')))
524+
factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s'), usePTY=False))
501525
factory.addStep(ShellCommand(
502526
descriptionDone="edit requirements",
503527
workdir=Interpolate('build/%(src::branch)s'),
@@ -512,7 +536,6 @@ factory.addStep(ShellCommand(
512536
usePTY=False,
513537
command=["pip", "install", "--upgrade", "-r", "requirements.txt"],
514538
))
515-
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
516539
factory.addStep(ShellCommand(
517540
descriptionDone="seting up settings_local.py",
518541
workdir=Interpolate('build/%(src::branch)s'),
@@ -542,10 +565,10 @@ factory.addStep(UnitTest(
542565
command=["ietf/manage.py", "test", "--settings=settings_sqlitetest", "--verbosity=2", ],
543566
))
544567
c['builders'].append(BuilderConfig(name="Verify Minimum Libs", factory=factory, category="1. trunk",
545-
slavenames=["datatracker_lin_py36_5", ]))
568+
slavenames=["dornfelder_lin_py36_3", ]))
546569

547570

548-
# -*- section Builder_Dependencies -*-
571+
# -*- section Verify_Latest_Libs -*-
549572

550573
# This build runs pip install --upgrade, to make sure that we install the latest version of all
551574
# dependencies, in order to get an indication if/when an incompatibility turns up with a new
@@ -554,6 +577,7 @@ c['builders'].append(BuilderConfig(name="Verify Minimum Libs", factory=factory,
554577
# dependencies.
555578

556579
factory = BuildFactory()
580+
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
557581
factory.addStep(SVN(
558582
username='buildbot@tools.ietf.org',
559583
descriptionDone="svn update",
@@ -564,15 +588,14 @@ factory.addStep(SVN(
564588
repourl=Interpolate('https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s'),
565589
descriptionSuffix=[Interpolate('%(src::branch)s %(src::revision)s')],
566590
))
567-
factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s')))
591+
factory.addStep(RemovePYCs(workdir=Interpolate('build/%(src::branch)s'), usePTY=False))
568592
factory.addStep(ShellCommand(
569593
descriptionDone="install/upgrade requirements",
570594
workdir=Interpolate('build/%(src::branch)s'),
571595
haltOnFailure=True,
572596
usePTY=False,
573597
command=["pip", "install", "--upgrade", "-r", "requirements.txt"],
574598
))
575-
factory.addStep(SetPropertiesFromEnv(variables=['HOME',]))
576599
factory.addStep(ShellCommand(
577600
descriptionDone="seting up settings_local.py",
578601
workdir=Interpolate('build/%(src::branch)s'),
@@ -603,7 +626,7 @@ factory.addStep(UnitTest(
603626
))
604627

605628
c['builders'].append(BuilderConfig(name="Verify Latest Libs", factory=factory, category="1. trunk",
606-
slavenames=["datatracker_lin_py36_5", ]))
629+
slavenames=["dornfelder_lin_py36_3", ]))
607630

608631

609632
####### STATUS TARGETS
@@ -673,7 +696,7 @@ c['status'].append(mail.MailNotifier(
673696
# installation's html.WebStatus home page (linked to the
674697
# 'titleURL') and is embedded in the title of the waterfall HTML page.
675698

676-
c['title'] = "IETF Datatracker"
699+
c['title'] = "Buildbot: IETF Datatracker"
677700
c['titleURL'] = "https://datatracker.ietf.org/"
678701

679702
# the 'buildbotURL' string should point to the location where the buildbot's

ietf/doc/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def get_base_name(self):
158158
else:
159159
self._cached_base_name = "%s-%s.txt" % (self.name, self.rev)
160160
elif self.type_id in ["slides", "agenda", "minutes", "bluesheets", ] and self.meeting_related():
161-
self._cached_base_name = "%s-%s.txt" % self.canonical_name()
161+
self._cached_base_name = "%s-%s.txt" % (self.canonical_name(), self.rev)
162162
elif self.type_id == 'review':
163163
# TODO: This will be wrong if a review is updated on the same day it was created (or updated more than once on the same day)
164164
self._cached_base_name = "%s.txt" % self.name

ietf/doc/views_doc.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,9 @@ def document_main(request, name, rev=None):
256256

257257
if "pdf" not in found_types:
258258
file_urls.append(("pdf", settings.TOOLS_ID_PDF_URL + doc.name + "-" + doc.rev + ".pdf"))
259-
file_urls.append(("htmlized", settings.TOOLS_ID_HTML_URL + doc.name + "-" + doc.rev))
259+
#file_urls.append(("htmlized", settings.TOOLS_ID_HTML_URL + doc.name + "-" + doc.rev))
260+
file_urls.append(("htmlized (tools)", settings.TOOLS_ID_HTML_URL + doc.name + "-" + doc.rev))
261+
file_urls.append(("htmlized", urlreverse('ietf.doc.views_doc.document_html', kwargs=dict(name=doc.name, rev=doc.rev))))
260262

261263
# latest revision
262264
latest_revision = doc.latest_event(NewRevisionDocEvent, type="new_revision")
@@ -683,7 +685,7 @@ def document_html(request, name, rev=None):
683685

684686
doc = docs.get()
685687
if not os.path.exists(doc.get_file_name()):
686-
raise Http404("Document not found: %s" % doc.get_base_name())
688+
raise Http404("File not found: %s" % doc.get_file_name())
687689

688690
top = render_document_top(request, doc, "status", name)
689691
if not rev and not name.startswith('rfc'):

ietf/group/factories.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ class Meta:
1818
list_email = factory.LazyAttribute(lambda a: '%s@ietf.org'% a.acronym)
1919
uses_milestone_dates = True
2020

21+
@factory.lazy_attribute
22+
def parent(self):
23+
if self.type_id in ['wg','ag']:
24+
return GroupFactory(type_id='area')
25+
elif self.type_id in ['rg']:
26+
return GroupFactory(acronym='irtf', type_id='irtf')
27+
else:
28+
return None
29+
2130
class ReviewTeamFactory(GroupFactory):
2231

2332
type_id = 'review'
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.29 on 2020-05-04 13:10
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations
6+
import jsonfield.fields
7+
8+
9+
class Migration(migrations.Migration):
10+
11+
dependencies = [
12+
('group', '0023_use_milestone_dates_default_to_true'),
13+
]
14+
15+
operations = [
16+
migrations.AddField(
17+
model_name='groupfeatures',
18+
name='groupman_authroles',
19+
field=jsonfield.fields.JSONField(default=['Secretariat'], max_length=128),
20+
),
21+
migrations.AddField(
22+
model_name='historicalgroupfeatures',
23+
name='groupman_authroles',
24+
field=jsonfield.fields.JSONField(default=['Secretariat'], max_length=128),
25+
),
26+
]

0 commit comments

Comments
 (0)