
Hi! I am sending this patchset as an attempt to make the Kimchi code more consistent. Some of the changes are specified by the PEP8 Style Guide, some of them are not. This is only *one attempt*; these rules do not need necessarily to be commited. If you do not agree or have any question regarding the patches, feel free to discuss them here. Currently, there is no standard for the Kimchi code and I think we should have an official code guideline, that is why I am trying to apply these patches. It does not need to be exactly these rules but adopting some kind of style instead of the subjectivity of each developer will be a nice addition to the project. As soon as we define our guidelines, we should have a wiki page or some file describing them all.

According to the PEP8 Style Guide[1], imports should be grouped in the following order: 1) standard library imports 2) related third party imports 3) local application/library specific imports For Kimchi, that means: 1) standard Python libraries 2) CherryPy, Cheetah, Libvirt, etc. 3) util, kimchi.*, everything developed by our team Conditional/exceptional imports should be moved to the end of their corresponding groups. And according to some examples from the Style Guide, the "import ..." lines should come before the "from .... import" lines inside the same group. Here is an example: """ import os import sys from glob import iglob try: from collections import OrderedDict except ImportError: from ordereddict import OrderedDict import cherrypy import kimchi.model from kimchi.exception import NotFoundError if something(): import kimchi.control """ [1]: http://www.python.org/dev/peps/pep-0008/#imports Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- src/kimchi/asynctask.py | 4 +++- src/kimchi/auth.py | 4 +++- src/kimchi/control/base.py | 4 +++- src/kimchi/control/utils.py | 2 +- src/kimchi/featuretests.py | 5 +++-- src/kimchi/kvmusertests.py | 4 +++- src/kimchi/mockmodel.py | 3 ++- src/kimchi/model.py | 10 +++++----- src/kimchi/networkxml.py | 2 -- src/kimchi/osinfo.py | 2 -- src/kimchi/root.py | 4 +++- src/kimchi/server.py | 5 ++++- src/kimchi/template.py | 2 +- src/kimchi/utils.py | 2 +- src/kimchi/xmlutils.py | 2 -- tests/test_mockmodel.py | 6 ++++-- tests/test_networkxml.py | 2 -- tests/test_plugin.py | 2 -- tests/test_rest.py | 2 -- tests/test_server.py | 2 +- tests/utils.py | 6 +++--- 21 files changed, 40 insertions(+), 35 deletions(-) diff --git a/src/kimchi/asynctask.py b/src/kimchi/asynctask.py index 4ff76e4..3b7d505 100644 --- a/src/kimchi/asynctask.py +++ b/src/kimchi/asynctask.py @@ -20,11 +20,13 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import cherrypy import threading import traceback +import cherrypy + + from kimchi.exception import OperationFailed diff --git a/src/kimchi/auth.py b/src/kimchi/auth.py index 242fdcf..d0a1318 100644 --- a/src/kimchi/auth.py +++ b/src/kimchi/auth.py @@ -23,11 +23,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import base64 -import cherrypy import PAM import re +import cherrypy + + from kimchi import template from kimchi.exception import OperationFailed diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py index 185c8d8..031bf59 100644 --- a/src/kimchi/control/base.py +++ b/src/kimchi/control/base.py @@ -22,10 +22,12 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import cherrypy import urllib2 +import cherrypy + + import kimchi.template from kimchi.control.utils import get_class_name, internal_redirect, model_fn from kimchi.control.utils import parse_request, validate_method diff --git a/src/kimchi/control/utils.py b/src/kimchi/control/utils.py index c3c5f8e..894f35b 100644 --- a/src/kimchi/control/utils.py +++ b/src/kimchi/control/utils.py @@ -23,10 +23,10 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # -import cherrypy import json +import cherrypy from jsonschema import Draft3Validator, ValidationError diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py index a5755a2..e8d654d 100644 --- a/src/kimchi/featuretests.py +++ b/src/kimchi/featuretests.py @@ -20,13 +20,14 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import cherrypy -import libvirt import os import subprocess import threading +import cherrypy +import libvirt + from kimchi import config diff --git a/src/kimchi/kvmusertests.py b/src/kimchi/kvmusertests.py index 3d69eb4..82e3862 100644 --- a/src/kimchi/kvmusertests.py +++ b/src/kimchi/kvmusertests.py @@ -20,11 +20,13 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import libvirt import psutil import uuid +import libvirt + + from kimchi.rollbackcontext import RollbackContext diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py index 1f5178f..494a757 100644 --- a/src/kimchi/mockmodel.py +++ b/src/kimchi/mockmodel.py @@ -20,7 +20,6 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import cherrypy import copy import disks import glob @@ -41,6 +40,8 @@ except ImportError: import ImageDraw +import cherrypy + import kimchi.model from kimchi import config from kimchi import network as knetwork diff --git a/src/kimchi/model.py b/src/kimchi/model.py index 671af02..0125a93 100644 --- a/src/kimchi/model.py +++ b/src/kimchi/model.py @@ -20,7 +20,6 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import cherrypy import copy import disks import fnmatch @@ -40,10 +39,6 @@ import sys import threading import time import uuid - - -from cherrypy.process.plugins import BackgroundTask -from cherrypy.process.plugins import SimplePlugin from collections import defaultdict from xml.etree import ElementTree @@ -54,6 +49,11 @@ except ImportError: from ordereddict import OrderedDict +import cherrypy +from cherrypy.process.plugins import BackgroundTask +from cherrypy.process.plugins import SimplePlugin + + from kimchi import config from kimchi import netinfo from kimchi import network as knetwork diff --git a/src/kimchi/networkxml.py b/src/kimchi/networkxml.py index 63cb210..61a9ba0 100644 --- a/src/kimchi/networkxml.py +++ b/src/kimchi/networkxml.py @@ -22,8 +22,6 @@ import ipaddr import lxml.etree as ET - - from lxml.builder import E diff --git a/src/kimchi/osinfo.py b/src/kimchi/osinfo.py index 0509622..5ed5186 100644 --- a/src/kimchi/osinfo.py +++ b/src/kimchi/osinfo.py @@ -22,8 +22,6 @@ import copy import os - - from distutils.version import LooseVersion diff --git a/src/kimchi/root.py b/src/kimchi/root.py index 3cc6321..ae06bc3 100644 --- a/src/kimchi/root.py +++ b/src/kimchi/root.py @@ -21,10 +21,12 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import cherrypy import json +import cherrypy + + from kimchi import auth from kimchi import template from kimchi.config import get_api_schema_file diff --git a/src/kimchi/server.py b/src/kimchi/server.py index b820263..53fe889 100644 --- a/src/kimchi/server.py +++ b/src/kimchi/server.py @@ -22,12 +22,15 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # -import cherrypy import logging import logging.handlers import os import sslcert + +import cherrypy + + from kimchi import auth from kimchi import config from kimchi import model diff --git a/src/kimchi/template.py b/src/kimchi/template.py index 1f19c4a..3f94d24 100644 --- a/src/kimchi/template.py +++ b/src/kimchi/template.py @@ -21,12 +21,12 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import cherrypy import errno import json import os +import cherrypy from Cheetah.Template import Template diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py index af245c6..ac7dee5 100644 --- a/src/kimchi/utils.py +++ b/src/kimchi/utils.py @@ -21,11 +21,11 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # -import cherrypy import os import urllib2 +import cherrypy from cherrypy.lib.reprconf import Parser diff --git a/src/kimchi/xmlutils.py b/src/kimchi/xmlutils.py index 51ff0ec..e368e9d 100644 --- a/src/kimchi/xmlutils.py +++ b/src/kimchi/xmlutils.py @@ -21,8 +21,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import libxml2 - - from xml.etree import ElementTree diff --git a/tests/test_mockmodel.py b/tests/test_mockmodel.py index f167dc6..3e0701f 100644 --- a/tests/test_mockmodel.py +++ b/tests/test_mockmodel.py @@ -20,16 +20,18 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import cherrypy import json import os import time import unittest +import cherrypy + + import kimchi.mockmodel -from utils import get_free_port, patch_auth, request, run_server from kimchi.control.base import Collection, Resource +from utils import get_free_port, patch_auth, request, run_server test_server = None diff --git a/tests/test_networkxml.py b/tests/test_networkxml.py index 42b3ea9..fc97f6a 100644 --- a/tests/test_networkxml.py +++ b/tests/test_networkxml.py @@ -26,8 +26,6 @@ import unittest import kimchi.networkxml as nxml import utils - - from kimchi.xmlutils import xpath_get_text diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 42c87a9..f12b11f 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -24,8 +24,6 @@ import json import os import sys import unittest - - from functools import partial diff --git a/tests/test_rest.py b/tests/test_rest.py index 8732781..89bc616 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -25,8 +25,6 @@ import json import os import time import unittest - - from functools import partial diff --git a/tests/test_server.py b/tests/test_server.py index 734a618..adbf770 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -25,8 +25,8 @@ import os import unittest -import utils import kimchi.mockmodel +import utils #utils.silence_server() diff --git a/tests/utils.py b/tests/utils.py index 79fc2e2..452a001 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -22,19 +22,19 @@ # import base64 -import cherrypy import httplib import os import socket import sys import threading import unittest - - from contextlib import closing from lxml import etree +import cherrypy + + import kimchi.server import kimchi.model -- 1.8.4.2

On 01/15/2014 12:05 AM, Crístian Viana wrote:
According to the PEP8 Style Guide[1], imports should be grouped in the following order:
1) standard library imports 2) related third party imports 3) local application/library specific imports
For Kimchi, that means:
1) standard Python libraries 2) CherryPy, Cheetah, Libvirt, etc. 3) util, kimchi.*, everything developed by our team
Conditional/exceptional imports should be moved to the end of their corresponding groups.
And according to some examples from the Style Guide, the "import ..." lines should come before the "from .... import" lines inside the same group.
Here is an example:
""" import os import sys from glob import iglob
try: from collections import OrderedDict except ImportError: from ordereddict import OrderedDict
import cherrypy
import kimchi.model from kimchi.exception import NotFoundError
if something(): import kimchi.control """
[1]: http://www.python.org/dev/peps/pep-0008/#imports
Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- src/kimchi/asynctask.py | 4 +++- src/kimchi/auth.py | 4 +++- src/kimchi/control/base.py | 4 +++- src/kimchi/control/utils.py | 2 +- src/kimchi/featuretests.py | 5 +++-- src/kimchi/kvmusertests.py | 4 +++- src/kimchi/mockmodel.py | 3 ++- src/kimchi/model.py | 10 +++++----- src/kimchi/networkxml.py | 2 -- src/kimchi/osinfo.py | 2 -- src/kimchi/root.py | 4 +++- src/kimchi/server.py | 5 ++++- src/kimchi/template.py | 2 +- src/kimchi/utils.py | 2 +- src/kimchi/xmlutils.py | 2 -- tests/test_mockmodel.py | 6 ++++-- tests/test_networkxml.py | 2 -- tests/test_plugin.py | 2 -- tests/test_rest.py | 2 -- tests/test_server.py | 2 +- tests/utils.py | 6 +++--- 21 files changed, 40 insertions(+), 35 deletions(-)
diff --git a/src/kimchi/asynctask.py b/src/kimchi/asynctask.py index 4ff76e4..3b7d505 100644 --- a/src/kimchi/asynctask.py +++ b/src/kimchi/asynctask.py @@ -20,11 +20,13 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import cherrypy import threading import traceback
+import cherrypy + + from kimchi.exception import OperationFailed
diff --git a/src/kimchi/auth.py b/src/kimchi/auth.py index 242fdcf..d0a1318 100644 --- a/src/kimchi/auth.py +++ b/src/kimchi/auth.py @@ -23,11 +23,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import base64 -import cherrypy import PAM import re
PAM is also a third-party module. It comes in PyPAM/python-pam package
+import cherrypy + + from kimchi import template from kimchi.exception import OperationFailed
diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py index 185c8d8..031bf59 100644 --- a/src/kimchi/control/base.py +++ b/src/kimchi/control/base.py @@ -22,10 +22,12 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import cherrypy import urllib2
+import cherrypy + + import kimchi.template from kimchi.control.utils import get_class_name, internal_redirect, model_fn from kimchi.control.utils import parse_request, validate_method diff --git a/src/kimchi/control/utils.py b/src/kimchi/control/utils.py index c3c5f8e..894f35b 100644 --- a/src/kimchi/control/utils.py +++ b/src/kimchi/control/utils.py @@ -23,10 +23,10 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #
-import cherrypy import json
+import cherrypy from jsonschema import Draft3Validator, ValidationError
diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py index a5755a2..e8d654d 100644 --- a/src/kimchi/featuretests.py +++ b/src/kimchi/featuretests.py @@ -20,13 +20,14 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import cherrypy -import libvirt import os import subprocess import threading
+import cherrypy +import libvirt + from kimchi import config
diff --git a/src/kimchi/kvmusertests.py b/src/kimchi/kvmusertests.py index 3d69eb4..82e3862 100644 --- a/src/kimchi/kvmusertests.py +++ b/src/kimchi/kvmusertests.py @@ -20,11 +20,13 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import libvirt
import psutil
psutil is also a third-party module. It comes in python-psutil package
import uuid
+import libvirt + + from kimchi.rollbackcontext import RollbackContext
diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py index 1f5178f..494a757 100644 --- a/src/kimchi/mockmodel.py +++ b/src/kimchi/mockmodel.py @@ -20,7 +20,6 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import cherrypy import copy
import disks
disks is a kimchi module. So it should be "from kimchi import disks"
import glob @@ -41,6 +40,8 @@ except ImportError: import ImageDraw
+import cherrypy + import kimchi.model from kimchi import config from kimchi import network as knetwork diff --git a/src/kimchi/model.py b/src/kimchi/model.py index 671af02..0125a93 100644 --- a/src/kimchi/model.py +++ b/src/kimchi/model.py @@ -20,7 +20,6 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import cherrypy import copy import disks
disks is a kimchi module. So it should be "from kimchi import disks"
import fnmatch @@ -40,10 +39,6 @@ import sys import threading import time import uuid - - -from cherrypy.process.plugins import BackgroundTask -from cherrypy.process.plugins import SimplePlugin from collections import defaultdict from xml.etree import ElementTree
@@ -54,6 +49,11 @@ except ImportError: from ordereddict import OrderedDict
+import cherrypy +from cherrypy.process.plugins import BackgroundTask +from cherrypy.process.plugins import SimplePlugin + + from kimchi import config from kimchi import netinfo from kimchi import network as knetwork diff --git a/src/kimchi/networkxml.py b/src/kimchi/networkxml.py index 63cb210..61a9ba0 100644 --- a/src/kimchi/networkxml.py +++ b/src/kimchi/networkxml.py @@ -22,8 +22,6 @@
import ipaddr import lxml.etree as ET - - from lxml.builder import E
diff --git a/src/kimchi/osinfo.py b/src/kimchi/osinfo.py index 0509622..5ed5186 100644 --- a/src/kimchi/osinfo.py +++ b/src/kimchi/osinfo.py @@ -22,8 +22,6 @@
import copy import os - - from distutils.version import LooseVersion
diff --git a/src/kimchi/root.py b/src/kimchi/root.py index 3cc6321..ae06bc3 100644 --- a/src/kimchi/root.py +++ b/src/kimchi/root.py @@ -21,10 +21,12 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import cherrypy import json
+import cherrypy + + from kimchi import auth from kimchi import template from kimchi.config import get_api_schema_file diff --git a/src/kimchi/server.py b/src/kimchi/server.py index b820263..53fe889 100644 --- a/src/kimchi/server.py +++ b/src/kimchi/server.py @@ -22,12 +22,15 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #
-import cherrypy import logging import logging.handlers import os import sslcert
sscert is a kimchi module. So it should be "from kimchi import sslcert"
+ +import cherrypy + + from kimchi import auth from kimchi import config from kimchi import model diff --git a/src/kimchi/template.py b/src/kimchi/template.py index 1f19c4a..3f94d24 100644 --- a/src/kimchi/template.py +++ b/src/kimchi/template.py @@ -21,12 +21,12 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import cherrypy import errno import json import os
+import cherrypy from Cheetah.Template import Template
diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py index af245c6..ac7dee5 100644 --- a/src/kimchi/utils.py +++ b/src/kimchi/utils.py @@ -21,11 +21,11 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #
-import cherrypy import os import urllib2
+import cherrypy from cherrypy.lib.reprconf import Parser
diff --git a/src/kimchi/xmlutils.py b/src/kimchi/xmlutils.py index 51ff0ec..e368e9d 100644 --- a/src/kimchi/xmlutils.py +++ b/src/kimchi/xmlutils.py @@ -21,8 +21,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import libxml2 - - from xml.etree import ElementTree
diff --git a/tests/test_mockmodel.py b/tests/test_mockmodel.py index f167dc6..3e0701f 100644 --- a/tests/test_mockmodel.py +++ b/tests/test_mockmodel.py @@ -20,16 +20,18 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import cherrypy import json import os import time import unittest
+import cherrypy + + import kimchi.mockmodel -from utils import get_free_port, patch_auth, request, run_server from kimchi.control.base import Collection, Resource +from utils import get_free_port, patch_auth, request, run_server
test_server = None diff --git a/tests/test_networkxml.py b/tests/test_networkxml.py index 42b3ea9..fc97f6a 100644 --- a/tests/test_networkxml.py +++ b/tests/test_networkxml.py @@ -26,8 +26,6 @@ import unittest
import kimchi.networkxml as nxml import utils - - from kimchi.xmlutils import xpath_get_text
diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 42c87a9..f12b11f 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -24,8 +24,6 @@ import json import os import sys import unittest - - from functools import partial
diff --git a/tests/test_rest.py b/tests/test_rest.py index 8732781..89bc616 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -25,8 +25,6 @@ import json import os import time import unittest - - from functools import partial
diff --git a/tests/test_server.py b/tests/test_server.py index 734a618..adbf770 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -25,8 +25,8 @@ import os import unittest
-import utils import kimchi.mockmodel +import utils
#utils.silence_server()
diff --git a/tests/utils.py b/tests/utils.py index 79fc2e2..452a001 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -22,19 +22,19 @@ #
import base64 -import cherrypy import httplib import os import socket import sys import threading import unittest - - from contextlib import closing from lxml import etree
+import cherrypy + + import kimchi.server import kimchi.model

PAM is also a third-party module. It comes in PyPAM/python-pam package psutil is also a third-party module. It comes in python-psutil package Ack. Judging by their names, I thought they were part of the standard
Thanks for your review! Am 20-01-2014 13:29, schrieb Aline Manera: library.
disks is a kimchi module. So it should be "from kimchi import disks" sscert is a kimchi module. So it should be "from kimchi import sslcert" Ack. I couldn't tell they were Kimchi modules because they didn't start with "kimchi."
I'm preparing a new and rebased patchset.

If an import module is not used in that file, there is no need to have it. Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- src/kimchi/control/plugins.py | 2 +- src/kimchi/featuretests.py | 3 --- src/kimchi/mockmodel.py | 3 --- src/kimchi/model.py | 11 +---------- src/kimchi/screenshot.py | 1 - src/kimchi/template.py | 1 - src/kimchi/vmtemplate.py | 2 -- tests/test_exception.py | 1 - tests/test_plugin.py | 1 - tests/test_rest.py | 1 - tests/test_server.py | 1 - 11 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/kimchi/control/plugins.py b/src/kimchi/control/plugins.py index af32709..dcfa857 100644 --- a/src/kimchi/control/plugins.py +++ b/src/kimchi/control/plugins.py @@ -23,7 +23,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import kimchi.template -from kimchi.control.base import Collection, Resource +from kimchi.control.base import Collection from kimchi.control.utils import get_class_name, model_fn diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py index e8d654d..9fc709a 100644 --- a/src/kimchi/featuretests.py +++ b/src/kimchi/featuretests.py @@ -20,7 +20,6 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import os import subprocess import threading @@ -28,8 +27,6 @@ import threading import cherrypy import libvirt -from kimchi import config - ISO_STREAM_XML = """ <domain type='kvm'> diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py index 494a757..544b7de 100644 --- a/src/kimchi/mockmodel.py +++ b/src/kimchi/mockmodel.py @@ -27,7 +27,6 @@ import ipaddr import os import psutil import random -import subprocess import time import uuid @@ -44,14 +43,12 @@ import cherrypy import kimchi.model from kimchi import config -from kimchi import network as knetwork from kimchi.asynctask import AsyncTask from kimchi.distroloader import DistroLoader from kimchi.exception import InvalidOperation, InvalidParameter from kimchi.exception import MissingParameter, NotFoundError, OperationFailed from kimchi.objectstore import ObjectStore from kimchi.screenshot import VMScreenshot -from kimchi.utils import is_digit from kimchi.vmtemplate import VMTemplate diff --git a/src/kimchi/model.py b/src/kimchi/model.py index 0125a93..f64a5fd 100644 --- a/src/kimchi/model.py +++ b/src/kimchi/model.py @@ -23,10 +23,8 @@ import copy import disks import fnmatch -import functools import glob import ipaddr -import json import libvirt import logging import os @@ -43,15 +41,8 @@ from collections import defaultdict from xml.etree import ElementTree -try: - from collections import OrderedDict -except ImportError: - from ordereddict import OrderedDict - - import cherrypy from cherrypy.process.plugins import BackgroundTask -from cherrypy.process.plugins import SimplePlugin from kimchi import config @@ -70,7 +61,7 @@ from kimchi.isoinfo import IsoImage from kimchi.objectstore import ObjectStore from kimchi.scan import Scanner from kimchi.screenshot import VMScreenshot -from kimchi.utils import get_enabled_plugins, is_digit, kimchi_log +from kimchi.utils import get_enabled_plugins, kimchi_log from kimchi.vmtemplate import VMTemplate diff --git a/src/kimchi/screenshot.py b/src/kimchi/screenshot.py index 5cfea96..e65a752 100644 --- a/src/kimchi/screenshot.py +++ b/src/kimchi/screenshot.py @@ -23,7 +23,6 @@ import glob import os -import random import signal import tempfile import time diff --git a/src/kimchi/template.py b/src/kimchi/template.py index 3f94d24..adc9c62 100644 --- a/src/kimchi/template.py +++ b/src/kimchi/template.py @@ -23,7 +23,6 @@ import errno import json -import os import cherrypy diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py index 6587bbb..9097a05 100644 --- a/src/kimchi/vmtemplate.py +++ b/src/kimchi/vmtemplate.py @@ -23,11 +23,9 @@ import os import string import socket -import urllib import urlparse -from kimchi import isoinfo from kimchi import osinfo from kimchi.exception import InvalidParameter, IsoFormatError from kimchi.isoinfo import IsoImage diff --git a/tests/test_exception.py b/tests/test_exception.py index df1f507..2757a11 100644 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -26,7 +26,6 @@ import unittest import kimchi.mockmodel -import kimchi.server from utils import get_free_port, patch_auth, request, run_server diff --git a/tests/test_plugin.py b/tests/test_plugin.py index f12b11f..1afec63 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -28,7 +28,6 @@ from functools import partial import kimchi.mockmodel -import kimchi.server import utils from kimchi import config diff --git a/tests/test_rest.py b/tests/test_rest.py index 89bc616..50542e4 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -29,7 +29,6 @@ from functools import partial import kimchi.mockmodel -import kimchi.server from kimchi.rollbackcontext import RollbackContext from utils import fake_user, get_free_port, https_request, patch_auth, request from utils import run_server diff --git a/tests/test_server.py b/tests/test_server.py index adbf770..0050f6a 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -20,7 +20,6 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -import json import os import unittest -- 1.8.4.2

On 01/15/2014 12:05 AM, Crístian Viana wrote:
If an import module is not used in that file, there is no need to have it.
Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- src/kimchi/control/plugins.py | 2 +- src/kimchi/featuretests.py | 3 --- src/kimchi/mockmodel.py | 3 --- src/kimchi/model.py | 11 +---------- src/kimchi/screenshot.py | 1 - src/kimchi/template.py | 1 - src/kimchi/vmtemplate.py | 2 -- tests/test_exception.py | 1 - tests/test_plugin.py | 1 - tests/test_rest.py | 1 - tests/test_server.py | 1 - 11 files changed, 2 insertions(+), 25 deletions(-)
diff --git a/src/kimchi/control/plugins.py b/src/kimchi/control/plugins.py index af32709..dcfa857 100644 --- a/src/kimchi/control/plugins.py +++ b/src/kimchi/control/plugins.py @@ -23,7 +23,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import kimchi.template -from kimchi.control.base import Collection, Resource +from kimchi.control.base import Collection from kimchi.control.utils import get_class_name, model_fn
diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py index e8d654d..9fc709a 100644 --- a/src/kimchi/featuretests.py +++ b/src/kimchi/featuretests.py @@ -20,7 +20,6 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import os import subprocess import threading
@@ -28,8 +27,6 @@ import threading import cherrypy import libvirt
-from kimchi import config -
ISO_STREAM_XML = """ <domain type='kvm'> diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py index 494a757..544b7de 100644 --- a/src/kimchi/mockmodel.py +++ b/src/kimchi/mockmodel.py @@ -27,7 +27,6 @@ import ipaddr import os import psutil import random -import subprocess import time import uuid
@@ -44,14 +43,12 @@ import cherrypy
import kimchi.model from kimchi import config -from kimchi import network as knetwork from kimchi.asynctask import AsyncTask from kimchi.distroloader import DistroLoader from kimchi.exception import InvalidOperation, InvalidParameter from kimchi.exception import MissingParameter, NotFoundError, OperationFailed from kimchi.objectstore import ObjectStore from kimchi.screenshot import VMScreenshot -from kimchi.utils import is_digit from kimchi.vmtemplate import VMTemplate
diff --git a/src/kimchi/model.py b/src/kimchi/model.py index 0125a93..f64a5fd 100644 --- a/src/kimchi/model.py +++ b/src/kimchi/model.py @@ -23,10 +23,8 @@ import copy import disks import fnmatch -import functools import glob import ipaddr -import json import libvirt import logging import os @@ -43,15 +41,8 @@ from collections import defaultdict from xml.etree import ElementTree
-try: - from collections import OrderedDict -except ImportError: - from ordereddict import OrderedDict - -
If OrderedDict is not used anymore we also can update the README/spec files and remove it from dependencies list.
import cherrypy from cherrypy.process.plugins import BackgroundTask -from cherrypy.process.plugins import SimplePlugin
from kimchi import config @@ -70,7 +61,7 @@ from kimchi.isoinfo import IsoImage from kimchi.objectstore import ObjectStore from kimchi.scan import Scanner from kimchi.screenshot import VMScreenshot -from kimchi.utils import get_enabled_plugins, is_digit, kimchi_log +from kimchi.utils import get_enabled_plugins, kimchi_log from kimchi.vmtemplate import VMTemplate
diff --git a/src/kimchi/screenshot.py b/src/kimchi/screenshot.py index 5cfea96..e65a752 100644 --- a/src/kimchi/screenshot.py +++ b/src/kimchi/screenshot.py @@ -23,7 +23,6 @@
import glob import os -import random import signal import tempfile import time diff --git a/src/kimchi/template.py b/src/kimchi/template.py index 3f94d24..adc9c62 100644 --- a/src/kimchi/template.py +++ b/src/kimchi/template.py @@ -23,7 +23,6 @@
import errno import json -import os
import cherrypy diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py index 6587bbb..9097a05 100644 --- a/src/kimchi/vmtemplate.py +++ b/src/kimchi/vmtemplate.py @@ -23,11 +23,9 @@ import os import string import socket -import urllib import urlparse
-from kimchi import isoinfo from kimchi import osinfo from kimchi.exception import InvalidParameter, IsoFormatError from kimchi.isoinfo import IsoImage diff --git a/tests/test_exception.py b/tests/test_exception.py index df1f507..2757a11 100644 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -26,7 +26,6 @@ import unittest
import kimchi.mockmodel -import kimchi.server from utils import get_free_port, patch_auth, request, run_server
diff --git a/tests/test_plugin.py b/tests/test_plugin.py index f12b11f..1afec63 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -28,7 +28,6 @@ from functools import partial
import kimchi.mockmodel -import kimchi.server import utils from kimchi import config
diff --git a/tests/test_rest.py b/tests/test_rest.py index 89bc616..50542e4 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -29,7 +29,6 @@ from functools import partial
import kimchi.mockmodel -import kimchi.server from kimchi.rollbackcontext import RollbackContext from utils import fake_user, get_free_port, https_request, patch_auth, request from utils import run_server diff --git a/tests/test_server.py b/tests/test_server.py index adbf770..0050f6a 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -20,7 +20,6 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-import json import os import unittest

Am 20-01-2014 13:32, schrieb Aline Manera:
If OrderedDict is not used anymore we also can update the README/spec files and remove it from dependencies list.
That class is only being removed from model.py. OrderedDict is still used in other parts of Kimchi.

In order to make the code less ambiguous and more consistent, only use import aliases (i.e. 'import ... as ...') if it is needed to solve a conflict in the imported class names. For example, if there is a class named 'kimchi.model.file', the following import statement would lead to an anbiguity when trying to use the type 'file' (because of the built-in type 'file'): from kimchi.model import file One of the solutions to this conflict would be to use an alias, e.g.: from kimchi.model import file as kfile Unless it is necessary, do not use import aliases. Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- src/kimchi/model.py | 6 +++--- src/kimchi/networkxml.py | 4 ++-- tests/test_networkxml.py | 28 +++++++++++++++------------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/kimchi/model.py b/src/kimchi/model.py index f64a5fd..93a2764 100644 --- a/src/kimchi/model.py +++ b/src/kimchi/model.py @@ -47,7 +47,7 @@ from cherrypy.process.plugins import BackgroundTask from kimchi import config from kimchi import netinfo -from kimchi import network as knetwork +from kimchi import network from kimchi import networkxml from kimchi import vnc from kimchi import xmlutils @@ -787,7 +787,7 @@ class Model(object): xml = network.XMLDesc(0) subnet = self._get_network_from_xml(xml)['subnet'] subnet and net_addrs.append(ipaddr.IPNetwork(subnet)) - netaddr = knetwork.get_one_free_network(net_addrs) + netaddr = network.get_one_free_network(net_addrs) if not netaddr: raise OperationFailed("can not find a free IP address " "for network '%s'" % @@ -882,7 +882,7 @@ class Model(object): # macvtap bridge interface = interface or forward['interface'][0] # exposing the network on linux bridge or macvtap interface - interface_subnet = knetwork.get_dev_netaddr(interface) + interface_subnet = network.get_dev_netaddr(interface) subnet = subnet if subnet else interface_subnet # libvirt use format 192.168.0.1/24, standard should be 192.168.0.0/24 diff --git a/src/kimchi/networkxml.py b/src/kimchi/networkxml.py index 61a9ba0..2fe674b 100644 --- a/src/kimchi/networkxml.py +++ b/src/kimchi/networkxml.py @@ -21,7 +21,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import ipaddr -import lxml.etree as ET +import lxml.etree from lxml.builder import E @@ -125,4 +125,4 @@ def create_vlan_tagged_bridge_xml(bridge, interface, vlan_id): name='.'.join([interface, vlan_id]))), type='bridge', name=bridge) - return ET.tostring(m) + return lxml.etree.tostring(m) diff --git a/tests/test_networkxml.py b/tests/test_networkxml.py index fc97f6a..445c36d 100644 --- a/tests/test_networkxml.py +++ b/tests/test_networkxml.py @@ -24,7 +24,7 @@ import ipaddr import unittest -import kimchi.networkxml as nxml +import kimchi.networkxml import utils from kimchi.xmlutils import xpath_get_text @@ -43,18 +43,18 @@ class NetworkXmlTests(unittest.TestCase): "ip": "192.168.122.11"} params = {} - xml = nxml._get_dhcp_xml(**params) + xml = kimchi.networkxml._get_dhcp_xml(**params) self.assertEquals("", xml) params["range"] = dhcp_range - xml = nxml._get_dhcp_xml(**params) + xml = kimchi.networkxml._get_dhcp_xml(**params) start = xpath_get_text(xml, "/dhcp/range/@start") end = xpath_get_text(xml, "/dhcp/range/@end") self.assertEquals(dhcp_range['start'], start[0]) self.assertEquals(dhcp_range['end'], end[0]) params["hosts"] = [host1, host2] - xml = nxml._get_dhcp_xml(**params) + xml = kimchi.networkxml._get_dhcp_xml(**params) ip = xpath_get_text(xml, "/dhcp/host/@ip") self.assertEquals(ip, [host1['ip'], host2['ip']]) @@ -65,12 +65,12 @@ class NetworkXmlTests(unittest.TestCase): dhcp_range = {"start": "192.168.122.100", "end": "192.168.122.254"} params = {} - xml = nxml._get_dhcp_xml(**params) + xml = kimchi.networkxml._get_dhcp_xml(**params) self.assertEquals("", xml) params["net"] = "192.168.122.0/255.255.255.0" params["dhcp"] = {'range': dhcp_range} - xml = nxml._get_ip_xml(**params) + xml = kimchi.networkxml._get_ip_xml(**params) start = xpath_get_text(xml, "/ip/dhcp/range/@start")[0] end = xpath_get_text(xml, "/ip/dhcp/range/@end")[0] self.assertEquals(dhcp_range['start'], start) @@ -84,7 +84,7 @@ class NetworkXmlTests(unittest.TestCase): # test _get_ip_xml can accepts strings: '192.168.122.0/24', # which is same as "192.168.122.0/255.255.255.0" params["net"] = "192.168.122.0/24" - xml = nxml._get_ip_xml(**params) + xml = kimchi.networkxml._get_ip_xml(**params) netmask = xpath_get_text(xml, "/ip/@netmask")[0] self.assertEquals(netmask, str(ipaddr.IPNetwork(params["net"]).netmask)) @@ -95,12 +95,12 @@ class NetworkXmlTests(unittest.TestCase): """ params = {"mode": None} - xml = nxml._get_forward_xml(**params) + xml = kimchi.networkxml._get_forward_xml(**params) self.assertEquals("", xml) params["mode"] = 'nat' params["dev"] = 'eth0' - xml = nxml._get_forward_xml(**params) + xml = kimchi.networkxml._get_forward_xml(**params) mode = xpath_get_text(xml, "/forward/@mode")[0] dev = xpath_get_text(xml, "/forward/@dev")[0] self.assertEquals(params['mode'], mode) @@ -113,7 +113,7 @@ class NetworkXmlTests(unittest.TestCase): params = {"name": "test", "forward": {"mode": "nat", "dev": ""}, "net": "192.168.0.0/255.255.255.0"} - xml = nxml.to_network_xml(**params) + xml = kimchi.networkxml.to_network_xml(**params) name = xpath_get_text(xml, "/network/name")[0] self.assertEquals(name, params['name']) @@ -136,7 +136,7 @@ class NetworkXmlTests(unittest.TestCase): params['forward']['dev'] = "eth0" params['dhcp'] = {"range": {'start': '192.168.0.1', 'end': '192.168.0.254'}} - xml = nxml.to_network_xml(**params) + xml = kimchi.networkxml.to_network_xml(**params) forward_dev = xpath_get_text(xml, "/network/forward/@dev")[0] self.assertEquals(forward_dev, params['forward']['dev']) @@ -148,7 +148,7 @@ class NetworkXmlTests(unittest.TestCase): # test _get_ip_xml can accepts strings: '192.168.122.0/24', # which is same as "192.168.122.0/255.255.255.0" params["net"] = "192.168.0.0/24" - xml = nxml.to_network_xml(**params) + xml = kimchi.networkxml.to_network_xml(**params) netmask = xpath_get_text(xml, "/network/ip/@netmask")[0] self.assertEquals(netmask, str(ipaddr.IPNetwork(params["net"]).netmask)) @@ -169,5 +169,7 @@ class InterfaceXmlTests(unittest.TestCase): </bridge> </interface> """ - actual_xml = nxml.create_vlan_tagged_bridge_xml('br10', 'em1', '10') + actual_xml = kimchi.networkxml.create_vlan_tagged_bridge_xml('br10', + 'em1', + '10') self.assertEquals(actual_xml, utils.normalize_xml(expected_xml)) -- 1.8.4.2

Reviewed-by: Aline Manera <alinefm@linux.vnet.ibm.com> On 01/15/2014 12:05 AM, Crístian Viana wrote:
In order to make the code less ambiguous and more consistent, only use import aliases (i.e. 'import ... as ...') if it is needed to solve a conflict in the imported class names. For example, if there is a class named 'kimchi.model.file', the following import statement would lead to an anbiguity when trying to use the type 'file' (because of the built-in type 'file'):
from kimchi.model import file
One of the solutions to this conflict would be to use an alias, e.g.:
from kimchi.model import file as kfile
Unless it is necessary, do not use import aliases.
Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- src/kimchi/model.py | 6 +++--- src/kimchi/networkxml.py | 4 ++-- tests/test_networkxml.py | 28 +++++++++++++++------------- 3 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/src/kimchi/model.py b/src/kimchi/model.py index f64a5fd..93a2764 100644 --- a/src/kimchi/model.py +++ b/src/kimchi/model.py @@ -47,7 +47,7 @@ from cherrypy.process.plugins import BackgroundTask
from kimchi import config from kimchi import netinfo -from kimchi import network as knetwork +from kimchi import network from kimchi import networkxml from kimchi import vnc from kimchi import xmlutils @@ -787,7 +787,7 @@ class Model(object): xml = network.XMLDesc(0) subnet = self._get_network_from_xml(xml)['subnet'] subnet and net_addrs.append(ipaddr.IPNetwork(subnet)) - netaddr = knetwork.get_one_free_network(net_addrs) + netaddr = network.get_one_free_network(net_addrs) if not netaddr: raise OperationFailed("can not find a free IP address " "for network '%s'" % @@ -882,7 +882,7 @@ class Model(object): # macvtap bridge interface = interface or forward['interface'][0] # exposing the network on linux bridge or macvtap interface - interface_subnet = knetwork.get_dev_netaddr(interface) + interface_subnet = network.get_dev_netaddr(interface) subnet = subnet if subnet else interface_subnet
# libvirt use format 192.168.0.1/24, standard should be 192.168.0.0/24 diff --git a/src/kimchi/networkxml.py b/src/kimchi/networkxml.py index 61a9ba0..2fe674b 100644 --- a/src/kimchi/networkxml.py +++ b/src/kimchi/networkxml.py @@ -21,7 +21,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import ipaddr -import lxml.etree as ET +import lxml.etree from lxml.builder import E
@@ -125,4 +125,4 @@ def create_vlan_tagged_bridge_xml(bridge, interface, vlan_id): name='.'.join([interface, vlan_id]))), type='bridge', name=bridge) - return ET.tostring(m) + return lxml.etree.tostring(m) diff --git a/tests/test_networkxml.py b/tests/test_networkxml.py index fc97f6a..445c36d 100644 --- a/tests/test_networkxml.py +++ b/tests/test_networkxml.py @@ -24,7 +24,7 @@ import ipaddr import unittest
-import kimchi.networkxml as nxml +import kimchi.networkxml import utils from kimchi.xmlutils import xpath_get_text
@@ -43,18 +43,18 @@ class NetworkXmlTests(unittest.TestCase): "ip": "192.168.122.11"} params = {}
- xml = nxml._get_dhcp_xml(**params) + xml = kimchi.networkxml._get_dhcp_xml(**params) self.assertEquals("", xml)
params["range"] = dhcp_range - xml = nxml._get_dhcp_xml(**params) + xml = kimchi.networkxml._get_dhcp_xml(**params) start = xpath_get_text(xml, "/dhcp/range/@start") end = xpath_get_text(xml, "/dhcp/range/@end") self.assertEquals(dhcp_range['start'], start[0]) self.assertEquals(dhcp_range['end'], end[0])
params["hosts"] = [host1, host2] - xml = nxml._get_dhcp_xml(**params) + xml = kimchi.networkxml._get_dhcp_xml(**params) ip = xpath_get_text(xml, "/dhcp/host/@ip") self.assertEquals(ip, [host1['ip'], host2['ip']])
@@ -65,12 +65,12 @@ class NetworkXmlTests(unittest.TestCase): dhcp_range = {"start": "192.168.122.100", "end": "192.168.122.254"} params = {}
- xml = nxml._get_dhcp_xml(**params) + xml = kimchi.networkxml._get_dhcp_xml(**params) self.assertEquals("", xml)
params["net"] = "192.168.122.0/255.255.255.0" params["dhcp"] = {'range': dhcp_range} - xml = nxml._get_ip_xml(**params) + xml = kimchi.networkxml._get_ip_xml(**params) start = xpath_get_text(xml, "/ip/dhcp/range/@start")[0] end = xpath_get_text(xml, "/ip/dhcp/range/@end")[0] self.assertEquals(dhcp_range['start'], start) @@ -84,7 +84,7 @@ class NetworkXmlTests(unittest.TestCase): # test _get_ip_xml can accepts strings: '192.168.122.0/24', # which is same as "192.168.122.0/255.255.255.0" params["net"] = "192.168.122.0/24" - xml = nxml._get_ip_xml(**params) + xml = kimchi.networkxml._get_ip_xml(**params) netmask = xpath_get_text(xml, "/ip/@netmask")[0] self.assertEquals(netmask, str(ipaddr.IPNetwork(params["net"]).netmask)) @@ -95,12 +95,12 @@ class NetworkXmlTests(unittest.TestCase): """ params = {"mode": None}
- xml = nxml._get_forward_xml(**params) + xml = kimchi.networkxml._get_forward_xml(**params) self.assertEquals("", xml)
params["mode"] = 'nat' params["dev"] = 'eth0' - xml = nxml._get_forward_xml(**params) + xml = kimchi.networkxml._get_forward_xml(**params) mode = xpath_get_text(xml, "/forward/@mode")[0] dev = xpath_get_text(xml, "/forward/@dev")[0] self.assertEquals(params['mode'], mode) @@ -113,7 +113,7 @@ class NetworkXmlTests(unittest.TestCase): params = {"name": "test", "forward": {"mode": "nat", "dev": ""}, "net": "192.168.0.0/255.255.255.0"} - xml = nxml.to_network_xml(**params) + xml = kimchi.networkxml.to_network_xml(**params) name = xpath_get_text(xml, "/network/name")[0] self.assertEquals(name, params['name'])
@@ -136,7 +136,7 @@ class NetworkXmlTests(unittest.TestCase): params['forward']['dev'] = "eth0" params['dhcp'] = {"range": {'start': '192.168.0.1', 'end': '192.168.0.254'}} - xml = nxml.to_network_xml(**params) + xml = kimchi.networkxml.to_network_xml(**params) forward_dev = xpath_get_text(xml, "/network/forward/@dev")[0] self.assertEquals(forward_dev, params['forward']['dev'])
@@ -148,7 +148,7 @@ class NetworkXmlTests(unittest.TestCase): # test _get_ip_xml can accepts strings: '192.168.122.0/24', # which is same as "192.168.122.0/255.255.255.0" params["net"] = "192.168.0.0/24" - xml = nxml.to_network_xml(**params) + xml = kimchi.networkxml.to_network_xml(**params) netmask = xpath_get_text(xml, "/network/ip/@netmask")[0] self.assertEquals(netmask, str(ipaddr.IPNetwork(params["net"]).netmask)) @@ -169,5 +169,7 @@ class InterfaceXmlTests(unittest.TestCase): </bridge> </interface> """ - actual_xml = nxml.create_vlan_tagged_bridge_xml('br10', 'em1', '10') + actual_xml = kimchi.networkxml.create_vlan_tagged_bridge_xml('br10', + 'em1', + '10') self.assertEquals(actual_xml, utils.normalize_xml(expected_xml))

According to the PEP8 Style Guide[1], top-level definitions should be separated by two blank lines. The import groups should be separated by only one blank line, not two, as they are still the same top-level definition. [1]: http://www.python.org/dev/peps/pep-0008/#blank-lines Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- plugins/sample/__init__.py | 2 -- src/kimchi/asynctask.py | 2 -- src/kimchi/auth.py | 2 -- src/kimchi/cachebust.py | 1 - src/kimchi/control/base.py | 2 -- src/kimchi/control/config.py | 1 - src/kimchi/control/storagepools.py | 1 - src/kimchi/control/utils.py | 2 -- src/kimchi/distroloader.py | 1 - src/kimchi/featuretests.py | 1 - src/kimchi/iscsi.py | 1 - src/kimchi/isoinfo.py | 1 - src/kimchi/kvmusertests.py | 2 -- src/kimchi/mockmodel.py | 2 -- src/kimchi/model.py | 2 -- src/kimchi/objectstore.py | 2 -- src/kimchi/root.py | 2 -- src/kimchi/scan.py | 2 +- src/kimchi/screenshot.py | 3 +-- src/kimchi/server.py | 2 -- src/kimchi/sslcert.py | 1 - src/kimchi/template.py | 2 -- src/kimchi/utils.py | 3 +-- src/kimchi/vmtemplate.py | 2 +- src/kimchi/vnc.py | 1 - tests/iso_gen.py | 1 + tests/test_exception.py | 1 - tests/test_mockmodel.py | 2 -- tests/test_model.py | 1 - tests/test_networkxml.py | 1 - tests/test_osinfo.py | 1 - tests/test_plugin.py | 1 - tests/test_rest.py | 1 - tests/test_server.py | 1 - tests/test_storagepool.py | 1 - tests/test_vmtemplate.py | 1 - tests/utils.py | 5 +++-- 37 files changed, 8 insertions(+), 52 deletions(-) diff --git a/plugins/sample/__init__.py b/plugins/sample/__init__.py index a1fe44e..7c9c93f 100644 --- a/plugins/sample/__init__.py +++ b/plugins/sample/__init__.py @@ -23,10 +23,8 @@ import json import os - from cherrypy import expose - from kimchi.control.base import Collection, Resource from model import Model diff --git a/src/kimchi/asynctask.py b/src/kimchi/asynctask.py index 3b7d505..f524e5d 100644 --- a/src/kimchi/asynctask.py +++ b/src/kimchi/asynctask.py @@ -23,10 +23,8 @@ import threading import traceback - import cherrypy - from kimchi.exception import OperationFailed diff --git a/src/kimchi/auth.py b/src/kimchi/auth.py index d0a1318..c7934dc 100644 --- a/src/kimchi/auth.py +++ b/src/kimchi/auth.py @@ -26,10 +26,8 @@ import base64 import PAM import re - import cherrypy - from kimchi import template from kimchi.exception import OperationFailed diff --git a/src/kimchi/cachebust.py b/src/kimchi/cachebust.py index 9a71f4f..ad34b16 100644 --- a/src/kimchi/cachebust.py +++ b/src/kimchi/cachebust.py @@ -22,7 +22,6 @@ import os - from kimchi.config import get_prefix diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py index 031bf59..91b364c 100644 --- a/src/kimchi/control/base.py +++ b/src/kimchi/control/base.py @@ -24,10 +24,8 @@ import urllib2 - import cherrypy - import kimchi.template from kimchi.control.utils import get_class_name, internal_redirect, model_fn from kimchi.control.utils import parse_request, validate_method diff --git a/src/kimchi/control/config.py b/src/kimchi/control/config.py index 5186ddd..c92f578 100644 --- a/src/kimchi/control/config.py +++ b/src/kimchi/control/config.py @@ -24,7 +24,6 @@ import cherrypy - from kimchi.config import config from kimchi.control.base import Collection, Resource diff --git a/src/kimchi/control/storagepools.py b/src/kimchi/control/storagepools.py index 782f5a6..b7afeb4 100644 --- a/src/kimchi/control/storagepools.py +++ b/src/kimchi/control/storagepools.py @@ -25,7 +25,6 @@ import cherrypy - from kimchi.control.base import Collection, Resource from kimchi.control.storagevolumes import IsoVolumes, StorageVolumes from kimchi.control.utils import get_class_name, model_fn, parse_request diff --git a/src/kimchi/control/utils.py b/src/kimchi/control/utils.py index 894f35b..54dc309 100644 --- a/src/kimchi/control/utils.py +++ b/src/kimchi/control/utils.py @@ -25,11 +25,9 @@ import json - import cherrypy from jsonschema import Draft3Validator, ValidationError - from kimchi.exception import InvalidParameter diff --git a/src/kimchi/distroloader.py b/src/kimchi/distroloader.py index 98fd764..3f9587e 100644 --- a/src/kimchi/distroloader.py +++ b/src/kimchi/distroloader.py @@ -25,7 +25,6 @@ import glob import json import os - from kimchi import config from kimchi.exception import NotFoundError, OperationFailed from kimchi.utils import kimchi_log diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py index 9fc709a..c1da0d9 100644 --- a/src/kimchi/featuretests.py +++ b/src/kimchi/featuretests.py @@ -23,7 +23,6 @@ import subprocess import threading - import cherrypy import libvirt diff --git a/src/kimchi/iscsi.py b/src/kimchi/iscsi.py index 35c0b8a..c265283 100644 --- a/src/kimchi/iscsi.py +++ b/src/kimchi/iscsi.py @@ -22,7 +22,6 @@ import subprocess - from kimchi.exception import OperationFailed diff --git a/src/kimchi/isoinfo.py b/src/kimchi/isoinfo.py index 7e6d733..16d5446 100644 --- a/src/kimchi/isoinfo.py +++ b/src/kimchi/isoinfo.py @@ -27,7 +27,6 @@ import struct import sys import urllib2 - from kimchi.exception import IsoFormatError from kimchi.utils import check_url_path, kimchi_log diff --git a/src/kimchi/kvmusertests.py b/src/kimchi/kvmusertests.py index 82e3862..069350b 100644 --- a/src/kimchi/kvmusertests.py +++ b/src/kimchi/kvmusertests.py @@ -23,10 +23,8 @@ import psutil import uuid - import libvirt - from kimchi.rollbackcontext import RollbackContext diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py index 544b7de..f8b67f7 100644 --- a/src/kimchi/mockmodel.py +++ b/src/kimchi/mockmodel.py @@ -30,7 +30,6 @@ import random import time import uuid - try: from PIL import Image from PIL import ImageDraw @@ -38,7 +37,6 @@ except ImportError: import Image import ImageDraw - import cherrypy import kimchi.model diff --git a/src/kimchi/model.py b/src/kimchi/model.py index 93a2764..13e40b4 100644 --- a/src/kimchi/model.py +++ b/src/kimchi/model.py @@ -40,11 +40,9 @@ import uuid from collections import defaultdict from xml.etree import ElementTree - import cherrypy from cherrypy.process.plugins import BackgroundTask - from kimchi import config from kimchi import netinfo from kimchi import network diff --git a/src/kimchi/objectstore.py b/src/kimchi/objectstore.py index 7b567f3..4e6d1f0 100644 --- a/src/kimchi/objectstore.py +++ b/src/kimchi/objectstore.py @@ -24,13 +24,11 @@ import json import sqlite3 import threading - try: from collections import OrderedDict except ImportError: from ordereddict import OrderedDict - from kimchi import config from kimchi.exception import NotFoundError diff --git a/src/kimchi/root.py b/src/kimchi/root.py index ae06bc3..7647152 100644 --- a/src/kimchi/root.py +++ b/src/kimchi/root.py @@ -23,10 +23,8 @@ import json - import cherrypy - from kimchi import auth from kimchi import template from kimchi.config import get_api_schema_file diff --git a/src/kimchi/scan.py b/src/kimchi/scan.py index e192f01..8d0e6e6 100644 --- a/src/kimchi/scan.py +++ b/src/kimchi/scan.py @@ -28,13 +28,13 @@ import shutil import tempfile import time - from kimchi.isoinfo import IsoImage, probe_iso from kimchi.utils import kimchi_log SCAN_IGNORE = ['/tmp/kimchi-scan-*'] + class Scanner(object): SCAN_TTL = 300 diff --git a/src/kimchi/screenshot.py b/src/kimchi/screenshot.py index e65a752..5b1395c 100644 --- a/src/kimchi/screenshot.py +++ b/src/kimchi/screenshot.py @@ -28,13 +28,11 @@ import tempfile import time import uuid - try: from PIL import Image except ImportError: import Image - from kimchi import config from kimchi.utils import kimchi_log @@ -42,6 +40,7 @@ from kimchi.utils import kimchi_log (fd, pipe) = tempfile.mkstemp() stream_test_result = None + class VMScreenshot(object): OUTDATED_SECS = 5 THUMBNAIL_SIZE = (256, 256) diff --git a/src/kimchi/server.py b/src/kimchi/server.py index 53fe889..7eee5e4 100644 --- a/src/kimchi/server.py +++ b/src/kimchi/server.py @@ -27,10 +27,8 @@ import logging.handlers import os import sslcert - import cherrypy - from kimchi import auth from kimchi import config from kimchi import model diff --git a/src/kimchi/sslcert.py b/src/kimchi/sslcert.py index 529699d..c8be8c1 100644 --- a/src/kimchi/sslcert.py +++ b/src/kimchi/sslcert.py @@ -27,7 +27,6 @@ import time - from M2Crypto import ASN1, EVP, RSA, X509 diff --git a/src/kimchi/template.py b/src/kimchi/template.py index adc9c62..3f331ff 100644 --- a/src/kimchi/template.py +++ b/src/kimchi/template.py @@ -24,11 +24,9 @@ import errno import json - import cherrypy from Cheetah.Template import Template - from kimchi import config diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py index ac7dee5..56bccd9 100644 --- a/src/kimchi/utils.py +++ b/src/kimchi/utils.py @@ -24,16 +24,15 @@ import os import urllib2 - import cherrypy from cherrypy.lib.reprconf import Parser - from kimchi import config kimchi_log = cherrypy.log.error_log + def is_digit(value): if isinstance(value, int): return True diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py index 9097a05..e22c6b7 100644 --- a/src/kimchi/vmtemplate.py +++ b/src/kimchi/vmtemplate.py @@ -25,7 +25,6 @@ import string import socket import urlparse - from kimchi import osinfo from kimchi.exception import InvalidParameter, IsoFormatError from kimchi.isoinfo import IsoImage @@ -33,6 +32,7 @@ from kimchi.isoinfo import IsoImage QEMU_NAMESPACE = "xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'" + class VMTemplate(object): _bus_to_dev = {'ide': 'hd', 'virtio': 'vd', 'scsi': 'sd'} diff --git a/src/kimchi/vnc.py b/src/kimchi/vnc.py index dc70b46..52d6598 100644 --- a/src/kimchi/vnc.py +++ b/src/kimchi/vnc.py @@ -25,7 +25,6 @@ import errno import os import subprocess - from kimchi.config import config diff --git a/tests/iso_gen.py b/tests/iso_gen.py index c773bd6..d49e2b4 100644 --- a/tests/iso_gen.py +++ b/tests/iso_gen.py @@ -24,6 +24,7 @@ import struct from kimchi.isoinfo import IsoImage + iso_des = [ ('openbsd', lambda v: True, lambda v: 'OpenBSD/i386 %s Install CD' % v), diff --git a/tests/test_exception.py b/tests/test_exception.py index 2757a11..396dfa7 100644 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -24,7 +24,6 @@ import json import os import unittest - import kimchi.mockmodel from utils import get_free_port, patch_auth, request, run_server diff --git a/tests/test_mockmodel.py b/tests/test_mockmodel.py index 3e0701f..26f25ac 100644 --- a/tests/test_mockmodel.py +++ b/tests/test_mockmodel.py @@ -25,10 +25,8 @@ import os import time import unittest - import cherrypy - import kimchi.mockmodel from kimchi.control.base import Collection, Resource from utils import get_free_port, patch_auth, request, run_server diff --git a/tests/test_model.py b/tests/test_model.py index 0620501..e06507b 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -30,7 +30,6 @@ import time import unittest import uuid - import iso_gen import kimchi.model import kimchi.objectstore diff --git a/tests/test_networkxml.py b/tests/test_networkxml.py index 445c36d..d58a31a 100644 --- a/tests/test_networkxml.py +++ b/tests/test_networkxml.py @@ -23,7 +23,6 @@ import ipaddr import unittest - import kimchi.networkxml import utils from kimchi.xmlutils import xpath_get_text diff --git a/tests/test_osinfo.py b/tests/test_osinfo.py index 0f88a35..79062cb 100644 --- a/tests/test_osinfo.py +++ b/tests/test_osinfo.py @@ -22,7 +22,6 @@ import unittest - from kimchi.osinfo import lookup, modern_version_bases diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 1afec63..0421e1d 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -26,7 +26,6 @@ import sys import unittest from functools import partial - import kimchi.mockmodel import utils from kimchi import config diff --git a/tests/test_rest.py b/tests/test_rest.py index 50542e4..bb242c8 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -27,7 +27,6 @@ import time import unittest from functools import partial - import kimchi.mockmodel from kimchi.rollbackcontext import RollbackContext from utils import fake_user, get_free_port, https_request, patch_auth, request diff --git a/tests/test_server.py b/tests/test_server.py index 0050f6a..561325c 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -23,7 +23,6 @@ import os import unittest - import kimchi.mockmodel import utils diff --git a/tests/test_storagepool.py b/tests/test_storagepool.py index 8341537..415ed28 100644 --- a/tests/test_storagepool.py +++ b/tests/test_storagepool.py @@ -23,7 +23,6 @@ import libxml2 import unittest - import kimchi.model from kimchi.rollbackcontext import RollbackContext diff --git a/tests/test_vmtemplate.py b/tests/test_vmtemplate.py index dc9c0ef..f883edd 100644 --- a/tests/test_vmtemplate.py +++ b/tests/test_vmtemplate.py @@ -23,7 +23,6 @@ import unittest import uuid - from kimchi.vmtemplate import VMTemplate from kimchi.xmlutils import xpath_get_text diff --git a/tests/utils.py b/tests/utils.py index 452a001..d72f282 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -31,17 +31,18 @@ import unittest from contextlib import closing from lxml import etree - import cherrypy - import kimchi.server import kimchi.model + _ports = {} + fake_user = {'admin': 'letmein!'} + # provide missing unittest decorators and API for python 2.6; these decorators # do not actually work, just avoid the syntax failure if sys.version_info[:2] == (2, 6): -- 1.8.4.2

On 01/15/2014 12:05 AM, Crístian Viana wrote:
According to the PEP8 Style Guide[1], top-level definitions should be separated by two blank lines. The import groups should be separated by only one blank line, not two, as they are still the same top-level definition.
[1]: http://www.python.org/dev/peps/pep-0008/#blank-lines
Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- plugins/sample/__init__.py | 2 -- src/kimchi/asynctask.py | 2 -- src/kimchi/auth.py | 2 -- src/kimchi/cachebust.py | 1 - src/kimchi/control/base.py | 2 -- src/kimchi/control/config.py | 1 - src/kimchi/control/storagepools.py | 1 - src/kimchi/control/utils.py | 2 -- src/kimchi/distroloader.py | 1 - src/kimchi/featuretests.py | 1 - src/kimchi/iscsi.py | 1 - src/kimchi/isoinfo.py | 1 - src/kimchi/kvmusertests.py | 2 -- src/kimchi/mockmodel.py | 2 -- src/kimchi/model.py | 2 -- src/kimchi/objectstore.py | 2 -- src/kimchi/root.py | 2 -- src/kimchi/scan.py | 2 +- src/kimchi/screenshot.py | 3 +-- src/kimchi/server.py | 2 -- src/kimchi/sslcert.py | 1 - src/kimchi/template.py | 2 -- src/kimchi/utils.py | 3 +-- src/kimchi/vmtemplate.py | 2 +- src/kimchi/vnc.py | 1 - tests/iso_gen.py | 1 + tests/test_exception.py | 1 - tests/test_mockmodel.py | 2 -- tests/test_model.py | 1 - tests/test_networkxml.py | 1 - tests/test_osinfo.py | 1 - tests/test_plugin.py | 1 - tests/test_rest.py | 1 - tests/test_server.py | 1 - tests/test_storagepool.py | 1 - tests/test_vmtemplate.py | 1 - tests/utils.py | 5 +++-- 37 files changed, 8 insertions(+), 52 deletions(-)
diff --git a/plugins/sample/__init__.py b/plugins/sample/__init__.py index a1fe44e..7c9c93f 100644 --- a/plugins/sample/__init__.py +++ b/plugins/sample/__init__.py @@ -23,10 +23,8 @@ import json import os
- from cherrypy import expose
- from kimchi.control.base import Collection, Resource from model import Model
diff --git a/src/kimchi/asynctask.py b/src/kimchi/asynctask.py index 3b7d505..f524e5d 100644 --- a/src/kimchi/asynctask.py +++ b/src/kimchi/asynctask.py @@ -23,10 +23,8 @@ import threading import traceback
- import cherrypy
- from kimchi.exception import OperationFailed
diff --git a/src/kimchi/auth.py b/src/kimchi/auth.py index d0a1318..c7934dc 100644 --- a/src/kimchi/auth.py +++ b/src/kimchi/auth.py @@ -26,10 +26,8 @@ import base64 import PAM import re
- import cherrypy
- from kimchi import template from kimchi.exception import OperationFailed
diff --git a/src/kimchi/cachebust.py b/src/kimchi/cachebust.py index 9a71f4f..ad34b16 100644 --- a/src/kimchi/cachebust.py +++ b/src/kimchi/cachebust.py @@ -22,7 +22,6 @@
import os
- from kimchi.config import get_prefix
diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py index 031bf59..91b364c 100644 --- a/src/kimchi/control/base.py +++ b/src/kimchi/control/base.py @@ -24,10 +24,8 @@
import urllib2
- import cherrypy
- import kimchi.template from kimchi.control.utils import get_class_name, internal_redirect, model_fn from kimchi.control.utils import parse_request, validate_method diff --git a/src/kimchi/control/config.py b/src/kimchi/control/config.py index 5186ddd..c92f578 100644 --- a/src/kimchi/control/config.py +++ b/src/kimchi/control/config.py @@ -24,7 +24,6 @@
import cherrypy
- from kimchi.config import config from kimchi.control.base import Collection, Resource
diff --git a/src/kimchi/control/storagepools.py b/src/kimchi/control/storagepools.py index 782f5a6..b7afeb4 100644 --- a/src/kimchi/control/storagepools.py +++ b/src/kimchi/control/storagepools.py @@ -25,7 +25,6 @@
import cherrypy
- from kimchi.control.base import Collection, Resource from kimchi.control.storagevolumes import IsoVolumes, StorageVolumes from kimchi.control.utils import get_class_name, model_fn, parse_request diff --git a/src/kimchi/control/utils.py b/src/kimchi/control/utils.py index 894f35b..54dc309 100644 --- a/src/kimchi/control/utils.py +++ b/src/kimchi/control/utils.py @@ -25,11 +25,9 @@
import json
- import cherrypy from jsonschema import Draft3Validator, ValidationError
- from kimchi.exception import InvalidParameter
diff --git a/src/kimchi/distroloader.py b/src/kimchi/distroloader.py index 98fd764..3f9587e 100644 --- a/src/kimchi/distroloader.py +++ b/src/kimchi/distroloader.py @@ -25,7 +25,6 @@ import glob import json import os
- from kimchi import config from kimchi.exception import NotFoundError, OperationFailed from kimchi.utils import kimchi_log diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py index 9fc709a..c1da0d9 100644 --- a/src/kimchi/featuretests.py +++ b/src/kimchi/featuretests.py @@ -23,7 +23,6 @@ import subprocess import threading
- import cherrypy import libvirt
diff --git a/src/kimchi/iscsi.py b/src/kimchi/iscsi.py index 35c0b8a..c265283 100644 --- a/src/kimchi/iscsi.py +++ b/src/kimchi/iscsi.py @@ -22,7 +22,6 @@
import subprocess
- from kimchi.exception import OperationFailed
diff --git a/src/kimchi/isoinfo.py b/src/kimchi/isoinfo.py index 7e6d733..16d5446 100644 --- a/src/kimchi/isoinfo.py +++ b/src/kimchi/isoinfo.py @@ -27,7 +27,6 @@ import struct import sys import urllib2
- from kimchi.exception import IsoFormatError from kimchi.utils import check_url_path, kimchi_log
diff --git a/src/kimchi/kvmusertests.py b/src/kimchi/kvmusertests.py index 82e3862..069350b 100644 --- a/src/kimchi/kvmusertests.py +++ b/src/kimchi/kvmusertests.py @@ -23,10 +23,8 @@ import psutil import uuid
- import libvirt
- from kimchi.rollbackcontext import RollbackContext
diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py index 544b7de..f8b67f7 100644 --- a/src/kimchi/mockmodel.py +++ b/src/kimchi/mockmodel.py @@ -30,7 +30,6 @@ import random import time import uuid
- try: from PIL import Image from PIL import ImageDraw @@ -38,7 +37,6 @@ except ImportError: import Image import ImageDraw
- import cherrypy
import kimchi.model diff --git a/src/kimchi/model.py b/src/kimchi/model.py index 93a2764..13e40b4 100644 --- a/src/kimchi/model.py +++ b/src/kimchi/model.py @@ -40,11 +40,9 @@ import uuid from collections import defaultdict from xml.etree import ElementTree
- import cherrypy from cherrypy.process.plugins import BackgroundTask
- from kimchi import config from kimchi import netinfo from kimchi import network diff --git a/src/kimchi/objectstore.py b/src/kimchi/objectstore.py index 7b567f3..4e6d1f0 100644 --- a/src/kimchi/objectstore.py +++ b/src/kimchi/objectstore.py @@ -24,13 +24,11 @@ import json import sqlite3 import threading
- try: from collections import OrderedDict except ImportError: from ordereddict import OrderedDict
- from kimchi import config from kimchi.exception import NotFoundError
diff --git a/src/kimchi/root.py b/src/kimchi/root.py index ae06bc3..7647152 100644 --- a/src/kimchi/root.py +++ b/src/kimchi/root.py @@ -23,10 +23,8 @@
import json
- import cherrypy
- from kimchi import auth from kimchi import template from kimchi.config import get_api_schema_file diff --git a/src/kimchi/scan.py b/src/kimchi/scan.py index e192f01..8d0e6e6 100644 --- a/src/kimchi/scan.py +++ b/src/kimchi/scan.py @@ -28,13 +28,13 @@ import shutil import tempfile import time
- from kimchi.isoinfo import IsoImage, probe_iso from kimchi.utils import kimchi_log
SCAN_IGNORE = ['/tmp/kimchi-scan-*']
+ class Scanner(object): SCAN_TTL = 300
diff --git a/src/kimchi/screenshot.py b/src/kimchi/screenshot.py index e65a752..5b1395c 100644 --- a/src/kimchi/screenshot.py +++ b/src/kimchi/screenshot.py @@ -28,13 +28,11 @@ import tempfile import time import uuid
- try: from PIL import Image except ImportError: import Image
- from kimchi import config from kimchi.utils import kimchi_log
@@ -42,6 +40,7 @@ from kimchi.utils import kimchi_log (fd, pipe) = tempfile.mkstemp() stream_test_result = None
+ class VMScreenshot(object): OUTDATED_SECS = 5 THUMBNAIL_SIZE = (256, 256) diff --git a/src/kimchi/server.py b/src/kimchi/server.py index 53fe889..7eee5e4 100644 --- a/src/kimchi/server.py +++ b/src/kimchi/server.py @@ -27,10 +27,8 @@ import logging.handlers import os import sslcert
- import cherrypy
- from kimchi import auth from kimchi import config from kimchi import model diff --git a/src/kimchi/sslcert.py b/src/kimchi/sslcert.py index 529699d..c8be8c1 100644 --- a/src/kimchi/sslcert.py +++ b/src/kimchi/sslcert.py @@ -27,7 +27,6 @@
import time
- from M2Crypto import ASN1, EVP, RSA, X509
diff --git a/src/kimchi/template.py b/src/kimchi/template.py index adc9c62..3f331ff 100644 --- a/src/kimchi/template.py +++ b/src/kimchi/template.py @@ -24,11 +24,9 @@ import errno import json
- import cherrypy from Cheetah.Template import Template
- from kimchi import config
diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py index ac7dee5..56bccd9 100644 --- a/src/kimchi/utils.py +++ b/src/kimchi/utils.py @@ -24,16 +24,15 @@ import os import urllib2
- import cherrypy from cherrypy.lib.reprconf import Parser
- from kimchi import config
kimchi_log = cherrypy.log.error_log
+ def is_digit(value): if isinstance(value, int): return True diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py index 9097a05..e22c6b7 100644 --- a/src/kimchi/vmtemplate.py +++ b/src/kimchi/vmtemplate.py @@ -25,7 +25,6 @@ import string import socket import urlparse
- from kimchi import osinfo from kimchi.exception import InvalidParameter, IsoFormatError from kimchi.isoinfo import IsoImage @@ -33,6 +32,7 @@ from kimchi.isoinfo import IsoImage
QEMU_NAMESPACE = "xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'"
+ class VMTemplate(object): _bus_to_dev = {'ide': 'hd', 'virtio': 'vd', 'scsi': 'sd'}
diff --git a/src/kimchi/vnc.py b/src/kimchi/vnc.py index dc70b46..52d6598 100644 --- a/src/kimchi/vnc.py +++ b/src/kimchi/vnc.py @@ -25,7 +25,6 @@ import errno import os import subprocess
- from kimchi.config import config
diff --git a/tests/iso_gen.py b/tests/iso_gen.py index c773bd6..d49e2b4 100644 --- a/tests/iso_gen.py +++ b/tests/iso_gen.py @@ -24,6 +24,7 @@ import struct
from kimchi.isoinfo import IsoImage
+ iso_des = [ ('openbsd', lambda v: True, lambda v: 'OpenBSD/i386 %s Install CD' % v), diff --git a/tests/test_exception.py b/tests/test_exception.py index 2757a11..396dfa7 100644 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -24,7 +24,6 @@ import json import os import unittest
- import kimchi.mockmodel from utils import get_free_port, patch_auth, request, run_server
diff --git a/tests/test_mockmodel.py b/tests/test_mockmodel.py index 3e0701f..26f25ac 100644 --- a/tests/test_mockmodel.py +++ b/tests/test_mockmodel.py @@ -25,10 +25,8 @@ import os import time import unittest
- import cherrypy
- import kimchi.mockmodel from kimchi.control.base import Collection, Resource from utils import get_free_port, patch_auth, request, run_server diff --git a/tests/test_model.py b/tests/test_model.py index 0620501..e06507b 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -30,7 +30,6 @@ import time import unittest import uuid
- import iso_gen import kimchi.model import kimchi.objectstore diff --git a/tests/test_networkxml.py b/tests/test_networkxml.py index 445c36d..d58a31a 100644 --- a/tests/test_networkxml.py +++ b/tests/test_networkxml.py @@ -23,7 +23,6 @@ import ipaddr import unittest
- import kimchi.networkxml import utils from kimchi.xmlutils import xpath_get_text diff --git a/tests/test_osinfo.py b/tests/test_osinfo.py index 0f88a35..79062cb 100644 --- a/tests/test_osinfo.py +++ b/tests/test_osinfo.py @@ -22,7 +22,6 @@
import unittest
- from kimchi.osinfo import lookup, modern_version_bases
diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 1afec63..0421e1d 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -26,7 +26,6 @@ import sys import unittest from functools import partial
- import kimchi.mockmodel import utils from kimchi import config diff --git a/tests/test_rest.py b/tests/test_rest.py index 50542e4..bb242c8 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -27,7 +27,6 @@ import time import unittest from functools import partial
- import kimchi.mockmodel from kimchi.rollbackcontext import RollbackContext from utils import fake_user, get_free_port, https_request, patch_auth, request diff --git a/tests/test_server.py b/tests/test_server.py index 0050f6a..561325c 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -23,7 +23,6 @@ import os import unittest
- import kimchi.mockmodel import utils
diff --git a/tests/test_storagepool.py b/tests/test_storagepool.py index 8341537..415ed28 100644 --- a/tests/test_storagepool.py +++ b/tests/test_storagepool.py @@ -23,7 +23,6 @@ import libxml2 import unittest
- import kimchi.model from kimchi.rollbackcontext import RollbackContext
diff --git a/tests/test_vmtemplate.py b/tests/test_vmtemplate.py index dc9c0ef..f883edd 100644 --- a/tests/test_vmtemplate.py +++ b/tests/test_vmtemplate.py @@ -23,7 +23,6 @@ import unittest import uuid
- from kimchi.vmtemplate import VMTemplate from kimchi.xmlutils import xpath_get_text
diff --git a/tests/utils.py b/tests/utils.py index 452a001..d72f282 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -31,17 +31,18 @@ import unittest from contextlib import closing from lxml import etree
- import cherrypy
- import kimchi.server import kimchi.model
+ _ports = {}
+ fake_user = {'admin': 'letmein!'}
+
Can't we have one single block for all constants?
# provide missing unittest decorators and API for python 2.6; these decorators # do not actually work, just avoid the syntax failure if sys.version_info[:2] == (2, 6):

Am 20-01-2014 13:38, schrieb Aline Manera:
_ports = {}
+ fake_user = {'admin': 'letmein!'}
+
Can't we have one single block for all constants? Sure!
Those two statements were already separated by one line, I just add another one to comply with PEP8. I didn't mean to change the code structure, only to add one more line where there was already a separating line. Maybe those two variables are not related (other than being global variables on the same file) and they shouldn't be grouped together. That wasn't my patch's goal. But of course I can group them together if you want to. I'm preparing a new and rebased patchset.
participants (2)
-
Aline Manera
-
Crístian Viana