X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fo1-interface.git;a=blobdiff_plain;f=ntsimulator%2Fntsim-ng%2Fcore%2Fapp%2Fmanager.h;h=50ee1f358301fb4037e74a3b33ec35ace3e2dae0;hp=ad1f0a9c4cdf4b7dd6176f0d13349bc271a1b4d9;hb=3bbf9d8a3c81afebcffb2b926cef219336dd53d6;hpb=312a154cc4d60a09596fba8fd1259345e048cdc2 diff --git a/ntsimulator/ntsim-ng/core/app/manager.h b/ntsimulator/ntsim-ng/core/app/manager.h index ad1f0a9..50ee1f3 100644 --- a/ntsimulator/ntsim-ng/core/app/manager.h +++ b/ntsimulator/ntsim-ng/core/app/manager.h @@ -19,52 +19,138 @@ #include #include -#include +#include +#include +#include +#include "core/docker.h" + +#define NTS_MANAGER_MODULE "nts-manager" +#define NTS_SIMULATION_SCHEMA_XPATH "/nts-manager:simulation" +#define NTS_FUNCTION_LIST_SCHEMA_XPATH "/nts-manager:simulation/network-functions/network-function" typedef struct { //meta-data - char *docker_id; + const struct lys_ident *ft; + const char *function_type; + bool is_init; bool is_configured; bool is_mounted; - //yang data - char *name; + docker_container_t container; char *mount_point_addressing_method; - char *docker_ip; - uint16_t docker_port; - char *host_ip; - uint16_t host_port; } manager_network_function_instance_t; typedef struct { //manager_docker data + const struct lys_ident *ft; + char *function_type; manager_network_function_instance_t *instance; - bool data_changed; - - //meta-data, constant - struct lys_ident *function_type; - char *function_type_string; - const char *docker_image_name; + docker_context_t *docker; //yang data int started_instances; int mounted_instances; + + char *mount_point_addressing_method; char *docker_instance_name; char *docker_version_tag; char *docker_repository; +} manager_context_t; + +typedef enum { + MANAGER_OPERATION_EDIT = 0, + MANAGER_OPERATION_RPC = 1, +} manager_operation_type_t; + +typedef struct manager_operation { + manager_operation_type_t type; + + int ft_index; + char *function_type; + + int started_instances; + int mounted_instances; + + char *docker_instance_name; + char *docker_repository; + char *docker_version_tag; char *mount_point_addressing_method; -} manager_network_function_type; + + //not used by EDIT, as datastore will be automatically updated + struct { + int *delay_period; + int delay_period_count; + } fault_generation; + + struct { + int faults_enabled; + int call_home; + } netconf; + + struct { + int faults_enabled; + int pnf_registration; + int heartbeat_period; + } ves; + + char *errmsg; + struct manager_operation *next; +} manager_operation_t; + +extern manager_context_t *manager_context; +extern docker_context_t *docker_context; +extern int docker_context_count; + +typedef enum { + MANAGER_PROTOCOL_UNUSED = 0, + MANAGER_PROTOCOL_UNAVAILABLE, + + MANAGER_PROTOCOL_NETCONF_SSH, + MANAGER_PROTOCOL_NETCONF_TLS, + MANAGER_PROTOCOL_FTP, + MANAGER_PROTOCOL_SFTP, + MANAGER_PROTOCOL_HTTP, + MANAGER_PROTOCOL_HTTPS, +} manager_protocol_type_t; + +extern manager_protocol_type_t manager_port[65536]; //manager.c int manager_run(void); +//manager_context.c +int manager_context_init(void); +void manager_context_free(void); + //manager_operations.c -void manager_operations_init(void); +int manager_operations_init(void); +void manager_operations_loop(void); +void manager_operations_free(void); + +manager_operation_t *manager_operations_new_oper(manager_operation_type_t type); +int manager_operations_free_oper(manager_operation_t *oper); + +int manager_operations_begin(void); +int manager_operations_add(manager_operation_t *oper); +void manager_operations_finish_and_execute(void); +void manager_operations_finish_with_error(void); + +int manager_operations_validate(manager_operation_t *oper); + +//manager_actions.c +int manager_actions_start(manager_context_t *ctx); +int manager_actions_config_instance(manager_context_t *ctx, manager_network_function_instance_t *instance); +int manager_actions_stop(manager_context_t *ctx); +int manager_actions_mount(manager_context_t *ctx); +int manager_actions_unmount(manager_context_t *ctx); -int manager_start_instance(manager_network_function_type *function_type); -int manager_config_instance(manager_network_function_type *function_type, manager_network_function_instance_t *instance); -int manager_stop_instance(manager_network_function_type *function_type); -int manager_mount_instance(manager_network_function_type *function_type); -int manager_unmount_instance(manager_network_function_type *function_type); +//manager_sysrepo.c +int manager_sr_get_context_sync(void); +int manager_sr_update_context(manager_context_t *ctx); +int manager_sr_on_last_operation_status(const char *status, const char *errmsg); +int manager_sr_notif_send_instance_changed(const char *status, const char *function_type, const char *name, const manager_network_function_instance_t* instance); +int manager_sr_update_static_stats(void); +int manager_sr_stats_get_items_cb(sr_session_ctx_t *session, const char *module_name, const char *xpath, const char *request_xpath, uint32_t request_id, struct lyd_node **parent, void *private_data); +int manager_sr_populate_networking(struct lyd_node *parent, const manager_network_function_instance_t* instance);