Added an INSTALL file which holds a record of general and version-specific actions needed to install.

- Legacy-Id: 5304
This commit is contained in:
Henrik Levkowetz 2013-01-20 15:19:31 +00:00
commit 37955bf2a6
3 changed files with 161 additions and 2 deletions

158
INSTALL Normal file
View file

@ -0,0 +1,158 @@
=====================================
Datatracker Installation Instructions
=====================================
General Instructions for Deployment of a New Release
====================================================
In order to fetch a new release of the django datatracker code, simply
check out the appropriate tag from svn::
svn co http://svn.tools.ietf.org/svn/tools/ietfdb/tags/$releasenumber
Don't forget to copy $releasenumber/ietf/settings_local.py from the
old release to the new one; otherwise things won't work!
::
cp $oldreleasenumber/ietf/settings_local.py $releasenumber/ietf/
Change into the directory of the new release and run migrations::
cd $releasenumber
PYTHONPATH=$PWD ietf/manage.py migrate
cd ..
and then re-point the 'web' symlink::
rm ./web; ln -s $releasenumber web
and finally restart apache::
sudo /etc/init.d/apache2 restart
Installing from Scratch
=======================
In addition to the new release deployment instructions above, the settings_local.py
file has to be set up properly, and Apache has to be configured. Since the IETF
datatracker is only intended to be deployed from scratch once, these instructions
don't cover this. The general Django depoloyment instructions are relevant, however.
Additional Version-Specific Instructions
========================================
Version 4.40
------------
- (DONE) Add ianasync user with an auth role in the "iana" group and an
rfceditorsync user with an auth role in the "rfceditor" group (don't
think Group(acronym="rfceditor") exists yet); IANA and RFC Editor need
to know the passwords for the poke mechanism
- (DONE) Make sure mailing list for iab-stream@iab.org is up (since we're now
emailing that)
- Set rfc_must_published_later_than date in bin/iana-protocols-updates to today
- Run the 3 new doc South migrations
- New polling scripts, to be run every hour::
web/ietf/bin/iana-changes-updates
web/ietf/bin/iana-protocols-updates
web/ietf/bin/rfc-editor-index-updates (replaces mirror_rfc_index)
web/ietf/bin/rfc-editor-queue-updates (replaces mirror_rfc_queue)
- Import old events from IANA::
bin/iana-changes-updates --from="2005-01-01 00:00:00" --to="2013-01-31 00:00:00" --no-email
- Pipe IANA review emails to the datatracker. There used to be an action to pipe
such mails to henrik@levkowetz.com, for testing this feature, but I haven't seen
any in a little while, so I don't know if this has broken. Anyway, the iana review
emails should be piped into::
/www/ietf-datatracker/web/ietf/bin/iana-review-email
- Tell IANA we're doing this for real now:
* Probably need another URL in sync/iana.py instead of the :8080 test one
* Need them to provide a real IANA sync password for auth with their
server (put that in settings_local.py)
* They need to poke the live server rather than my test server
* Tell Michelle Cotton that we are now processing emails so they don't
have to enter comments manually
* Also, they never explained what to do about the review states (IANA
OK/not OK). So it's not automatically updated (no source to update
from) and I didn't disable it. But they can set it manually for the
time being, e.g.::
http://statesync.ietf.beta.iola.dk/doc/draft-ietf-geopriv-policy-uri/edit/state/iana-review/
* Once a draft has a IANA review state, it turns into an edit link (if
you're in IANA or the Secretariat), so it should merely be a question
of going to the draft page, clicking the link and saving the new
state. Drafts automatically get a IANA Review Needed state in the
future.
Version 4.34
------------
The migration step you do as a part of the release sequence is going to take
quite some time -- probably minutes. It will generate some output while it's
working, too. As long as it doesn't halt and say that something failed or
gave an error, this is as expected, and when it terminates, you should be OK
to continue.
Version 4.21
------------
This release will you to run migrations before moving the link to the new
version and doing the apache reload. I know you have a routine for the steps
needed to deploy a new release by now, but thought I'd mention it, anyway.
If there is any problem at all doing the migrations, then you'll need to
do a fake initial migration, as follows::
web $ PYTHONPATH=PWD ietf/manage.py migrate --fake meeting 0001
and then to the regular migration again.
Version 4.20
------------
Some one-time actions that need to be taken are as follows::
Assuming that the release has been checked out in /a/www/ietf-datatracker/4.20:
cd /a/www/ietf-datatracker/4.20
PYTHONPATH=$PWD ietf/manage.py migrate --fake doc 0001
PYTHONPATH=$PWD ietf/manage.py migrate --fake name 0001
PYTHONPATH=$PWD ietf/manage.py dbshell <<< "delete from django_content_type where app_label='doc' and model='groupballotpositiondocevent';"
PYTHONPATH=$PWD ietf/manage.py migrate doc || { \
PYTHONPATH=$PWD ietf/manage.py dbshell <<< 'CREATE TABLE `doc_groupballotpositiondocevent` (`block_comment` longtext NOT NULL, `comment` longtext NOT NULL, `ad_id` integer NOT NULL, `comment_time` datetime NULL, `block_comment_time` datetime NULL, `pos_id` varchar(8) NOT NULL DEFAULT "norecord", `docevent_ptr_id` integer NOT NULL PRIMARY KEY);'
PYTHONPATH=$PWD ietf/manage.py dbshell <<< 'DROP TABLE `doc_ballottype` CASCADE;'
PYTHONPATH=$PWD ietf/manage.py dbshell <<< 'DROP TABLE `doc_ballottype_positions` CASCADE;'
PYTHONPATH=$PWD ietf/manage.py dbshell <<< 'DROP TABLE `doc_ballotdocevent` CASCADE;'
PYTHONPATH=$PWD ietf/manage.py dbshell <<< 'ALTER TABLE `doc_ballotpositiondocevent` DROP COLUMN `ballot_id` CASCADE;'
}
PYTHONPATH=$PWD ietf/manage.py migrate doc
PYTHONPATH=$PWD ietf/manage.py migrate name
PYTHONPATH=$PWD python ietf/wgcharter/migrate.py | tee -a ~/charter-migration.log

View file

@ -201,7 +201,7 @@ def update_history_with_changes(changes, send_email=True):
def parse_review_email(text):
msg = email.message_from_string(text)
msg = email.message_from_string(text.encode("utf-8"))
# doc
doc_name = ""

View file

@ -127,6 +127,7 @@ class IANASyncTestCase(django.test.TestCase):
msg = """From: "%(person)s via RT" <drafts-lastcall@iana.org>
Date: Thu, 10 May 2012 12:00:00 +0000
Subject: [IANA #12345] Last Call: <%(draft)s-%(rev)s.txt> (Long text) to Informational RFC
(BEGIN IANA LAST CALL COMMENTS)
IESG:
@ -440,7 +441,7 @@ class RFCEditorUndoTestCase(django.test.TestCase):
self.assertEquals(draft.get_state("draft-rfceditor"), None)
# let's just test we can recover
e = DeletedEvent.objects.all().order_by("-time")[0]
e = DeletedEvent.objects.all().order_by("-time", "-id")[0]
e.content_type.model_class().objects.create(**json.loads(e.json))
self.assertTrue(StateDocEvent.objects.filter(desc="First", doc=draft))