On 4/23/20 5:31 AM, Dumitru Ceara wrote:
On 4/23/20 9:23 AM, [email protected] wrote:
From: Numan Siddique <[email protected]>

If an OVN service is started with --pidfile option, the pidfile
is created in the ovs rundir. This patch fixes it by using the ovn rundir
if either the pidfile is not specified or if specified, it is not
absolute path.

Signed-off-by: Numan Siddique <[email protected]>

Looks good to me, thanks!

Acked-by: Dumitru Ceara <[email protected]>

Thanks, I merged this to master.


---

v1 -> v2
----
   * Addressed review comments from Dumitru

  controller-vtep/ovn-controller-vtep.c |  6 +--
  controller/ovn-controller.c           |  6 +--
  ic/ovn-ic.c                           |  6 +--
  lib/ovn-util.c                        | 26 ++++++++++++
  lib/ovn-util.h                        | 60 +++++++++++++++++++++++++++
  northd/ovn-northd.c                   |  6 +--
  utilities/ovn-nbctl.c                 | 10 ++---
  utilities/ovn-trace.c                 |  6 +--
  8 files changed, 106 insertions(+), 20 deletions(-)

diff --git a/controller-vtep/ovn-controller-vtep.c 
b/controller-vtep/ovn-controller-vtep.c
index 253a709ab..c13280bc0 100644
--- a/controller-vtep/ovn-controller-vtep.c
+++ b/controller-vtep/ovn-controller-vtep.c
@@ -169,7 +169,7 @@ parse_options(int argc, char *argv[])
          OPT_PEER_CA_CERT = UCHAR_MAX + 1,
          OPT_BOOTSTRAP_CA_CERT,
          VLOG_OPTION_ENUMS,
-        DAEMON_OPTION_ENUMS,
+        OVN_DAEMON_OPTION_ENUMS,
          SSL_OPTION_ENUMS,
      };
@@ -179,7 +179,7 @@ parse_options(int argc, char *argv[])
          {"help", no_argument, NULL, 'h'},
          {"version", no_argument, NULL, 'V'},
          VLOG_LONG_OPTIONS,
-        DAEMON_LONG_OPTIONS,
+        OVN_DAEMON_LONG_OPTIONS,
          STREAM_SSL_LONG_OPTIONS,
          {"peer-ca-cert", required_argument, NULL, OPT_PEER_CA_CERT},
          {"bootstrap-ca-cert", required_argument, NULL, OPT_BOOTSTRAP_CA_CERT},
@@ -212,7 +212,7 @@ parse_options(int argc, char *argv[])
              exit(EXIT_SUCCESS);
VLOG_OPTION_HANDLERS
-        DAEMON_OPTION_HANDLERS
+        OVN_DAEMON_OPTION_HANDLERS
          STREAM_SSL_OPTION_HANDLERS
case OPT_PEER_CA_CERT:
diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
index 4d21ba0fd..6ff897325 100644
--- a/controller/ovn-controller.c
+++ b/controller/ovn-controller.c
@@ -2268,7 +2268,7 @@ parse_options(int argc, char *argv[])
          OPT_PEER_CA_CERT = UCHAR_MAX + 1,
          OPT_BOOTSTRAP_CA_CERT,
          VLOG_OPTION_ENUMS,
-        DAEMON_OPTION_ENUMS,
+        OVN_DAEMON_OPTION_ENUMS,
          SSL_OPTION_ENUMS,
      };
@@ -2276,7 +2276,7 @@ parse_options(int argc, char *argv[])
          {"help", no_argument, NULL, 'h'},
          {"version", no_argument, NULL, 'V'},
          VLOG_LONG_OPTIONS,
-        DAEMON_LONG_OPTIONS,
+        OVN_DAEMON_LONG_OPTIONS,
          STREAM_SSL_LONG_OPTIONS,
          {"peer-ca-cert", required_argument, NULL, OPT_PEER_CA_CERT},
          {"bootstrap-ca-cert", required_argument, NULL, OPT_BOOTSTRAP_CA_CERT},
@@ -2301,7 +2301,7 @@ parse_options(int argc, char *argv[])
              exit(EXIT_SUCCESS);
VLOG_OPTION_HANDLERS
-        DAEMON_OPTION_HANDLERS
+        OVN_DAEMON_OPTION_HANDLERS
          STREAM_SSL_OPTION_HANDLERS
case OPT_PEER_CA_CERT:
diff --git a/ic/ovn-ic.c b/ic/ovn-ic.c
index d931ca50f..a1ed25623 100644
--- a/ic/ovn-ic.c
+++ b/ic/ovn-ic.c
@@ -1461,7 +1461,7 @@ static void
  parse_options(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
  {
      enum {
-        DAEMON_OPTION_ENUMS,
+        OVN_DAEMON_OPTION_ENUMS,
          VLOG_OPTION_ENUMS,
          SSL_OPTION_ENUMS,
      };
@@ -1474,7 +1474,7 @@ parse_options(int argc OVS_UNUSED, char *argv[] 
OVS_UNUSED)
          {"help", no_argument, NULL, 'h'},
          {"options", no_argument, NULL, 'o'},
          {"version", no_argument, NULL, 'V'},
-        DAEMON_LONG_OPTIONS,
+        OVN_DAEMON_LONG_OPTIONS,
          VLOG_LONG_OPTIONS,
          STREAM_SSL_LONG_OPTIONS,
          {NULL, 0, NULL, 0},
@@ -1490,7 +1490,7 @@ parse_options(int argc OVS_UNUSED, char *argv[] 
OVS_UNUSED)
          }
switch (c) {
-        DAEMON_OPTION_HANDLERS;
+        OVN_DAEMON_OPTION_HANDLERS;
          VLOG_OPTION_HANDLERS;
          STREAM_SSL_OPTION_HANDLERS;
diff --git a/lib/ovn-util.c b/lib/ovn-util.c
index 1b30c2e9a..3482edb8d 100644
--- a/lib/ovn-util.c
+++ b/lib/ovn-util.c
@@ -15,6 +15,7 @@
  #include <config.h>
  #include <unistd.h>
+#include "daemon.h"
  #include "ovn-util.h"
  #include "ovn-dirs.h"
  #include "openvswitch/vlog.h"
@@ -394,6 +395,31 @@ get_abs_unix_ctl_path(const char *path)
      return abs_path;
  }
+void
+ovn_set_pidfile(const char *name)
+{
+    char *pidfile_name = NULL;
+
+#ifndef _WIN32
+    pidfile_name = name ? abs_file_name(ovn_rundir(), name)
+                        : xasprintf("%s/%s.pid", ovn_rundir(), program_name);
+#else
+    if (name) {
+        if (strchr(name, ':')) {
+            pidfile_name = xstrdup(name);
+        } else {
+            pidfile_name = xasprintf("%s/%s", ovn_rundir(), name);
+        }
+    } else {
+        pidfile_name = xasprintf("%s/%s.pid", ovn_rundir(), program_name);
+    }
+#endif
+
+    /* Call openvswitch lib function. */
+    set_pidfile(pidfile_name);
+    free(pidfile_name);
+}
+
  /* l3gateway, chassisredirect, and patch
   * are not in this list since they are
   * only set in the SB DB by northd
diff --git a/lib/ovn-util.h b/lib/ovn-util.h
index 4076e8b9a..ec5f2cf5a 100644
--- a/lib/ovn-util.h
+++ b/lib/ovn-util.h
@@ -112,6 +112,7 @@ uint32_t ovn_allocate_tnlid(struct hmap *set, const char 
*name, uint32_t min,
                              uint32_t max, uint32_t *hint);
char *ovn_chassis_redirect_name(const char *port_name);
+void ovn_set_pidfile(const char *name);
/* An IPv4 or IPv6 address */
  struct v46_ip {
@@ -129,4 +130,63 @@ bool ip46_equals(const struct v46_ip *addr1, const struct 
v46_ip *addr2);
   * Caller must free the returned string.
   */
  char *str_tolower(const char *orig);
+
+/* OVN daemon options. Taken from ovs/lib/daemon.h. */
+#define OVN_DAEMON_OPTION_ENUMS                     \
+    OVN_OPT_DETACH,                                 \
+    OVN_OPT_NO_SELF_CONFINEMENT,                    \
+    OVN_OPT_NO_CHDIR,                               \
+    OVN_OPT_OVERWRITE_PIDFILE,                      \
+    OVN_OPT_PIDFILE,                                \
+    OVN_OPT_MONITOR,                                \
+    OVN_OPT_USER_GROUP
+
+#define OVN_DAEMON_LONG_OPTIONS                                              \
+        {"detach",            no_argument, NULL, OVN_OPT_DETACH},            \
+        {"no-self-confinement", no_argument, NULL,                           \
+         OVN_OPT_NO_SELF_CONFINEMENT},                                       \
+        {"no-chdir",          no_argument, NULL, OVN_OPT_NO_CHDIR},          \
+        {"pidfile",           optional_argument, NULL, OVN_OPT_PIDFILE},     \
+        {"overwrite-pidfile", no_argument, NULL, OVN_OPT_OVERWRITE_PIDFILE}, \
+        {"monitor",           no_argument, NULL, OVN_OPT_MONITOR},           \
+        {"user",              required_argument, NULL, OVN_OPT_USER_GROUP}
+
+#define OVN_DAEMON_OPTION_HANDLERS                  \
+        case OVN_OPT_DETACH:                        \
+            set_detach();                           \
+            break;                                  \
+                                                    \
+        case OVN_OPT_NO_SELF_CONFINEMENT:           \
+            daemon_disable_self_confinement();      \
+            break;                                  \
+                                                    \
+        case OVN_OPT_NO_CHDIR:                      \
+            set_no_chdir();                         \
+            break;                                  \
+                                                    \
+        case OVN_OPT_PIDFILE:                       \
+            ovn_set_pidfile(optarg);                \
+            break;                                  \
+                                                    \
+        case OVN_OPT_OVERWRITE_PIDFILE:             \
+            ignore_existing_pidfile();              \
+            break;                                  \
+                                                    \
+        case OVN_OPT_MONITOR:                       \
+            daemon_set_monitor();                   \
+            break;                                  \
+                                                    \
+        case OVN_OPT_USER_GROUP:                    \
+            daemon_set_new_user(optarg);            \
+            break;
+
+#define OVN_DAEMON_OPTION_CASES                     \
+        case OVN_OPT_DETACH:                        \
+        case OVN_OPT_NO_SELF_CONFINEMENT:           \
+        case OVN_OPT_NO_CHDIR:                      \
+        case OVN_OPT_PIDFILE:                       \
+        case OVN_OPT_OVERWRITE_PIDFILE:             \
+        case OVN_OPT_MONITOR:                       \
+        case OVN_OPT_USER_GROUP:
+
  #endif
diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
index f02dc5d5e..c4675bd68 100644
--- a/northd/ovn-northd.c
+++ b/northd/ovn-northd.c
@@ -11640,7 +11640,7 @@ static void
  parse_options(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
  {
      enum {
-        DAEMON_OPTION_ENUMS,
+        OVN_DAEMON_OPTION_ENUMS,
          VLOG_OPTION_ENUMS,
          SSL_OPTION_ENUMS,
      };
@@ -11651,7 +11651,7 @@ parse_options(int argc OVS_UNUSED, char *argv[] 
OVS_UNUSED)
          {"help", no_argument, NULL, 'h'},
          {"options", no_argument, NULL, 'o'},
          {"version", no_argument, NULL, 'V'},
-        DAEMON_LONG_OPTIONS,
+        OVN_DAEMON_LONG_OPTIONS,
          VLOG_LONG_OPTIONS,
          STREAM_SSL_LONG_OPTIONS,
          {NULL, 0, NULL, 0},
@@ -11667,7 +11667,7 @@ parse_options(int argc OVS_UNUSED, char *argv[] 
OVS_UNUSED)
          }
switch (c) {
-        DAEMON_OPTION_HANDLERS;
+        OVN_DAEMON_OPTION_HANDLERS;
          VLOG_OPTION_HANDLERS;
          STREAM_SSL_OPTION_HANDLERS;
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
index cb46d3aa5..c86fa3886 100644
--- a/utilities/ovn-nbctl.c
+++ b/utilities/ovn-nbctl.c
@@ -324,7 +324,7 @@ enum {
      OPT_NO_SHUFFLE_REMOTES,
      OPT_BOOTSTRAP_CA_CERT,
      MAIN_LOOP_OPTION_ENUMS,
-    DAEMON_OPTION_ENUMS,
+    OVN_DAEMON_OPTION_ENUMS,
      VLOG_OPTION_ENUMS,
      TABLE_OPTION_ENUMS,
      SSL_OPTION_ENUMS,
@@ -428,7 +428,7 @@ get_all_options(void)
          {"version", no_argument, NULL, 'V'},
          {"unixctl", required_argument, NULL, 'u'},
          MAIN_LOOP_LONG_OPTIONS,
-        DAEMON_LONG_OPTIONS,
+        OVN_DAEMON_LONG_OPTIONS,
          VLOG_LONG_OPTIONS,
          STREAM_SSL_LONG_OPTIONS,
          {"bootstrap-ca-cert", required_argument, NULL, OPT_BOOTSTRAP_CA_CERT},
@@ -460,7 +460,7 @@ has_option(const struct ovs_cmdl_parsed_option 
*parsed_options, size_t n,
  static bool
  will_detach(const struct ovs_cmdl_parsed_option *parsed_options, size_t n)
  {
-    return has_option(parsed_options, n, OPT_DETACH);
+    return has_option(parsed_options, n, OVN_OPT_DETACH);
  }
static char * OVS_WARN_UNUSED_RESULT
@@ -547,7 +547,7 @@ apply_options_direct(const struct ovs_cmdl_parsed_option 
*parsed_options,
              printf("DB Schema %s\n", nbrec_get_db_version());
              exit(EXIT_SUCCESS);
- DAEMON_OPTION_HANDLERS
+        OVN_DAEMON_OPTION_HANDLERS
          VLOG_OPTION_HANDLERS
          TABLE_OPTION_HANDLERS(&table_style)
          STREAM_SSL_OPTION_HANDLERS
@@ -6611,7 +6611,7 @@ nbctl_client(const char *socket_name,
          case OPT_NO_SHUFFLE_REMOTES:
          case OPT_BOOTSTRAP_CA_CERT:
          STREAM_SSL_CASES
-        DAEMON_OPTION_CASES
+        OVN_DAEMON_OPTION_CASES
              VLOG_INFO("using ovn-nbctl daemon, ignoring %s option",
                        po->o->name);
              break;
diff --git a/utilities/ovn-trace.c b/utilities/ovn-trace.c
index eae9622d3..c9d72285c 100644
--- a/utilities/ovn-trace.c
+++ b/utilities/ovn-trace.c
@@ -239,7 +239,7 @@ parse_options(int argc, char *argv[])
          OPT_CT,
          OPT_FRIENDLY_NAMES,
          OPT_NO_FRIENDLY_NAMES,
-        DAEMON_OPTION_ENUMS,
+        OVN_DAEMON_OPTION_ENUMS,
          SSL_OPTION_ENUMS,
          VLOG_OPTION_ENUMS,
          OPT_LB_DST,
@@ -260,7 +260,7 @@ parse_options(int argc, char *argv[])
          {"version", no_argument, NULL, 'V'},
          {"lb-dst", required_argument, NULL, OPT_LB_DST},
          {"select-id", required_argument, NULL, OPT_SELECT_ID},
-        DAEMON_LONG_OPTIONS,
+        OVN_DAEMON_LONG_OPTIONS,
          VLOG_LONG_OPTIONS,
          STREAM_SSL_LONG_OPTIONS,
          {NULL, 0, NULL, 0},
@@ -333,7 +333,7 @@ parse_options(int argc, char *argv[])
              printf("DB Schema %s\n", sbrec_get_db_version());
              exit(EXIT_SUCCESS);
- DAEMON_OPTION_HANDLERS
+        OVN_DAEMON_OPTION_HANDLERS
          VLOG_OPTION_HANDLERS
          STREAM_SSL_OPTION_HANDLERS

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to