import os
import random
import re
-import socket
import tempfile
import time
import threading
"""
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):
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)
@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):
# 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)