Commit 9106a750 authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

Add CLI command to test reconfiguration status

Based on patch from Kenth Eriksson <kenth.eriksson@infinera.com>.
parent 8a2cbb88
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -444,6 +444,24 @@ config_undo(void)
  return CONF_PROGRESS;
}

int
config_status(void)
{
  if (shutting_down)
    return CONF_SHUTDOWN;

  if (configuring)
    return future_cftype ? CONF_QUEUED : CONF_PROGRESS;

  return CONF_DONE;
}

btime
config_timer_status(void)
{
  return tm_active(config_timer) ? tm_remains(config_timer) : -1;
}

extern void cmd_reconfig_undo_notify(void);

static void
+2 −0
Original line number Diff line number Diff line
@@ -69,6 +69,8 @@ void config_free(struct config *);
int config_commit(struct config *, int type, uint timeout);
int config_confirm(void);
int config_undo(void);
int config_status(void);
btime config_timer_status(void);
void config_init(void);
void cf_error(const char *msg, ...) NORET;
void config_add_obstacle(struct config *);
+4 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ static struct log_config *this_log;
CF_DECLS

CF_KEYWORDS(LOG, SYSLOG, ALL, DEBUG, TRACE, INFO, REMOTE, WARNING, ERROR, AUTH, FATAL, BUG, STDERR, SOFT)
CF_KEYWORDS(NAME, CONFIRM, UNDO, CHECK, TIMEOUT, DEBUG, LATENCY, LIMIT, WATCHDOG, WARNING)
CF_KEYWORDS(NAME, CONFIRM, UNDO, CHECK, TIMEOUT, DEBUG, LATENCY, LIMIT, WATCHDOG, WARNING, STATUS)

%type <i> log_mask log_mask_list log_cat cfg_timeout
%type <t> cfg_name
@@ -124,6 +124,9 @@ CF_CLI(CONFIGURE CONFIRM,,, [[Confirm last configuration change - deactivate und
CF_CLI(CONFIGURE UNDO,,, [[Undo last configuration change]])
{ cmd_reconfig_undo(); } ;

CF_CLI(CONFIGURE STATUS,,, [[Show configuration status]])
{ cmd_reconfig_status(); } ;

CF_CLI(CONFIGURE CHECK, cfg_name, [\"<file>\"], [[Parse configuration and check its validity]])
{ cmd_check_config($3); } ;

+22 −0
Original line number Diff line number Diff line
@@ -339,6 +339,28 @@ cmd_reconfig_undo(void)
  cmd_reconfig_msg(r);
}

void
cmd_reconfig_status(void)
{
  int s = config_status();
  btime t = config_timer_status();

  switch (s)
  {
  case CONF_DONE:	cli_msg(-3, "Daemon is up and running"); break;
  case CONF_PROGRESS:	cli_msg(-4, "Reconfiguration in progress"); break;
  case CONF_QUEUED:	cli_msg(-5, "Reconfiguration in progress, next one enqueued"); break;
  case CONF_SHUTDOWN:	cli_msg(-6, "Shutdown in progress"); break;
  default:		break;
  }

  if (t >= 0)
    cli_msg(-22, "Configuration unconfirmed, undo in %t s", t);

  cli_msg(0, "");
}


/*
 *	Command-Line Interface
 */
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ void cmd_check_config(char *name);
void cmd_reconfig(char *name, int type, uint timeout);
void cmd_reconfig_confirm(void);
void cmd_reconfig_undo(void);
void cmd_reconfig_status(void);
void cmd_shutdown(void);

#define UNIX_DEFAULT_CONFIGURE_TIMEOUT	300