Rename pharos-dashboard and pharos-validator
[pharos-tools.git] / validator / src / pxe_initrd / src / bin / initial_network.py
1 #!/usr/bin/env python3
2 # bin/setup_interface
3
4 # -----------------------------------------------------------------------
5
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9
10 #        http://www.apache.org/licenses/LICENSE-2.0
11
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17
18 # ------------------------------------------------------------------------
19
20 # Author: Todd Gaunt, toddgaunt@iol.unh.edu or toddgaunt@gmail.com
21 # License: Apache v2.0
22 # Description: Script for setting up initial network interfaces
23 # it activates dhcp on all interfaces in order to at least get the admin
24 # network up
25
26 import os
27 import subprocess
28 import netifaces
29
30 def generate_interfaces_file(ifaces, os_network_file):
31     """Takes a list of interfaces and a location to save a network
32     interfaces file"""
33     interfaces = ""
34     for i in ifaces:
35         n = "auto " + str(i) + "\n" \
36             + "iface " + str(i) + " inet dhcp\n"
37         interfaces += n
38     return interfaces
39
40 def set_interfaces_up(ifaces):
41     """Uses ifup command to put network devices up according to
42     interfaces file"""
43     for iface in ifaces:
44         ifupcmd = [ \
45                 "ifup",
46                 iface]
47         ifdowncmd = [ \
48                 "ifdown",
49                 iface]
50         with open(os.devnull, 'w') as fn:
51             status = subprocess.Popen(ifdowncmd, stdout=fn, stderr=fn).wait()
52             status = subprocess.Popen(ifupcmd, stdout=fn, stderr=fn).wait()
53         print(str(iface) + " " + str(status))
54
55 def main():
56     os_network_file="/etc/network/interfaces"
57     ifaces = netifaces.interfaces()
58     interfaces = generate_interfaces_file(ifaces, os_network_file)
59     with open(os_network_file, 'w') as fd:
60         fd.write(interfaces)
61     set_interfaces_up(ifaces)
62
63 if __name__ == "__main__":
64     main()