#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;