FdNetDevice working with PlanetLab TAPs
[nepi.git] / src / nepi / resources / linux / node.py
index ff19bbb..14aab1a 100644 (file)
@@ -28,7 +28,6 @@ import collections
 import os
 import random
 import re
-import socket
 import tempfile
 import time
 import threading
@@ -51,12 +50,12 @@ class OSType:
     """
     Supported flavors of Linux OS
     """
-    FEDORA_8 = "f8"
-    FEDORA_12 = "f12"
-    FEDORA_14 = "f14"
-    FEDORA = "fedora"
-    UBUNTU = "ubuntu"
-    DEBIAN = "debian"
+    DEBIAN = 1 
+    UBUNTU = 1 << 1 
+    FEDORA = 1 << 2
+    FEDORA_8 = 1 << 3 | FEDORA 
+    FEDORA_12 = 1 << 4 | FEDORA 
+    FEDORA_14 = 1 << 5 | FEDORA 
 
 @clsinit_copy
 class LinuxNode(ResourceManager):
@@ -291,18 +290,18 @@ class LinuxNode(ResourceManager):
 
         out = self.get_os()
 
-        if out.find("Fedora release 8") == 0:
-            self._os = OSType.FEDORA_8
-        elif out.find("Fedora release 12") == 0:
-            self._os = OSType.FEDORA_12
-        elif out.find("Fedora release 14") == 0:
-            self._os = OSType.FEDORA_14
-        elif out.find("Fedora release") == 0:
-            self._os = OSType.FEDORA
-        elif out.find("Debian") == 0: 
+        if out.find("Debian") == 0: 
             self._os = OSType.DEBIAN
         elif out.find("Ubuntu") ==0:
             self._os = OSType.UBUNTU
+        elif out.find("Fedora release") == 0:
+            self._os = OSType.FEDORA
+            if out.find("Fedora release 8") == 0:
+                self._os = OSType.FEDORA_8
+            elif out.find("Fedora release 12") == 0:
+                self._os = OSType.FEDORA_12
+            elif out.find("Fedora release 14") == 0:
+                self._os = OSType.FEDORA_14
         else:
             msg = "Unsupported OS"
             self.error(msg, out)
@@ -329,12 +328,11 @@ class LinuxNode(ResourceManager):
 
     @property
     def use_deb(self):
-        return self.os in [OSType.DEBIAN, OSType.UBUNTU]
+        return (self.os & (OSType.DEBIAN|OSType.UBUNTU))
 
     @property
     def use_rpm(self):
-        return self.os in [OSType.FEDORA_12, OSType.FEDORA_14, OSType.FEDORA_8,
-                OSType.FEDORA]
+        return (self.os & OSType.FEDORA)
 
     @property
     def localhost(self):
@@ -369,16 +367,11 @@ class LinuxNode(ResourceManager):
 
         # Get Public IP address if possible
         if not self.get("ip"):
-            ip = None
-
-            if self.localhost:
-                ip = socket.gethostbyname(socket.gethostname())
-            else:
-                try:
-                    ip = socket.gethostbyname(self.get("hostname"))
-                except:
-                    msg = "DNS can not resolve hostname %s" % self.get("hostname") 
-                    self.debug(msg)
+            try:
+                ip = sshfuncs.gethostbyname(self.get("hostname"))
+            except:
+                msg = "DNS can not resolve hostname %s" % self.get("hostname") 
+                self.debug(msg)
 
             self.set("ip", ip)