summaryrefslogtreecommitdiffstats
path: root/cobbler/action_litesync.py
diff options
context:
space:
mode:
Diffstat (limited to 'cobbler/action_litesync.py')
-rw-r--r--cobbler/action_litesync.py77
1 files changed, 40 insertions, 37 deletions
diff --git a/cobbler/action_litesync.py b/cobbler/action_litesync.py
index 457f3af..ad669be 100644
--- a/cobbler/action_litesync.py
+++ b/cobbler/action_litesync.py
@@ -30,7 +30,7 @@ from cexceptions import *
import traceback
import errno
-from rhpl.translate import _, N_, textdomain, utf8
+from utils import _
class BootLiteSync:
@@ -49,45 +49,36 @@ class BootLiteSync:
self.systems = config.systems()
self.settings = config.settings()
self.repos = config.repos()
- self.sync = action_sync.BootSync(self.config)
+ self.sync = config.api.get_sync()
def add_single_distro(self, name):
# get the distro record
distro = self.distros.find(name=name)
if distro is None:
raise CX(_("error in distro lookup: %s") % name)
- # generate YAML file in distros/$name in webdir
- self.sync.write_distro_file(distro)
# copy image files to images/$name in webdir & tftpboot:
- self.sync.copy_single_distro_files(distro)
+ self.sync.pxegen.copy_single_distro_files(distro)
# cascade sync
kids = distro.get_children()
for k in kids:
self.add_single_profile(k.name)
def remove_single_distro(self, name):
- # delete distro YAML file in distros/$name in webdir
- self.sync.rmfile(os.path.join(self.settings.webdir, "distros", name))
+ bootloc = utils.tftpboot_location()
# delete contents of images/$name directory in webdir
- self.sync.rmtree(os.path.join(self.settings.webdir, "images", name))
+ utils.rmtree(os.path.join(self.settings.webdir, "images", name))
# delete contents of images/$name in tftpboot
- self.sync.rmtree(os.path.join(self.settings.tftpboot, "images", name))
+ utils.rmtree(os.path.join(bootloc, "images", name))
# delete potential symlink to tree in webdir/links
- self.sync.rmfile(os.path.join(self.settings.webdir, "links", name))
+ utils.rmfile(os.path.join(self.settings.webdir, "links", name))
def add_single_profile(self, name):
# get the profile object:
profile = self.profiles.find(name=name)
if profile is None:
raise CX(_("error in profile lookup"))
- # rebuild profile_list YAML file in webdir
- self.sync.write_listings()
- # add profiles/$name YAML file in webdir
- self.sync.write_profile_file(profile)
- # generate kickstart for kickstarts/$name/ks.cfg in webdir
- self.sync.validate_kickstart_for_specific_profile(profile)
# rebuild the yum configuration files for any attached repos
- self.sync.retemplate_yum_repos(profile,True)
+ self.sync.yumgen.retemplate_yum_repos(profile,True)
# cascade sync
kids = profile.get_children()
for k in kids:
@@ -97,18 +88,16 @@ class BootLiteSync:
self.add_single_system(k.name)
def remove_single_profile(self, name):
- # rebuild profile_list YAML file in webdir
- self.sync.write_listings()
# delete profiles/$name file in webdir
- self.sync.rmfile(os.path.join(self.settings.webdir, "profiles", name))
+ utils.rmfile(os.path.join(self.settings.webdir, "profiles", name))
# delete contents on kickstarts/$name directory in webdir
- self.sync.rmtree(os.path.join(self.settings.webdir, "kickstarts", name))
+ utils.rmtree(os.path.join(self.settings.webdir, "kickstarts", name))
def update_system_netboot_status(self,name):
system = self.systems.find(name=name)
if system is None:
raise CX(_("error in system lookup for %s") % name)
- self.sync.write_all_system_files(system,True)
+ self.sync.pxegen.write_all_system_files(system)
def add_single_system(self, name):
# get the system object:
@@ -116,28 +105,42 @@ class BootLiteSync:
if system is None:
raise CX(_("error in system lookup for %s") % name)
# rebuild system_list file in webdir
- self.sync.regen_ethers() # /etc/ethers, for dnsmasq & rarpd
- self.sync.regen_hosts() # /var/lib/cobbler/cobbler_hosts, pretty much for dnsmasq
- self.sync.write_listings()
- # write the PXE and YAML files for the system
- self.sync.write_all_system_files(system)
+ if self.settings.manage_dhcp:
+ self.sync.dhcp.regen_ethers()
+ if self.settings.manage_dns:
+ self.sync.dns.regen_hosts()
+ # write the PXE files for the system
+ self.sync.pxegen.write_all_system_files(system)
# per system kickstarts
- self.sync.validate_kickstart_for_specific_system(system)
- # rebuild the yum configuration files for any attached repos
- self.sync.retemplate_yum_repos(system,False)
+ self.sync.yumgen.retemplate_yum_repos(system,False)
+ if self.settings.manage_dhcp:
+ if self.settings.omapi_enabled:
+ for (name,interface) in system.interfaces.iteritems():
+ self.sync.dhcp.write_dhcp_lease(
+ self.settings.omapi_port,
+ interface["hostname"],
+ interface["mac_address"],
+ interface["ip_address"]
+ )
+
def remove_single_system(self, name):
+ bootloc = utils.tftpboot_location()
system_record = self.systems.find(name=name)
- # rebuild system_list file in webdir
- self.sync.write_listings()
- # delete system YAML file in systems/$name in webdir
- self.sync.rmfile(os.path.join(self.settings.webdir, "systems", name))
# delete contents of kickstarts_sys/$name in webdir
system_record = self.systems.find(name=name)
# delete any kickstart files related to this system
for (name,interface) in system_record.interfaces.iteritems():
filename = utils.get_config_filename(system_record,interface=name)
- self.sync.rmtree(os.path.join(self.settings.webdir, "kickstarts_sys", filename))
+ utils.rmtree(os.path.join(self.settings.webdir, "kickstarts_sys", filename))
+
+ if self.settings.manage_dhcp:
+ if self.settings.omapi_enabled:
+ for (name,interface) in system_record.interfaces.iteritems():
+ self.sync.dhcp.remove_dhcp_lease(
+ self.settings.omapi_port,
+ interface["hostname"]
+ )
# unneeded
#if not system_record.is_pxe_supported():
@@ -152,7 +155,7 @@ class BootLiteSync:
if distro is not None and distro in [ "ia64", "IA64"]:
itanic = True
if not itanic:
- self.sync.rmfile(os.path.join(self.settings.tftpboot, "pxelinux.cfg", filename))
+ utils.rmfile(os.path.join(bootloc, "pxelinux.cfg", filename))
else:
- self.sync.rmfile(os.path.join(self.settings.tftpboot, filename))
+ utils.rmfile(os.path.join(bootloc, filename))