mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
Fix tools for diagnostics
This commit is contained in:
parent
094ee2ecb7
commit
d3eb113a02
6 changed files with 48 additions and 17 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -12,3 +12,4 @@ out
|
|||
/datamodel
|
||||
/build
|
||||
/.repo
|
||||
/utilities/bbf_configd
|
||||
|
|
|
|||
|
|
@ -19,6 +19,9 @@ fi
|
|||
[ ! -d "${BBFDM_PLUGIN_DIR}" ] && mkdir -p "${BBFDM_PLUGIN_DIR}"
|
||||
rm -f ${BBFDM_PLUGIN_DIR}/*
|
||||
|
||||
[ ! -d "${BBFDM_MS_DIR}" ] && mkdir -p "${BBFDM_MS_DIR}"
|
||||
rm -f ${BBFDM_MS_DIR}/*
|
||||
|
||||
if [ -z "${1}" ]; then
|
||||
./tools/generate_dm.py tools/tools_input.json
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
BBFDM_PLUGIN_DIR="/usr/share/bbfdm/plugins"
|
||||
BBFDM_MS_DIR="/usr/share/bbfdm/micro_services"
|
||||
|
||||
if [ -z "${CI_PROJECT_PATH}" ]; then
|
||||
CI_PROJECT_PATH=${PWD}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ INSTALL(TARGETS bbfdm
|
|||
INSTALL(DIRECTORY DESTINATION etc/bbfdm)
|
||||
INSTALL(DIRECTORY DESTINATION etc/bbfdm/dmmap)
|
||||
INSTALL(DIRECTORY DESTINATION usr/share/bbfdm/plugins)
|
||||
INSTALL(DIRECTORY DESTINATION usr/share/bbfdm/micro_services)
|
||||
|
||||
INSTALL(DIRECTORY DESTINATION usr/share/bbfdm)
|
||||
INSTALL(DIRECTORY DESTINATION usr/libexec/rpcd)
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ import glob
|
|||
# Constants
|
||||
BBF_ERROR_CODE = 0
|
||||
CURRENT_PATH = os.getcwd()
|
||||
BBF_PLUGIN_DIR = "/usr/share/bbfdm/plugins/"
|
||||
BBF_MS_DIR = "/usr/share/bbfdm/micro_services/"
|
||||
|
||||
DM_JSON_FILE = os.path.join(CURRENT_PATH, "libbbfdm", "dmtree", "json", "datamodel.json")
|
||||
|
||||
LIST_SUPPORTED_USP_DM = []
|
||||
|
|
@ -145,11 +148,18 @@ def clear_list(input_list):
|
|||
input_list.clear()
|
||||
|
||||
|
||||
def generate_shared_library(output_library, source_files, vendor_prefix, extra_dependencies):
|
||||
def generate_shared_library(dm_name, source_files, vendor_prefix, extra_dependencies, is_microservice=False):
|
||||
# Return if source_files (list) is empty
|
||||
if len(source_files) == 0:
|
||||
return
|
||||
|
||||
if is_microservice:
|
||||
outdir=BBF_MS_DIR
|
||||
else:
|
||||
outdir=BBF_PLUGIN_DIR
|
||||
|
||||
output_library = outdir + dm_name
|
||||
|
||||
# Set vendor prefix
|
||||
if vendor_prefix is not None:
|
||||
VENDOR_PREFIX = vendor_prefix
|
||||
|
|
@ -219,7 +229,7 @@ def build_and_install_bbfdm(vendor_prefix, vendor_list):
|
|||
print('Compiling and installing bbfdmd done')
|
||||
|
||||
|
||||
def create_bbfdm_input_json_file(proto):
|
||||
def create_bbfdm_input_json_file(proto, dm_name=None):
|
||||
data = {
|
||||
"daemon": {
|
||||
},
|
||||
|
|
@ -238,7 +248,11 @@ def create_bbfdm_input_json_file(proto):
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if dm_name:
|
||||
del data["cli"]["input"]["plugin_dir"]
|
||||
data["cli"]["input"]["name"] = dm_name
|
||||
|
||||
file_path = '/tmp/bbfdm/input.json'
|
||||
|
||||
# Ensure the directory exists
|
||||
|
|
@ -249,9 +263,7 @@ def create_bbfdm_input_json_file(proto):
|
|||
json.dump(data, json_file, indent=4)
|
||||
|
||||
|
||||
def fill_list_dm(proto, dm_list):
|
||||
create_bbfdm_input_json_file(proto)
|
||||
|
||||
def fill_list_dm(dm_list):
|
||||
command = "bbfdmd -c schema Device."
|
||||
try:
|
||||
# Run the command
|
||||
|
|
@ -296,18 +308,24 @@ def remove_duplicate_elements(input_list):
|
|||
|
||||
|
||||
def fill_list_supported_dm():
|
||||
for proto, DB in [("usp", LIST_SUPPORTED_USP_DM), ("cwmp", LIST_SUPPORTED_CWMP_DM)]:
|
||||
create_bbfdm_input_json_file(proto)
|
||||
fill_list_dm(DB)
|
||||
DB.sort(key=lambda x: x['param'], reverse=False)
|
||||
DB[:] = remove_duplicate_elements(DB)
|
||||
|
||||
fill_list_dm("usp", LIST_SUPPORTED_USP_DM)
|
||||
LIST_SUPPORTED_USP_DM.sort(key=lambda x: x['param'], reverse=False)
|
||||
LIST_SUPPORTED_USP_DM[:] = remove_duplicate_elements(LIST_SUPPORTED_USP_DM)
|
||||
|
||||
fill_list_dm("cwmp", LIST_SUPPORTED_CWMP_DM)
|
||||
LIST_SUPPORTED_CWMP_DM.sort(key=lambda x: x['param'], reverse=False)
|
||||
LIST_SUPPORTED_CWMP_DM[:] = remove_duplicate_elements(LIST_SUPPORTED_CWMP_DM)
|
||||
for file in os.listdir(BBF_MS_DIR):
|
||||
f = os.path.join(BBF_MS_DIR, file)
|
||||
|
||||
if os.path.isfile(f):
|
||||
for proto, DB in [("usp", LIST_SUPPORTED_USP_DM), ("cwmp", LIST_SUPPORTED_CWMP_DM)]:
|
||||
create_bbfdm_input_json_file(proto, f)
|
||||
fill_list_dm(DB)
|
||||
DB.sort(key=lambda x: x['param'], reverse=False)
|
||||
DB[:] = remove_duplicate_elements(DB)
|
||||
|
||||
def clone_git_repository(repo, version=None):
|
||||
repo_path='.repo/'+os.path.basename(repo)
|
||||
repo_path='.repo/'+os.path.basename(repo).replace('.git','')
|
||||
if os.path.exists(repo_path):
|
||||
print(f' {repo} already exists at {repo_path} !')
|
||||
return True
|
||||
|
|
@ -344,18 +362,20 @@ def download_and_build_plugins(plugins, vendor_prefix):
|
|||
repo = get_option_value(plugin, "repo")
|
||||
proto = get_option_value(plugin, "proto")
|
||||
dm_files = get_option_value(plugin, "dm_files")
|
||||
is_microservice = get_option_value(plugin, "is_microservice")
|
||||
extra_dependencies = get_option_value(plugin, "extra_dependencies", [])
|
||||
repo_path = None
|
||||
name=os.path.basename(repo).replace('.git','')
|
||||
|
||||
if repo is None or proto is None or dm_files is None or not isinstance(dm_files, list):
|
||||
print("Necessary input missing")
|
||||
BBF_ERROR_CODE += 1
|
||||
continue
|
||||
|
||||
print(f' - Processing plugin: {plugin}')
|
||||
print(f' - Processing plugin: MS({is_microservice}) {plugin}')
|
||||
|
||||
if proto == "git":
|
||||
repo_path = ".repo/"+os.path.basename(repo)
|
||||
repo_path = ".repo/"+name
|
||||
version = get_option_value(plugin, "version")
|
||||
|
||||
|
||||
|
|
@ -394,7 +414,7 @@ def download_and_build_plugins(plugins, vendor_prefix):
|
|||
BBF_ERROR_CODE += 1
|
||||
|
||||
if len(LIST_FILES) > 0:
|
||||
if not generate_shared_library(f"/usr/share/bbfdm/plugins/lib{plugin_index}.so", LIST_FILES, vendor_prefix, extra_dependencies):
|
||||
if not generate_shared_library(f"{name}{plugin_index}.so", LIST_FILES, vendor_prefix, extra_dependencies, is_microservice):
|
||||
BBF_ERROR_CODE += 1
|
||||
|
||||
clear_list(LIST_FILES)
|
||||
|
|
|
|||
|
|
@ -223,6 +223,9 @@
|
|||
"dm_files": [
|
||||
"bbf_plugin/vendor_ethernet.c",
|
||||
"bbf_plugin/dmlayer.c"
|
||||
],
|
||||
"extra_dependencies": [
|
||||
"-DTR181_VENDOR_EXTENSIONS_MACVLAN"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -255,6 +258,7 @@
|
|||
"repo": "https://dev.iopsys.eu/bbf/tr143d.git",
|
||||
"proto": "git",
|
||||
"version": "devel",
|
||||
"is_microservice": true,
|
||||
"dm_files": [
|
||||
"src/diagnostics.c"
|
||||
]
|
||||
|
|
@ -263,6 +267,7 @@
|
|||
"repo": "https://dev.iopsys.eu/bbf/tr471d.git",
|
||||
"proto": "git",
|
||||
"version": "devel",
|
||||
"is_microservice": true,
|
||||
"dm_files": [
|
||||
"src/iplayercap.c"
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue