PERFORCE change 119600 for review
Ivan Voras
ivoras at FreeBSD.org
Wed May 9 21:27:43 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=119600
Change 119600 by ivoras at ivoras_finstall on 2007/05/09 21:27:18
Started implementing the more easier interfaces
Affected files ...
.. //depot/projects/soc2007/ivoras_finstall/pybackend/globals.py#2 edit
.. //depot/projects/soc2007/ivoras_finstall/pybackend/systoold.py#2 edit
.. //depot/projects/soc2007/ivoras_finstall/pybackend/systoolengine.py#2 edit
Differences ...
==== //depot/projects/soc2007/ivoras_finstall/pybackend/globals.py#2 (text+ko) ====
@@ -29,11 +29,14 @@
# the caps array. Each caps string corresponds to a group of XML-RPC
# functions the server claims to support.
# The caps are:
-# "systoold" : Special functions: GetId, GetCaps, SetRoot
+# "systoold" : Special functions: GetId, GetCaps, SetDestRoot,
+# SetLiveRoot
# "rcconf" : Low-level functions that alter /etc/rc.conf:
# GetConf, SetConf
+# "disk" : Low-level drive & file system functions:
+# GetDrives, GetMountPoints, Mount
# These functions are implemented in systoolengine.py
-server_caps = ["systoold", "rcconf"]
+server_caps = ["systoold", "rcconf", "disk"]
# debug level. 0 = no debug
debug_level = 0
==== //depot/projects/soc2007/ivoras_finstall/pybackend/systoold.py#2 (text+ko) ====
==== //depot/projects/soc2007/ivoras_finstall/pybackend/systoolengine.py#2 (text+ko) ====
@@ -22,36 +22,82 @@
# SysToolD Engine
import os, sys
+
import globals
+import freebsd
from conffile import ConfFile
class SysToolEngine:
+
def __init__(self):
- self.root_dir = "" # self.root_dir is sans final slash
+ self.root_dest = "" # Config file / "new" root, sans final slash
+ self.root_live = "" # Live file system root (for binaries!)
+
def GetId(self):
"""Returns server ID string"""
return globals.server_id
+
def GetCaps(self):
"""Returns server capabilities array"""
return globals.server_caps
- def SetRoot(self, root_dir):
- """Sets internal root directory (so Get/SetConf can be used
- with alternative root"""
- self.root_dir = root_dir
+
+ def SetDestRoot(self, root_dir):
+ """Sets internal root directory for installation and config tasks
+ (so Get/SetConf can be used with alternative root)"""
+ self.root_conf = root_dir
+ return True
+
+
+ def SetLiveRoot(self, root_dir):
+ """Notifies SysTool Engine where to expect utility binaries."""
+ self.root_live = root_dir
return True
+
def GetConf(self, name):
"""Returns configuration variable from /etc/rc.conf"""
- cf = ConfFile("%s/etc/rc.conf" % self.root_dir)
+ cf = ConfFile("%s/etc/rc.conf" % self.root_dest)
val = cf.GetConf(name, None)
return val
- def SetConf(self, name, value):
+
+ def SetConf(self, name, value, description):
"""Sets configuration variable to /etc/rc.conf"""
+ cf = ConfFile("%s/etc/rc.conf" % self.root_dest)
+ cf.SetConf(name, value, description)
+ return True
+
+
+ def GetDrives(self):
+ """Returns an array of drives the kernel knows about.
+ Examines "kern.drives" sysctl. This is NOT the list of
+ valid GEOM leaves which can be mounted, but a list of
+ found hardware."""
+ return freebsd.get_sysctl("kern.disks").split(" ")
+
+
+ def GetMountPoints(self):
+ """Returns a list of dictionaries containing information
+ about currently mounted file systems"""
+ raw_mounts = freebsd.get_cmd_output("%s -p" % freebsd.cmd_mount).split("\n")
+ mounts = []
+ for m in raw_mounts:
+ while m.find("\t\t") != -1:
+ m = m.replace("\t\t", "\t")
+ m = m.split("\t")
+ mounts.append({"device" : m[0], "mountpoint" : m[1], "filesystem" : m[2], "flags" : m[3]})
+ return mounts
+
+
+ def Mount(self, device, mountpoint, filesystem, flags):
+ """Mounts a file system."""
return False
+
+
+
More information about the p4-projects
mailing list