aboutsummaryrefslogtreecommitdiff
path: root/potpourri/rpkigui-reset-demo.py
blob: 0a3a1537714f0da864ed27c93a8f616474b7fa6b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Copyright (C) 2012, 2013, 2014  SPARTA, Inc. a Parsons Company
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND SPARTA DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS.  IN NO EVENT SHALL SPARTA BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.

"""
This script is used to reset all of the labuser* accounts on demo.rpki.net back
to a state suitable for a new workshop.  It removes all ROAs and Ghostbuster
issued by the labuser accounts.

"""

__version__ = '$Id$'

from rpki.gui.script_util import setup
setup()

import sys

from rpki.gui.app.models import Conf
from rpki.irdb.models import ROARequest, GhostbusterRequest
from rpki.gui.app.glue import list_received_resources

for n in xrange(1, 33):
    username = 'labuser%02d' % n
    print 'removing objects for ' + username
    for cls in (ROARequest, GhostbusterRequest):
        cls.objects.filter(issuer__handle=username).delete()
    conf = Conf.objects.get(handle=username)
    conf.clear_alerts()
    print '... updating resource certificate cache'
    list_received_resources(sys.stdout, conf)

    # Remove delegated resources (see https://trac.rpki.net/ticket/544)
    # Note that we do not remove the parent-child relationship, just the
    # resources.
    for child in conf.children():
        child.asns.delete()
        child.address_ranges.delete()