]>
Commit | Line | Data |
---|---|---|
2c8c4ce7 RP |
1 | #!/usr/bin/python |
2 | # | |
3 | # Copyright 2014 Cumulus Networks, Inc. All rights reserved. | |
4 | # Author: Roopa Prabhu, roopa@cumulusnetworks.com | |
5 | # | |
6 | # utils -- | |
7 | # helper class | |
8 | # | |
9 | import os | |
10 | import fcntl | |
f82758bf | 11 | import re |
2c8c4ce7 RP |
12 | |
13 | class utils(): | |
14 | ||
15 | @classmethod | |
16 | def importName(cls, modulename, name): | |
17 | """ Import a named object """ | |
18 | try: | |
19 | module = __import__(modulename, globals(), locals(), [name]) | |
20 | except ImportError: | |
21 | return None | |
22 | return getattr(module, name) | |
23 | ||
24 | @classmethod | |
25 | def lockFile(cls, lockfile): | |
26 | try: | |
27 | fp = os.open(lockfile, os.O_CREAT | os.O_TRUNC | os.O_WRONLY) | |
28 | fcntl.flock(fp, fcntl.LOCK_EX | fcntl.LOCK_NB) | |
29 | except IOError: | |
30 | return False | |
31 | return True | |
32 | ||
f82758bf RP |
33 | @classmethod |
34 | def parse_iface_range(cls, name): | |
35 | range_match = re.match("^([\w\.]+)\[([\d]+)-([\d]+)\]", name) | |
36 | if range_match: | |
37 | range_groups = range_match.groups() | |
38 | if range_groups[1] and range_groups[2]: | |
39 | return (range_groups[0], int(range_groups[1], 10), | |
40 | int(range_groups[2], 10)) | |
41 | return None | |
42 | ||
43 | @classmethod | |
44 | def expand_iface_range(cls, name): | |
45 | ifacenames = [] | |
46 | iface_range = cls.parse_iface_range(name) | |
47 | if iface_range: | |
48 | for i in range(iface_range[1], iface_range[2]): | |
49 | ifacenames.append('%s-%d' %(iface_range[0], i)) | |
50 | return ifacenames | |
51 | ||
2c8c4ce7 | 52 |