diff --git a/src/app/rpmostree-builtin-status.c b/src/app/rpmostree-builtin-status.c index e19eb107ac..cefa910ea8 100644 --- a/src/app/rpmostree-builtin-status.c +++ b/src/app/rpmostree-builtin-status.c @@ -563,6 +563,12 @@ status_generic (RPMOSTreeSysroot *sysroot_proxy, print_kv ("Unlocked", max_key_len, unlocked); g_print ("%s%s", bold_suffix, red_suffix); } + const char *end_of_life_string = NULL; + /* look for ostree.endoflife attribute in the deployment */ + g_variant_dict_lookup (dict, "endoflife", "&s", &end_of_life_string); + + if (end_of_life_string) + g_print ("\n end-of-life: %s", end_of_life_string); } return TRUE; diff --git a/src/daemon/rpmostreed-deployment-utils.c b/src/daemon/rpmostreed-deployment-utils.c index ee8f18163a..cb157a4071 100644 --- a/src/daemon/rpmostreed-deployment-utils.c +++ b/src/daemon/rpmostreed-deployment-utils.c @@ -126,6 +126,34 @@ rpmostreed_deployment_generate_blank_variant (void) return g_variant_dict_end (&dict); } +static void +variant_add_metadata_attribute (GVariantDict *dict, + const gchar *attribute, + GVariant *commit) +{ + g_autoptr(GVariant) metadata = NULL; + g_autofree gchar *attribute_string_value = NULL; + + metadata = g_variant_get_child_value (commit, 0); + + if (metadata != NULL) + { + g_variant_lookup (metadata, attribute, "s", &attribute_string_value); + if (attribute_string_value != NULL) + { + /* for attributes starting with ostree., remove the prefix */ + if(g_str_has_prefix (attribute, "ostree.")) + { + const char *new_string = strchr (attribute, '.'); + const char *new_attribute = new_string + 1; + g_variant_dict_insert (dict, new_attribute, "s", attribute_string_value); + } + else + g_variant_dict_insert (dict, attribute, "s", attribute_string_value); + } + } +} + static void variant_add_commit_details (GVariantDict *dict, const char *prefix, @@ -229,7 +257,11 @@ rpmostreed_deployment_generate_variant (OstreeSysroot *sysroot, variant_add_commit_details (&dict, "base-", base_commit); } else - base_checksum = g_strdup (csum); + { + base_checksum = g_strdup (csum); + /* we would not consider endoflife attribute for layered commits */ + variant_add_metadata_attribute (&dict, "ostree.endoflife", commit); + } sigs = rpmostreed_deployment_gpg_results (repo, refspec, base_checksum, &gpg_enabled); variant_add_commit_details (&dict, NULL, commit);