+ //check if an image needs to be pulled
+ log_add_verbose(1, "Docker auto-pull is ");
+ if(strlen(framework_environment.settings.docker_repository)) {
+ log_add(1, LOG_COLOR_BOLD_GREEN"enabled"LOG_COLOR_RESET"\n");
+ int pull_count = 0;
+ for(int i = 0; i < docker_context_count; i++) {
+ bool pull = true;
+ for(int j = 0; j < docker_context[i].available_images_count; j++) {
+ if(strcmp(framework_environment.nts.version, docker_context[i].available_images[j].tag) == 0) {
+ pull = false;
+ }
+ }
+
+ if(pull) {
+ log_add_verbose(1, "pulling "LOG_COLOR_RED"%s/"LOG_COLOR_CYAN"%s"LOG_COLOR_RESET":"LOG_COLOR_YELLOW"%s"LOG_COLOR_RESET"... ", framework_environment.settings.docker_repository, docker_context[i].image, framework_environment.nts.version);
+ rc = docker_pull(framework_environment.settings.docker_repository, docker_context[i].image, framework_environment.nts.version);
+ if(rc != NTS_ERR_OK) {
+ log_add(1, LOG_COLOR_BOLD_RED"failed"LOG_COLOR_RESET"\n");
+ }
+ else {
+ log_add(1, LOG_COLOR_BOLD_GREEN"OK"LOG_COLOR_RESET"\n");
+ pull_count++;
+ }
+ }
+ }
+
+ if(pull_count) {
+ //reinit docker
+ docker_free(docker_context, docker_context_count);
+ rc = docker_init(docker_filter, docker_context_count, NTS_VERSION_FALLBACK, &docker_context);
+ if(rc != NTS_ERR_OK) {
+ log_error("docker_init() failed\n");
+ free(docker_filter);
+ free(function_types);
+ return NTS_ERR_FAILED;
+ }
+ }
+ }
+ else {
+ log_add(1, LOG_COLOR_YELLOW"disabled"LOG_COLOR_RESET"\n");
+ }
+ free(docker_filter);
+