#define NTS_SDN_CONTROLLER_CONFIG_XPATH "/nts-manager:simulation/sdn-controller"
#define NTS_VES_ENDPOINT_CONFIG_XPATH "/nts-manager:simulation/ves-endpoint"
+#define NTS_NETWORK_FUNCTION_FTYPE_SCHEMA_XPATH "/nts-network-function:simulation/network-function/function-type"
+
static manager_network_function_type *manager_context = 0;
static int manager_installed_function_types_count = 0;
}
}
+ rc = sr_set_item_str(session_running, NTS_NETWORK_FUNCTION_FTYPE_SCHEMA_XPATH, "NTS_FUNCTION_TYPE_MANAGER", 0, 0);
+ if(rc != SR_ERR_OK) {
+ log_error("sr_set_item_str failed");
+ return NTS_ERR_FAILED;
+ }
+
+
//apply all changes
rc = sr_apply_changes(session_running, 0, 0);
if(rc != SR_ERR_OK) {
assert(context_index < manager_installed_function_types_count);
assert(new_context);
- int ret_code = NTS_ERR_OK;
-
manager_network_function_type *current_context = &manager_context[context_index];
int rc = 0;
rc = manager_stop_instance(current_context);
if(rc != NTS_ERR_OK) {
log_error("manager_stop_instance failed");
- current_context->started_instances++;
- ret_code = NTS_ERR_FAILED;
+ return NTS_ERR_FAILED;
break;
}
}
rc = manager_start_instance(current_context);
if(rc != NTS_ERR_OK) {
log_error("manager_start_instance failed");
- current_context->started_instances--;
- ret_code = NTS_ERR_FAILED;
+ return NTS_ERR_FAILED;
break;
}
}
rc = manager_unmount_instance(current_context);
if(rc != NTS_ERR_OK) {
log_error("manager_unmount_instance failed");
- current_context->mounted_instances++;
- ret_code = NTS_ERR_FAILED;
break;
}
}
rc = manager_mount_instance(current_context);
if(rc != NTS_ERR_OK) {
log_error("manager_mount_instance failed");
- current_context->mounted_instances--;
- ret_code = NTS_ERR_FAILED;
break;
}
}
}
}
- return ret_code;
+ return NTS_ERR_OK;
}
static int manager_change_cb(sr_session_ctx_t *session, const char *module_name, const char *xpath, sr_event_t event, uint32_t request_id, void *private_data) {
free(instance->name);
free(instance->mount_point_addressing_method);
free(instance->host_ip);
+ function_type->started_instances--;
return NTS_ERR_FAILED;
}
free(instance->mount_point_addressing_method);
free(instance->host_ip);
manager_port[instance->host_port] = 0;
+ function_type->started_instances--;
return NTS_ERR_FAILED;
}
if(instance->is_mounted) {
if(manager_unmount_instance(function_type) != NTS_ERR_OK) {
log_error("failed to unmount instance");
- return NTS_ERR_FAILED;
}
}
int manager_unmount_instance(manager_network_function_type *function_type) {
assert(function_type);
+ int ret = NTS_ERR_OK;
manager_network_function_instance_t *instance = &function_type->instance[function_type->mounted_instances - 1];
int rc = http_request(url, controller->username, controller->password, "DELETE", "", 0, 0);
if(rc != NTS_ERR_OK) {
log_error("http_request failed");
- free(url);
- free(node_id);
- controller_details_free(controller);
- return NTS_ERR_FAILED;
+ ret = NTS_ERR_FAILED;
}
free(url);
function_type->mounted_instances--;
function_type->instance[function_type->mounted_instances].is_mounted = false;
- return NTS_ERR_OK;
+ return ret;
}