Command line search can be used to ask questions about your cobbler configuration, rather than just having to run "cobbler list" or "cobbler report" and scanning through the results. (The Cobbler Web Interface also supports search/filtering, for those that want to use it, though that is not documented on this page)
Command line search works on all distro/profile/system/and repo objects.
cobbler distro find --help
cobbler profile find --help
cobbler system find --help
cobbler repo find --help
NOTE: Some of these examples are kind of arbitrary. I'm sure you can think of some more real world examples.
Find what system record has a given mac address.
cobbler system find --mac=AA:BB:CC:DD:EE:FF
If anything is using a certain kernel, delete that object and all it's children (profiles, systems, etc).
cobbler distro find --kernel=/path/to/kernel | xargs -n1 --replace cobbler distro remove --name={} --recursive
What profiles use the repo "epel-5-i386-testing" ?
cobbler profile find --repos=epel-5-i386-testing
Which profiles are owned by neo AND mranderson?
cobbler profile find --owners="neo,mranderson"
# lists need to be comma delimited, like this, with no unneeded spaces
What systems are set to pass the kernel argument "color=red" ?
cobbler system find --kopts="color=red"
What systems are set to pass the kernel argument "color=red" and "number=5" ?
cobbler system find --kopts="color=red number=5"
# space delimited key value pairs
# key1=value1 key2 key3=value3
What systems set the kickstart metadata variable of foo to the value 'bar' ?
cobbler system find --ksmeta="foo=bar"
# space delimited key value pairs again
What systems are set to netboot disabled?
cobbler system find --netboot-enabled=0
# note, this also accepts 'false', or 'no'
For all systems that are assigned to profile "foo" that are set to netboot disabled, enable them.
cobbler system find --profile=foo --netboot-enabled=0 | xargs -n1 --replace cobbler system edit --name={} --netboot-enabled=1
# demonstrates an "AND" query combined with xargs usage.
Though the cobbler objects behind the scenes store data in various different formats (booleans, hashes, lists, strings), it all works fom the command line as text.
If multiple terms are specified to one argument, the search is an "AND" search.
If multiple parameters are specified, the search is still an "AND" search.
The find command understands patterns such as "*" and "?". This is supported using Python's fnmatch.
To learn more:
pydoc fnmatch.fnmatch
All systems starting with the string foo:
cobbler system find --name="foo*"
This is rather useful when combined with xargs. This is a rather tame example, reporting on all systems starting with "TEST".
cobbler system find --name="TEST*" | xargs -n1 --replace cobbler system
report --name={}
By extension, you could use this to toggle the --netboot-enabled systems of machines with certain hostnames, mac addresses, and so forth, or perform other kinds of wholesale edits (for instance, deletes, or assigning profiles with certain names to new distros when upgrading them from F8 to F9, for instance).
All of this functionality is also exposed through the API
#!/usr/bin/python
import cobbler.api as capi
api_handle = capi.BootAPI()
matches = api_handle.find_profile(name="TEST*",return_list=True)
print matches
You will find uses of ".find()" throughout the cobbler code that make use of this behavior.