]> git.proxmox.com Git - mirror_ifupdown2.git/blame - sbin/ifupdown
python-ifupdown initial checkin
[mirror_ifupdown2.git] / sbin / ifupdown
CommitLineData
a6f80f0e 1#!/usr/bin/python
2
3import sys
4import os
5import re
6import argparse
7from ifupdown.ifupdown_main import *
8
9import logging
10
11lockfile="/run/network/.lock"
12logger = None
13
14def 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
59def 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
78def deinit():
79 print 'deinit called'
80
81def 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
103def 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
110def update_ifup_argparser(argparser):
111 update_ifupdown_argparser(argparser)
112
113def update_ifdown_argparser(argparser):
114 update_ifupdown_argparser(argparser)
115
116def 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
126def 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
140def 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
172if __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)