summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEldar Nugaev <enugaev@griddynamics.com>2011-04-21 04:20:19 +0400
committerEldar Nugaev <enugaev@griddynamics.com>2011-04-21 04:20:19 +0400
commit5fc608bb60dc9c086d8c2c7ac69c0dd6719c061f (patch)
treeb62c782a52dc4634553dbfc39ee473a3268f131d
parentfe23f71687e09248feb7542ea97001a496697742 (diff)
parent7e345f07edc13ad7d56d50b67b089b16d860cb40 (diff)
downloadnova-5fc608bb60dc9c086d8c2c7ac69c0dd6719c061f.tar.gz
nova-5fc608bb60dc9c086d8c2c7ac69c0dd6719c061f.tar.xz
nova-5fc608bb60dc9c086d8c2c7ac69c0dd6719c061f.zip
revert changes that doesn't affect the bug
-rw-r--r--HACKING17
-rwxr-xr-xbin/nova-compute6
-rwxr-xr-xbin/nova-manage13
-rw-r--r--nova/api/openstack/servers.py67
-rw-r--r--nova/tests/api/openstack/test_extensions.py1
-rw-r--r--nova/tests/api/openstack/test_servers.py4
-rwxr-xr-xrun_tests.sh27
7 files changed, 82 insertions, 53 deletions
diff --git a/HACKING b/HACKING
index e58d60e58..2f364c894 100644
--- a/HACKING
+++ b/HACKING
@@ -50,17 +50,24 @@ Human Alphabetical Order Examples
Docstrings
----------
- """Summary of the function, class or method, less than 80 characters.
+ """A one line docstring looks like this and ends in a period."""
- New paragraph after newline that explains in more detail any general
- information about the function, class or method. After this, if defining
- parameters and return types use the Sphinx format. After that an extra
- newline then close the quotations.
+
+ """A multiline docstring has a one-line summary, less than 80 characters.
+
+ Then a new paragraph after a newline that explains in more detail any
+ general information about the function, class or method. Example usages
+ are also great to have here if it is a complex class for function. After
+ you have finished your descriptions add an extra newline and close the
+ quotations.
When writing the docstring for a class, an extra line should be placed
after the closing quotations. For more in-depth explanations for these
decisions see http://www.python.org/dev/peps/pep-0257/
+ If you are going to describe parameters and return values, use Sphinx, the
+ appropriate syntax is as follows.
+
:param foo: the foo parameter
:param bar: the bar parameter
:returns: description of the return value
diff --git a/bin/nova-compute b/bin/nova-compute
index 95fa393b1..cd7c78def 100755
--- a/bin/nova-compute
+++ b/bin/nova-compute
@@ -28,11 +28,11 @@ import sys
# If ../nova/__init__.py exists, add ../ to Python search path, so that
# it will override what happens to be installed in /usr/(local/)lib/python...
-possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
+POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
os.pardir,
os.pardir))
-if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
- sys.path.insert(0, possible_topdir)
+if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'nova', '__init__.py')):
+ sys.path.insert(0, POSSIBLE_TOPDIR)
gettext.install('nova', unicode=1)
diff --git a/bin/nova-manage b/bin/nova-manage
index b2308bc03..2c06767f1 100755
--- a/bin/nova-manage
+++ b/bin/nova-manage
@@ -58,7 +58,6 @@ import gettext
import glob
import json
import os
-import re
import sys
import time
@@ -66,11 +65,11 @@ import IPy
# If ../nova/__init__.py exists, add ../ to Python search path, so that
# it will override what happens to be installed in /usr/(local/)lib/python...
-possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
+POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
os.pardir,
os.pardir))
-if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
- sys.path.insert(0, possible_topdir)
+if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'nova', '__init__.py')):
+ sys.path.insert(0, POSSIBLE_TOPDIR)
gettext.install('nova', unicode=1)
@@ -809,11 +808,11 @@ class VolumeCommands(object):
class InstanceTypeCommands(object):
"""Class for managing instance types / flavors."""
- def _print_instance_types(self, n, val):
+ def _print_instance_types(self, name, val):
deleted = ('', ', inactive')[val["deleted"] == 1]
print ("%s: Memory: %sMB, VCPUS: %s, Storage: %sGB, FlavorID: %s, "
"Swap: %sGB, RXTX Quota: %sGB, RXTX Cap: %sMB%s") % (
- n, val["memory_mb"], val["vcpus"], val["local_gb"],
+ name, val["memory_mb"], val["vcpus"], val["local_gb"],
val["flavorid"], val["swap"], val["rxtx_quota"],
val["rxtx_cap"], deleted)
@@ -1021,7 +1020,7 @@ class ImageCommands(object):
machine_images[image_path] = image_metadata
else:
other_images[image_path] = image_metadata
- except Exception as exc:
+ except Exception:
print _("Failed to load %(fn)s.") % locals()
# NOTE(vish): do kernels and ramdisks first so images
self._convert_images(other_images)
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index e0681e597..22a9c632c 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -294,47 +294,61 @@ class Controller(common.OpenstackController):
'revertResize': self._action_revert_resize,
'rebuild': self._action_rebuild,
}
+
input_dict = self._deserialize(req.body, req.get_content_type())
for key in actions.keys():
if key in input_dict:
- try:
- context = req.environ['nova.context']
- return actions[key](context, input_dict, id)
- except Exception, e:
- LOG.exception(_("Error in action %(key)s: %(e)s") %
- locals())
- return faults.Fault(exc.HTTPBadRequest())
+ return actions[key](input_dict, req, id)
return faults.Fault(exc.HTTPNotImplemented())
- def _action_change_password(self, context, input_dict, id):
+ def _action_change_password(self, input_dict, req, id):
return exc.HTTPNotImplemented()
- def _action_confirm_resize(self, context, input_dict, id):
- self.compute_api.confirm_resize(context, id)
+ def _action_confirm_resize(self, input_dict, req, id):
+ try:
+ self.compute_api.confirm_resize(req.environ['nova.context'], id)
+ except Exception, e:
+ LOG.exception(_("Error in confirm-resize %s"), e)
+ return faults.Fault(exc.HTTPBadRequest())
return exc.HTTPNoContent()
- def _action_revert_resize(self, context, input_dict, id):
- self.compute_api.revert_resize(context, id)
+ def _action_revert_resize(self, input_dict, req, id):
+ try:
+ self.compute_api.revert_resize(req.environ['nova.context'], id)
+ except Exception, e:
+ LOG.exception(_("Error in revert-resize %s"), e)
+ return faults.Fault(exc.HTTPBadRequest())
return exc.HTTPAccepted()
- def _action_rebuild(self, context, input_dict, id):
+ def _action_rebuild(self, input_dict, req, id):
return faults.Fault(exc.HTTPNotImplemented())
- def _action_resize(self, context, input_dict, id):
+ def _action_resize(self, input_dict, req, id):
""" Resizes a given instance to the flavor size requested """
- if 'resize' in input_dict and 'flavorId' in input_dict['resize']:
- flavor_id = input_dict['resize']['flavorId']
- self.compute_api.resize(context, id, flavor_id)
- else:
- LOG.exception(_("Missing arguments for resize"))
- return faults.Fault(exc.HTTPUnprocessableEntity())
+ try:
+ if 'resize' in input_dict and 'flavorId' in input_dict['resize']:
+ flavor_id = input_dict['resize']['flavorId']
+ self.compute_api.resize(req.environ['nova.context'], id,
+ flavor_id)
+ else:
+ LOG.exception(_("Missing arguments for resize"))
+ return faults.Fault(exc.HTTPUnprocessableEntity())
+ except Exception, e:
+ LOG.exception(_("Error in resize %s"), e)
+ return faults.Fault(exc.HTTPBadRequest())
return faults.Fault(exc.HTTPAccepted())
- def _action_reboot(self, context, input_dict, id):
- reboot_type = input_dict['reboot']['type']
- # TODO(gundlach): pass reboot_type, support soft reboot in
- # virt driver
- self.compute_api.reboot(context, id)
+ def _action_reboot(self, input_dict, req, id):
+ try:
+ reboot_type = input_dict['reboot']['type']
+ except Exception:
+ raise faults.Fault(exc.HTTPNotImplemented())
+ try:
+ # TODO(gundlach): pass reboot_type, support soft reboot in
+ # virt driver
+ self.compute_api.reboot(req.environ['nova.context'], id)
+ except:
+ return faults.Fault(exc.HTTPUnprocessableEntity())
return exc.HTTPAccepted()
@scheduler_api.redirect_handler
@@ -618,7 +632,8 @@ class ControllerV11(Controller):
def _get_addresses_view_builder(self, req):
return nova.api.openstack.views.addresses.ViewBuilderV11(req)
- def _action_change_password(self, context, input_dict, id):
+ def _action_change_password(self, input_dict, req, id):
+ context = req.environ['nova.context']
if (not 'changePassword' in input_dict
or not 'adminPass' in input_dict['changePassword']):
msg = _("No adminPass was specified")
diff --git a/nova/tests/api/openstack/test_extensions.py b/nova/tests/api/openstack/test_extensions.py
index 6453e96c9..481d34ed1 100644
--- a/nova/tests/api/openstack/test_extensions.py
+++ b/nova/tests/api/openstack/test_extensions.py
@@ -158,7 +158,6 @@ class ActionExtensionTest(unittest.TestCase):
request.method = 'POST'
request.content_type = 'application/json'
request.body = json.dumps(body)
- request.environ = {'nova.context': 'context'}
response = request.get_response(ext_midware)
return response
diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py
index a92da52b1..556046e9d 100644
--- a/nova/tests/api/openstack/test_servers.py
+++ b/nova/tests/api/openstack/test_servers.py
@@ -952,7 +952,6 @@ class ServersTest(test.TestCase):
req.method = 'POST'
req.content_type = 'application/json'
req.body = json.dumps(body)
- req.environ = {"nova.context": "context"}
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 501)
@@ -974,7 +973,6 @@ class ServersTest(test.TestCase):
req.method = 'POST'
req.content_type = 'application/json'
req.body = json.dumps(body)
- req.environ = {"nova.context": "context"}
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 202)
self.assertEqual(mock_method.instance_id, '1')
@@ -995,7 +993,6 @@ class ServersTest(test.TestCase):
req.method = 'POST'
req.content_type = 'application/json'
req.body = json.dumps(body)
- req.environ = {"nova.context": "context"}
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
@@ -1005,7 +1002,6 @@ class ServersTest(test.TestCase):
req.method = 'POST'
req.content_type = 'application/json'
req.body = json.dumps(body)
- req.environ = {"nova.context": "context"}
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
diff --git a/run_tests.sh b/run_tests.sh
index 8f4d37cd4..610cf1f27 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -7,6 +7,7 @@ function usage {
echo " -V, --virtual-env Always use virtualenv. Install automatically if not present"
echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local environment"
echo " -f, --force Force a clean re-build of the virtual environment. Useful when dependencies have been added."
+ echo " -p, --pep8 Just run pep8"
echo " -h, --help Print this usage message"
echo ""
echo "Note: with no options specified, the script will try to run the tests in a virtual environment,"
@@ -21,6 +22,7 @@ function process_option {
-V|--virtual-env) let always_venv=1; let never_venv=0;;
-N|--no-virtual-env) let always_venv=0; let never_venv=1;;
-f|--force) let force=1;;
+ -p|--pep8) let just_pep8=1;;
*) noseargs="$noseargs $1"
esac
}
@@ -32,6 +34,7 @@ never_venv=0
force=0
noseargs=
wrapper=""
+just_pep8=0
for arg in "$@"; do
process_option $arg
@@ -53,6 +56,18 @@ function run_tests {
return $RESULT
}
+function run_pep8 {
+ echo "Running pep8 ..."
+ srcfiles=`find bin -type f ! -name "nova.conf*"`
+ srcfiles+=" nova setup.py plugins/xenserver/xenapi/etc/xapi.d/plugins/glance"
+ pep8 --repeat --show-pep8 --show-source --exclude=vcsversion.py ${srcfiles}
+}
+
+if [ $just_pep8 -eq 1 ]; then
+ run_pep8
+ exit
+fi
+
NOSETESTS="python run_tests.py $noseargs"
if [ $never_venv -eq 0 ]
@@ -81,11 +96,9 @@ then
fi
fi
-if [ -z "$noseargs" ];
-then
- srcfiles=`find bin -type f ! -name "nova.conf*"`
- srcfiles+=" nova setup.py plugins/xenserver/xenapi/etc/xapi.d/plugins/glance"
- run_tests && pep8 --repeat --show-pep8 --show-source --exclude=vcsversion.py ${srcfiles} || exit 1
-else
- run_tests
+run_tests || exit
+
+# Also run pep8 if no options were provided.
+if [ -z "$noseargs" ]; then
+ run_pep8
fi