summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2017-03-02 20:14:05 +0000
committerLubomir Rintel <lkundrak@v3.sk>2017-03-23 16:44:16 +0100
commit456a5c42ce226aab8e8e19e2ab3ead3dae66e168 (patch)
treec64118c8467f48fce5864de4034858e22d9fe250
parent13f96b85738f548ffb4976717923b6aacb597e3f (diff)
downloadNetworkManager-lr/log-hints.tar.gz
cli: advise the user to consult logs when a connection fails to activatelr/log-hints
Error: Connection activation failed: no valid VPN secrets. Hint: use 'journalctl -xe NM_CONNECTION=0dd048e5-e84b-4e96-9142-61b3e73f1c69 + NM_DEVICE=eth0' to get more details.
-rw-r--r--clients/cli/connections.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c
index fecec0d403..cd847a3148 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -2162,6 +2162,39 @@ active_connection_state_reason_to_string (NMActiveConnectionStateReason reason)
g_return_val_if_reached (_("Invalid reason"));
}
+#if SYSTEMD_JOURNAL
+static void
+active_connection_hint (NmCli *nmc, NMActiveConnection *active)
+{
+ NMRemoteConnection *connection;
+ GString *hint;
+ const GPtrArray *devices;
+ int i;
+
+ connection = nm_active_connection_get_connection (active);
+ g_return_if_fail (connection);
+
+ hint = g_string_new ("journalctl -xe ");
+ g_string_append_printf (hint, "NM_CONNECTION=%s",
+ nm_connection_get_uuid (NM_CONNECTION (connection)));
+
+ devices = nm_active_connection_get_devices (active);
+ for (i = 0; i < devices->len; i++) {
+ g_string_append_printf (hint, " + NM_DEVICE=%s",
+ nm_device_get_iface (NM_DEVICE (g_ptr_array_index (devices, i))));
+ }
+
+ g_string_append (nmc->return_text, "\n");
+ g_string_append_printf (nmc->return_text, _("Hint: use '%s' to get more details."), hint->str);
+ g_string_free (hint, TRUE);
+}
+#else
+static void
+active_connection_hint (NmCli *nmc, NMActiveConnection *active)
+{
+}
+#endif
+
static void
check_activated (ActivateConnectionInfo *info)
{
@@ -2192,6 +2225,7 @@ check_activated (ActivateConnectionInfo *info)
if (dev_state == NM_DEVICE_STATE_FAILED || dev_state == NM_DEVICE_STATE_DISCONNECTED) {
g_string_printf (nmc->return_text, _("Error: Connection activation failed: %s"),
nmc_device_reason_to_string (dev_reason));
+ active_connection_hint (nmc, active);
nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION;
activate_connection_info_finish (info);
} else {
@@ -2201,6 +2235,7 @@ check_activated (ActivateConnectionInfo *info)
} else {
g_string_printf (nmc->return_text, _("Error: Connection activation failed: %s"),
active_connection_state_reason_to_string (ac_reason));
+ active_connection_hint (nmc, active);
nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION;
activate_connection_info_finish (info);
}
@@ -2337,6 +2372,7 @@ activate_connection_cb (GObject *client, GAsyncResult *result, gpointer user_dat
g_string_printf (nmc->return_text, _("Error: Connection activation failed: %s"),
error->message);
g_error_free (error);
+ active_connection_hint (nmc, active);
nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION;
activate_connection_info_finish (info);
} else {