summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--cobbler/remote.py36
2 files changed, 37 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index fe1872b7..6c4187e3 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -40,6 +40,7 @@ Cobbler CHANGELOG
- (BUGF) fixed web-interface editing of ownership
- (BUGF) fixed web-interface editing of management classes
- (BUGF) don't run full sync in import, sync makes the install system unavailable for very short periods of time
+- (FEAT) XMLRPC functions for searching objects, just like the Python API has
- XXX - 1.4.2
- (BUGF) fix WTI power templates
diff --git a/cobbler/remote.py b/cobbler/remote.py
index 54befcb1..7d7c229b 100644
--- a/cobbler/remote.py
+++ b/cobbler/remote.py
@@ -588,6 +588,42 @@ class CobblerXMLRPCInterface:
self._log("get_distros",token=token)
return self.__get_all("distro",page,results_per_page)
+
+ def __find(self,find_function,criteria={},expand=False,token=None):
+ name = criteria.get("name",None)
+ if name is not None:
+ del criteria["name"]
+ if not expand:
+ data = [x.name for x in find_function(name, True, True, **criteria)]
+ else:
+ data = [x.to_datastruct() for x in find_function(name, True, True, **criteria)]
+ return self.xmlrpc_hacks(data)
+
+ def find_distro(self,criteria={},expand=False,token=None,**rest):
+ self._log("find_distro", token=token)
+ data = self.__find(self.api.find_distro,criteria,expand=expand,token=token)
+ return data
+
+ def find_profile(self,criteria={},expand=False,token=None,**rest):
+ self._log("find_profile", token=token)
+ data = self.__find(self.api.find_profile,criteria,expand=expand,token=token)
+ return data
+
+ def find_system(self,criteria={},expand=False,token=None,**rest):
+ self._log("find_system", token=token)
+ data = self.__find(self.api.find_system,criteria,expand=expand,token=token)
+ return data
+
+ def find_repo(self,criteria={},expand=False,token=None,**rest):
+ self._log("find_repo", token=token)
+ data = self.__find(self.api.find_repo,criteria,expand=expand,token=token)
+ return data
+
+ def find_image(self,criteria={},expand=False,token=None,**rest):
+ self._log("find_image", token=token)
+ data = self.__find(self.api.find_image,criteria,expand=expand,token=token)
+ return data
+
def get_distros_since(self,mtime):
"""
Return all of the distro objects that have been modified