]> git.proxmox.com Git - mirror_ifupdown2.git/blob - ifupdownaddons/dhclient.py
Update README.rst (#11)
[mirror_ifupdown2.git] / ifupdownaddons / dhclient.py
1 #!/usr/bin/python
2 #
3 # Copyright 2014 Cumulus Networks, Inc. All rights reserved.
4 # Author: Roopa Prabhu, roopa@cumulusnetworks.com
5 #
6
7 from ifupdown.utils import utils
8 from utilsbase import *
9 import os
10
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
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
40 utils.exec_commandl(cmd_aslist, stdout=None, stderr=None)
41
42 def stop(self, ifacename, cmd_prefix=None):
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]
53 self._run_dhclient_cmd(cmd, cmd_prefix)
54
55 def start(self, ifacename, wait=True, cmd_prefix=None):
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:
62 cmd = ['/sbin/dhclient', '-pf',
63 '/run/dhclient.%s.pid' %ifacename, '-lf',
64 '/var/lib/dhcp/dhclient.%s.leases' %ifacename,
65 '%s' %ifacename]
66 if not wait:
67 cmd.append('-nw')
68 self._run_dhclient_cmd(cmd, cmd_prefix)
69
70 def release(self, ifacename, cmd_prefix=None):
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]
81 self._run_dhclient_cmd(cmd, cmd_prefix)
82
83 def start6(self, ifacename, wait=True, cmd_prefix=None):
84 cmd = ['/sbin/dhclient', '-6', '-pf',
85 '/run/dhclient6.%s.pid' %ifacename, '-lf',
86 '/var/lib/dhcp/dhclient6.%s.leases' % ifacename,
87 '%s' %ifacename]
88 if not wait:
89 cmd.append('-nw')
90 self._run_dhclient_cmd(cmd, cmd_prefix)
91
92 def stop6(self, ifacename, cmd_prefix=None):
93 cmd = ['/sbin/dhclient', '-6', '-x', '-pf',
94 '/run/dhclient6.%s.pid' % ifacename, '-lf',
95 '/var/lib/dhcp/dhclient6.%s.leases' % ifacename,
96 '%s' %ifacename]
97 self._run_dhclient_cmd(cmd, cmd_prefix)
98
99 def release6(self, ifacename, cmd_prefix=None):
100 cmd = ['/sbin/dhclient', '-6', '-r', '-pf',
101 '/run/dhclient6.%s.pid' %ifacename,
102 '-lf', '/var/lib/dhcp/dhclient6.%s.leases' % ifacename,
103 '%s' %ifacename]
104 self._run_dhclient_cmd(cmd, cmd_prefix)