summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-10-08 12:31:55 +0000
committerGerrit Code Review <review@openstack.org>2018-10-08 12:31:55 +0000
commitd5f912c971452c7309e1cdd64125233039d5702f (patch)
tree9e3c1c20a832e2554ea174b3f25a3d4b57aaeb04
parent73b15b6d0dcd8884d49782f3dd465c01db54da05 (diff)
parent47dc339ab9bb2985d750dae11d0b3b8b2c85d2b2 (diff)
downloadpython-novaclient-d5f912c971452c7309e1cdd64125233039d5702f.tar.gz
Merge "Follow up "Fix up userdata argument to rebuild""
-rw-r--r--novaclient/tests/unit/v2/test_shell.py7
-rw-r--r--novaclient/v2/shell.py9
-rw-r--r--releasenotes/notes/fix-rebuild-userdata-9315e5784feb8ba9.yaml5
3 files changed, 14 insertions, 7 deletions
diff --git a/novaclient/tests/unit/v2/test_shell.py b/novaclient/tests/unit/v2/test_shell.py
index e1166450..830ce53d 100644
--- a/novaclient/tests/unit/v2/test_shell.py
+++ b/novaclient/tests/unit/v2/test_shell.py
@@ -1773,8 +1773,11 @@ class ShellTest(utils.TestCase):
'no_such_file')
cmd = ('rebuild sample-server %s --user-data %s'
% (FAKE_UUID_1, invalid_file))
- self.assertRaises(exceptions.CommandError, self.run_command, cmd,
- api_version='2.57')
+ ex = self.assertRaises(exceptions.CommandError, self.run_command, cmd,
+ api_version='2.57')
+ self.assertIn("Can't open '%(user_data)s': "
+ "[Errno 2] No such file or directory: '%(user_data)s'" %
+ {'user_data': invalid_file}, six.text_type(ex))
def test_rebuild_unset_user_data(self):
self.run_command('rebuild sample-server %s --user-data-unset' %
diff --git a/novaclient/v2/shell.py b/novaclient/v2/shell.py
index 8a1b9a6d..ae7344bf 100644
--- a/novaclient/v2/shell.py
+++ b/novaclient/v2/shell.py
@@ -398,7 +398,8 @@ def _boot(cs, args):
for f in args.files:
try:
dst, src = f.split('=', 1)
- files[dst] = open(src)
+ with open(src) as fo:
+ files[dst] = fo.read()
except IOError as e:
raise exceptions.CommandError(
_("Can't open '%(src)s': %(exc)s") %
@@ -416,7 +417,8 @@ def _boot(cs, args):
if args.user_data:
try:
- userdata = open(args.user_data)
+ with open(args.user_data) as f:
+ userdata = f.read()
except IOError as e:
raise exceptions.CommandError(_("Can't open '%(user_data)s': "
"%(exc)s") %
@@ -1916,7 +1918,8 @@ def do_rebuild(cs, args):
"'--user-data'."))
elif args.user_data:
try:
- kwargs['userdata'] = open(args.user_data)
+ with open(args.user_data) as f:
+ kwargs['userdata'] = f.read()
except IOError as e:
raise exceptions.CommandError(
_("Can't open '%(user_data)s': %(exc)s") % {
diff --git a/releasenotes/notes/fix-rebuild-userdata-9315e5784feb8ba9.yaml b/releasenotes/notes/fix-rebuild-userdata-9315e5784feb8ba9.yaml
index 4d540758..32065a11 100644
--- a/releasenotes/notes/fix-rebuild-userdata-9315e5784feb8ba9.yaml
+++ b/releasenotes/notes/fix-rebuild-userdata-9315e5784feb8ba9.yaml
@@ -1,5 +1,6 @@
---
fixes:
- |
- The user data argument to rebuild was passing the filename as is as userdata.
- Now this passes the contents of the filename as intended.
+ The user data argument in the ``nova rebuild`` command was passing
+ the filename as userdata. Now this passes the contents of the file
+ as intended.