summaryrefslogtreecommitdiff
path: root/extensions/distbuild-trove-nfsboot.write
diff options
context:
space:
mode:
authorAdam Coldrick <adam.coldrick@codethink.co.uk>2015-06-04 15:17:44 +0000
committerAdam Coldrick <adam.coldrick@codethink.co.uk>2015-06-11 08:55:05 +0000
commite4c6b8a69f0df2d0b3beac46865a66e0de527151 (patch)
treed837a9768fe2a15557d400301ed8b6588504eb55 /extensions/distbuild-trove-nfsboot.write
parent840292841f4495a79a037f81a26d6b3f51e7cb8c (diff)
downloaddefinitions-e4c6b8a69f0df2d0b3beac46865a66e0de527151.tar.gz
Remove dependencies on morphlib and cliapp from deployment extensionsbaserock/adamcoldrick/remove-dependencies-v3
This is done by either copying some utility functions from morph into writeexts.py, and using the `subprocess` module rather than cliapp's runcmd and ssh_runcmd. Note that this means that these extensions will require "$definitions_checkout/extensions" in PYTHONPATH when they are run. This commit also updates VERSION to 5, since the PYTHONPATH requirement means that this change is incompatible with old versions of morph. Change-Id: Iec6fa7e3c7219619ce55e18493e5c37c36e97816
Diffstat (limited to 'extensions/distbuild-trove-nfsboot.write')
-rwxr-xr-xextensions/distbuild-trove-nfsboot.write40
1 files changed, 20 insertions, 20 deletions
diff --git a/extensions/distbuild-trove-nfsboot.write b/extensions/distbuild-trove-nfsboot.write
index a5a5b094..86291794 100755
--- a/extensions/distbuild-trove-nfsboot.write
+++ b/extensions/distbuild-trove-nfsboot.write
@@ -20,14 +20,14 @@
import os
+import subprocess
import sys
import tempfile
-import cliapp
-import morphlib.writeexts
+import writeexts
-class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
+class DistbuildTroveNFSBootWriteExtension(writeexts.WriteExtension):
'''Create an NFS root and kernel on TFTP during Morph's deployment.
@@ -54,7 +54,7 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
def process_args(self, args):
if len(args) != 2:
- raise cliapp.AppException('Wrong number of command line args')
+ raise writeexts.ExtensionError('Wrong number of command line args')
local_system_path, nfs_host = args
@@ -111,17 +111,17 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
'''
pairs = host_map_string.split(' ')
- return morphlib.util.parse_environment_pairs({}, pairs)
+ return writeexts.parse_environment_pairs({}, pairs)
def transfer_system(self, nfs_netloc, local_system_path,
remote_system_path):
self.status(msg='Copying rootfs to %(nfs_netloc)s',
nfs_netloc=nfs_netloc)
- cliapp.ssh_runcmd(
+ writeexts.ssh_runcmd(
nfs_netloc, ['mkdir', '-p', remote_system_path])
# The deployed rootfs may have been created by OSTree, so definitely
# don't pass --hard-links to `rsync`.
- cliapp.runcmd(
+ subprocess.check_call(
['rsync', '--archive', '--delete', '--info=progress2',
'--protect-args', '--partial', '--sparse', '--xattrs',
local_system_path + '/',
@@ -131,13 +131,13 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
target_system_path):
self.status(msg='Duplicating rootfs to %(target_system_path)s',
target_system_path=target_system_path)
- cliapp.ssh_runcmd(nfs_netloc,
+ writeexts.ssh_runcmd(nfs_netloc,
['mkdir', '-p', target_system_path])
# We can't pass --info=progress2 here, because it may not be available
# in the remote 'rsync'. The --info setting was added in RSync 3.1.0,
# old versions of Baserock have RSync 3.0.9. So the user doesn't get
# any progress info on stdout for the 'duplicate' stage.
- cliapp.ssh_runcmd(nfs_netloc,
+ writeexts.ssh_runcmd(nfs_netloc,
['rsync', '--archive', '--delete', '--protect-args', '--partial',
'--sparse', '--xattrs', source_system_path + '/',
target_system_path], stdout=sys.stdout)
@@ -152,7 +152,7 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
kernel_path = os.path.relpath(try_path, local_system_path)
break
else:
- raise cliapp.AppException(
+ raise writeexts.ExtensionError(
'Could not find a kernel in the system: none of '
'%s found' % ', '.join(image_names))
return kernel_path
@@ -171,11 +171,11 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
versioned_kernel_name = "%s-%s" % (system_name, version_label)
kernel_name = system_name
- cliapp.ssh_runcmd(nfs_netloc,
+ writeexts.ssh_runcmd(nfs_netloc,
['ln', '-f', kernel_dest,
os.path.join(tftp_dir, versioned_kernel_name)])
- cliapp.ssh_runcmd(nfs_netloc,
+ writeexts.ssh_runcmd(nfs_netloc,
['ln', '-sf', versioned_kernel_name,
os.path.join(tftp_dir, kernel_name)])
@@ -183,7 +183,7 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
with tempfile.NamedTemporaryFile() as f:
f.write(text)
f.flush()
- cliapp.runcmd(
+ subprocess.check_call(
['scp', f.name, '%s:%s' % (nfs_netloc, path)])
def set_hostname(self, nfs_netloc, system_name, system_path):
@@ -223,9 +223,9 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
'# Generated by distbuild-trove-nfsboot.write\n' + \
config_text + '\n'
path = os.path.join(system_path, 'etc', 'distbuild')
- cliapp.ssh_runcmd(
+ writeexts.ssh_runcmd(
nfs_netloc, ['mkdir', '-p', path])
- cliapp.runcmd(
+ subprocess.check_call(
['scp', worker_ssh_key_path, '%s:%s' % (nfs_netloc, path)])
self.set_remote_file_contents(
nfs_netloc, os.path.join(path, 'distbuild.conf'), config_text)
@@ -244,9 +244,9 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
# Rather ugly SSH hackery follows to ensure each system path is
# listed in /etc/exports.
try:
- cliapp.ssh_runcmd(
+ writeexts.ssh_runcmd(
nfs_netloc, ['grep', '-q', exported_path, exports_path])
- except cliapp.AppException:
+ except writeexts.ExtensionError:
ip_mask = '*'
options = 'rw,no_subtree_check,no_root_squash,async'
exports_string = '%s %s(%s)\n' % (exported_path, ip_mask,
@@ -259,12 +259,12 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
cat >> "$temp"
mv "$temp" "$target"
'''
- cliapp.ssh_runcmd(
+ writeexts.ssh_runcmd(
nfs_netloc,
['sh', '-c', exports_append_sh, '--', exports_path],
feed_stdin=exports_string)
- cliapp.ssh_runcmd(nfs_netloc,
+ writeexts.ssh_runcmd(nfs_netloc,
['systemctl', 'restart', 'nfs-server.service'])
def update_default_version(self, remote_netloc, system_name,
@@ -276,7 +276,7 @@ class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension):
version_label)
default_path = os.path.join(system_path, 'systems', 'default')
- cliapp.ssh_runcmd(remote_netloc,
+ writeexts.ssh_runcmd(remote_netloc,
['ln', '-sfn', system_version_path, default_path])