diff options
author | Michael DeHaan <mdehaan@redhat.com> | 2007-10-09 13:46:38 -0400 |
---|---|---|
committer | Michael DeHaan <mdehaan@redhat.com> | 2007-10-09 13:46:38 -0400 |
commit | 6dce1a9c7d6957ee7a51595de4d0a5bf12dbb3ec (patch) | |
tree | 5786b081bc3cbdd13a3ddb2a2c0eda31229234a0 /cobbler/item.py | |
parent | c86302a23426c3f087dc4b6a1741267e2228cc29 (diff) | |
download | third_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.py | 33 |
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 |