---
snake/ksdb.py | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/snake/ksdb.py b/snake/ksdb.py
index 1bb95bf..2431f87 100644
--- a/snake/ksdb.py
+++ b/snake/ksdb.py
@@ -24,6 +24,7 @@ import glob
import imputil
from snake.config import getoption
from snake.kickstart import Kickstart,PyKickstart
+import snake.machinedb
import logging
log = logging.getLogger("snake")
@@ -148,7 +149,10 @@ def generate(name,kwargs={}):
commands=(list): Modify the template with the given kickstart commands.
The argument should be a list of command lines.
version=(string): Generate a kickstart for the given kickstart language
- version.
+ version.
+ fingerprints=(list): List of system fingerprints. When provided, the
+ machine database will be searched for any
+ machine-specific kickstart data.
'''
# TODO: scripts=(list), packages=(list), tree=url|id, machine=id
# XXX where does kernel commandline come in?
@@ -172,6 +176,17 @@ def generate(name,kwargs={}):
if 'commands' in kwargs:
for l in kwargs.get("commands",[]):
k.handlecommand(l)
+
+ # search for any machine-specific kickstart values
+ if 'fingerprints' in kwargs:
+ matches =
snake.machinedb.listmachines(fingerprint=kwargs.get("fingerprints"))
+ if len(matches) == 1:
+ if matches[0].ksdata:
+ for l in matches[0].ksdata.split("\n"):
+ k.handlecommand(l)
+ elif len(matches) > 1:
+ log.debug("Kickstart generate: found %s machines with fingerprints:
%s" % (len(matches), kwargs.get("fingerprints")))
+
return str(k)
def rename(old,new):
--
1.5.4.5