diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2015-01-28 11:32:07 +0000 |
---|---|---|
committer | Javier Jardón <jjardon@gnome.org> | 2015-03-04 19:14:41 +0000 |
commit | c96dfa28f2b6f5c7aeb482c505ae010b607b1305 (patch) | |
tree | f35ca2a2343b729ff3226564b34d86e32fc7aea0 /morphlib | |
parent | 5955559f87c8516ab496f99f56fd07eaf452c80f (diff) | |
download | morph-c96dfa28f2b6f5c7aeb482c505ae010b607b1305.tar.gz |
Check file can be created at location
Diffstat (limited to 'morphlib')
-rwxr-xr-x | morphlib/exts/kvm.check | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/morphlib/exts/kvm.check b/morphlib/exts/kvm.check index 1bb4007a..3c6accbf 100755 --- a/morphlib/exts/kvm.check +++ b/morphlib/exts/kvm.check @@ -1,5 +1,5 @@ #!/usr/bin/python -# Copyright (C) 2014 Codethink Limited +# Copyright (C) 2014-2015 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -43,6 +43,7 @@ class KvmPlusSshCheckExtension(morphlib.writeexts.WriteExtension): ssh_host, vm_name, vm_path = self.check_and_parse_location(location) self.check_ssh_connectivity(ssh_host) + self.check_can_create_file_at_given_path(ssh_host, vm_path) self.check_no_existing_libvirt_vm(ssh_host, vm_name) self.check_extra_disks_exist(ssh_host, self.parse_attach_disks()) @@ -73,6 +74,26 @@ class KvmPlusSshCheckExtension(morphlib.writeexts.WriteExtension): 'write extension to deploy upgrades to existing machines.' % (ssh_host, vm_name)) + def check_can_create_file_at_given_path(self, ssh_host, vm_path): + + def check_can_write_to_given_path(): + try: + cliapp.ssh_runcmd(ssh_host, ['touch', vm_path]) + except cliapp.AppException as e: + raise cliapp.AppException("Can't write to location %s on %s" + % (vm_path, ssh_host)) + else: + cliapp.ssh_runcmd(ssh_host, ['rm', vm_path]) + + try: + cliapp.ssh_runcmd(ssh_host, ['test', '-e', vm_path]) + except cliapp.AppException as e: + # vm_path doesn't already exist, so let's test we can write + check_can_write_to_given_path() + else: + raise cliapp.AppException('%s already exists on %s' + % (vm_path, ssh_host)) + def check_extra_disks_exist(self, ssh_host, filename_list): for filename in filename_list: try: |