import os
import openpyxl
import argparse
def read_excel():
lld_excel = openpyxl.load_workbook("lld.xlsx")
if lld_excel is None or len(lld_excel._sheets) < 13:
return
node_sheet = lld_excel._sheets[12]
start_raw = 0
node_list = []
while start_raw < 10000:
row_num = str(start_raw + 3)
if node_sheet['A' + row_num].value is None or node_sheet['A' + row_num].value.find(u"服务器") != 0:
break
node_list.append({
"tor_ip": node_sheet['B' + row_num].value,
"server_ip": node_sheet['M' + row_num].value,
})
start_raw = start_raw + 1
return node_list
def get_tor_list(node_list):
tor_list = [[]]
tor_ip = node_list[0]["tor_ip"]
tor_id = 0
for node in node_list:
if tor_ip != node["tor_ip"]:
tor_id = tor_id + 1
tor_list.append([])
tor_ip = node["tor_ip"]
tor_list[tor_id].append(node)
return tor_list
def handler():
parser = argparse.ArgumentParser('传入参数:lld_to_cm.py')
parser.add_argument('-n','--num',default='4')
parser.add_argument('-l', '--level', default='double_layer')
args = parser.parse_args()
count = args.num
level = args.level
node_list = read_excel()
tor_list = get_tor_list(node_list)
yaml = open("basic-tor-node-cm.yaml", 'w')
yaml.write("apiVersion: v1\n")
yaml.write("kind: ConfigMap\n")
yaml.write("metadata:\n")
yaml.write(" name: basic-tor-node-cm\n")
yaml.write(" namespace: kube-system\n")
yaml.write("data:\n")
yaml.write(" tor_level: '" + level + "'\n")
yaml.write(" tor_info: |\n")
yaml.write(" {\n")
yaml.write(" \"version\": \"1.0\",\n")
yaml.write(" \"tor_count\": " + count + ",\n")
yaml.write(" \"server_list\": [\n")
tor_id = 0
for tor in tor_list:
yaml.write(" {\n")
yaml.write(" \"tor_id\": " + str(tor_id) + ",\n")
tor_id = tor_id + 1
yaml.write(" \"tor_ip\": \"" + str(tor[0]["tor_ip"]) + "\",\n")
yaml.write(" \"server\": [\n")
slice_num = 0
for node in tor:
yaml.write(" {\n")
yaml.write(" \"server_ip\": \"" + str(node["server_ip"]) + "\",\n")
yaml.write(" \"npu_count\": 8,\n")
yaml.write(" \"slice_id\": " + str(slice_num) + "\n")
slice_num = slice_num + 1
if slice_num == len(tor):
yaml.write(" }\n")
else:
yaml.write(" },\n")
yaml.write(" ]\n")
if tor_id == len(tor_list):
yaml.write(" }\n")
else:
yaml.write(" },\n")
yaml.write(" ]\n")
yaml.write(" }\n")
yaml.close()
os.system("kubectl apply -f basic-tor-node-cm.yaml")
os.system("rm basic-tor-node-cm.yaml")
os.system("kubectl describe cm -n kube-system basic-tor-node-cm")
if __name__ == '__main__':
handler()