[systemd-commits] 2 commits - src/core src/hostname

Lennart Poettering lennart at kemper.freedesktop.org
Mon Feb 24 16:04:46 PST 2014


 src/core/dbus-manager.c    |   17 ++++++++++++++++
 src/hostname/hostnamectl.c |   47 +++++++++++++++++++++++++++++----------------
 2 files changed, 48 insertions(+), 16 deletions(-)

New commits:
commit e9a2e453bbe3522db4341e4a2a49ae8aab8eb5a3
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Feb 25 01:03:25 2014 +0100

    hostnamectl: read virtualization/architecture from remote side
    
    This way we make this more network/container transparent and also do not
    require any client side privileges.

diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c
index e455249..94b4243 100644
--- a/src/hostname/hostnamectl.c
+++ b/src/hostname/hostnamectl.c
@@ -67,29 +67,27 @@ typedef struct StatusInfo {
         char *pretty_hostname;
         char *icon_name;
         char *chassis;
+        char *virtualization;
+        char *architecture;
 } StatusInfo;
 
 static void print_status_info(StatusInfo *i) {
         sd_id128_t mid = {}, bid = {};
         int r;
-        const char *id = NULL;
         _cleanup_free_ char *pretty_name = NULL, *cpe_name = NULL;
         struct utsname u;
 
         assert(i);
 
-        printf("   Static hostname: %s\n",
-               strna(i->static_hostname));
+        printf("   Static hostname: %s\n", strna(i->static_hostname));
 
         if (!isempty(i->pretty_hostname) &&
             !streq_ptr(i->pretty_hostname, i->static_hostname))
-                printf("   Pretty hostname: %s\n",
-                       strna(i->pretty_hostname));
+                printf("   Pretty hostname: %s\n", i->pretty_hostname);
 
         if (!isempty(i->hostname) &&
             !streq_ptr(i->hostname, i->static_hostname))
-                printf("Transient hostname: %s\n",
-                       strna(i->hostname));
+                printf("Transient hostname: %s\n", i->hostname);
 
         printf("         Icon name: %s\n"
                "           Chassis: %s\n",
@@ -104,8 +102,8 @@ static void print_status_info(StatusInfo *i) {
         if (r >= 0)
                 printf("           Boot ID: " SD_ID128_FORMAT_STR "\n", SD_ID128_FORMAT_VAL(bid));
 
-        if (detect_virtualization(&id) > 0)
-                printf("    Virtualization: %s\n", id);
+        if (!isempty(i->virtualization))
+                printf("    Virtualization: %s\n", i->virtualization);
 
         r = parse_env_file("/etc/os-release", NEWLINE,
                            "PRETTY_NAME", &pretty_name,
@@ -121,10 +119,10 @@ static void print_status_info(StatusInfo *i) {
                 printf("       CPE OS Name: %s\n", cpe_name);
 
         assert_se(uname(&u) >= 0);
-        printf("            Kernel: %s %s\n"
-               "      Architecture: %s\n",
-               u.sysname, u.release,
-               architecture_to_string(uname_architecture()));
+        printf("            Kernel: %s %s\n", u.sysname, u.release);
+
+        if (!isempty(i->architecture))
+                printf("      Architecture: %s\n", i->architecture);
 
 }
 
@@ -157,7 +155,8 @@ static int show_one_name(sd_bus *bus, const char* attr) {
 
 static int show_all_names(sd_bus *bus) {
         StatusInfo info = {};
-        static const struct bus_properties_map map[]  = {
+
+        static const struct bus_properties_map hostname_map[]  = {
                 { "Hostname",       "s", NULL, offsetof(StatusInfo, hostname) },
                 { "StaticHostname", "s", NULL, offsetof(StatusInfo, static_hostname) },
                 { "PrettyHostname", "s", NULL, offsetof(StatusInfo, pretty_hostname) },
@@ -165,16 +164,29 @@ static int show_all_names(sd_bus *bus) {
                 { "Chassis",        "s", NULL, offsetof(StatusInfo, chassis) },
                 {}
         };
+
+        static const struct bus_properties_map manager_map[] = {
+                { "Virtualization", "s", NULL, offsetof(StatusInfo, virtualization) },
+                { "Architecture",   "s", NULL, offsetof(StatusInfo, architecture) },
+                {}
+        };
+
         int r;
 
         r = bus_map_all_properties(bus,
                                    "org.freedesktop.hostname1",
                                    "/org/freedesktop/hostname1",
-                                   map,
+                                   hostname_map,
                                    &info);
         if (r < 0)
                 goto fail;
 
+        bus_map_all_properties(bus,
+                               "org.freedesktop.systemd1",
+                               "/org/freedesktop/systemd1",
+                               manager_map,
+                               &info);
+
         print_status_info(&info);
 
 fail:
@@ -183,7 +195,10 @@ fail:
         free(info.pretty_hostname);
         free(info.icon_name);
         free(info.chassis);
-        return 0;
+        free(info.virtualization);
+        free(info.architecture);
+
+        return r;
 }
 
 static int show_status(sd_bus *bus, char **args, unsigned n) {

commit 7452394e2ecb1dc994c1e9215592bcef28681396
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Feb 25 00:50:38 2014 +0100

    core: expose architecture as a bus property, so that we can easily query it remotely

diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
index 86816f6..f1e344c 100644
--- a/src/core/dbus-manager.c
+++ b/src/core/dbus-manager.c
@@ -31,6 +31,7 @@
 #include "hwclock.h"
 #include "path-util.h"
 #include "virt.h"
+#include "architecture.h"
 #include "env-util.h"
 #include "dbus.h"
 #include "dbus-manager.h"
@@ -89,6 +90,21 @@ static int property_get_virtualization(
         return sd_bus_message_append(reply, "s", id);
 }
 
+static int property_get_architecture(
+                sd_bus *bus,
+                const char *path,
+                const char *interface,
+                const char *property,
+                sd_bus_message *reply,
+                void *userdata,
+                sd_bus_error *error) {
+
+        assert(bus);
+        assert(reply);
+
+        return sd_bus_message_append(reply, "s", architecture_to_string(uname_architecture()));
+}
+
 static int property_get_tainted(
                 sd_bus *bus,
                 const char *path,
@@ -1549,6 +1565,7 @@ const sd_bus_vtable bus_manager_vtable[] = {
         SD_BUS_PROPERTY("Version", "s", property_get_version, 0, SD_BUS_VTABLE_PROPERTY_CONST),
         SD_BUS_PROPERTY("Features", "s", property_get_features, 0, SD_BUS_VTABLE_PROPERTY_CONST),
         SD_BUS_PROPERTY("Virtualization", "s", property_get_virtualization, 0, SD_BUS_VTABLE_PROPERTY_CONST),
+        SD_BUS_PROPERTY("Architecture", "s", property_get_architecture, 0, SD_BUS_VTABLE_PROPERTY_CONST),
         SD_BUS_PROPERTY("Tainted", "s", property_get_tainted, 0, SD_BUS_VTABLE_PROPERTY_CONST),
         BUS_PROPERTY_DUAL_TIMESTAMP("FirmwareTimestamp", offsetof(Manager, firmware_timestamp), SD_BUS_VTABLE_PROPERTY_CONST),
         BUS_PROPERTY_DUAL_TIMESTAMP("LoaderTimestamp", offsetof(Manager, loader_timestamp), SD_BUS_VTABLE_PROPERTY_CONST),



More information about the systemd-commits mailing list