summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-05-23 10:42:43 +0100
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-05-23 10:43:05 +0100
commitb6a33d69db0bea97dba40314bb1399f15e39c2cf (patch)
tree6805ada308e6ece41c455b3b1b30a26386140c07
parentbe427a358072931e7e4516e62aff5b26968dfd16 (diff)
parent7d849ca1db73c1544073acb6b7c88a33ec88be8d (diff)
downloadmorph-b6a33d69db0bea97dba40314bb1399f15e39c2cf.tar.gz
Merge remote-tracking branch 'origin/sam/ssh-rsync-check'
Reviewed-By: Richard Maw <richard.maw@codethink.co.uk> Reviewed-By: Lars Wirzenius <lars.wirzenius@codethink.co.uk>
-rwxr-xr-xmorphlib/exts/ssh-rsync.check24
-rwxr-xr-xmorphlib/exts/ssh-rsync.write26
2 files changed, 24 insertions, 26 deletions
diff --git a/morphlib/exts/ssh-rsync.check b/morphlib/exts/ssh-rsync.check
index 90029cb4..6a776ce9 100755
--- a/morphlib/exts/ssh-rsync.check
+++ b/morphlib/exts/ssh-rsync.check
@@ -33,4 +33,28 @@ class SshRsyncCheckExtension(morphlib.writeexts.WriteExtension):
'Baserock machines. It cannot be used for an initial '
'deployment.')
+ location = args[0]
+ self.check_ssh_connectivity(location)
+ self.check_is_baserock_system(location)
+
+ # The new system that being deployed as an upgrade must contain
+ # baserock-system-config-sync and system-version-manager. However, the
+ # old system simply needs to have SSH and rsync.
+ self.check_command_exists(location, 'rsync')
+
+ def check_is_baserock_system(self, location):
+ output = cliapp.ssh_runcmd(location, ['sh', '-c',
+ 'test -d /baserock || echo -n dirnotfound'])
+ if output == 'dirnotfound':
+ raise cliapp.AppException('%s is not a baserock system'
+ % location)
+
+ def check_command_exists(self, location, command):
+ test = 'type %s > /dev/null 2>&1 || echo -n cmdnotfound' % command
+ output = cliapp.ssh_runcmd(location, ['sh', '-c', test])
+ if output == 'cmdnotfound':
+ raise cliapp.AppException(
+ "%s does not have %s" % (location, command))
+
+
SshRsyncCheckExtension().run()
diff --git a/morphlib/exts/ssh-rsync.write b/morphlib/exts/ssh-rsync.write
index 509520ae..c139b6c0 100755
--- a/morphlib/exts/ssh-rsync.write
+++ b/morphlib/exts/ssh-rsync.write
@@ -51,7 +51,6 @@ class SshRsyncWriteExtension(morphlib.writeexts.WriteExtension):
temp_root, location = args
- self.check_valid_target(location)
self.upgrade_remote_system(location, temp_root)
def upgrade_remote_system(self, location, temp_root):
@@ -145,30 +144,5 @@ class SshRsyncWriteExtension(morphlib.writeexts.WriteExtension):
if (line_words[1] == '/' and line_words[0] != 'rootfs'):
return line_words[0]
- def check_valid_target(self, location):
- try:
- cliapp.ssh_runcmd(location, ['true'])
- except Exception as e:
- raise cliapp.AppException('%s does not respond to ssh:\n%s'
- % (location, e))
-
- output = cliapp.ssh_runcmd(location, ['sh', '-c',
- 'test -d /baserock || echo -n dirnotfound'])
- if output == 'dirnotfound':
- raise cliapp.AppException('%s is not a baserock system'
- % location)
-
- def check_command_exists(command):
- test = 'type %s > /dev/null 2>&1 || echo -n cmdnotfound' % command
- output = cliapp.ssh_runcmd(location, ['sh', '-c', test])
- if output == 'cmdnotfound':
- raise cliapp.AppException(
- "%s does not have %s" % (location, command))
-
- # The deploy requires baserock-system-config-sync and
- # system-version-manager in the new system only. The old system doesn't
- # need to have them at all.
- check_command_exists('rsync')
-
SshRsyncWriteExtension().run()