Added osrelease and osversion as well as changed the way sysctl is called on OSX

pull/2407/head
Jimmy Tang 12 years ago
parent fc8d9377d5
commit 935514cde8

@ -855,36 +855,49 @@ class AIX(Hardware):
class Darwin(Hardware): class Darwin(Hardware):
""" """
Darwin-specific subclass of Hardware. Defines memory and CPU facts: Darwin-specific subclass of Hardware. Defines memory and CPU facts:
- processor
- processor_cores - processor_cores
- memtotal_mb - memtotal_mb
- memfree_mb - memfree_mb
- model
- osversion
- osrevision
""" """
platform = 'Darwin' platform = 'Darwin'
def __init__(self): def __init__(self):
Hardware.__init__(self) Hardware.__init__(self)
def populate(self): def populate(self):
self.sysctl = self.get_sysctl()
self.get_mac_facts()
self.get_cpu_facts() self.get_cpu_facts()
self.get_memory_facts() self.get_memory_facts()
return self.facts return self.facts
def get_sysctl(self):
rc, out, err = module.run_command(["/usr/sbin/sysctl", "hw", "machdep", "kern"])
if rc != 0:
return dict()
sysctl = dict()
for line in out.splitlines():
if line.rstrip("\n"):
(key, value) = re.split(' = |: ', line, maxsplit=1)
sysctl[key] = value.strip()
return sysctl
def get_mac_facts(self):
self.facts['model'] = self.sysctl['hw.model']
self.facts['osversion'] = self.sysctl['kern.osversion']
self.facts['osrevision'] = self.sysctl['kern.osrevision']
def get_cpu_facts(self): def get_cpu_facts(self):
self.facts['processor'] = [] self.facts['processor'] = self.sysctl['machdep.cpu.brand_string']
rc, out, err = module.run_command("/usr/sbin/sysctl machdep.cpu.brand_string") self.facts['processor_cores'] = self.sysctl['machdep.cpu.core_count']
data = out[:-1].split(': ')
self.facts['processor'] = data[1]
rc, out, err = module.run_command("/usr/sbin/sysctl machdep.cpu.core_count")
data = out[:-1].split(': ')
self.facts['processor_cores'] = data[1]
def get_memory_facts(self): def get_memory_facts(self):
rc, out, err = module.run_command("/usr/sbin/sysctl hw.memsize") self.facts['memtotal_mb'] = long(self.sysctl['hw.memsize']) / 1024 / 1024
data = out[:-1].split(': ') self.facts['memfree_mb'] = long(self.sysctl['hw.usermem']) / 1024 / 1024
self.facts['memtotal_mb'] = int(data[1]) / 1024 / 1024
rc, out, err = module.run_command("/usr/sbin/sysctl hw.usermem")
data = out[:-1].split(': ')
self.facts['memfree_mb'] = int(data[1]) / 1024 / 1024
class Network(Facts): class Network(Facts):
""" """

Loading…
Cancel
Save