]>
Commit | Line | Data |
---|---|---|
a6f80f0e | 1 | #!/usr/bin/python |
2 | ||
3 | import sys | |
4 | import os | |
5 | import re | |
6 | import argparse | |
7 | from ifupdown.ifupdown_main import * | |
8 | ||
9 | import logging | |
10 | ||
11 | lockfile="/run/network/.lock" | |
12 | logger = None | |
13 | ||
14 | def run(args, op): | |
15 | ||
16 | logger.debug('args = %s' %str(args)) | |
17 | ||
18 | try: | |
19 | logger.debug('creating ifupdown object ..') | |
20 | ifupdown_handle = ifupdown_main() | |
21 | ||
22 | if op == 'up' or op == 'down': | |
23 | if args.force == True: | |
24 | ifupdown_handle.set_force(args.force) | |
25 | ||
26 | if args.jobs > 0: | |
27 | ifupdown_handle.set_njobs(args.jobs) | |
28 | ||
29 | if args.dryrun == True: | |
30 | ifupdown_handle.set_dryrun(args.dryrun) | |
31 | ||
32 | if args.nodepends == True: | |
33 | ifupdown_handle.set_nodepends(args.nodepends) | |
34 | ||
35 | iflist = args.iflist | |
36 | if len(args.iflist) == 0: | |
37 | iflist = None | |
38 | ||
39 | logger.debug('calling %s' %op + ' for all interfaces ..') | |
40 | if op == 'up': | |
41 | ifupdown_handle.up(args.all, args.allow, iflist) | |
42 | elif op == 'down': | |
43 | ifupdown_handle.down(args.all, args.allow, iflist) | |
44 | elif op == 'query': | |
45 | if args.curstate == True: | |
46 | qstate='curr' | |
47 | elif args.presumedstate == True: | |
48 | qstate='presumed' | |
49 | elif args.presumedstatedetailed == True: | |
50 | qstate='presumeddetailed' | |
51 | else: | |
52 | qstate=None | |
53 | ifupdown_handle.query(args.all, args.allow, iflist, | |
54 | query_state=qstate) | |
55 | except: | |
56 | raise | |
57 | ||
58 | ||
59 | def init(args): | |
60 | global logger | |
61 | ||
62 | log_level = logging.WARNING | |
63 | ||
64 | if args.verbose == True: | |
65 | log_level = logging.INFO | |
66 | ||
67 | if args.debug == True: | |
68 | log_level = logging.DEBUG | |
69 | ||
70 | try: | |
71 | logging.basicConfig(level=log_level, | |
72 | format='%(message)s') | |
73 | logger = logging.getLogger('ifupdown') | |
74 | except: | |
75 | raise | |
76 | ||
77 | ||
78 | def deinit(): | |
79 | print 'deinit called' | |
80 | ||
81 | def update_argparser(argparser): | |
82 | ||
83 | argparser.add_argument('iflist', metavar='IFACE', | |
84 | nargs='*', help='interfaces list') | |
85 | argparser.add_argument('-a', '--all', action='store_true', | |
86 | help='operate on all interfaces') | |
87 | argparser.add_argument('-n', '--dry-run', dest='dryrun', | |
88 | action='store_true', help='dry run') | |
89 | argparser.add_argument('-v', '--verbose', dest='verbose', | |
90 | action='store_true', help='verbose') | |
91 | argparser.add_argument('-d', '--debug', dest='debug', | |
92 | action='store_true', | |
93 | help='output debug info') | |
94 | argparser.add_argument('-q', '--quiet', dest='quiet', | |
95 | action='store_true', | |
96 | help=argparse.SUPPRESS) | |
97 | argparser.add_argument('--allow', dest='allow', | |
98 | help='allow class') | |
99 | argparser.add_argument('--nodepends', dest='nodepends', | |
100 | action='store_true', help='dont follow dependents') | |
101 | ||
102 | ||
103 | def update_ifupdown_argparser(argparser): | |
104 | argparser.add_argument('-f', '--force', dest='force', | |
105 | action='store_true', | |
106 | help='force run all operations') | |
107 | argparser.add_argument('-j', '--jobs', dest='jobs', type=int, | |
108 | default=-1, choices=range(1,12), help=argparse.SUPPRESS) | |
109 | ||
110 | def update_ifup_argparser(argparser): | |
111 | update_ifupdown_argparser(argparser) | |
112 | ||
113 | def update_ifdown_argparser(argparser): | |
114 | update_ifupdown_argparser(argparser) | |
115 | ||
116 | def update_ifquery_argparser(argparser): | |
117 | group = argparser.add_mutually_exclusive_group(required=False) | |
118 | group.add_argument('-s', '--query-state', dest='curstate', | |
119 | action='store_true', help=argparse.SUPPRESS) | |
120 | group.add_argument('--presumed-state', dest='presumedstate', | |
121 | action='store_true', help=argparse.SUPPRESS) | |
122 | group.add_argument('--presumed-state-detailed', | |
123 | dest='presumedstatedetailed', | |
124 | action='store_true', help=argparse.SUPPRESS) | |
125 | ||
126 | def parse_args(argsv, op): | |
127 | descr = 'interface management' | |
128 | ||
129 | argparser = argparse.ArgumentParser(description=descr) | |
130 | update_argparser(argparser) | |
131 | if op == 'up': | |
132 | update_ifup_argparser(argparser) | |
133 | elif op == 'down': | |
134 | update_ifdown_argparser(argparser) | |
135 | elif op == 'query': | |
136 | update_ifquery_argparser(argparser) | |
137 | ||
138 | return argparser.parse_args(argsv) | |
139 | ||
140 | def main(argv): | |
141 | """ main function """ | |
142 | try: | |
143 | op = None | |
144 | if re.search(r'ifup', argv[0]) != None: | |
145 | op = 'up' | |
146 | elif re.search(r'ifdown', argv[0]) != None: | |
147 | op = 'down' | |
148 | elif re.search(r'ifquery', argv[0]) != None: | |
149 | op = 'query' | |
150 | else: | |
151 | print ('Unexpected executable.' + | |
152 | ' Should be \'ifup\' or \'ifdown\' or \'ifquery\'') | |
153 | exit(1) | |
154 | ||
155 | # Command line arg parser | |
156 | args = parse_args(argv[1:], op) | |
157 | if len(args.iflist) > 0 and args.all is True: | |
158 | print 'iflist and all are mutually exclusive' | |
159 | exit(1) | |
160 | ||
161 | init(args) | |
162 | run(args, op) | |
163 | except Exception, e: | |
164 | if args.debug == True: | |
165 | raise | |
166 | else: | |
167 | logger.error(str(e)) | |
168 | finally: | |
169 | deinit() | |
170 | ||
171 | ||
172 | if __name__ == "__main__": | |
173 | ||
174 | if not os.geteuid() == 0: | |
175 | print 'Error: Must be root to run this command' | |
176 | exit(1) | |
177 | ||
178 | """ | |
179 | if not utilities.lockFile(lockfile): | |
180 | print 'Another instance of this program is already running.' | |
181 | exit(0) | |
182 | """ | |
183 | ||
184 | main(sys.argv) |