[gnome-settings-daemon/rhel/account-and-subman-plugins: 18/23] subman: Add new no-installed-products state




commit b636705b9feb151231586ff9c933b5ea36651591
Author: Ray Strode <rstrode redhat com>
Date:   Sun Jan 24 11:24:36 2021 -0500

    subman: Add new no-installed-products state
    
    It's possible, though unlikley, the system has
    no packages installed from Red Hat supported package sets.
    
    This commit adds a new state to track that situation.

 plugins/subman/gsd-subman-common.c        |  2 ++
 plugins/subman/gsd-subman-common.h        |  1 +
 plugins/subman/gsd-subscription-manager.c | 17 +++++++----------
 3 files changed, 10 insertions(+), 10 deletions(-)
---
diff --git a/plugins/subman/gsd-subman-common.c b/plugins/subman/gsd-subman-common.c
index e515131e..eef5175d 100644
--- a/plugins/subman/gsd-subman-common.c
+++ b/plugins/subman/gsd-subman-common.c
@@ -32,5 +32,7 @@ gsd_subman_subscription_status_to_string (GsdSubmanSubscriptionStatus status)
                return "disabled";
        if (status == GSD_SUBMAN_SUBSCRIPTION_STATUS_PARTIALLY_VALID)
                return "partially-valid";
+       if (status == GSD_SUBMAN_SUBSCRIPTION_STATUS_NO_INSTALLED_PRODUCTS)
+               return "no-installed-products";
        return "unknown";
 }
diff --git a/plugins/subman/gsd-subman-common.h b/plugins/subman/gsd-subman-common.h
index fccf9f6a..f8a3d9f4 100644
--- a/plugins/subman/gsd-subman-common.h
+++ b/plugins/subman/gsd-subman-common.h
@@ -30,6 +30,7 @@ typedef enum {
        GSD_SUBMAN_SUBSCRIPTION_STATUS_INVALID,
        GSD_SUBMAN_SUBSCRIPTION_STATUS_DISABLED,
        GSD_SUBMAN_SUBSCRIPTION_STATUS_PARTIALLY_VALID,
+       GSD_SUBMAN_SUBSCRIPTION_STATUS_NO_INSTALLED_PRODUCTS,
        GSD_SUBMAN_SUBSCRIPTION_STATUS_LAST
 } GsdSubmanSubscriptionStatus;
 
diff --git a/plugins/subman/gsd-subscription-manager.c b/plugins/subman/gsd-subscription-manager.c
index 0838d490..46f8d35c 100644
--- a/plugins/subman/gsd-subscription-manager.c
+++ b/plugins/subman/gsd-subscription-manager.c
@@ -269,6 +269,13 @@ _client_subscription_status_update (GsdSubscriptionManager *manager, GError **er
 
        /* save old value */
        priv->subscription_status_last = priv->subscription_status;
+       if (!_client_installed_products_update (manager, error))
+               goto out;
+
+       if (priv->installed_products->len == 0) {
+               priv->subscription_status = GSD_SUBMAN_SUBSCRIPTION_STATUS_NO_INSTALLED_PRODUCTS;
+               goto out;
+       }
 
        uuid = g_dbus_proxy_call_sync (priv->proxies[_RHSM_INTERFACE_CONSUMER],
                                       "GetUuid",
@@ -590,8 +597,6 @@ _client_register_with_keys (GsdSubscriptionManager *manager,
                return FALSE;
        if (!_client_subscription_status_update (manager, error))
                return FALSE;
-       if (!_client_installed_products_update (manager, error))
-               return FALSE;
        _client_maybe__show_notification (manager);
 
        /* success */
@@ -659,8 +664,6 @@ _client_register (GsdSubscriptionManager *manager,
                return FALSE;
        if (!_client_subscription_status_update (manager, error))
                return FALSE;
-       if (!_client_installed_products_update (manager, error))
-               return FALSE;
        _client_maybe__show_notification (manager);
        return TRUE;
 }
@@ -741,10 +744,6 @@ _subman_proxy_signal_cb (GDBusProxy *proxy,
                g_warning ("failed to update subscription status: %s", error->message);
                g_clear_error (&error);
        }
-       if (!_client_installed_products_update (manager, &error)) {
-               g_warning ("failed to update installed products: %s", error->message);
-               g_clear_error (&error);
-       }
        _client_maybe__show_notification (manager);
 }
 
@@ -809,8 +808,6 @@ _client_load (GsdSubscriptionManager *manager, GError **error)
                return FALSE;
        if (!_client_subscription_status_update (manager, error))
                return FALSE;
-       if (!_client_installed_products_update (manager, error))
-               return FALSE;
        if (!_client_syspurpose_update (manager, error))
                return FALSE;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]