X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fo1-interface.git;a=blobdiff_plain;f=ntsimulator%2Fntsim-ng%2Ffeatures%2Fweb_cut_through%2Fweb_cut_through.c;h=0ae406a28376d58af1f03b8eac4dc4683e0f27f9;hp=8139b17a3a352f252ec0257d28f180fde615731f;hb=3bbf9d8a3c81afebcffb2b926cef219336dd53d6;hpb=312a154cc4d60a09596fba8fd1259345e048cdc2 diff --git a/ntsimulator/ntsim-ng/features/web_cut_through/web_cut_through.c b/ntsimulator/ntsim-ng/features/web_cut_through/web_cut_through.c index 8139b17..0ae406a 100644 --- a/ntsimulator/ntsim-ng/features/web_cut_through/web_cut_through.c +++ b/ntsimulator/ntsim-ng/features/web_cut_through/web_cut_through.c @@ -31,47 +31,119 @@ #define SYSTEM_NAME_SCHEMA_XPATH "/ietf-system:system/onap-system:name" #define SYSTEM_WEB_UI_SCHEMA_XPATH "/ietf-system:system/onap-system:web-ui" +#define IETF_SYSTEM_CONTACT_SCHEMA_XPATH "/ietf-system:system/contact" +#define IETF_SYSTEM_HOSTNAME_SCHEMA_XPATH "/ietf-system:system/hostname" +#define IETF_SYSTEM_LOCATION_SCHEMA_XPATH "/ietf-system:system/location" +#define IETF_SYSTEM_TIMEZONE_NAME_SCHEMA_XPATH "/ietf-system:system/clock/timezone-name" +#define IETF_SYSTEM_NTP_ENABLED_SCHEMA_XPATH "/ietf-system:system/ntp/enabled" +static int web_cut_through_status = 0; + +int web_cut_through_feature_get_status(void) { + return web_cut_through_status; +} int web_cut_through_feature_start(sr_session_ctx_t *current_session) { assert(current_session); assert_session(); - int rc = 0; + if(web_cut_through_status == 0) { + //update ietf-system details + int rc = sr_set_item_str(current_session, SYSTEM_NAME_SCHEMA_XPATH, framework_environment.settings.hostname, 0, 0); + if(rc != SR_ERR_OK) { + log_error("sr_set_item_str failed\n"); + return NTS_ERR_FAILED; + } - //update ietf-system details - rc = sr_set_item_str(current_session, SYSTEM_NAME_SCHEMA_XPATH, framework_environment.hostname, 0, 0); - if(rc != SR_ERR_OK) { - log_error("sr_set_item_str failed"); - return NTS_ERR_FAILED; - } + controller_details_t *controller_details = controller_details_get(current_session); + if(controller_details == 0) { + log_error("controller_details_get failed\n"); + return NTS_ERR_FAILED; + } - controller_details_t *controller_details = controller_details_get(current_session); - if(controller_details == 0) { - log_error("controller_details_get failed"); - return NTS_ERR_FAILED; - } + char *web_ui = 0; + asprintf(&web_ui, "%s/odlux/index.html#/configuration/%s", controller_details->base_url, framework_environment.settings.hostname); + controller_details_free(controller_details); - char *web_ui = 0; - asprintf(&web_ui, "%s/odlux/index.html#/about", controller_details->base_url); - controller_details_free(controller_details); + if(web_ui == 0) { + log_error("asprintf failed\n"); + return NTS_ERR_FAILED; + } - if(web_ui == 0) { - log_error("asprintf failed"); - return NTS_ERR_FAILED; - } + rc = sr_set_item_str(current_session, SYSTEM_WEB_UI_SCHEMA_XPATH, web_ui, 0, 0); + free(web_ui); + if(rc != SR_ERR_OK) { + log_error("sr_set_item_str failed\n"); + return NTS_ERR_FAILED; + } + + rc = sr_set_item_str(current_session, IETF_SYSTEM_CONTACT_SCHEMA_XPATH, "O-RAN-SC SIM project", 0, 0); + if(rc != SR_ERR_OK) { + log_error("sr_set_item_str failed\n"); + return NTS_ERR_FAILED; + } + + rc = sr_set_item_str(current_session, IETF_SYSTEM_HOSTNAME_SCHEMA_XPATH, framework_environment.settings.hostname, 0, 0); + if(rc != SR_ERR_OK) { + log_error("sr_set_item_str failed\n"); + return NTS_ERR_FAILED; + } + + rc = sr_set_item_str(current_session, IETF_SYSTEM_LOCATION_SCHEMA_XPATH, "Open Wireless Lab", 0, 0); + if(rc != SR_ERR_OK) { + log_error("sr_set_item_str failed\n"); + return NTS_ERR_FAILED; + } + + rc = sr_set_item_str(current_session, IETF_SYSTEM_TIMEZONE_NAME_SCHEMA_XPATH, "UTC", 0, 0); + if(rc != SR_ERR_OK) { + log_error("sr_set_item_str failed\n"); + return NTS_ERR_FAILED; + } + + rc = sr_set_item_str(current_session, IETF_SYSTEM_NTP_ENABLED_SCHEMA_XPATH, "false", 0, 0); + if(rc != SR_ERR_OK) { + log_error("sr_set_item_str failed\n"); + return NTS_ERR_FAILED; + } - rc = sr_set_item_str(current_session, SYSTEM_WEB_UI_SCHEMA_XPATH, web_ui, 0, 0); - free(web_ui); - if(rc != SR_ERR_OK) { - log_error("sr_set_item_str failed"); - return NTS_ERR_FAILED; + rc = sr_apply_changes(current_session, 0, 0); + if(rc != SR_ERR_OK) { + log_error("could not apply changes on datastore\n"); + return NTS_ERR_FAILED; + } + + web_cut_through_status = 1; } - rc = sr_apply_changes(current_session, 0, 0); - if(rc != SR_ERR_OK) { - log_error("could not apply changes on datastore"); - return NTS_ERR_FAILED; + return NTS_ERR_OK; +} + +int web_cut_through_feature_stop(sr_session_ctx_t *current_session) { + assert(current_session); + assert_session(); + + if(web_cut_through_status) { + //update ietf-system details + int rc = sr_delete_item(current_session, SYSTEM_NAME_SCHEMA_XPATH, 0); + if(rc != SR_ERR_OK) { + log_error("sr_delete_item failed\n"); + return NTS_ERR_FAILED; + } + + rc = sr_delete_item(current_session, SYSTEM_WEB_UI_SCHEMA_XPATH, 0); + if(rc != SR_ERR_OK) { + log_error("sr_delete_item failed\n"); + return NTS_ERR_FAILED; + } + + rc = sr_apply_changes(current_session, 0, 0); + if(rc != SR_ERR_OK) { + log_error("could not apply changes on datastore\n"); + return NTS_ERR_FAILED; + } + + web_cut_through_status = 0; } return NTS_ERR_OK;