There are 17 patches included for the cobbler-side implementation of
virtual autoboot.
------------------------------------------------------------------------
(PATCH #1)
--- collection.py 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/cobbler/collection.py 2009-03-20
03:29:09.000000000 +0000
@@ -105,6 +105,7 @@
'inherit' : 'parent',
'ip' : 'ip_address',
'mac' : 'mac_address',
+ 'virt-auto-boot' : 'virt_auto_boot',
'virt-file-size' : 'virt_file_size',
'virt-ram' : 'virt_ram',
'virt-path' : 'virt_path',
@@ -131,14 +132,11 @@
newhash[x] = hash[x]
return newhash
- def to_datastruct_with_cache(self):
- return self.to_datastruct()
-
def to_datastruct(self):
"""
Serialize the collection
"""
- datastruct = [x.to_datastruct_with_cache() for x in
self.listing.values()]
+ datastruct = [x.to_datastruct() for x in self.listing.values()]
return datastruct
def from_datastruct(self,datastruct):
------------------------------------------------------------------------
(PATCH #2)
--- item_image.py 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/cobbler/item_image.py 2009-03-20
03:31:46.000000000 +0000
@@ -49,6 +49,7 @@
self.file = ''
self.parent = ''
self.depth = 0
+ self.virt_auto_boot = self.settings.virt_auto_boot
self.virt_ram = self.settings.default_virt_ram
self.virt_file_size = self.settings.default_virt_file_size
self.virt_path = ''
@@ -63,7 +64,6 @@
self.comment = ''
self.ctime = 0
self.mtime = 0
- self.kickstart = ''
def from_datastruct(self,seed_data):
"""
@@ -76,6 +76,7 @@
self.depth = self.load_item(seed_data,'depth',0)
self.owners =
self.load_item(seed_data,'owners',self.settings.default_ownership)
+ self.virt_auto_boot = self.load_item(seed_data,
'virt_auto_boot', self.settings.virt_auto_boot)
self.virt_ram = self.load_item(seed_data, 'virt_ram',
self.settings.default_virt_ram)
self.virt_file_size = self.load_item(seed_data,
'virt_file_size', self.settings.default_virt_file_size)
self.virt_path = self.load_item(seed_data, 'virt_path')
@@ -91,16 +92,14 @@
self.os_version = self.load_item(seed_data, 'os_version',
'')
self.comment = self.load_item(seed_data, 'comment', '')
- self.kickstart = self.load_item(seed_data, 'kickstart',
'')
self.set_owners(self.owners)
self.set_arch(self.arch)
-
+
self.ctime = self.load_item(seed_data, 'ctime', 0)
self.mtime = self.load_item(seed_data, 'mtime', 0)
self.uid = self.load_item(seed_data,'uid','')
-
if self.uid == '':
self.uid = self.config.generate_uid()
@@ -113,22 +112,6 @@
"""
return utils.set_arch(self,arch)
- def set_kickstart(self,kickstart):
- """
- It may not make sense for images to have kickstarts. It really
doesn't.
- However if the image type is 'iso' koan can create a virtual floppy
- and shove an answer file on it, to script an installation.
This may
- not be a kickstart per se, it might be a windows answer file
(SIF) etc.
- """
- if kickstart is None or kickstart == "" or kickstart ==
"delete":
- self.kickstart = ""
- return True
- if utils.find_kickstart(kickstart):
- self.kickstart = kickstart
- return True
- raise CX(_("kickstart not found"))
-
-
def set_file(self,filename):
"""
Stores the image location. This should be accessible on all nodes
@@ -208,6 +191,9 @@
raise CX("invalid network count")
return True
+ def set_virt_auto_boot(self,num):
+ return utils.set_virt_auto_boot(self,num)
+
def set_virt_file_size(self,num):
return utils.set_virt_file_size(self,num)
@@ -250,6 +236,7 @@
'depth' : 0,
'parent' : '',
'owners' : self.owners,
+ 'virt_auto_boot' : self.virt_auto_boot,
'virt_ram' : self.virt_ram,
'virt_path' : self.virt_path,
'virt_type' : self.virt_type,
@@ -262,8 +249,7 @@
'comment' : self.comment,
'ctime' : self.ctime,
'mtime' : self.mtime,
- 'uid' : self.uid,
- 'kickstart' : self.kickstart
+ 'uid' : self.uid
}
def printable(self):
@@ -277,13 +263,13 @@
buf = buf + _("created : %s\n") % time.ctime(self.ctime)
buf = buf + _("file : %s\n") % self.file
buf = buf + _("image type : %s\n") % self.image_type
- buf = buf + _("kickstart : %s\n") % self.kickstart
buf = buf + _("modified : %s\n") % time.ctime(self.mtime)
buf = buf + _("os version : %s\n") % self.os_version
buf = buf + _("owners : %s\n") % self.owners
buf = buf + _("virt bridge : %s\n") % self.virt_bridge
buf = buf + _("virt cpus : %s\n") % self.virt_cpus
buf = buf + _("network count : %s\n") % self.network_count
+ buf = buf + _("virt auto boot : %s\n") % self.virt_auto_boot
buf = buf + _("virt file size : %s\n") % self.virt_file_size
buf = buf + _("virt path : %s\n") % self.virt_path
buf = buf + _("virt ram : %s\n") % self.virt_ram
@@ -301,12 +287,13 @@
'os_version' : self.set_os_version,
'arch' : self.set_arch,
'file' : self.set_file,
- 'kickstart' : self.set_kickstart,
'owners' : self.set_owners,
'virt-cpus' : self.set_virt_cpus,
'virt_cpus' : self.set_virt_cpus,
'network-count' : self.set_network_count,
'network_count' : self.set_network_count,
+ 'virt-auto-boot' : self.set_virt_auto_boot,
+ 'virt_auto_boot' : self.set_virt_auto_boot,
'virt-file-size' : self.set_virt_file_size,
'virt_file_size' : self.set_virt_file_size,
'virt-bridge' : self.set_virt_bridge,
------------------------------------------------------------------------
(PATCH #3)
--- item_profile.py 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/cobbler/item_profile.py 2009-03-20
03:37:57.000000000 +0000
@@ -53,6 +53,7 @@
self.kernel_options_post = ({},
'<<inherit>>')[is_subobject]
self.ks_meta = ({},
'<<inherit>>')[is_subobject]
self.template_files = ({},
'<<inherit>>')[is_subobject]
+ self.virt_auto_boot = (self.settings.virt_auto_boot,
'<<inherit>>')[is_subobject]
self.virt_cpus = (1,
'<<inherit>>')[is_subobject]
self.virt_file_size =
(self.settings.default_virt_file_size,
'<<inherit>>')[is_subobject]
self.virt_ram =
(self.settings.default_virt_ram,
'<<inherit>>')[is_subobject]
@@ -117,6 +118,7 @@
self.virt_type = self.load_item(seed_data,'virt_type',
self.settings.default_virt_type)
self.virt_bridge = self.load_item(seed_data,'virt_bridge',
self.settings.default_virt_bridge)
self.virt_cpus = self.load_item(seed_data,'virt_cpus',1)
+ self.virt_auto_boot =
self.load_item(seed_data,'virt_auto_boot',self.settings.virt_auto_boot)
# backwards compatibility -- convert string entries to dicts
for storage
if self.kernel_options != "<<inherit>>" and
type(self.kernel_options) != dict:
@@ -234,6 +236,9 @@
return True
raise CX(_("kickstart not found: %s") % kickstart)
+ def set_virt_auto_boot(self,num):
+ return utils.set_virt_auto_boot(self,num)
+
def set_virt_cpus(self,num):
return utils.set_virt_cpus(self,num)
@@ -303,6 +308,7 @@
'virt_ram' : self.virt_ram,
'virt_bridge' : self.virt_bridge,
'virt_cpus' : self.virt_cpus,
+ 'virt_auto_boot' : self.virt_auto_boot,
'ks_meta' : self.ks_meta,
'template_files' : self.template_files,
'repos' : self.repos,
@@ -351,6 +357,7 @@
buf = buf + _("repos : %s\n") % self.repos
buf = buf + _("server : %s\n") % self.server
buf = buf + _("template_files : %s\n") % self.template_files
+ buf = buf + _("virt auto boot : %s\n") % self.virt_auto_boot
buf = buf + _("virt bridge : %s\n") % self.virt_bridge
buf = buf + _("virt cpus : %s\n") % self.virt_cpus
buf = buf + _("virt file size : %s\n") % self.virt_file_size
@@ -372,6 +379,8 @@
'kopts' : self.set_kernel_options,
'kopts-post' : self.set_kernel_options_post,
'kopts_post' :
self.set_kernel_options_post,
+ 'virt-auto-boot' : self.set_virt_auto_boot,
+ 'virt_auto_boot' : self.set_virt_auto_boot,
'virt-file-size' : self.set_virt_file_size,
'virt_file_size' : self.set_virt_file_size,
'virt-ram' : self.set_virt_ram,
------------------------------------------------------------------------
(PATCH #4)
--- item_system.py 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/cobbler/item_system.py 2009-03-20
03:39:46.000000000 +0000
@@ -58,6 +58,7 @@
self.virt_cpus = "<<inherit>>" #
""
self.virt_file_size = "<<inherit>>" #
""
self.virt_ram = "<<inherit>>" #
""
+ self.virt_auto_boot = "<<inherit>>" #
""
self.virt_type = "<<inherit>>" #
""
self.virt_path = "<<inherit>>" #
""
self.virt_bridge = "<<inherit>>" #
""
@@ -186,6 +187,7 @@
self.virt_path = self.load_item(seed_data, 'virt_path',
'<<inherit>>')
self.virt_type = self.load_item(seed_data, 'virt_type',
'<<inherit>>')
self.virt_ram =
self.load_item(seed_data,'virt_ram','<<inherit>>')
+ self.virt_auto_boot =
self.load_item(seed_data,'virt_auto_boot','<<inherit>>')
self.virt_file_size =
self.load_item(seed_data,'virt_file_size','<<inherit>>')
self.virt_path =
self.load_item(seed_data,'virt_path','<<inherit>>')
self.virt_type =
self.load_item(seed_data,'virt_type','<<inherit>>')
@@ -534,6 +536,9 @@
def set_virt_file_size(self,num):
return utils.set_virt_file_size(self,num)
+ def set_virt_auto_boot(self,num):
+ return utils.set_virt_auto_boot(self,num)
+
def set_virt_ram(self,num):
return utils.set_virt_ram(self,num)
@@ -662,6 +667,7 @@
'virt_file_size' : self.virt_file_size,
'virt_path' : self.virt_path,
'virt_ram' : self.virt_ram,
+ 'virt_auto_boot' : self.virt_auto_boot,
'virt_type' : self.virt_type,
'mgmt_classes' : self.mgmt_classes,
'template_files' : self.template_files,
@@ -707,6 +713,7 @@
buf = buf + _("virt file size : %s\n") %
self.virt_file_size
buf = buf + _("virt path : %s\n") % self.virt_path
buf = buf + _("virt ram : %s\n") % self.virt_ram
+ buf = buf + _("virt auto boot : %s\n") % self.virt_auto_boot
buf = buf + _("virt type : %s\n") % self.virt_type
buf = buf + _("power type : %s\n") % self.power_type
@@ -781,6 +788,8 @@
'delete_interface' : self.delete_interface,
'virt-path' : self.set_virt_path,
'virt_path' : self.set_virt_path,
+ 'virt-auto-boot' : self.set_virt_auto_boot,
+ 'virt_auto_boot' : self.set_virt_auto_boot,
'virt-ram' : self.set_virt_ram,
'virt_ram' : self.set_virt_ram,
'virt-type' : self.set_virt_type,
------------------------------------------------------------------------
(PATCH #5)
--- settings.py 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/cobbler/settings.py 2009-03-20
02:55:12.000000000 +0000
@@ -108,6 +108,7 @@
"tftpd_bin" : "/usr/sbin/in.tftpd",
"tftpd_conf" : "/etc/xinetd.d/tftp",
"tftpd_rules" : "/etc/tftpd.rules",
+ "virt_auto_boot" : 0,
"vsftpd_bin" : "/usr/sbin/vsftpd",
"webdir" : "/var/www/cobbler",
"xmlrpc_port" : 25151,
@@ -140,12 +141,6 @@
buf = buf + _("kernel options : %s\n") %
self._attributes['kernel_options']
return buf
- def to_datastruct_with_cache(self):
- """
- Really just something items do...
- """
- return self._attributes
-
def to_datastruct(self):
"""
Return an easily serializable representation of the config.
------------------------------------------------------------------------
(PATCH #6)
--- utils.py 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/cobbler/utils.py 2009-03-20
03:23:59.000000000 +0000
@@ -581,7 +581,7 @@
data from past scanned nodes. Hashes and arrays are treated
specially.
"""
- node_data = node.to_datastruct_with_cache()
+ node_data = node.to_datastruct()
# if the node has any data items labelled <<inherit>> we need to
expunge them.
# so that they do not override the supernodes.
@@ -1177,6 +1177,28 @@
raise CX(_("invalid virt file size"))
return True
+def set_virt_auto_boot(self,num):
+ """
+ For Virt only.
+ Specifies whether the VM should automatically boot upon host reboot
+ 0 tells Koan not to auto_boot virtuals
+ """
+
+ if num == "<<inherit>>":
+ self.virt_auto_boot = "<<inherit>>"
+ return True
+
+ # num is a non-negative integer (0 means default)
+ try:
+ inum = int(num)
+ if (inum == 0) or (inum == 1):
+ self.virt_auto_boot = inum
+ return True
+ return CX(_("invalid virt_auto_boot value: value must be
either '0' (disabled) or '1' (enabled)"))
+ except:
+ return CX(_("invalid virt_auto_boot value: value must be
either '0' (disabled) or '1' (enabled)"))
+ return True
+
def set_virt_ram(self,num):
"""
For Virt only.
------------------------------------------------------------------------
(PATCH #7)
--- ../webui_templates/image_edit.tmpl 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/webui_templates/image_edit.tmpl 2009-03-20
20:32:56.000000000 +0000
@@ -196,6 +196,21 @@
</td>
</tr>
+ ## self.virt_auto_boot = self.settings.virt_auto_boot
+
+ <tr>
+ <td>
+ <label for="virtautoboot">Virt RAM (MB)</label>
+ </td>
+ <td>
+ <input type="text" size="5" style="width: 150px;"
name="virtautoboot" id="virtautoboot"
+ #if $image
+ value="$image.virt_auto_boot"
+ #end if
+ />
+ <p class="context-tip">For virtual installs only, enable/disable VM
autoboot.</p>
+ </td>
+ </tr>
## self.virt_file_size = self.settings.default_virt_file_size
<tr>
------------------------------------------------------------------------
(PATCH #8)
--- ../contrib/ruby/lib/cobbler/image.rb 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/contrib/ruby/lib/cobbler/image.rb
2009-03-20 03:42:50.000000000 +0000
@@ -32,7 +32,7 @@
ATTRIBUTES = [:name, :owners, :depth, :virt_file_size,
:virt_path, :xml_file, :virt_bridge, :file, :parent,
- :image_type, :virt_ram, :virt_cpus, :virt_type, :network_count]
+ :image_type, :virt_ram, :virt_auto_boot, :virt_cpus, :virt_type,
:network_count]
ATTRIBUTES.each do |attr|
cobbler_field attr
------------------------------------------------------------------------
(PATCH #9)
--- ../contrib/ruby/lib/cobbler/profile.rb 2009-03-20 21:39:00.000000000
+0000
+++ /home/arosenwald/cobbler/contrib/ruby/lib/cobbler/profile.rb
2009-03-20 03:42:14.000000000 +0000
@@ -44,6 +44,7 @@
cobbler_field :server
cobbler_field :virt_bridge
cobbler_field :virt_ram
+ cobbler_field :virt_auto_boot
cobbler_field :kernel_options
cobbler_field :virt_cpus
cobbler_field :ks_meta
------------------------------------------------------------------------
(PATCH #10)
--- ../contrib/ruby/lib/cobbler/system.rb 2009-03-20 21:39:00.000000000
+0000
+++ /home/arosenwald/cobbler/contrib/ruby/lib/cobbler/system.rb
2009-03-20 03:43:10.000000000 +0000
@@ -46,6 +46,7 @@
cobbler_field :virt_file_size
cobbler_field :virt_path
cobbler_field :virt_ram
+ cobbler_field :virt_auto_boot
cobbler_field :virt_type
cobbler_field :virt_bridge
------------------------------------------------------------------------
(PATCH #11)
--- ../contrib/ruby/test/test_image.rb 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/contrib/ruby/test/test_image.rb 2009-03-20
03:41:36.000000000 +0000
@@ -47,6 +47,7 @@
'virt_path' => '<<inherit>>',
'virt_bridge' => '<<inherit>>',
'virt_ram' => '<<inherit>>',
+ 'virt_auto_boot' => '<<inherit>>',
'virt_cpus' => '<<inherit>>',
'file' =>
'/var/ftp/pub/Fedora-9-i686-Live-KDE.iso',
'parent' => nil,
@@ -60,6 +61,7 @@
'virt_path' => '<<inherit>>',
'virt_bridge' => '<<inherit>>',
'virt_ram' => '<<inherit>>',
+ 'virt_auto_boot' => '<<inherit>>',
'virt_cpus' => '<<inherit>>',
'file' => '/var/ftp/pub/Fedora-9-i686-Live.iso',
'parent' => nil,
------------------------------------------------------------------------
(PATCH #12)
--- ../contrib/ruby/test/test_system.rb 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/contrib/ruby/test/test_system.rb 2009-03-20
03:41:06.000000000 +0000
@@ -67,6 +67,7 @@
},
'virt_bridge' => '<<inherit>>',
'virt_ram' => '<<inherit>>',
+ 'virt_auto_boot' => '<<inherit>>',
'ks_meta' => nil,
'netboot_enabled' => 'True',
'kernel_options' => nil,
@@ -89,6 +90,7 @@
'mac_address' => 'AA:BB:CC:DD:EE:FF'}},
'virt_bridge' => '<<inherit>>',
'virt_ram' => '<<inherit>>',
+ 'virt_auto_boot' => '<<inherit>>',
'ks_meta' => nil,
'netboot_enabled' => 'True',
'kernel_options' => nil,
------------------------------------------------------------------------
(PATCH #13)
--- ../contrib/ruby/test/test_profile.rb 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/contrib/ruby/test/test_profile.rb
2009-03-20 21:58:28.000000000 +0000
@@ -44,6 +44,7 @@
'owners' => ['admin'],
'repos' => [],
'server' => '<<inherit>>',
+ 'virt auto boot' => 0,
'virt bridge' => 'xenbr0',
'virt cpus' => '1',
'virt file size' => '5',
@@ -62,6 +63,7 @@
'owners' => ['admin'],
'repos' => [],
'server' => '<<inherit>>',
+ 'virt auto boot' => 0,
'virt bridge' => 'xenbr0',
'virt cpus' => '1',
'virt file size' => '5',
------------------------------------------------------------------------
(PATCH #14)
--- ../webui_templates/profile_edit.tmpl 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/webui_templates/profile_edit.tmpl
2009-03-20 20:30:17.000000000 +0000
@@ -299,6 +299,19 @@
<tr>
<td class="virtedit">
+ <label for="virtautoboot">Virt AutoBoot</label>
+ </td>
+ <td class="virtedit">
+ <input type="text" size="5" style="width: 150px;"
name="virtautoboot" id="virtautoboot"
+ #if $profile
+ value="$profile.virt_auto_boot"
+ #end if
+ />
+ <p class="context-tip">For virtual installs only, enable/disable VM
autoboot.</p>
+ </td>
+ </tr>
+ <tr>
+ <td class="virtedit">
<label for="virttype">Virt Type</label>
</td>
<td class="virtedit">
------------------------------------------------------------------------
(PATCH #15)
--- ../webui_templates/search.tmpl 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/webui_templates/search.tmpl 2009-03-20
20:34:06.000000000 +0000
@@ -58,6 +58,7 @@
<option value="redhat_management_server">red hat management
server</option>
<option value="repos">repos</option>
<option value="template_files">template files</option>
+ <option value="virt_auto_boot">virt autoboot</option>
<option value="virt_bridge">virt bridge</option>
<option value="virt_cpus">virt cpus</option>
<option value="virt_file_size">virt file size
(GB)</option>
@@ -104,6 +105,7 @@
<option value="static">static</option>
<option value="static_routes">static_routes</option>
<option value="template_files">template files</option>
+ <option value="virt_auto_boot">virt autoboot</option>
<option value="virt_bridge">virt bridge</option>
<option value="virt_cpus">virt cpus</option>
<option value="virt_file_size">virt file size
(GB)</option>
@@ -135,6 +137,7 @@
<option value="network_count">network count</option>
<option value="os_version">os version</option>
<option value="owners">owners</option>
+ <option value="virt_auto_boot">virt autoboot</option>
<option value="virt_ram">virt ram (MB)</option>
<option value="virt_path">virt path</option>
<option value="virt_type">virt type</option>
------------------------------------------------------------------------
(PATCH #16)
--- ../webui_templates/system_edit.tmpl 2009-03-20 21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/webui_templates/system_edit.tmpl 2009-03-20
20:31:40.000000000 +0000
@@ -646,6 +646,18 @@
<tr>
<td class="virtedit">
+ <label for="virtautoboot">Virt AutoBoot</label>
+ </td>
+ <td class="virtedit">
+ <input type="text" size="5" style="width: 150px;"
name="virtautoboot" id="virtautoboot"
+ #if $system
+ value="$system.virt_auto_boot"
+ #end if
+ />
+ <p class="context-tip">For virtual installs only, enable/disable VM
autoboot.</p>
+ </td>
+ <tr>
+ <td class="virtedit">
<label for="virttype">Virt Type</label>
</td>
<td class="virtedit">
------------------------------------------------------------------------
(PATCH #17)
--- ../installer_templates/settings.template 2009-03-20
21:39:00.000000000 +0000
+++ /home/arosenwald/cobbler/installer_templates/settings.template
2009-03-20 02:52:05.000000000 +0000
@@ -346,6 +346,11 @@
tftpd_bin: /usr/sbin/in.tftpd
tftpd_conf: /etc/xinetd.d/tftp
+# by default, profiles/systems will not be set to 'auto-boot' virtual
systems;
+# i.e. if a physical system reboots, the virtual systems hosted on that
+# physical system will NOT be booted automatically.
+virt_auto_boot: 0
+
# cobbler's web directory. Don't change this setting -- see the
# Wiki on "relocating your cobbler install" if your /var partition
# is not large enough.
------------------------------------------------------------------------
FYI,
- A.
_______________________________________________
cobbler-devel mailing list
cobbler-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/cobbler-devel