forked from KNMI/DMPilot-RuleManager
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeletionmanager.py
executable file
·62 lines (48 loc) · 1.95 KB
/
deletionmanager.py
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env python3
"""
Script that runs the rules for file deletion.
"""
import logging
import argparse
import core.logger
from core.rulemanager import RuleManager
from sds.sdsfile import SDSFile
from core.database import deletion_database
import rules.sdsrules as sdsrules
import conditions.sdsconditions as sdsconditions
from configuration import config
def main():
try:
# Initialize logger
logger = logging.getLogger("RuleManager")
logger.info("Running deletion Manager.")
# Parse command line arguments
parser = argparse.ArgumentParser()
parser.add_argument("--dir",
help=("temporary archive directory "
"(defaults to the value in configuration.py)"),
default=config["DATA_DIR"])
parser.add_argument("--ruleseq", help="rule sequence file", required=True)
parser.add_argument("--from_file",
help="files to delete, listed in a text file or stdin '-'",
type=argparse.FileType("r"), required=True)
parsedargs = vars(parser.parse_args())
# Set up rules
RM = RuleManager()
RM.load_rules(sdsrules, sdsconditions, parsedargs["ruleseq"])
# Collect new files to delete
with parsedargs["from_file"] as del_list:
for line in del_list:
deletion_database.add_filename(line.strip())
# Get all files from database
files = [SDSFile(filename, parsedargs["dir"])
for filename
in deletion_database.get_all_filenames()]
logger.debug("Collected %d files for deletion" % len(files))
# Apply the sequence of rules on files
RM.sequence(files)
logger.info("Finished Deletion Manager execution.")
except Exception as e:
logger.error("General error!: '%s'" % e, exc_info=True)
if __name__ == "__main__":
main()