]>
Commit | Line | Data |
---|---|---|
15ef32ea RP |
1 | #!/usr/bin/python |
2 | # | |
3 | # Copyright 2014 Cumulus Networks, Inc. All rights reserved. | |
4 | # Author: Roopa Prabhu, roopa@cumulusnetworks.com | |
5 | # | |
6 | ||
a193d8d1 | 7 | from ifupdown.utils import utils |
15ef32ea | 8 | from utilsbase import * |
15ef32ea RP |
9 | import os |
10 | ||
15ef32ea RP |
11 | |
12 | class dhclient(utilsBase): | |
13 | """ This class contains helper methods to interact with the dhclient | |
14 | utility """ | |
15 | ||
16 | def _pid_exists(self, pidfilename): | |
17 | if os.path.exists(pidfilename): | |
18 | pid = self.read_file_oneline(pidfilename) | |
19 | if not os.path.exists('/proc/%s' %pid): | |
20 | return False | |
21 | else: | |
22 | return False | |
23 | return True | |
24 | ||
25 | def is_running(self, ifacename): | |
26 | return self._pid_exists('/run/dhclient.%s.pid' %ifacename) | |
27 | ||
28 | def is_running6(self, ifacename): | |
29 | return self._pid_exists('/run/dhclient6.%s.pid' %ifacename) | |
30 | ||
717cee31 RP |
31 | def _run_dhclient_cmd(self, cmd, cmd_prefix=None): |
32 | if not cmd_prefix: | |
33 | cmd_aslist = [] | |
34 | else: | |
35 | cmd_aslist = cmd_prefix.split() | |
36 | if cmd_aslist: | |
37 | cmd_aslist.extend(cmd) | |
38 | else: | |
39 | cmd_aslist = cmd | |
a193d8d1 | 40 | utils.exec_commandl(cmd_aslist, stdout=None, stderr=None) |
717cee31 RP |
41 | |
42 | def stop(self, ifacename, cmd_prefix=None): | |
15ef32ea RP |
43 | if os.path.exists('/sbin/dhclient3'): |
44 | cmd = ['/sbin/dhclient3', '-x', '-pf', | |
45 | '/run/dhclient.%s.pid' %ifacename, '-lf', | |
46 | '/var/lib/dhcp3/dhclient.%s.leases' %ifacename, | |
47 | '%s' %ifacename] | |
48 | else: | |
49 | cmd = ['/sbin/dhclient', '-x', '-pf', | |
50 | '/run/dhclient.%s.pid' %ifacename, | |
51 | '-lf', '/var/lib/dhcp/dhclient.%s.leases' %ifacename, | |
52 | '%s' %ifacename] | |
717cee31 | 53 | self._run_dhclient_cmd(cmd, cmd_prefix) |
15ef32ea | 54 | |
717cee31 | 55 | def start(self, ifacename, wait=True, cmd_prefix=None): |
15ef32ea RP |
56 | if os.path.exists('/sbin/dhclient3'): |
57 | cmd = ['/sbin/dhclient3', '-pf', | |
58 | '/run/dhclient.%s.pid' %ifacename, | |
59 | '-lf', '/var/lib/dhcp3/dhclient.%s.leases' %ifacename, | |
60 | '%s' %ifacename] | |
61 | else: | |
717cee31 RP |
62 | cmd = ['/sbin/dhclient', '-pf', |
63 | '/run/dhclient.%s.pid' %ifacename, '-lf', | |
64 | '/var/lib/dhcp/dhclient.%s.leases' %ifacename, | |
15ef32ea | 65 | '%s' %ifacename] |
a0a8d7e0 | 66 | if not wait: |
6d359159 | 67 | cmd.append('-nw') |
717cee31 | 68 | self._run_dhclient_cmd(cmd, cmd_prefix) |
15ef32ea | 69 | |
717cee31 | 70 | def release(self, ifacename, cmd_prefix=None): |
15ef32ea RP |
71 | if os.path.exists('/sbin/dhclient3'): |
72 | cmd = ['/sbin/dhclient3', '-r', '-pf', | |
73 | '/run/dhclient.%s.pid' %ifacename, '-lf', | |
74 | '/var/lib/dhcp3/dhclient.%s.leases' %ifacename, | |
75 | '%s' %ifacename] | |
76 | else: | |
77 | cmd = ['/sbin/dhclient', '-r', '-pf', | |
78 | '/run/dhclient.%s.pid' %ifacename, | |
79 | '-lf', '/var/lib/dhcp/dhclient.%s.leases' %ifacename, | |
80 | '%s' %ifacename] | |
717cee31 | 81 | self._run_dhclient_cmd(cmd, cmd_prefix) |
15ef32ea | 82 | |
717cee31 RP |
83 | def start6(self, ifacename, wait=True, cmd_prefix=None): |
84 | cmd = ['/sbin/dhclient', '-6', '-pf', | |
15ef32ea | 85 | '/run/dhclient6.%s.pid' %ifacename, '-lf', |
004d1e65 | 86 | '/var/lib/dhcp/dhclient6.%s.leases' % ifacename, |
6d359159 | 87 | '%s' %ifacename] |
a0a8d7e0 | 88 | if not wait: |
6d359159 | 89 | cmd.append('-nw') |
717cee31 | 90 | self._run_dhclient_cmd(cmd, cmd_prefix) |
15ef32ea | 91 | |
717cee31 RP |
92 | def stop6(self, ifacename, cmd_prefix=None): |
93 | cmd = ['/sbin/dhclient', '-6', '-x', '-pf', | |
004d1e65 JF |
94 | '/run/dhclient6.%s.pid' % ifacename, '-lf', |
95 | '/var/lib/dhcp/dhclient6.%s.leases' % ifacename, | |
717cee31 RP |
96 | '%s' %ifacename] |
97 | self._run_dhclient_cmd(cmd, cmd_prefix) | |
15ef32ea | 98 | |
717cee31 RP |
99 | def release6(self, ifacename, cmd_prefix=None): |
100 | cmd = ['/sbin/dhclient', '-6', '-r', '-pf', | |
20fd3a06 | 101 | '/run/dhclient6.%s.pid' %ifacename, |
de4104b0 | 102 | '-lf', '/var/lib/dhcp/dhclient6.%s.leases' % ifacename, |
717cee31 RP |
103 | '%s' %ifacename] |
104 | self._run_dhclient_cmd(cmd, cmd_prefix) |