summaryrefslogtreecommitdiffstats
path: root/cobbler
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2008-04-23 12:23:44 -0400
committerMichael DeHaan <mdehaan@redhat.com>2008-04-23 12:23:44 -0400
commitdc8db8a8924503232860939eb2e8d151ebea5f9f (patch)
tree344492be953595ddb2ec91450622b65575a957d1 /cobbler
parent11d6201018d14319f8227f67ccaed575e8ef35d8 (diff)
downloadthird_party-cobbler-dc8db8a8924503232860939eb2e8d151ebea5f9f.tar.gz
third_party-cobbler-dc8db8a8924503232860939eb2e8d151ebea5f9f.tar.xz
third_party-cobbler-dc8db8a8924503232860939eb2e8d151ebea5f9f.zip
Add "dumpvars" command.
Diffstat (limited to 'cobbler')
-rw-r--r--cobbler/api.py3
-rw-r--r--cobbler/commands.py17
-rw-r--r--cobbler/item.py8
-rw-r--r--cobbler/modules/cli_distro.py37
-rw-r--r--cobbler/modules/cli_profile.py47
-rw-r--r--cobbler/modules/cli_repo.py16
-rw-r--r--cobbler/modules/cli_system.py14
7 files changed, 85 insertions, 57 deletions
diff --git a/cobbler/api.py b/cobbler/api.py
index ebe987e..1814c41 100644
--- a/cobbler/api.py
+++ b/cobbler/api.py
@@ -251,6 +251,9 @@ class BootAPI:
def find_repo(self, name=None, return_list=False, **kargs):
return self._config.repos().find(name=name, return_list=return_list, **kargs)
+ def dump_vars(self, obj, format=False):
+ return obj.dump_vars(format)
+
def auto_add_repos(self):
"""
Import any repos this server knows about and mirror them.
diff --git a/cobbler/commands.py b/cobbler/commands.py
index 7a6a25b..657934c 100644
--- a/cobbler/commands.py
+++ b/cobbler/commands.py
@@ -195,6 +195,14 @@ class CobblerFunction:
Boilerplate for objects that offer add/edit/delete/remove/copy functionality.
"""
+ if "dumpvars" in self.args:
+ if not self.options.name:
+ raise CX(_("name is required"))
+ obj = collect_fn().find(self.options.name)
+ if obj is None:
+ raise CX(_("object not found"))
+ return obj
+
if "remove" in self.args:
recursive = False
# only applies to distros/profiles and is not supported elsewhere
@@ -219,11 +227,12 @@ class CobblerFunction:
self.reporting_list_names2(collect_fn(),self.options.name)
return None
+ if not self.options.name:
+ raise CX(_("name is required"))
+
if "add" in self.args:
obj = new_fn(is_subobject=subobject)
else:
- if not self.options.name:
- raise CX(_("name is required"))
if "delete" in self.args:
collect_fn().remove(self.options.name, with_delete=True)
return None
@@ -241,6 +250,10 @@ class CobblerFunction:
Boilerplate for objects that offer add/edit/delete/remove/copy functionality.
"""
+ if "dumpvars" in self.args:
+ print obj.dump_vars(True)
+ return True
+
clobber = False
if "add" in self.args:
clobber = options.clobber
diff --git a/cobbler/item.py b/cobbler/item.py
index bdd7c8b..992a18d 100644
--- a/cobbler/item.py
+++ b/cobbler/item.py
@@ -17,6 +17,7 @@ import serializable
import utils
from cexceptions import *
from utils import _
+import pprint
class Item(serializable.Serializable):
@@ -212,3 +213,10 @@ class Item(serializable.Serializable):
else:
return False
+ def dump_vars(self,data,format=True):
+ raw = utils.blender(self.config.api, False, self)
+ if format:
+ return pprint.pformat(raw)
+ else:
+ return raw
+
diff --git a/cobbler/modules/cli_distro.py b/cobbler/modules/cli_distro.py
index 4d86448..b7a8fa7 100644
--- a/cobbler/modules/cli_distro.py
+++ b/cobbler/modules/cli_distro.py
@@ -33,16 +33,16 @@ class DistroFunction(commands.CobblerFunction):
return "distro"
def subcommands(self):
- return [ "add", "edit", "copy", "rename", "remove", "list", "report" ]
+ return [ "add", "edit", "copy", "rename", "remove", "list", "report", "dumpvars" ]
def add_options(self, p, args):
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--arch", dest="arch", help="ex: x86, x86_64, ia64")
p.add_option("--breed", dest="breed", help="ex: redhat, debian, suse")
if self.matches_args(args,["add"]):
p.add_option("--clobber", dest="clobber", help="allow add to overwrite existing objects", action="store_true")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--initrd", dest="initrd", help="absolute path to initrd.img (REQUIRED)")
p.add_option("--kernel", dest="kernel", help="absolute path to vmlinuz (REQUIRED)")
p.add_option("--kopts", dest="kopts", help="ex: 'noipv6'")
@@ -54,11 +54,11 @@ class DistroFunction(commands.CobblerFunction):
if self.matches_args(args,["copy","rename"]):
p.add_option("--newname", dest="newname", help="for copy/rename commands")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--no-sync", action="store_true", dest="nosync", help="suppress sync for speed")
- if not self.matches_args(args,["report","list"]):
+ if not self.matches_args(args,["dumpvars","report","list"]):
p.add_option("--no-triggers", action="store_true", dest="notriggers", help="suppress trigger execution")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--owners", dest="owners", help="specify owners for authz_ownership module")
if self.matches_args(args,["remove"]):
@@ -70,18 +70,19 @@ class DistroFunction(commands.CobblerFunction):
if obj is None:
return True
- if self.options.kernel:
- obj.set_kernel(self.options.kernel)
- if self.options.initrd:
- obj.set_initrd(self.options.initrd)
- if self.options.kopts:
- obj.set_kernel_options(self.options.kopts)
- if self.options.ksmeta:
- obj.set_ksmeta(self.options.ksmeta)
- if self.options.breed:
- obj.set_breed(self.options.breed)
- if self.options.owners:
- obj.set_owners(self.options.owners)
+ if not "dumpvars" in self.args:
+ if self.options.kernel:
+ obj.set_kernel(self.options.kernel)
+ if self.options.initrd:
+ obj.set_initrd(self.options.initrd)
+ if self.options.kopts:
+ obj.set_kernel_options(self.options.kopts)
+ if self.options.ksmeta:
+ obj.set_ksmeta(self.options.ksmeta)
+ if self.options.breed:
+ obj.set_breed(self.options.breed)
+ if self.options.owners:
+ obj.set_owners(self.options.owners)
return self.object_manipulator_finish(obj, self.api.distros, self.options)
diff --git a/cobbler/modules/cli_profile.py b/cobbler/modules/cli_profile.py
index b543b80..45b7b2e 100644
--- a/cobbler/modules/cli_profile.py
+++ b/cobbler/modules/cli_profile.py
@@ -33,7 +33,7 @@ class ProfileFunction(commands.CobblerFunction):
return "profile"
def subcommands(self):
- return [ "add", "edit", "copy", "rename", "remove", "list", "report" ]
+ return [ "add", "edit", "copy", "rename", "remove", "list", "report", "dumpvars" ]
def add_options(self, p, args):
@@ -41,7 +41,7 @@ class ProfileFunction(commands.CobblerFunction):
p.add_option("--clobber", dest="clobber", help="allow add to overwrite existing objects", action="store_true")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--distro", dest="distro", help="ex: 'RHEL-5-i386' (REQUIRED)")
p.add_option("--dhcp-tag", dest="dhcp_tag", help="for use in advanced DHCP configuration")
@@ -55,16 +55,16 @@ class ProfileFunction(commands.CobblerFunction):
if "copy" in args or "rename" in args:
p.add_option("--newname", dest="newname")
- if not self.matches_args(args,["remove","report", "list"]):
+ if not self.matches_args(args,["dumpvars","remove","report", "list"]):
p.add_option("--no-sync", action="store_true", dest="nosync", help="suppress sync for speed")
- if not self.matches_args(args,["report", "list"]):
+ if not self.matches_args(args,["dumpvars","report", "list"]):
p.add_option("--no-triggers", action="store_true", dest="notriggers", help="suppress trigger execution")
p.add_option("--owners", dest="owners", help="specify owners for authz_ownership module")
if self.matches_args(args,["remove"]):
p.add_option("--recursive", action="store_true", dest="recursive", help="also delete child objects")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--repos", dest="repos", help="names of cobbler repos")
p.add_option("--server-override", dest="server_override", help="overrides value in settings file")
p.add_option("--virt-bridge", dest="virt_bridge", help="ex: 'virbr0'")
@@ -76,8 +76,7 @@ class ProfileFunction(commands.CobblerFunction):
def run(self):
-
- if self.matches_args(self.args,["report","list","remove"]) or not self.options.inherit:
+ if self.matches_args(self.args,["report","list","remove","dumpvars"]) or not self.options.inherit:
obj = self.object_manipulator_start(self.api.new_profile,self.api.profiles,subobject=False)
else:
obj = self.object_manipulator_start(self.api.new_profile,self.api.profiles,subobject=True)
@@ -85,23 +84,23 @@ class ProfileFunction(commands.CobblerFunction):
if obj is None:
return True
- if self.options.inherit: obj.set_parent(self.options.inherit)
- if self.options.distro: obj.set_distro(self.options.distro)
- if self.options.kickstart: obj.set_kickstart(self.options.kickstart)
- if self.options.kopts: obj.set_kernel_options(self.options.kopts)
- if self.options.ksmeta: obj.set_ksmeta(self.options.ksmeta)
- if self.options.virt_file_size: obj.set_virt_file_size(self.options.virt_file_size)
- if self.options.virt_ram: obj.set_virt_ram(self.options.virt_ram)
- if self.options.virt_bridge: obj.set_virt_bridge(self.options.virt_bridge)
- if self.options.virt_type: obj.set_virt_type(self.options.virt_type)
- if self.options.virt_cpus: obj.set_virt_cpus(self.options.virt_cpus)
- if self.options.repos: obj.set_repos(self.options.repos)
- if self.options.virt_path: obj.set_virt_path(self.options.virt_path)
- if self.options.dhcp_tag: obj.set_dhcp_tag(self.options.dhcp_tag)
- if self.options.server_override: obj.set_server(self.options.server)
-
- if self.options.owners:
- obj.set_owners(self.options.owners)
+ if not self.matches_args(self.args,["dumpvars"]):
+ if self.options.inherit: obj.set_parent(self.options.inherit)
+ if self.options.distro: obj.set_distro(self.options.distro)
+ if self.options.kickstart: obj.set_kickstart(self.options.kickstart)
+ if self.options.kopts: obj.set_kernel_options(self.options.kopts)
+ if self.options.ksmeta: obj.set_ksmeta(self.options.ksmeta)
+ if self.options.virt_file_size: obj.set_virt_file_size(self.options.virt_file_size)
+ if self.options.virt_ram: obj.set_virt_ram(self.options.virt_ram)
+ if self.options.virt_bridge: obj.set_virt_bridge(self.options.virt_bridge)
+ if self.options.virt_type: obj.set_virt_type(self.options.virt_type)
+ if self.options.virt_cpus: obj.set_virt_cpus(self.options.virt_cpus)
+ if self.options.repos: obj.set_repos(self.options.repos)
+ if self.options.virt_path: obj.set_virt_path(self.options.virt_path)
+ if self.options.dhcp_tag: obj.set_dhcp_tag(self.options.dhcp_tag)
+ if self.options.server_override: obj.set_server(self.options.server)
+
+ if self.options.owners: obj.set_owners(self.options.owners)
return self.object_manipulator_finish(obj, self.api.profiles, self.options)
diff --git a/cobbler/modules/cli_repo.py b/cobbler/modules/cli_repo.py
index a567d2d..f31ab26 100644
--- a/cobbler/modules/cli_repo.py
+++ b/cobbler/modules/cli_repo.py
@@ -33,23 +33,23 @@ class RepoFunction(commands.CobblerFunction):
return "repo"
def subcommands(self):
- return [ "add", "edit", "copy", "rename", "remove", "list", "report" ]
+ return [ "add", "edit", "copy", "rename", "remove", "list", "report", "dumpvars" ]
def add_options(self, p, args):
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--arch", dest="arch", help="overrides repo arch if required")
if self.matches_args(args,["add"]):
p.add_option("--clobber", dest="clobber", help="allow add to overwrite existing objects", action="store_true")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--createrepo-flags", dest="createrepo_flags", help="additional flags for createrepo")
p.add_option("--keep-updated", dest="keep_updated", help="update on each reposync, yes/no")
p.add_option("--name", dest="name", help="ex: 'Fedora-8-updates-i386' (REQUIRED)")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--mirror", dest="mirror", help="source to mirror (REQUIRED)")
p.add_option("--priority", dest="priority", help="set priority")
p.add_option("--rpm-list", dest="rpm_list", help="just mirror these rpms")
@@ -59,11 +59,11 @@ class RepoFunction(commands.CobblerFunction):
p.add_option("--newname", dest="newname", help="used for copy/edit")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--no-sync", action="store_true", dest="nosync", help="suppress sync for speed")
- if not self.matches_args(args,["report","list"]):
+ if not self.matches_args(args,["dumpvars","report","list"]):
p.add_option("--no-triggers", action="store_true", dest="notriggers", help="suppress trigger execution")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--owners", dest="owners", help="specify owners for authz_ownership module")
@@ -72,6 +72,8 @@ class RepoFunction(commands.CobblerFunction):
obj = self.object_manipulator_start(self.api.new_repo,self.api.repos)
if obj is None:
return True
+ if self.matches_args(self.args,["dumpvars"]):
+ return self.object_manipulator_finish(obj, self.api.profiles, self.options)
if self.options.arch: obj.set_arch(self.options.arch)
if self.options.createrepo_flags: obj.set_createrepo_flags(self.options.createrepo_flags)
diff --git a/cobbler/modules/cli_system.py b/cobbler/modules/cli_system.py
index 976c380..0c9a5b8 100644
--- a/cobbler/modules/cli_system.py
+++ b/cobbler/modules/cli_system.py
@@ -33,14 +33,14 @@ class SystemFunction(commands.CobblerFunction):
return "system"
def subcommands(self):
- return [ "add", "edit", "copy", "rename", "remove", "report", "list" ]
+ return [ "add", "edit", "copy", "rename", "remove", "report", "list", "dumpvars" ]
def add_options(self, p, args):
if self.matches_args(args,["add"]):
p.add_option("--clobber", dest="clobber", help="allow add to overwrite existing objects", action="store_true")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--dhcp-tag", dest="dhcp_tag", help="for use in advanced DHCP configurations")
p.add_option("--gateway", dest="gateway", help="for static IP / templating usage")
p.add_option("--hostname", dest="hostname", help="ex: server.example.org")
@@ -53,19 +53,19 @@ class SystemFunction(commands.CobblerFunction):
p.add_option("--name", dest="name", help="a name for the system (REQUIRED)")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--netboot-enabled", dest="netboot_enabled", help="PXE on (1) or off (0)")
if self.matches_args(args,["copy","rename"]):
p.add_option("--newname", dest="newname", help="for use with copy/edit")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--no-sync", action="store_true", dest="nosync", help="suppress sync for speed")
- if not self.matches_args(args,["report","list"]):
+ if not self.matches_args(args,["dumpvars","report","list"]):
p.add_option("--no-triggers", action="store_true", dest="notriggers", help="suppress trigger execution")
- if not self.matches_args(args,["remove","report","list"]):
+ if not self.matches_args(args,["dumpvars","remove","report","list"]):
p.add_option("--owners", dest="owners", help="specify owners for authz_ownership module")
p.add_option("--profile", dest="profile", help="name of cobbler profile (REQUIRED)")
p.add_option("--server-override", dest="server_override", help="overrides server value in settings file")
@@ -80,6 +80,8 @@ class SystemFunction(commands.CobblerFunction):
obj = self.object_manipulator_start(self.api.new_system,self.api.systems)
if obj is None:
return True
+ if self.matches_args(self.args,["dumpvars"]):
+ return self.object_manipulator_finish(obj, self.api.profiles, self.options)
if self.options.profile: obj.set_profile(self.options.profile)
if self.options.kopts: obj.set_kernel_options(self.options.kopts)