updated: Python scripts to generate eNB's templates for container images
Signed-off-by: Mohammed Ismail <mohammed.ismail@eurecom.fr>
This commit is contained in:
committed by
Raphael Defosseux
parent
abf2693b38
commit
a9a334f294
@@ -1,68 +1,86 @@
|
|||||||
|
# * this work for additional information regarding copyright ownership.
|
||||||
|
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
|
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||||
|
# * except in compliance with the License.
|
||||||
|
# * You may obtain a copy of the License at
|
||||||
|
# *
|
||||||
|
# * http://www.openairinterface.org/?page_id=698
|
||||||
|
# *
|
||||||
|
# * Unless required by applicable law or agreed to in writing, software
|
||||||
|
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# * See the License for the specific language governing permissions and
|
||||||
|
# * limitations under the License.
|
||||||
|
# *-------------------------------------------------------------------------------
|
||||||
|
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
|
# * contact@openairinterface.org
|
||||||
|
# */
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
# Import
|
||||||
|
#-----------------------------------------------------------
|
||||||
import re
|
import re
|
||||||
import json
|
import yaml
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
dir = os.listdir('/home/mohammed/Documents/conf_files/')
|
def main():
|
||||||
|
#read yaml input parameters
|
||||||
|
f = open(f'{sys.argv[1]}',)
|
||||||
|
data = yaml.full_load(f)
|
||||||
|
dir = os.listdir(f'{data[0]["paths"]["source_dir"]}')
|
||||||
|
|
||||||
#read json config file
|
|
||||||
f = open('parameters.json',)
|
|
||||||
data = json.load(f)
|
|
||||||
for config in data:
|
|
||||||
|
|
||||||
filePrefix = config["filePrefix"]
|
#identify configs, read and replace corresponding values
|
||||||
print(filePrefix)
|
for config in data[1]["configurations"]:
|
||||||
for inputfile in dir:
|
filePrefix = config["filePrefix"]
|
||||||
if inputfile.find(filePrefix) >=0:
|
outputfilename = config["outputfilename"]
|
||||||
if filePrefix == "cu":
|
for inputfile in dir:
|
||||||
outputfile1 = 'config/cu.fdd.config'
|
if inputfile.find(filePrefix) >=0:
|
||||||
elif filePrefix == "du":
|
prefix_outputfile = {"cu": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
outputfile1 = 'config/du.fdd.config'
|
"du": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
elif filePrefix == "du":
|
"rru.fdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
outputfile1 = 'config/du.fdd.config'
|
"rru.tdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
elif filePrefix == "rru.fdd":
|
"enb.band7.tm1.25PRB.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
outputfile1 = 'config/rru.fdd.config'
|
"enb.band40.tm1.25PRB.FairScheduler.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}'
|
||||||
elif filePrefix == "rru.tdd":
|
"rcc.band7.tm1.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}'
|
||||||
outputfile1 = 'config/rru.tdd.config'
|
}
|
||||||
elif filePrefix == "enb.band7.tm1.25PRB.usrpb210":
|
if filePrefix in prefix_outputfile:
|
||||||
outputfile1 = 'config/enb.fdd.config'
|
outputfile1 = prefix_outputfile[filePrefix]
|
||||||
elif filePrefix == "enb.band40.tm1.25PRB.FairScheduler.usrpb210":
|
|
||||||
outputfile1 = 'config/enb.tdd.config'
|
|
||||||
# elif filePrefix == "rcc.band7.tm1.nfapi":
|
|
||||||
# outputfile1 = 'config/rcc.if4p5.enb.fdd.config'
|
|
||||||
# elif filePrefix == "rcc.band7.tm1.nfapi":
|
|
||||||
# outputfile1 = 'config/rcc.if4p5.enb.tdd.config'
|
|
||||||
|
|
||||||
directory = 'config/'
|
directory = f'{data[0]["paths"]["dest_dir"]}'
|
||||||
if not os.path.exists(directory):
|
if not os.path.exists(directory):
|
||||||
os.makedirs(directory, exist_ok=True)
|
os.makedirs(directory, exist_ok=True)
|
||||||
|
|
||||||
with open("/home/mohammed/Documents/conf_files/%s" % (inputfile), mode='r') as inputfile, \
|
|
||||||
open(outputfile1, mode='w') as outputfile:
|
|
||||||
for line in inputfile:
|
|
||||||
count = 0
|
|
||||||
for key in config["config"]:
|
|
||||||
if line.find(key["key"]) >= 0:
|
|
||||||
count += 1
|
|
||||||
if re.search(r'preference', line):
|
|
||||||
templine = line
|
|
||||||
elif re.search(r'plmn_list', line):
|
|
||||||
templine = re.sub(r'[0-9]+', '""', line)
|
|
||||||
templine = re.sub(r'\"\"', key["env"]["mcc"], templine, 1)
|
|
||||||
templine = re.sub(r'\"\"', key["env"]["mnc"], templine, 1)
|
|
||||||
templine = re.sub(r'\"\"', key["env"]["mnc_length"], templine, 1)
|
|
||||||
elif re.search('downlink_frequency', line):
|
|
||||||
templine = re.sub(r'[0-9]+', key["env"], line)
|
|
||||||
elif re.search('uplink_frequency_offset', line):
|
|
||||||
templine = re.sub(r'[0-9]+', key["env"], line)
|
|
||||||
|
|
||||||
elif re.search(r'"(.*?)"', line):
|
|
||||||
templine = re.sub(r'(?<=")[^"]*(?=")', key["env"], line) # for quotes
|
|
||||||
elif re.search(r'[0-9]', line):
|
|
||||||
templine = re.sub(r'\d+', key["env"], line)
|
|
||||||
outputfile.write(templine)
|
|
||||||
|
|
||||||
if count == 0:
|
|
||||||
outputfile.write(line)
|
|
||||||
#read file and replace with ...
|
|
||||||
|
|
||||||
|
with open(f'{data[0]["paths"]["source_dir"]}{inputfile}', mode='r') as inputfile, \
|
||||||
|
open(outputfile1, mode='w') as outputfile:
|
||||||
|
for line in inputfile:
|
||||||
|
count = 0
|
||||||
|
for key in config["config"]:
|
||||||
|
if line.find(key["key"]) >= 0:
|
||||||
|
count += 1
|
||||||
|
if re.search(r'preference', line):
|
||||||
|
templine = line
|
||||||
|
elif re.search(r'plmn_list', line):
|
||||||
|
templine = re.sub(r'[0-9]+', '""', line)
|
||||||
|
templine = re.sub(r'\"\"', key["env"]["mcc"], templine, 1)
|
||||||
|
templine = re.sub(r'\"\"', key["env"]["mnc"], templine, 1)
|
||||||
|
templine = re.sub(r'\"\"', key["env"]["mnc_length"], templine, 1)
|
||||||
|
elif re.search('downlink_frequency', line):
|
||||||
|
templine = re.sub(r'[0-9]+', key["env"], line)
|
||||||
|
elif re.search('uplink_frequency_offset', line):
|
||||||
|
templine = re.sub(r'[0-9]+', key["env"], line)
|
||||||
|
|
||||||
|
elif re.search(r'"(.*?)"', line):
|
||||||
|
templine = re.sub(r'(?<=")[^"]*(?=")', key["env"], line)
|
||||||
|
elif re.search(r'[0-9]', line):
|
||||||
|
templine = re.sub(r'\d+', key["env"], line)
|
||||||
|
outputfile.write(templine)
|
||||||
|
|
||||||
|
if count == 0:
|
||||||
|
outputfile.write(line)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|||||||
@@ -0,0 +1,221 @@
|
|||||||
|
---
|
||||||
|
- paths:
|
||||||
|
source_dir: "/home/mohammed/Documents/conf_files/"
|
||||||
|
dest_dir: docker/etc
|
||||||
|
|
||||||
|
- configurations:
|
||||||
|
- filePrefix: cu
|
||||||
|
outputfilename: "cu.fdd.conf"
|
||||||
|
config:
|
||||||
|
- key: Active_eNBs
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: eNB_name
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: plmn_list
|
||||||
|
env:
|
||||||
|
mcc: "@MCC@"
|
||||||
|
mnc: "@MNC@"
|
||||||
|
mnc_length: "@MNC_LENGTH@"
|
||||||
|
- key: tracking_area_code
|
||||||
|
env: "@TAC@"
|
||||||
|
- key: local_s_if_name
|
||||||
|
env: "@F1_IF_NAME@"
|
||||||
|
- key: remote_s_address
|
||||||
|
env: "@F1_DU_IP_ADDRESS@"
|
||||||
|
- key: local_s_address
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: eutra_band
|
||||||
|
env: "@UTRA_BAND_ID@"
|
||||||
|
- key: downlink_frequency
|
||||||
|
env: "@DL_FREQUENCY_IN_MHZ@000000"
|
||||||
|
- key: uplink_frequency_offset
|
||||||
|
env: "@UL_FREQUENCY_OFFSET_IN_MHZ@000000"
|
||||||
|
- key: Nid_cell
|
||||||
|
env: "@NID_CELL@"
|
||||||
|
- key: N_RB_DL
|
||||||
|
env: "@NB_PRB@"
|
||||||
|
- key: ipv4
|
||||||
|
env: "@MME_S1C_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1_MME
|
||||||
|
env: "@S1C_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1_MME
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1U
|
||||||
|
env: "@S1U_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1U
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
|
||||||
|
- filePrefix: du
|
||||||
|
outputfilename: "du.fdd.conf"
|
||||||
|
config:
|
||||||
|
- key: Active_eNBs
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: eNB_name
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: plmn_list
|
||||||
|
env:
|
||||||
|
mcc: "@MCC@"
|
||||||
|
mnc: "@MNC@"
|
||||||
|
mnc_length: "@MNC_LENGTH@"
|
||||||
|
- key: tracking_area_code
|
||||||
|
env: "@TAC@"
|
||||||
|
- key: local_n_if_name
|
||||||
|
env: "@F1_IF_NAME@"
|
||||||
|
- key: remote_n_address
|
||||||
|
env: "@F1_DU_IP_ADDRESS@"
|
||||||
|
- key: local_n_address
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: eutra_band
|
||||||
|
env: "@UTRA_BAND_ID@"
|
||||||
|
- key: downlink_frequency
|
||||||
|
env: "@DL_FREQUENCY_IN_MHZ@000000"
|
||||||
|
- key: uplink_frequency_offset
|
||||||
|
env: "@UL_FREQUENCY_OFFSET_IN_MHZ@000000"
|
||||||
|
- key: Nid_cell
|
||||||
|
env: "@NID_CELL@"
|
||||||
|
- key: N_RB_DL
|
||||||
|
env: "@NB_PRB@"
|
||||||
|
|
||||||
|
- filePrefix: rru.fdd
|
||||||
|
outputfilename: "rru.fdd.conf"
|
||||||
|
config:
|
||||||
|
- key: local_if_name
|
||||||
|
env: "@@"
|
||||||
|
- key: remote_address
|
||||||
|
env: "@@"
|
||||||
|
- key: local_address
|
||||||
|
env: "@@"
|
||||||
|
- key: bands
|
||||||
|
env: "@@"
|
||||||
|
|
||||||
|
- filePrefix: rru.tdd
|
||||||
|
outputfilename: "rru.tdd.conf"
|
||||||
|
config:
|
||||||
|
- key: local_if_name
|
||||||
|
env: "@@"
|
||||||
|
- key: remote_address
|
||||||
|
env: "@@"
|
||||||
|
- key: local_address
|
||||||
|
env: "@@"
|
||||||
|
- key: bands
|
||||||
|
env: "@@"
|
||||||
|
|
||||||
|
- filePrefix: enb.band7.tm1.25PRB.usrpb210
|
||||||
|
outputfilename: "enb.fdd.conf"
|
||||||
|
config:
|
||||||
|
- key: Active_eNBs
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: eNB_name
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: plmn_list
|
||||||
|
env:
|
||||||
|
mcc: "@MCC@"
|
||||||
|
mnc: "@MNC@"
|
||||||
|
mnc_length: "@MNC_LENGTH@"
|
||||||
|
- key: tracking_area_code
|
||||||
|
env: "@TAC@"
|
||||||
|
- key: eutra_band
|
||||||
|
env: "@UTRA_BAND_ID@"
|
||||||
|
- key: downlink_frequency
|
||||||
|
env: "@DL_FREQUENCY_IN_MHZ@000000"
|
||||||
|
- key: uplink_frequency_offset
|
||||||
|
env: "@UL_FREQUENCY_OFFSET_IN_MHZ@000000"
|
||||||
|
- key: Nid_cell
|
||||||
|
env: "@NID_CELL@"
|
||||||
|
- key: N_RB_DL
|
||||||
|
env: "@NB_PRB@"
|
||||||
|
- key: ipv4
|
||||||
|
env: "@MME_S1C_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1_MME
|
||||||
|
env: "@S1C_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1_MME
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1U
|
||||||
|
env: "@S1U_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1U
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
|
||||||
|
- filePrefix: enb.band40.tm1.25PRB.FairScheduler.usrpb210
|
||||||
|
outputfilename: "enb.tdd.conf"
|
||||||
|
config:
|
||||||
|
- key: Active_eNBs
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: eNB_name
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: plmn_list
|
||||||
|
env:
|
||||||
|
mcc: "@MCC@"
|
||||||
|
mnc: "@MNC@"
|
||||||
|
mnc_length: "@MNC_LENGTH@"
|
||||||
|
- key: tracking_area_code
|
||||||
|
env: "@TAC@"
|
||||||
|
- key: eutra_band
|
||||||
|
env: "@UTRA_BAND_ID@"
|
||||||
|
- key: downlink_frequency
|
||||||
|
env: "@DL_FREQUENCY_IN_MHZ@000000"
|
||||||
|
- key: uplink_frequency_offset
|
||||||
|
env: "@UL_FREQUENCY_OFFSET_IN_MHZ@000000"
|
||||||
|
- key: Nid_cell
|
||||||
|
env: "@NID_CELL@"
|
||||||
|
- key: N_RB_DL
|
||||||
|
env: "@NB_PRB@"
|
||||||
|
- key: ipv4
|
||||||
|
env: "@MME_S1C_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1_MME
|
||||||
|
env: "@S1C_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1_MME
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1U
|
||||||
|
env: "@S1U_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1U
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
|
||||||
|
- filePrefix: "rcc.band7.tm1.nfapi"
|
||||||
|
outputfilename: "rcc.if4p5.enb.fdd.conf"
|
||||||
|
config:
|
||||||
|
- key: Active_eNBs
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: eNB_name
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: plmn_list
|
||||||
|
env:
|
||||||
|
mcc: "@MCC@"
|
||||||
|
mnc: "@MNC@"
|
||||||
|
mnc_length: "@MNC_LENGTH@"
|
||||||
|
- key: tracking_area_code
|
||||||
|
env: "@TAC@"
|
||||||
|
- key: local_s_if_name
|
||||||
|
env: "@F1_IF_NAME@"
|
||||||
|
- key: remote_s_address
|
||||||
|
env: "@F1_DU_IP_ADDRESS@"
|
||||||
|
- key: local_s_address
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: eutra_band
|
||||||
|
env: "@UTRA_BAND_ID@"
|
||||||
|
- key: downlink_frequency
|
||||||
|
env: "@DL_FREQUENCY_IN_MHZ@000000"
|
||||||
|
- key: uplink_frequency_offset
|
||||||
|
env: "@UL_FREQUENCY_OFFSET_IN_MHZ@000000"
|
||||||
|
- key: Nid_cell
|
||||||
|
env: "@NID_CELL@"
|
||||||
|
- key: N_RB_DL
|
||||||
|
env: "@NB_PRB@"
|
||||||
|
- key: ipv4
|
||||||
|
env: "@MME_S1C_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1_MME
|
||||||
|
env: "@S1C_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1_MME
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1U
|
||||||
|
env: "@S1U_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1U
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
||||||
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
|
||||||
Reference in New Issue
Block a user