]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/hostname: use NODE_NAME environment variable insetad, if set
authorSage Weil <sage@redhat.com>
Wed, 29 Aug 2018 13:21:32 +0000 (08:21 -0500)
committerSage Weil <sage@redhat.com>
Thu, 30 Aug 2018 13:51:04 +0000 (08:51 -0500)
This is set by rook to the physical node.

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

index 32436534ea702b3a15d77cbe0cef8a5c93f88f2d..879fc93969ee30aed8697d7b425e1935040be7d6 100644 (file)
 
 std::string ceph_get_hostname()
 {
+  // are we in a container?  if so we would prefer the *real* hostname.
+  const char *node_name = getenv("NODE_NAME");
+  if (node_name) {
+    return node_name;
+  }
+
   char buf[1024];
   gethostname(buf, 1024);
   return std::string(buf);
index 54f5e3e233438b41a2c84ae10bea4b7ae4c2772f..4f9aeef4d29da94062ad30e96a6ffabe75b5852d 100644 (file)
@@ -44,12 +44,24 @@ std::string exec(const char* cmd) {
 
 TEST(Hostname, full) {
   std::string hn = ceph_get_hostname();
-  ASSERT_EQ(hn, exec("hostname")) ;
-
-       
+  if (const char *nn = getenv("NODE_NAME")) {
+    // we are in a container
+    std::cout << "we are in a container on " << nn << ", reporting " << hn
+             << std::endl;
+    ASSERT_EQ(hn, nn);
+  } else {
+    ASSERT_EQ(hn, exec("hostname")) ;
+  }
 }
 
 TEST(Hostname, short) {
   std::string shn = ceph_get_short_hostname();
-  ASSERT_EQ(shn, exec("hostname -s")) ;
+  if (const char *nn = getenv("NODE_NAME")) {
+    // we are in a container
+    std::cout << "we are in a container on " << nn << ", reporting short " << shn
+        << ", skipping test because env var may or may not be short form"
+             << std::endl;
+  } else {
+    ASSERT_EQ(shn, exec("hostname -s")) ;
+  }
 }