X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=ntsimulator%2Fntsim-ng%2Fcore%2Fframework.c;h=75b62177ad8f736077fedfb6d01cacd6e7a9ce81;hb=caec2fcb18e829420672509fe5e356b48d0c3840;hp=23a958ac12b4a901fdea50008d23af1cdb46dd19;hpb=92903642ea9a10306817529ca546ea2432c741a1;p=sim%2Fo1-interface.git diff --git a/ntsimulator/ntsim-ng/core/framework.c b/ntsimulator/ntsim-ng/core/framework.c index 23a958a..75b6217 100644 --- a/ntsimulator/ntsim-ng/core/framework.c +++ b/ntsimulator/ntsim-ng/core/framework.c @@ -45,7 +45,7 @@ static struct argp_option options[] = { { "supervisor", 's', 0, 0, "Run as supervisor; manager/network-function is chosen via config.json"}, { "manager", 'm', 0, 0, "Run the daemon as manager." }, { "network-function", 'f', 0, 0, "Run the daemon as network function." }, - { "generate", 'g', 0, 0, "Generate population data without commiting." }, + { "blank", 'b', 0, 0, "Run the deamon as a blank network function." }, { "test-mode", 't', 0, 0, "Test mode." }, // tools @@ -68,8 +68,93 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state); int framework_init(int argc, char **argv) { //environment vars - framework_environment.nts.version = getenv(ENV_VAR_NTS_BUILD_VERSION) ? strdup(getenv(ENV_VAR_NTS_BUILD_VERSION)) : strdup("N/A"); - framework_environment.nts.build_time = getenv(ENV_VAR_NTS_BUILD_TIME) ? strdup(getenv(ENV_VAR_NTS_BUILD_TIME)) : strdup("N/A"); + framework_environment.nts.version = (getenv(ENV_VAR_NTS_BUILD_VERSION) && strlen(getenv(ENV_VAR_NTS_BUILD_VERSION))) ? strdup(getenv(ENV_VAR_NTS_BUILD_VERSION)) : strdup(NTS_VERSION_FALLBACK"!"); + if(getenv(ENV_VAR_NTS_BUILD_TIME) && strlen(getenv(ENV_VAR_NTS_BUILD_TIME))) { + framework_environment.nts.build_time = strdup(getenv(ENV_VAR_NTS_BUILD_TIME)); + } + else { + if(__DATE__[0] == '?') { + framework_environment.nts.build_time = strdup("1970-01-01T00:00:00Z"); + } + else { + //01234567890 + //May 4 2021 + int year = 0; + int month = 1; + int day = 0; + + year = (__DATE__[10] - '0') + (__DATE__[9] - '0')*10 + (__DATE__[8] - '0')*100 + (__DATE__[7] - '0')*1000; + day = (__DATE__[5] - '0'); + if(__DATE__[4] != ' ') { + day += (__DATE__[4] - '0')*10; + } + + switch(__DATE__[0]) { + case 'J': + switch(__DATE__[1]) { + case 'a': + month = 1; + break; + + case 'u': + if(__DATE__[2] == 'n') { + month = 6; + } + else { + month = 7; + } + break; + } + break; + + case 'F': + month = 2; + break; + + case 'M': + switch(__DATE__[2]) { + case 'r': + month = 3; + break; + + case 'y': + month = 5; + break; + } + break; + + case 'A': + switch(__DATE__[1]) { + case 'p': + month = 4; + break; + + case 'u': + month = 8; + break; + } + break; + + case 'S': + month = 9; + break; + + case 'O': + month = 10; + break; + + case 'N': + month = 11; + break; + + case 'D': + month = 12; + break; + } + + asprintf(&framework_environment.nts.build_time, "%04d-%02d-%02dT%sZ", year, month, day, __TIME__); + } + } //set argp_version char *version = 0; @@ -116,16 +201,16 @@ int framework_init(int argc, char **argv) { stderr_file = "log/stderr-install.txt"; break; + case NTS_MODE_BLANK: + log_file = "log/log-blank.txt"; + stderr_file = "log/stderr-blank.txt"; + break; + case NTS_MODE_SUPERVISOR: log_file = "log/log-supervisor.txt"; stderr_file = "log/stderr-supervisor.txt"; break; - case NTS_MODE_GENERATE_DATA: - log_file = "log/log-generate.txt"; - stderr_file = "log/stderr-generate.txt"; - break; - default: log_file = "log/log.txt"; stderr_file = "log/stderr.txt"; @@ -179,7 +264,14 @@ static int framework_env_init(void) { framework_environment.nts.manual = getenv(ENV_VAR_NTS_MANUAL) ? true : false; framework_environment.nts.function_type = getenv(ENV_VAR_NTS_FUNCTION_TYPE) ? strdup(getenv(ENV_VAR_NTS_FUNCTION_TYPE)) : strdup(""); framework_environment.nts.nf_standalone_start_features = getenv(ENV_VAR_NTS_NF_STANDALONE_START_FEATURES) ? strdup(getenv(ENV_VAR_NTS_NF_STANDALONE_START_FEATURES)) : strdup(""); + framework_environment.nts.nf_mount_point_addressing_method = getenv(ENV_VAR_NTS_NF_MOUNT_POINT_ADDRESSING_METHOD) ? strdup(getenv(ENV_VAR_NTS_NF_MOUNT_POINT_ADDRESSING_METHOD)) : strdup("docker-mapping"); + framework_environment.settings.docker_repository = getenv(ENV_VAR_DOCKER_REPOSITORY) ? strdup(getenv(ENV_VAR_DOCKER_REPOSITORY)) : strdup(""); + if(strlen(framework_environment.settings.docker_repository)) { + if(framework_environment.settings.docker_repository[strlen(framework_environment.settings.docker_repository) - 1] == '/') { + framework_environment.settings.docker_repository[strlen(framework_environment.settings.docker_repository) - 1] = 0; + } + } framework_environment.settings.docker_engine_version = getenv(ENV_VAR_DOCKER_ENGINE_VERSION) ? strdup(getenv(ENV_VAR_DOCKER_ENGINE_VERSION)) : strdup("1.40"); framework_environment.settings.hostname = getenv(ENV_VAR_HOSTNAME) ? strdup(getenv(ENV_VAR_HOSTNAME)) : strdup("localhost"); @@ -209,9 +301,11 @@ static int framework_env_init(void) { framework_environment.sdn_controller.protocol = getenv(ENV_VAR_SDN_CONTROLLER_IP) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_PROTOCOL)) : strdup("https"); framework_environment.sdn_controller.ip = getenv(ENV_VAR_SDN_CONTROLLER_IP) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_IP)) : strdup("127.0.0.1"); framework_environment.sdn_controller.port = get_int_from_string_with_default(getenv(ENV_VAR_SDN_CONTROLLER_PORT), 8181); + framework_environment.sdn_controller.callhome_ip = getenv(ENV_VAR_SDN_CONTROLLER_CALLHOME_IP) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_CALLHOME_IP)) : strdup("127.0.0.1"); framework_environment.sdn_controller.callhome_port = get_int_from_string_with_default(getenv(ENV_VAR_SDN_CONTROLLER_CALLHOME_PORT), 6666); framework_environment.sdn_controller.username = getenv(ENV_VAR_SDN_CONTROLLER_USERNAME) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_USERNAME)) : strdup("admin"); framework_environment.sdn_controller.password = getenv(ENV_VAR_SDN_CONTROLLER_PASSWORD) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_PASSWORD)) : strdup("admin"); + framework_environment.sdn_controller.port_absent = (getenv(ENV_VAR_SDN_CONTROLLER_PORT) == 0) ? true : false; framework_environment.ves_endpoint.common_header_version = getenv(ENV_VAR_VES_COMMON_HEADER_VERSION) ? strdup(getenv(ENV_VAR_VES_COMMON_HEADER_VERSION)) : strdup("7.2"); framework_environment.ves_endpoint.protocol = getenv(ENV_VAR_VES_ENDPOINT_PROTOCOL) ? strdup(getenv(ENV_VAR_VES_ENDPOINT_PROTOCOL)) : strdup("https"); @@ -221,14 +315,17 @@ static int framework_env_init(void) { framework_environment.ves_endpoint.username = getenv(ENV_VAR_VES_ENDPOINT_USERNAME) ? strdup(getenv(ENV_VAR_VES_ENDPOINT_USERNAME)) : strdup("admin"); framework_environment.ves_endpoint.password = getenv(ENV_VAR_VES_ENDPOINT_PASSWORD) ? strdup(getenv(ENV_VAR_VES_ENDPOINT_PASSWORD)) : strdup("admin"); framework_environment.ves_endpoint.certificate = getenv(ENV_VAR_VES_ENDPOINT_CERTIFICATE) ? strdup(getenv(ENV_VAR_VES_ENDPOINT_CERTIFICATE)) : strdup(""); + framework_environment.ves_endpoint.port_absent = (getenv(ENV_VAR_VES_ENDPOINT_PORT) == 0) ? true : false; log_add_verbose(2, "[framework-env] nts.manual = %d\n", framework_environment.nts.manual); log_add_verbose(2, "[framework-env] nts.version = %s\n", framework_environment.nts.version); log_add_verbose(2, "[framework-env] nts.build_time = %s\n", framework_environment.nts.build_time); log_add_verbose(2, "[framework-env] nts.function_type = %s\n", framework_environment.nts.function_type); log_add_verbose(2, "[framework-env] nts.nf_standalone_start_features = %s\n", framework_environment.nts.nf_standalone_start_features); + log_add_verbose(2, "[framework-env] nts.nf_mount_point_addressing_method = %s\n", framework_environment.nts.nf_mount_point_addressing_method); log_add_verbose(2, "[framework-env] settings.docker_engine_version = %s\n", framework_environment.settings.docker_engine_version); + log_add_verbose(2, "[framework-env] settings.docker_repository = %s\n", framework_environment.settings.docker_repository); log_add_verbose(2, "[framework-env] settings.hostname = %s\n", framework_environment.settings.hostname); log_add_verbose(2, "[framework-env] settings.ip_v4 = %s\n", framework_environment.settings.ip_v4); log_add_verbose(2, "[framework-env] settings.ip_v6 = %s\n", framework_environment.settings.ip_v6); @@ -290,11 +387,13 @@ static int framework_env_init(void) { if(framework_environment.settings.ip_v6_enabled) { if(strstr(framework_environment.host.ip, ".")) { log_error("[framework-env] host.ip is an invalid IP v6\n"); + return NTS_ERR_FAILED; } } else { if(strstr(framework_environment.host.ip, ":")) { log_error("[framework-env] host.ip is an invalid IP v4\n"); + return NTS_ERR_FAILED; } } @@ -307,9 +406,11 @@ static int framework_env_init(void) { log_add_verbose(2, "[framework-env] sdn_controller.protocol = %s\n", framework_environment.sdn_controller.protocol); log_add_verbose(2, "[framework-env] sdn_controller.ip = %s\n", framework_environment.sdn_controller.ip); log_add_verbose(2, "[framework-env] sdn_controller.port = %d\n", framework_environment.sdn_controller.port); + log_add_verbose(2, "[framework-env] sdn_controller.callhome_ip = %s\n", framework_environment.sdn_controller.callhome_ip); log_add_verbose(2, "[framework-env] sdn_controller.callhome_port = %d\n", framework_environment.sdn_controller.callhome_port); log_add_verbose(2, "[framework-env] sdn_controller.username = %s\n", framework_environment.sdn_controller.username); log_add_verbose(2, "[framework-env] sdn_controller.password = %s\n", framework_environment.sdn_controller.password); + log_add_verbose(2, "[framework-env] sdn_controller.port_absent = %d\n", framework_environment.sdn_controller.port_absent); log_add_verbose(2, "[framework-env] ves_endpoint.common_header_version = %s\n", framework_environment.ves_endpoint.common_header_version); log_add_verbose(2, "[framework-env] ves_endpoint.protocol = %s\n", framework_environment.ves_endpoint.protocol); @@ -319,6 +420,7 @@ static int framework_env_init(void) { log_add_verbose(2, "[framework-env] ves_endpoint.username = %s\n", framework_environment.ves_endpoint.username); log_add_verbose(2, "[framework-env] ves_endpoint.password = %s\n", framework_environment.ves_endpoint.password); log_add_verbose(2, "[framework-env] ves_endpoint.certificate = %s\n", framework_environment.ves_endpoint.certificate); + log_add_verbose(2, "[framework-env] ves_endpoint.port_absent = %d\n", framework_environment.ves_endpoint.port_absent); log_add_verbose(2, "[framework-env] finished\n"); return NTS_ERR_OK; @@ -352,18 +454,25 @@ static int framework_config_init(void) { framework_config.datastore_populate.preg_running = 0; //config init - if(!dir_exists("config")) { - log_add_verbose(2, "[framework-config] config/ folder wasn't found; created.\n"); - mkdir("config", 0777); + char *config_file = "config/config.json"; + if(file_exists("/opt/dev/config/config.json")) { + config_file = "/opt/dev/config/config.json"; + log_add_verbose(1, LOG_COLOR_BOLD_MAGENTA"config.json is loaded from external volume!\n"LOG_COLOR_RESET); } + else { + if(!dir_exists("config")) { + log_add_verbose(2, "[framework-config] config/ folder wasn't found; created.\n"); + mkdir("config", 0777); + } - if(!file_exists("config/config.json")) { - log_add_verbose(2, "[framework-config] config.json file missing; created.\n"); - file_touch("config/config.json", "{}"); - } + if(!file_exists("config/config.json")) { + log_add_verbose(2, "[framework-config] config.json file missing; created.\n"); + file_touch("config/config.json", "{}"); + } + } - log_add_verbose(2, "[framework-config] parsing config.json\n"); - char *config_contents = file_read_content("config/config.json"); + log_add_verbose(2, "[framework-config] parsing config.json from %s\n", config_file); + char *config_contents = file_read_content(config_file); cJSON *json = cJSON_Parse(config_contents); free(config_contents); if(!json) { @@ -693,13 +802,16 @@ void framework_free(void) { free(framework_environment.nts.build_time); free(framework_environment.nts.function_type); free(framework_environment.nts.nf_standalone_start_features); + free(framework_environment.nts.nf_mount_point_addressing_method); free(framework_environment.settings.ip_v4); free(framework_environment.settings.ip_v6); free(framework_environment.settings.docker_engine_version); + free(framework_environment.settings.docker_repository); free(framework_environment.settings.hostname); free(framework_environment.host.ip); free(framework_environment.sdn_controller.protocol); free(framework_environment.sdn_controller.ip); + free(framework_environment.sdn_controller.callhome_ip); free(framework_environment.sdn_controller.username); free(framework_environment.sdn_controller.password); free(framework_environment.ves_endpoint.common_header_version); @@ -795,8 +907,8 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { iter_arguments->nts_mode = NTS_MODE_NETWORK_FUNCTION; break; - case 'g': - iter_arguments->nts_mode = NTS_MODE_GENERATE_DATA; + case 'b': + iter_arguments->nts_mode = NTS_MODE_BLANK; break; case 't':