app/status: separate state from deployments printing
Prep for auto-updates. Use different functions for printing the daemon state and printing the deployments themselves. Closes: #1212 Approved by: cgwalters
This commit is contained in:
parent
2c270a6644
commit
a211e4670d
@ -167,18 +167,37 @@ gv_nevra_to_evr (GString *buffer,
|
|||||||
PKG_NEVRA_FLAGS_EPOCH_VERSION_RELEASE);
|
PKG_NEVRA_FLAGS_EPOCH_VERSION_RELEASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
print_daemon_state (RPMOSTreeSysroot *sysroot_proxy,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
glnx_unref_object RPMOSTreeTransaction *txn_proxy = NULL;
|
||||||
|
if (!rpmostree_transaction_connect_active (sysroot_proxy, NULL, &txn_proxy,
|
||||||
|
cancellable, error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
g_print ("State: %s", txn_proxy ? "busy" : "idle");
|
||||||
|
|
||||||
|
if (txn_proxy)
|
||||||
|
{
|
||||||
|
const char *title = rpmostree_transaction_get_title (txn_proxy);
|
||||||
|
g_print ("Transaction: %s\n", title);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/* We will have an optimized path for the case where there are just
|
/* We will have an optimized path for the case where there are just
|
||||||
* two deployments, this code will be the generic fallback.
|
* two deployments, this code will be the generic fallback.
|
||||||
*/
|
*/
|
||||||
static gboolean
|
static gboolean
|
||||||
status_generic (RPMOSTreeSysroot *sysroot_proxy,
|
print_deployments (RPMOSTreeSysroot *sysroot_proxy,
|
||||||
RPMOSTreeOS *os_proxy,
|
|
||||||
GVariant *deployments,
|
GVariant *deployments,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GVariantIter iter;
|
GVariantIter iter;
|
||||||
gboolean first = TRUE;
|
|
||||||
|
|
||||||
/* First, gather global state */
|
/* First, gather global state */
|
||||||
gboolean have_any_live_overlay = FALSE;
|
gboolean have_any_live_overlay = FALSE;
|
||||||
@ -203,22 +222,11 @@ status_generic (RPMOSTreeSysroot *sysroot_proxy,
|
|||||||
have_any_live_overlay = have_any_live_overlay || have_live_changes;
|
have_any_live_overlay = have_any_live_overlay || have_live_changes;
|
||||||
}
|
}
|
||||||
|
|
||||||
glnx_unref_object RPMOSTreeTransaction *txn_proxy = NULL;
|
|
||||||
if (!rpmostree_transaction_connect_active (sysroot_proxy, NULL, &txn_proxy,
|
|
||||||
cancellable, error))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (txn_proxy)
|
|
||||||
{
|
|
||||||
const char *title = rpmostree_transaction_get_title (txn_proxy);
|
|
||||||
g_print ("State: transaction: %s\n", title);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
g_print ("State: idle\n");
|
|
||||||
g_print ("Deployments:\n");
|
g_print ("Deployments:\n");
|
||||||
|
|
||||||
g_variant_iter_init (&iter, deployments);
|
g_variant_iter_init (&iter, deployments);
|
||||||
|
|
||||||
|
gboolean first = TRUE;
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
g_autoptr(GVariant) child = g_variant_iter_next_value (&iter);
|
g_autoptr(GVariant) child = g_variant_iter_next_value (&iter);
|
||||||
@ -599,7 +607,6 @@ rpmostree_builtin_status (int argc,
|
|||||||
g_autoptr(GOptionContext) context = g_option_context_new ("");
|
g_autoptr(GOptionContext) context = g_option_context_new ("");
|
||||||
glnx_unref_object RPMOSTreeOS *os_proxy = NULL;
|
glnx_unref_object RPMOSTreeOS *os_proxy = NULL;
|
||||||
glnx_unref_object RPMOSTreeSysroot *sysroot_proxy = NULL;
|
glnx_unref_object RPMOSTreeSysroot *sysroot_proxy = NULL;
|
||||||
g_autoptr(GVariant) deployments = NULL;
|
|
||||||
_cleanup_peer_ GPid peer_pid = 0;
|
_cleanup_peer_ GPid peer_pid = 0;
|
||||||
|
|
||||||
if (!rpmostree_option_context_parse (context,
|
if (!rpmostree_option_context_parse (context,
|
||||||
@ -620,11 +627,10 @@ rpmostree_builtin_status (int argc,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rpmostree_load_os_proxy (sysroot_proxy, NULL,
|
if (!rpmostree_load_os_proxy (sysroot_proxy, NULL, cancellable, &os_proxy, error))
|
||||||
cancellable, &os_proxy, error))
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
deployments = rpmostree_sysroot_dup_deployments (sysroot_proxy);
|
g_autoptr(GVariant) deployments = rpmostree_sysroot_dup_deployments (sysroot_proxy);
|
||||||
|
|
||||||
if (opt_json || opt_jsonpath)
|
if (opt_json || opt_jsonpath)
|
||||||
{
|
{
|
||||||
@ -666,8 +672,10 @@ rpmostree_builtin_status (int argc,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!status_generic (sysroot_proxy, os_proxy, deployments,
|
if (!print_daemon_state (sysroot_proxy, cancellable, error))
|
||||||
cancellable, error))
|
return FALSE;
|
||||||
|
|
||||||
|
if (!print_deployments (sysroot_proxy, deployments, cancellable, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user