[ovs-dev] [PATCH] ovsdb: raft: introduce cluster/connected and cluster/role commands

Numan Siddique numans at ovn.org
Mon Aug 24 10:52:57 UTC 2020


On Fri, Jul 24, 2020 at 7:40 PM Lorenzo Bianconi <
lorenzo.bianconi at redhat.com> wrote:

> Introduce the following commands for a cluster db running raft in order to
> dump the connection status and the db role in the cluster:
>
> $ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/connected OVN_Northbound
> connected
>
> $ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/role OVN_Northbound
> leader
>
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
>

Hi Lorenzo,

The patch LGTM, except one comment. Please see below.

Thanks
Numan


> ---
>  ovsdb/raft.c | 43 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 43 insertions(+)
>
> diff --git a/ovsdb/raft.c b/ovsdb/raft.c
> index 708b0624c..6da3fdef3 100644
> --- a/ovsdb/raft.c
> +++ b/ovsdb/raft.c
> @@ -4409,6 +4409,45 @@ raft_put_sid(const char *title, const struct uuid
> *sid,
>      ds_put_char(s, '\n');
>  }
>
> +static void
> +raft_unixctl_role(struct unixctl_conn *conn,
> +                  int argc OVS_UNUSED, const char *argv[],
> +                  void *aux OVS_UNUSED)
> +{
> +    struct raft *raft = raft_lookup_by_name(argv[1]);
> +    if (!raft) {
> +        unixctl_command_reply_error(conn, "unknown cluster");
> +        return;
> +    }
> +
> +    struct ds s = DS_EMPTY_INITIALIZER;
> +    ds_put_format(&s, "%s\n",
> +                  raft->role == RAFT_LEADER ? "leader"
> +                  : raft->role == RAFT_CANDIDATE ? "candidate"
> +                  : raft->role == RAFT_FOLLOWER ? "follower"
> +                  : "<error>");
> +    unixctl_command_reply(conn, ds_cstr(&s));
> +    ds_destroy(&s);
> +}
> +
> +static void
> +raft_unixctl_connected(struct unixctl_conn *conn,
> +                       int argc OVS_UNUSED, const char *argv[],
> +                       void *aux OVS_UNUSED)
> +{
> +    struct raft *raft = raft_lookup_by_name(argv[1]);
> +    if (!raft) {
> +        unixctl_command_reply_error(conn, "unknown cluster");
> +        return;
> +    }
> +
> +    struct ds s = DS_EMPTY_INITIALIZER;
> +    bool connected = raft_is_connected(raft);
> +    ds_put_format(&s, "%s\n", connected ? "connected" : "unconnected");
>

"disconnected" or "not connected" would be better.

Thanks
Numan


> +    unixctl_command_reply(conn, ds_cstr(&s));
> +    ds_destroy(&s);
> +}
> +
>  static void
>  raft_unixctl_status(struct unixctl_conn *conn,
>                      int argc OVS_UNUSED, const char *argv[],
> @@ -4763,6 +4802,10 @@ raft_init(void)
>                               raft_unixctl_cid, NULL);
>      unixctl_command_register("cluster/sid", "DB", 1, 1,
>                               raft_unixctl_sid, NULL);
> +    unixctl_command_register("cluster/role", "DB", 1, 1,
> +                             raft_unixctl_role, NULL);
> +    unixctl_command_register("cluster/connected", "DB", 1, 1,
> +                             raft_unixctl_connected, NULL);
>      unixctl_command_register("cluster/status", "DB", 1, 1,
>                               raft_unixctl_status, NULL);
>      unixctl_command_register("cluster/leave", "DB", 1, 1,
> --
> 2.26.2
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>


More information about the dev mailing list