bootstrap-vz/plugins/unattended_upgrades/tasks.py
Anders Ingemann 1c93094833 Integrated package plugin with base system
New phase introduced "package installation" (fixes #114)
Apt source lines are now parsed, this allows to verify the target release of added packages.
All packages (except locales) are now installed *after* bootstrapping (fixes #123)
Added env argument to log_(check_)call
HostDependencies have been refactored a little
2013-12-29 20:58:06 +01:00

37 lines
1.8 KiB
Python

from base import Task
from common import phases
class AddUnattendedUpgradesPackage(Task):
description = 'Adding ``unattended-upgrades\'\' to the image packages'
phase = phases.preparation
def run(self, info):
info.packages.add('unattended-upgrades')
class EnablePeriodicUpgrades(Task):
description = 'Writing the periodic upgrades apt config file'
phase = phases.system_modification
def run(self, info):
import os.path
periodic_path = os.path.join(info.root, 'etc/apt/apt.conf.d/02periodic')
update_interval = info.manifest.plugins['unattended_upgrades']['update_interval']
download_interval = info.manifest.plugins['unattended_upgrades']['download_interval']
upgrade_interval = info.manifest.plugins['unattended_upgrades']['upgrade_interval']
with open(periodic_path, 'w') as periodic:
periodic.write(('// Enable the update/upgrade script (0=disable)\n'
'APT::Periodic::Enable "1";\n\n'
'// Do "apt-get update" automatically every n-days (0=disable)\n'
'APT::Periodic::Update-Package-Lists "{update_interval}";\n\n'
'// Do "apt-get upgrade --download-only" every n-days (0=disable)\n'
'APT::Periodic::Download-Upgradeable-Packages "{download_interval}";\n\n'
'// Run the "unattended-upgrade" security upgrade script\n'
'// every n-days (0=disabled)\n'
'// Requires the package "unattended-upgrades" and will write\n'
'// a log in /var/log/unattended-upgrades\n'
'APT::Periodic::Unattended-Upgrade "{upgrade_interval}";\n'
.format(update_interval=update_interval,
download_interval=download_interval,
upgrade_interval=upgrade_interval)))