]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/util: pass real hostname when running in kubernetes/rook container
authorSage Weil <sage@redhat.com>
Wed, 29 Aug 2018 13:04:59 +0000 (08:04 -0500)
committerSage Weil <sage@redhat.com>
Thu, 30 Aug 2018 13:51:04 +0000 (08:51 -0500)
Rook will set up some environment variables to tell us what pod, pod
namespace, and physical host we are running on.  If we see them, set
'hostname' according to the hardware host, and include the pod info
in our metadata.

This allows the usual host-based logic on Ceph to work correctly, like
placing OSDs automatically in the CRUSH map.

Signed-off-by: Sage Weil <sage@redhat.com>
src/common/util.cc

index faddeae86251878c6fe4ab504c010da219e71de9..d0fbee5e3fc0693f36d8467f21433b535f4dc029 100644 (file)
@@ -152,6 +152,19 @@ void collect_sys_info(map<string, string> *m, CephContext *cct)
     (*m)["hostname"] = u.nodename;
     (*m)["arch"] = u.machine;
   }
+
+  // but wait, am i in a container?
+  if (const char *pod_name = getenv("POD_NAME")) {
+    (*m)["pod_name"] = pod_name;
+    if (const char *node_name = getenv("NODE_NAME")) {
+      (*m)["container_hostname"] = u.nodename;
+      (*m)["hostname"] = node_name;
+    }
+  }
+  if (const char *ns = getenv("POD_NAMESPACE")) {
+    (*m)["pod_namespace"] = ns;
+  }
+
 #ifdef __APPLE__
   // memory
   {