summaryrefslogtreecommitdiffstats
path: root/cobbler/item.py
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2007-10-09 13:46:38 -0400
committerMichael DeHaan <mdehaan@redhat.com>2007-10-09 13:46:38 -0400
commit6dce1a9c7d6957ee7a51595de4d0a5bf12dbb3ec (patch)
tree5786b081bc3cbdd13a3ddb2a2c0eda31229234a0 /cobbler/item.py
parentc86302a23426c3f087dc4b6a1741267e2228cc29 (diff)
downloadthird_party-cobbler-6dce1a9c7d6957ee7a51595de4d0a5bf12dbb3ec.tar.gz
third_party-cobbler-6dce1a9c7d6957ee7a51595de4d0a5bf12dbb3ec.tar.xz
third_party-cobbler-6dce1a9c7d6957ee7a51595de4d0a5bf12dbb3ec.zip
Storing NICs in a hash for easier access + some refactoring + modifications to the find function.
Diffstat (limited to 'cobbler/item.py')
-rw-r--r--cobbler/item.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/cobbler/item.py b/cobbler/item.py
index db2bef4..3cc0f89 100644
--- a/cobbler/item.py
+++ b/cobbler/item.py
@@ -52,6 +52,9 @@ class Item(serializable.Serializable):
self.parent = None # all objects by default are not subobjects
self.children = {} # caching for performance reasons, not serialized
+
+
+
def clear(self):
raise exceptions.NotImplementedError
@@ -166,4 +169,34 @@ class Item(serializable.Serializable):
"""
return False
+ def find_match(self,kwargs):
+ # used by find() method in collection.py
+ data = self.to_datastruct()
+ for (key, value) in kwargs.iteritems():
+ if not self.find_match_single_key(data,key,value):
+ print "DEBUG: OBJECT: %s does not match %s" % (data,key)
+ return False
+ return True
+
+
+ def find_match_single_key(self,data,key,value):
+ # special case for systems
+ key_found_already = False
+ if data.has_key("interfaces"):
+ if key in [ "mac_address", "ip_address", "subnet", "gateway", "dhcp_tag", "hostname" ]:
+ key_found_already = True
+ for (name, interface) in data["interfaces"].iteritems():
+ if interface[key].lower() == value.lower():
+ return True
+
+ if not data.has_key(key):
+ if not key_found_already:
+ raise CX(_("searching for field that does not exist: %s" % key))
+ else:
+ return False
+ if value.lower() == data[key].lower():
+ return True
+ else:
+ print "DEBUG: OBJECT: %s key match failed for: %s, %s" % (data,key,value)
+ return False