forked from rucio/rucio
/
rucio-abacus-rse
executable file
·78 lines (63 loc) · 2.51 KB
/
rucio-abacus-rse
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env python3
# Copyright European Organization for Nuclear Research (CERN) since 2012
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Abacus rse is a daemon to update rse counters.
"""
import argparse
import signal
from rucio.daemons.abacus.rse import run, stop
def get_parser():
"""
Returns the argparse parser.
"""
parser = argparse.ArgumentParser(description="The Abacus-RSE daemon is responsible for updating RSE usages. It checks if there are new entries in the UpdatedRSECounter table and updates the RSE counter in the RSECounter table by adding or substrating the amount of files and the size.", epilog='''
Upload a file to your RSE::
$ rucio upload --rse MOCK --scope mock filename.txt
Check RSE usage::
$ rucio list-rse-usage MOCK
USAGE:
------
files: 0
used: 0.000 B
rse: MOCK
updated_at: 2018-11-30 14:28:34
source: rucio
------
Run the daemon::
$ rucio-abacus-rse --run-once
Check RSE usage again::
$ rucio list-rse-usage MOCK
USAGE:
------
files: 1
used: 213.481 kB
rse: MOCK
updated_at: 2018-12-03 08:58:33
source: rucio
------
''', formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("--run-once", action="store_true", default=False, help='One iteration only')
parser.add_argument("--threads", action="store", default=1, type=int, help='Concurrency control: total number of threads on this process')
parser.add_argument("--enable-history", action="store_true", default=False, help='Record RSE usage into history table every hour.')
parser.add_argument('--sleep-time', action="store", default=10, type=int, help='Concurrency control: thread sleep time after each chunk of work')
return parser
if __name__ == "__main__":
signal.signal(signal.SIGTERM, stop)
parser = get_parser()
args = parser.parse_args()
try:
run(once=args.run_once, threads=args.threads, fill_history_table=args.enable_history, sleep_time=args.sleep_time)
except KeyboardInterrupt:
stop()