Refactor folder structure.
[sim/o1-interface.git] / ntsimulator / src / ntsimulator-manager / simulator-operations.c
index 872513a..2ff4207 100644 (file)
@@ -1,9 +1,19 @@
-/*
- * simulator-operations.c
- *
- *  Created on: Mar 9, 2019
- *      Author: parallels
- */
+/*************************************************************************
+*
+* Copyright 2019 highstreet technologies GmbH and others
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+***************************************************************************/
 
 #include "simulator-operations.h"
 #include "sysrepo.h"
@@ -82,8 +92,8 @@ static cJSON* get_docker_container_bindings(void)
        curl_easy_reset(curl);
        set_curl_common_info();
 
-       char url[100];
-       sprintf(url, "http:/v%s/containers/NTS_Manager/json", getenv("DOCKER_ENGINE_VERSION"));
+       char url[200];
+       sprintf(url, "http:/v%s/containers/%s/json", getenv("DOCKER_ENGINE_VERSION"), getenv("HOSTNAME"));
 
        curl_easy_setopt(curl, CURLOPT_URL, url);
 
@@ -243,6 +253,12 @@ static char* create_docker_container_curl(int base_netconf_port, cJSON* managerB
        return NULL;
     }
 
+       if (cJSON_AddStringToObject(labels, "NTS_Manager", getenv("HOSTNAME")) == NULL)
+    {
+       printf("Could not create JSON object: NTS Manager\n");
+       return NULL;
+    }
+
     cJSON *env_variables_array = cJSON_CreateArray();
     if (env_variables_array == NULL)
        {
@@ -418,7 +434,7 @@ static int send_mount_device_instance_ssh(char *url, char *credentials, char *de
 
        curl_easy_setopt(curl_odl, CURLOPT_URL, url_for_curl);
 
-       char post_data_xml[1000];
+       char post_data_xml[1500];
 
        sprintf(post_data_xml,
                        "<node xmlns=\"urn:TBD:params:xml:ns:yang:network-topology\">"
@@ -429,6 +445,11 @@ static int send_mount_device_instance_ssh(char *url, char *credentials, char *de
                        "<password xmlns=\"urn:opendaylight:netconf-node-topology\">%s</password>"
                        "<tcp-only xmlns=\"urn:opendaylight:netconf-node-topology\">false</tcp-only>"
                        "<keepalive-delay xmlns=\"urn:opendaylight:netconf-node-topology\">120</keepalive-delay>"
+                       "<reconnect-on-changed-schema xmlns=\"urn:opendaylight:netconf-node-topology\">false</reconnect-on-changed-schema>"
+                       "<sleep-factor xmlns=\"urn:opendaylight:netconf-node-topology\">1.5</sleep-factor>"
+                       "<connection-timeout-millis xmlns=\"urn:opendaylight:netconf-node-topology\">20000</connection-timeout-millis>"
+                       "<max-connection-attempts xmlns=\"urn:opendaylight:netconf-node-topology\">100</max-connection-attempts>"
+                       "<between-attempts-timeout-millis xmlns=\"urn:opendaylight:netconf-node-topology\">2000</between-attempts-timeout-millis>"
                        "</node>",
                        device_name, device_port, getenv("NTS_IP"), device_port, "netconf", "netconf");
 
@@ -471,7 +492,7 @@ static int send_mount_device_instance_tls(char *url, char *credentials, char *de
 
        curl_easy_setopt(curl_odl, CURLOPT_URL, url_for_curl);
 
-       char post_data_xml[1000];
+       char post_data_xml[1500];
 
        sprintf(post_data_xml,
                        "<node xmlns=\"urn:TBD:params:xml:ns:yang:network-topology\">"
@@ -487,6 +508,11 @@ static int send_mount_device_instance_tls(char *url, char *credentials, char *de
                        "<port xmlns=\"urn:opendaylight:netconf-node-topology\">%d</port>"
                        "<tcp-only xmlns=\"urn:opendaylight:netconf-node-topology\">false</tcp-only>"
                        "<keepalive-delay xmlns=\"urn:opendaylight:netconf-node-topology\">120</keepalive-delay>"
+                       "<reconnect-on-changed-schema xmlns=\"urn:opendaylight:netconf-node-topology\">false</reconnect-on-changed-schema>"
+                       "<sleep-factor xmlns=\"urn:opendaylight:netconf-node-topology\">1.5</sleep-factor>"
+                       "<connection-timeout-millis xmlns=\"urn:opendaylight:netconf-node-topology\">20000</connection-timeout-millis>"
+                       "<max-connection-attempts xmlns=\"urn:opendaylight:netconf-node-topology\">100</max-connection-attempts>"
+                       "<between-attempts-timeout-millis xmlns=\"urn:opendaylight:netconf-node-topology\">2000</between-attempts-timeout-millis>"
                        "</node>",
                        device_name, device_port, getenv("NTS_IP"), "netconf", device_port);
 
@@ -1001,6 +1027,7 @@ int get_docker_containers_operational_state_curl(device_stack_t *theStack)
                                        if (rc != SR_ERR_OK)
                                        {
                                                printf("Could not set the operational state for the device with uuid=\"%s\"\n", container_id_short);
+                                               return SR_ERR_OPERATION_FAILED;
                                        }
                                }
                        }
@@ -1072,7 +1099,7 @@ int notification_delay_period_changed(int period)
        if (!cJSON_IsObject(notifConfig))
        {
                printf("Configuration JSON is not as expected: notification-config is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1080,7 +1107,7 @@ int notification_delay_period_changed(int period)
        if (!cJSON_IsNumber(faultNotifDelay))
        {
                printf("Configuration JSON is not as expected: fault-notification-delay-period is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1091,7 +1118,7 @@ int notification_delay_period_changed(int period)
        stringConfiguration = cJSON_Print(jsonConfig);
        writeConfigFile(stringConfiguration);
 
-       free(jsonConfig);
+       cJSON_Delete(jsonConfig);
 
        return SR_ERR_OK;
 }
@@ -1125,7 +1152,7 @@ int ves_heartbeat_period_changed(int period)
        if (!cJSON_IsObject(notifConfig))
        {
                printf("Configuration JSON is not as expected: notification-config is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1133,7 +1160,7 @@ int ves_heartbeat_period_changed(int period)
        if (!cJSON_IsNumber(vesHeartbeatPeriod))
        {
                printf("Configuration JSON is not as expected: ves-heartbeat-period is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1144,7 +1171,7 @@ int ves_heartbeat_period_changed(int period)
        stringConfiguration = cJSON_Print(jsonConfig);
        writeConfigFile(stringConfiguration);
 
-       free(jsonConfig);
+       cJSON_Delete(jsonConfig);
 
        return SR_ERR_OK;
 }
@@ -1376,7 +1403,7 @@ int ves_ip_changed(char *new_ip)
        if (!cJSON_IsObject(vesDetails))
        {
                printf("Configuration JSON is not as expected: ves-endpoint-details is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1384,7 +1411,7 @@ int ves_ip_changed(char *new_ip)
        if (!cJSON_IsString(vesIp))
        {
                printf("Configuration JSON is not as expected: ves-endpoint-ip is not a string");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1395,7 +1422,7 @@ int ves_ip_changed(char *new_ip)
        stringConfiguration = cJSON_Print(jsonConfig);
        writeConfigFile(stringConfiguration);
 
-       free(jsonConfig);
+       cJSON_Delete(jsonConfig);
 
        return SR_ERR_OK;
 }
@@ -1429,7 +1456,7 @@ int ves_port_changed(int new_port)
        if (!cJSON_IsObject(vesDetails))
        {
                printf("Configuration JSON is not as expected: ves-endpoint-details is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1437,7 +1464,7 @@ int ves_port_changed(int new_port)
        if (!cJSON_IsNumber(vesPort))
        {
                printf("Configuration JSON is not as expected: ves-endpoint-port is not a number.");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1448,7 +1475,7 @@ int ves_port_changed(int new_port)
        stringConfiguration = cJSON_Print(jsonConfig);
        writeConfigFile(stringConfiguration);
 
-       free(jsonConfig);
+       cJSON_Delete(jsonConfig);
 
        return SR_ERR_OK;
 }
@@ -1482,7 +1509,7 @@ int ves_registration_changed(cJSON_bool new_bool)
        if (!cJSON_IsObject(vesDetails))
        {
                printf("Configuration JSON is not as expected: ves-endpoint-details is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1490,7 +1517,7 @@ int ves_registration_changed(cJSON_bool new_bool)
        if (!cJSON_IsBool(vesRegistration))
        {
                printf("Configuration JSON is not as expected: ves-registration is not a bool.");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1501,7 +1528,7 @@ int ves_registration_changed(cJSON_bool new_bool)
        stringConfiguration = cJSON_Print(jsonConfig);
        writeConfigFile(stringConfiguration);
 
-       free(jsonConfig);
+       cJSON_Delete(jsonConfig);
 
        return SR_ERR_OK;
 }
@@ -1535,7 +1562,7 @@ int is_netconf_available_changed(cJSON_bool new_bool)
        if (!cJSON_IsObject(notifConfig))
        {
                printf("Configuration JSON is not as expected: notification-config is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1543,7 +1570,7 @@ int is_netconf_available_changed(cJSON_bool new_bool)
        if (!cJSON_IsBool(isNetconfAvailable))
        {
                printf("Configuration JSON is not as expected: is-netconf-available is not a bool.");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1554,7 +1581,7 @@ int is_netconf_available_changed(cJSON_bool new_bool)
        stringConfiguration = cJSON_Print(jsonConfig);
        writeConfigFile(stringConfiguration);
 
-       free(jsonConfig);
+       cJSON_Delete(jsonConfig);
 
        return SR_ERR_OK;
 }
@@ -1588,7 +1615,7 @@ int is_ves_available_changed(cJSON_bool new_bool)
        if (!cJSON_IsObject(notifConfig))
        {
                printf("Configuration JSON is not as expected: notification-config is not an object");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1596,7 +1623,7 @@ int is_ves_available_changed(cJSON_bool new_bool)
        if (!cJSON_IsBool(isVesAvailable))
        {
                printf("Configuration JSON is not as expected: is-ves-available is not a bool.");
-               free(jsonConfig);
+               cJSON_Delete(jsonConfig);
                return SR_ERR_OPERATION_FAILED;
        }
 
@@ -1607,7 +1634,7 @@ int is_ves_available_changed(cJSON_bool new_bool)
        stringConfiguration = cJSON_Print(jsonConfig);
        writeConfigFile(stringConfiguration);
 
-       free(jsonConfig);
+       cJSON_Delete(jsonConfig);
 
        return SR_ERR_OK;
 }