diff options
author | Arne Juul <arnej@yahooinc.com> | 2022-09-15 11:17:26 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2022-09-15 11:20:38 +0000 |
commit | a5fbb5b41765fa12ea8da3cb6f7837325d3bb3d9 (patch) | |
tree | 0a2da1a3f6986f402f75486d1fa6fdb2bf313a86 /logforwarder/src/apps/vespa-logforwarder-start/main.cpp | |
parent | 641561888e998be6d198c651c3c45de9f1915b31 (diff) |
be more careful about splunk start/stop
* validate the configurable splunk-home
* do stopping via C++ program instead of shell command
* some refactoring of C++ code as well
Diffstat (limited to 'logforwarder/src/apps/vespa-logforwarder-start/main.cpp')
-rw-r--r-- | logforwarder/src/apps/vespa-logforwarder-start/main.cpp | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/logforwarder/src/apps/vespa-logforwarder-start/main.cpp b/logforwarder/src/apps/vespa-logforwarder-start/main.cpp index 33fe4489811..d24c9c982a1 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/main.cpp +++ b/logforwarder/src/apps/vespa-logforwarder-start/main.cpp @@ -6,7 +6,8 @@ #include <vespa/log/log.h> LOG_SETUP("vespa-logforwarder-start"); -#include "cf-handler.h" +#include "splunk-starter.h" +#include "splunk-stopper.h" #include <vespa/vespalib/util/sig_catch.h> class Wrapper { @@ -15,7 +16,7 @@ public: Wrapper(const char *cfid) : _configId(cfid) {} void run() { vespalib::SigCatch catcher; - CfHandler handler; + SplunkStarter handler; handler.start(_configId); while (! catcher.receivedStopSignal()) { handler.check(); @@ -28,12 +29,32 @@ public: int main(int argc, char** argv) { - int c = getopt(argc, argv, "c:"); - if (c != 'c') { + int c = -1; + bool stopMode = false; + const char *cfid = nullptr; + while ((c = getopt(argc, argv, "Sc:")) != -1) { + switch (c) { + case 'S': + stopMode = true; + break; + case 'c': + cfid = optarg; + break; + default: + cfid = nullptr; + break; + } + } + if (cfid == nullptr) { LOG(error, "Usage: %s -c <config-id>", argv[0]); return EXIT_FAILURE; } - Wrapper wrapper(optarg); - wrapper.run(); + if (stopMode) { + SplunkStopper stopper(cfid); + stopper.check(); + } else { + Wrapper wrapper(cfid); + wrapper.run(); + } return 0; } |