bootstrap-vz/bootstrapvz/plugins/ntp/tasks.py
Veli-Matti Lintu 68d7ddb307 Commit 701678c9 changes print statements to print functions with end=' '.
As the printed strings contain newlines, this causes a space to be written
as the first character of the following line causing them to be indented.

An example config that is broken. Here disabling modules indents all the
other lines of cloud.cfg except the first one causing the username name
setting to fail as it expects indenting to be certain number of spaces.

plugins:
  cloud_init:
    metadata_sources: Ec2
    username: admin
    disable_modules:
      - locale
      - mounts

This commit removes the spaces by specifying end=''.
2018-06-13 13:20:05 +03:00

34 lines
1.1 KiB
Python

from __future__ import print_function
from bootstrapvz.base import Task
from bootstrapvz.common import phases
class AddNtpPackage(Task):
description = 'Adding NTP Package'
phase = phases.preparation
@classmethod
def run(cls, info):
info.packages.add('ntp')
class SetNtpServers(Task):
description = 'Setting NTP servers'
phase = phases.system_modification
@classmethod
def run(cls, info):
import fileinput
import os
import re
ntp_path = os.path.join(info.root, 'etc/ntp.conf')
servers = list(info.manifest.plugins['ntp']['servers'])
debian_ntp_server = re.compile('.*[0-9]\.debian\.pool\.ntp\.org.*')
for line in fileinput.input(files=ntp_path, inplace=True):
# Will write all the specified servers on the first match, then supress all other default servers
if re.match(debian_ntp_server, line):
while servers:
print('server {server_address} iburst'.format(server_address=servers.pop(0)))
else:
print(line, end='')