Merge ~gavin.lin/cc-lab-manager:restart_dhcp into cc-lab-manager:master

Proposed by Gavin Lin
Status: Merged
Approved by: Gavin Lin
Approved revision: cc4c4a8fe5c6edca8cb97498eaa3aa4bc9d83f66
Merged at revision: bb1d338b8b8da1526df291ec6fa0c0e283052c4d
Proposed branch: ~gavin.lin/cc-lab-manager:restart_dhcp
Merge into: cc-lab-manager:master
Diff against target: 77 lines (+46/-3)
2 files modified
cc_lab_manager/commands/cc_lab_manager.py (+4/-3)
cc_lab_manager/dhcp/restart_dhcp_servers.py (+42/-0)
Reviewer Review Type Date Requested Status
Kevin Yeh Approve
Review via email: mp+423343@code.launchpad.net

Description of the change

Apply DHCP config automatically.

To post a comment you must log in.
Revision history for this message
Kevin Yeh (kevinyeh) wrote :

lgtm +1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/cc_lab_manager/commands/cc_lab_manager.py b/cc_lab_manager/commands/cc_lab_manager.py
index a8324d2..3b78d8e 100644
--- a/cc_lab_manager/commands/cc_lab_manager.py
+++ b/cc_lab_manager/commands/cc_lab_manager.py
@@ -6,9 +6,11 @@ from cc_lab_manager.gsheet_db import gsheet_db
6from cc_lab_manager.gsheet_db import db_gsheet6from cc_lab_manager.gsheet_db import db_gsheet
7from cc_lab_manager.c3_db import c3_db7from cc_lab_manager.c3_db import c3_db
8from cc_lab_manager.dhcp import dhcp_config_generator8from cc_lab_manager.dhcp import dhcp_config_generator
9from cc_lab_manager.dhcp import restart_dhcp_servers
9from cc_lab_manager.maas import create_maas_node10from cc_lab_manager.maas import create_maas_node
10from cc_lab_manager.gen_config import gen_agent_tf_config11from cc_lab_manager.gen_config import gen_agent_tf_config
1112
13
12logger = logging.getLogger('cc-lab-manager')14logger = logging.getLogger('cc-lab-manager')
1315
14def main():16def main():
@@ -18,10 +20,9 @@ def main():
18 # Get needed information from c320 # Get needed information from c3
19 c3_db.main()21 c3_db.main()
2022
21 # Generate DHCP config for each subnets23 # Generate and apply DHCP config for each subnet
22 # TODO: Currently these config files need to be copied
23 # manually, then MAAS will apply it automatically
24 dhcp_config_generator.main()24 dhcp_config_generator.main()
25 restart_dhcp_servers.main()
2526
26 # Create MAAS nodes for DUTs27 # Create MAAS nodes for DUTs
27 create_maas_node.main()28 create_maas_node.main()
diff --git a/cc_lab_manager/dhcp/restart_dhcp_servers.py b/cc_lab_manager/dhcp/restart_dhcp_servers.py
28new file mode 10064429new file mode 100644
index 0000000..22986f7
--- /dev/null
+++ b/cc_lab_manager/dhcp/restart_dhcp_servers.py
@@ -0,0 +1,42 @@
1import logging
2import argparse
3import os
4import re
5import time
6import subprocess
7
8from cc_lab_manager.cc_lab_manager_maptable import lab_dhcp_servers
9
10logger = logging.getLogger('cc-lab-manager')
11
12def apply_dhcp_conf(cc_tool_box):
13 dhcp_conf_location = os.path.join(cc_tool_box, 'config', 'dhcp')
14 r = re.compile('cert-.*l-l.*-dhcpd-pool.conf')
15 for dirpath, _, files in os.walk(dhcp_conf_location):
16 for file in files:
17 if r.match(file) is not None:
18 lab_id = file.split('-')[1] + '-' + file.split('-')[2]
19 if lab_id in lab_dhcp_servers:
20 subprocess.run(['scp', os.path.join(dirpath, file), lab_dhcp_servers[lab_id] + ':~'])
21 time.sleep(1)
22 subprocess.run(['ssh', lab_dhcp_servers[lab_id], 'sudo systemctl restart maas-dhcpd.service'])
23 time.sleep(5)
24 subprocess.run(['ssh', lab_dhcp_servers[lab_id], 'sudo systemctl status maas-dhcpd.service'])
25
26
27def environ_or_required(key):
28 if os.environ.get(key):
29 return {'default': os.environ.get(key)}
30 else:
31 return {'required': True}
32
33
34def main():
35 parser = argparse.ArgumentParser()
36 parser.add_argument('--cctoolbox', help="Path to cc-tool-box for storing dhcp config", **environ_or_required('CCLM_CC_TOOL_BOX'))
37 args = parser.parse_args()
38
39 apply_dhcp_conf(args.cctoolbox)
40
41if __name__ == '__main__':
42 main()

Subscribers

People subscribed via source and target branches

to all changes: