From d9429fd11a6da29fec87e927360521059bd5728c Mon Sep 17 00:00:00 2001
From: zhongtao <zhongtao17@huawei.com>
Date: Wed, 30 Aug 2023 09:56:29 +0000
Subject: [PATCH 128/145] !2159 use macros to isolate the password option of
 login and the plugin module * use macros to isolate the password option of
 login and the plugin module

---
 cmake/options.cmake                           | 14 ++++++++++
 src/cmd/isula/images/login.h                  | 28 +++++++++++++------
 src/cmd/isulad/main.c                         |  2 ++
 .../executor/container_cb/execution_create.c  |  2 ++
 src/daemon/modules/CMakeLists.txt             | 13 +++++++--
 src/daemon/modules/api/CMakeLists.txt         |  3 ++
 .../container/container_events_handler.c      |  2 ++
 .../modules/service/service_container.c       |  4 +++
 8 files changed, 57 insertions(+), 11 deletions(-)

diff --git a/cmake/options.cmake b/cmake/options.cmake
index d8b88dec..1b6caa2b 100644
--- a/cmake/options.cmake
+++ b/cmake/options.cmake
@@ -103,6 +103,20 @@ if (ENABLE_SHIM_V2 STREQUAL "ON")
     message("${Green}--  Enable shim v2 runtime${ColourReset}")
 endif()
 
+option(ENABLE_PLUGIN "enable plugin module" OFF)
+if (ENABLE_PLUGIN STREQUAL "ON")
+	add_definitions(-DENABLE_PLUGIN=1)
+	set(ENABLE_PLUGIN 1)
+    message("${Green}--  Enable plugin module${ColourReset}")
+endif()
+
+option(ENABLE_LOGIN_PASSWORD_OPTION "enable login password option" ON)
+if (ENABLE_LOGIN_PASSWORD_OPTION STREQUAL "ON")
+	add_definitions(-DENABLE_LOGIN_PASSWORD_OPTION=1)
+	set(ENABLE_LOGIN_PASSWORD_OPTION 1)
+    message("${Green}--  Enable login password option${ColourReset}")
+endif()
+
 option(EANBLE_IMAGE_LIBARAY "create libisulad_image.so" ON)
 if (EANBLE_IMAGE_LIBARAY STREQUAL "ON")
     add_definitions(-DEANBLE_IMAGE_LIBARAY)
diff --git a/src/cmd/isula/images/login.h b/src/cmd/isula/images/login.h
index 5f9a676c..38829cba 100644
--- a/src/cmd/isula/images/login.h
+++ b/src/cmd/isula/images/login.h
@@ -24,16 +24,28 @@
 extern "C" {
 #endif
 
+#ifdef ENABLE_LOGIN_PASSWORD_OPTION
 #define LOGIN_OPTIONS(cmdargs)                                                                      \
-    { CMD_OPT_TYPE_STRING_DUP, false, "username", 'u', &(cmdargs).username, "Username", NULL },         \
-    { CMD_OPT_TYPE_STRING_DUP, false, "password", 'p', &(cmdargs).password, "Password", NULL }, \
-    { CMD_OPT_TYPE_BOOL,                                                                    \
-      false,                                                                                \
-      "password-stdin",                                                                     \
-      0,                                                                                    \
-      &(cmdargs).password_stdin,                                                            \
-      "Take the password from stdin",                                                       \
+    { CMD_OPT_TYPE_STRING_DUP, false, "username", 'u', &(cmdargs).username, "Username", NULL },     \
+    { CMD_OPT_TYPE_STRING_DUP, false, "password", 'p', &(cmdargs).password, "Password", NULL },     \
+    { CMD_OPT_TYPE_BOOL,                                                                            \
+      false,                                                                                        \
+      "password-stdin",                                                                             \
+      0,                                                                                            \
+      &(cmdargs).password_stdin,                                                                    \
+      "Take the password from stdin",                                                               \
       NULL },
+#else
+#define LOGIN_OPTIONS(cmdargs)                                                                      \
+    { CMD_OPT_TYPE_STRING_DUP, false, "username", 'u', &(cmdargs).username, "Username", NULL },     \
+    { CMD_OPT_TYPE_BOOL,                                                                            \
+      false,                                                                                        \
+      "password-stdin",                                                                             \
+      0,                                                                                            \
+      &(cmdargs).password_stdin,                                                                    \
+      "Take the password from stdin",                                                               \
+      NULL },
+#endif
 
 extern const char g_cmd_login_desc[];
 extern const char g_cmd_login_usage[];
diff --git a/src/cmd/isulad/main.c b/src/cmd/isulad/main.c
index 8c8fcc40..7b337358 100644
--- a/src/cmd/isulad/main.c
+++ b/src/cmd/isulad/main.c
@@ -1623,10 +1623,12 @@ int main(int argc, char **argv)
         goto failure;
     }
 
+#ifdef ENABLE_PLUGIN
     if (start_plugin_manager()) {
         msg = "Failed to init plugin_manager";
         goto failure;
     }
+#endif 
 
     clock_gettime(CLOCK_MONOTONIC, &t_end);
     use_time = (double)(t_end.tv_sec - t_start.tv_sec) * (double)1000000000 + (double)(t_end.tv_nsec - t_start.tv_nsec);
diff --git a/src/daemon/executor/container_cb/execution_create.c b/src/daemon/executor/container_cb/execution_create.c
index 7e0d681c..d5e54aaf 100644
--- a/src/daemon/executor/container_cb/execution_create.c
+++ b/src/daemon/executor/container_cb/execution_create.c
@@ -1487,6 +1487,7 @@ int container_create_cb(const container_create_request *request, container_creat
         goto clean_netns;
     }
 
+#ifdef ENABLE_PLUGIN
     /* modify oci_spec by plugin. */
     if (plugin_event_container_pre_create(id, oci_spec) != 0) {
         ERROR("Plugin event pre create failed");
@@ -1494,6 +1495,7 @@ int container_create_cb(const container_create_request *request, container_creat
         cc = ISULAD_ERR_EXEC;
         goto clean_netns;
     }
+#endif
 
     host_channel = dup_host_channel(host_spec->host_channel);
     if (prepare_host_channel(host_channel, host_spec->user_remap)) {
diff --git a/src/daemon/modules/CMakeLists.txt b/src/daemon/modules/CMakeLists.txt
index c5b6987c..35a5886d 100644
--- a/src/daemon/modules/CMakeLists.txt
+++ b/src/daemon/modules/CMakeLists.txt
@@ -3,7 +3,6 @@
 aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} modules_top_srcs)
 add_subdirectory(runtime)
 add_subdirectory(image)
-add_subdirectory(plugin)
 add_subdirectory(spec)
 add_subdirectory(container)
 add_subdirectory(log)
@@ -17,7 +16,6 @@ set(local_modules_srcs
     ${modules_top_srcs}
     ${RUNTIME_SRCS}
     ${IMAGE_SRCS}
-    ${PLUGIN_SRCS}
     ${SPEC_SRCS}
     ${MANAGER_SRCS}
     ${LOG_GATHER_SRCS}
@@ -31,7 +29,6 @@ set(local_modules_incs
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${RUNTIME_INCS}
     ${IMAGE_INCS}
-    ${PLUGIN_INCS}
     ${SPEC_INCS}
     ${MANAGER_INCS}
     ${LOG_GATHER_INCS}
@@ -42,6 +39,16 @@ set(local_modules_incs
     ${VOLUME_INCS}
     )
 
+if (ENABLE_PLUGIN)
+    add_subdirectory(plugin)
+    list(APPEND local_modules_srcs
+        ${PLUGIN_SRCS}
+        )
+    list(APPEND local_modules_incs
+        ${PLUGIN_INCS}
+        )
+endif()
+
 set(MODULES_SRCS
     ${local_modules_srcs}
     PARENT_SCOPE
diff --git a/src/daemon/modules/api/CMakeLists.txt b/src/daemon/modules/api/CMakeLists.txt
index f577c45f..0735b25a 100644
--- a/src/daemon/modules/api/CMakeLists.txt
+++ b/src/daemon/modules/api/CMakeLists.txt
@@ -9,3 +9,6 @@ set(MODULES_API_INCS
     PARENT_SCOPE
     )
 
+if (NOT ENABLE_PLUGIN)
+    list(REMOVE_ITEM MODULES_API_INCS "${CMAKE_CURRENT_SOURCE_DIR}/plugin_api.h")
+endif()
diff --git a/src/daemon/modules/container/container_events_handler.c b/src/daemon/modules/container/container_events_handler.c
index d78e6fc1..d56c2ee0 100644
--- a/src/daemon/modules/container/container_events_handler.c
+++ b/src/daemon/modules/container/container_events_handler.c
@@ -155,7 +155,9 @@ static int container_state_changed(container_t *cont, const struct isulad_events
             } else {
                 container_state_set_stopped(cont->state, (int)events->exit_status);
                 container_wait_stop_cond_broadcast(cont);
+#ifdef ENABLE_PLUGIN
                 plugin_event_container_post_stop(cont);
+#endif 
             }
 
             auto_remove = !should_restart && cont->hostconfig != NULL && cont->hostconfig->auto_remove;
diff --git a/src/daemon/modules/service/service_container.c b/src/daemon/modules/service/service_container.c
index f278d8ab..5d8fdf6c 100644
--- a/src/daemon/modules/service/service_container.c
+++ b/src/daemon/modules/service/service_container.c
@@ -798,12 +798,14 @@ static int do_start_container(container_t *cont, const char *console_fifos[], bo
         open_stdin = cont->common_config->config->open_stdin;
     }
 
+#ifdef ENABLE_PLUGIN
     if (plugin_event_container_pre_start(cont)) {
         ERROR("Plugin event pre start failed ");
         plugin_event_container_post_stop(cont); /* ignore error */
         ret = -1;
         goto close_exit_fd;
     }
+#endif
 
     create_params.bundle = bundle;
     create_params.state = cont->state_path;
@@ -1257,7 +1259,9 @@ int delete_container(container_t *cont, bool force)
         }
     }
 
+#ifdef ENABLE_PLUGIN
     plugin_event_container_post_remove(cont);
+#endif
 
     ret = do_delete_container(cont);
     if (ret != 0) {
-- 
2.40.1

