Remove object imports.

This patch modifies import statements to import only modules and
remove object imports as per the OpenStack import guidelines.

Change-Id: Id4841375a15f41dd166bf16d4c8736954ca61440
Closes-Bug: #1650063
This commit is contained in:
Ananth Narayan S 2017-01-11 17:36:32 +05:30
parent a8909293b5
commit 1706b3cff5
11 changed files with 69 additions and 66 deletions

View File

@ -11,13 +11,13 @@
# limitations under the License. # limitations under the License.
import logging import logging
import logging.handlers
import os.path import os.path
from logging.handlers import RotatingFileHandler
import flask import flask
from valence import config as cfg import valence.config as cfg
_app = None _app = None
@ -29,8 +29,9 @@ def setup_app():
TEN_KB = 10 * 1024 TEN_KB = 10 * 1024
# Configure logging # Configure logging
if os.path.isfile(cfg.log_file) and os.access(cfg.log_file, os.W_OK): if os.path.isfile(cfg.log_file) and os.access(cfg.log_file,
handler = RotatingFileHandler( os.W_OK):
handler = logging.handlers.RotatingFileHandler(
cfg.log_file, maxBytes=TEN_KB, backupCount=1) cfg.log_file, maxBytes=TEN_KB, backupCount=1)
handler.setLevel(cfg.log_level) handler.setLevel(cfg.log_level)
formatter = logging.Formatter(cfg.log_format) formatter = logging.Formatter(cfg.log_format)

View File

@ -13,7 +13,7 @@
# under the License. # under the License.
from flask import request import flask
from valence.common import base from valence.common import base
from valence.common import types from valence.common import types
@ -21,7 +21,7 @@ from valence.common import types
def build_url(resource, resource_args, bookmark=False, base_url=None): def build_url(resource, resource_args, bookmark=False, base_url=None):
if base_url is None: if base_url is None:
base_url = request.root_url base_url = flask.request.root_url
base_url = base_url.rstrip("//") base_url = base_url.rstrip("//")
template = '%(url)s/%(res)s' if bookmark else '%(url)s/v1/%(res)s' template = '%(url)s/%(res)s' if bookmark else '%(url)s/v1/%(res)s'
template += '%(args)s' if resource_args.startswith('?') else '/%(args)s' template += '%(args)s' if resource_args.startswith('?') else '/%(args)s'

View File

@ -12,10 +12,8 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from flask import abort import flask
from flask import request import flask_restful
from flask import Response
from flask_restful import Resource
from six.moves import http_client from six.moves import http_client
from valence.api import link from valence.api import link
@ -52,7 +50,7 @@ class Version(base.ObjectBase):
version.id = id version.id = id
version.status = "CURRENT" if current else "DEPRECTED" version.status = "CURRENT" if current else "DEPRECTED"
version.min_version = min_version version.min_version = min_version
version.links = [link.Link.make_link('self', request.url_root, version.links = [link.Link.make_link('self', flask.request.url_root,
id, '', bookmark=True)] id, '', bookmark=True)]
return version return version
@ -83,14 +81,14 @@ class RootBase(base.ObjectBase):
return root return root
class Root(Resource): class Root(flask_restful.Resource):
def get(self): def get(self):
obj = RootBase.convert() obj = RootBase.convert()
return utils.make_response(http_client.OK, obj.as_dict()) return utils.make_response(http_client.OK, obj.as_dict())
class PODMProxy(Resource): class PODMProxy(flask_restful.Resource):
"""Passthrough Proxy for PODM. """Passthrough Proxy for PODM.
This function bypasses valence processing This function bypasses valence processing
@ -106,30 +104,34 @@ class PODMProxy(Resource):
filterext = ["Chassis", "Services", "Managers", "Systems", filterext = ["Chassis", "Services", "Managers", "Systems",
"EventService", "Nodes", "EthernetSwitches"] "EventService", "Nodes", "EthernetSwitches"]
if resource not in filterext: if resource not in filterext:
abort(http_client.NOT_FOUND) flask.abort(http_client.NOT_FOUND)
def get(self, url): def get(self, url):
self.check_url(url) self.check_url(url)
resp = rfs.send_request(url) resp = rfs.send_request(url)
return Response(resp.text, resp.status_code, resp.headers.items()) return flask.Response(resp.text, resp.status_code,
resp.headers.items())
def post(self, url): def post(self, url):
self.check_url(url) self.check_url(url)
resp = rfs.send_request(url, resp = rfs.send_request(url,
"POST", "POST",
headers={'Content-type': 'application/json'}, headers={'Content-type': 'application/json'},
data=request.data) data=flask.request.data)
return Response(resp.text, resp.status_code, resp.headers.items()) return flask.Response(resp.text, resp.status_code,
resp.headers.items())
def delete(self, url): def delete(self, url):
self.check_url(url) self.check_url(url)
resp = rfs.send_request(url, "DELETE") resp = rfs.send_request(url, "DELETE")
return Response(resp.text, resp.status_code, resp.headers.items()) return flask.Response(resp.text, resp.status_code,
resp.headers.items())
def patch(self, url): def patch(self, url):
self.check_url(url) self.check_url(url)
resp = rfs.send_request(url, resp = rfs.send_request(url,
"PATCH", "PATCH",
headers={'Content-type': 'application/json'}, headers={'Content-type': 'application/json'},
data=request.data) data=flask.request.data)
return Response(resp.text, resp.status_code, resp.headers.items()) return flask.Response(resp.text, resp.status_code,
resp.headers.items())

View File

@ -15,32 +15,28 @@
import logging import logging
import traceback import traceback
from flask_cors import CORS import flask_cors
from flask_restful import Api import flask_restful
from six.moves import http_client from six.moves import http_client
from valence.api import app as flaskapp from valence.api import app as flaskapp
from valence.api.root import PODMProxy import valence.api.root as api_root
from valence.api.root import Root import valence.api.v1.flavors as v1_flavors
from valence.api.v1.flavors import Flavors as v1Flavors import valence.api.v1.nodes as v1_nodes
from valence.api.v1.nodes import Nodes as v1Nodes import valence.api.v1.storages as v1_storages
from valence.api.v1.nodes import NodesList as v1NodesList import valence.api.v1.systems as v1_systems
from valence.api.v1.nodes import NodesStorage as v1NodesStorage import valence.api.v1.version as v1_version
from valence.api.v1.storages import Storages as v1Storages
from valence.api.v1.storages import StoragesList as v1StoragesList
from valence.api.v1.systems import Systems as v1Systems
from valence.api.v1.systems import SystemsList as v1SystemsList
from valence.api.v1.version import V1
from valence.common import exception from valence.common import exception
from valence.common import utils from valence.common import utils
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
app = flaskapp.get_app() app = flaskapp.get_app()
cors = CORS(app) cors = flask_cors.CORS(app)
class ValenceService(Api): class ValenceService(flask_restful.Api):
"""Overriding Flask Restful Error handler""" """Overriding Flask Restful Error handler"""
def handle_error(self, error): def handle_error(self, error):
@ -65,30 +61,31 @@ api = ValenceService(app)
# API Root operation # API Root operation
api.add_resource(Root, '/', endpoint='root') api.add_resource(api_root.Root, '/', endpoint='root')
# V1 Root operations # V1 Root operations
api.add_resource(V1, '/v1', endpoint='v1') api.add_resource(v1_version.V1, '/v1', endpoint='v1')
# Node(s) operations # Node(s) operations
api.add_resource(v1NodesList, '/v1/nodes', endpoint='nodes') api.add_resource(v1_nodes.NodesList, '/v1/nodes', endpoint='nodes')
api.add_resource(v1Nodes, '/v1/nodes/<string:nodeid>', endpoint='node') api.add_resource(v1_nodes.Nodes, '/v1/nodes/<string:nodeid>', endpoint='node')
api.add_resource(v1NodesStorage, api.add_resource(v1_nodes.NodesStorage,
'/v1/nodes/<string:nodeid>/storages', '/v1/nodes/<string:nodeid>/storages',
endpoint='nodes_storages') endpoint='nodes_storages')
# System(s) operations # System(s) operations
api.add_resource(v1SystemsList, '/v1/systems', endpoint='systems') api.add_resource(v1_systems.SystemsList, '/v1/systems', endpoint='systems')
api.add_resource(v1Systems, '/v1/systems/<string:systemid>', endpoint='system') api.add_resource(v1_systems.Systems, '/v1/systems/<string:systemid>',
endpoint='system')
# Flavor(s) operations # Flavor(s) operations
api.add_resource(v1Flavors, '/v1/flavors', endpoint='flavors') api.add_resource(v1_flavors.Flavors, '/v1/flavors', endpoint='flavors')
# Storage(s) operations # Storage(s) operations
api.add_resource(v1StoragesList, '/v1/storages', endpoint='storages') api.add_resource(v1_storages.StoragesList, '/v1/storages', endpoint='storages')
api.add_resource(v1Storages, api.add_resource(v1_storages.Storages,
'/v1/storages/<string:storageid>', endpoint='storage') '/v1/storages/<string:storageid>', endpoint='storage')
# Proxy to PODM # Proxy to PODM
api.add_resource(PODMProxy, '/<path:url>', endpoint='podmproxy') api.add_resource(api_root.PODMProxy, '/<path:url>', endpoint='podmproxy')

View File

@ -16,13 +16,13 @@
import logging import logging
import sys import sys
from valence.db import etcd_db import valence.db.etcd_db as valence_etcdb
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
def init(): def init():
etcd_db.init_etcd_db() valence_etcdb.init_etcd_db()
def migrate(): def migrate():

View File

@ -20,7 +20,7 @@
import logging import logging
from flask import jsonify import flask
import six import six
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@ -90,7 +90,7 @@ def make_response(status_code, content="", headers=None):
:returns: return_type -- flask Response object :returns: return_type -- flask Response object
""" """
response = jsonify(content) response = flask.jsonify(content)
if isinstance(status_code, int): if isinstance(status_code, int):
response.status_code = status_code response.status_code = status_code

View File

@ -18,7 +18,6 @@ import logging
import os import os
import requests import requests
from requests.auth import HTTPBasicAuth
from six.moves import http_client from six.moves import http_client
from valence.common import exception from valence.common import exception
@ -69,7 +68,8 @@ def send_request(resource, method="GET", **kwargs):
LOG.debug(url) LOG.debug(url)
try: try:
resp = requests.request(method, url, verify=False, resp = requests.request(method, url, verify=False,
auth=HTTPBasicAuth(httpuser, httppwd), auth=requests.auth.HTTPBasicAuth(
httpuser, httppwd),
**kwargs) **kwargs)
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
LOG.error(e) LOG.error(e)

View File

@ -10,12 +10,12 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from unittest import TestCase import unittest
from valence.api import link as link_module from valence.api import link as link_module
class TestLink(TestCase): class TestLink(unittest.TestCase):
def test_build_url_with_bookmark(self): def test_build_url_with_bookmark(self):
link = link_module.build_url( link = link_module.build_url(
'v1', 'flavors', bookmark=True, base_url='http://localhost:8181') 'v1', 'flavors', bookmark=True, base_url='http://localhost:8181')

View File

@ -10,12 +10,12 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from unittest import TestCase import unittest
from valence.api import route from valence.api import route
class TestRoute(TestCase): class TestRoute(unittest.TestCase):
def setUp(self): def setUp(self):
self.app = route.app self.app = route.app

View File

@ -10,13 +10,13 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from unittest import TestCase import unittest
from valence.common import base from valence.common import base
from valence.common import types from valence.common import types
class TestTypes(TestCase): class TestTypes(unittest.TestCase):
def test_text(self): def test_text(self):
self.assertIsNone(types.Text.validate(None)) self.assertIsNone(types.Text.validate(None))

View File

@ -11,14 +11,13 @@
# under the License. # under the License.
import mock import mock
from unittest import TestCase import unittest
from valence.flavors import flavors from valence.flavors import flavors
from valence.flavors.plugins.assettag import assettagGenerator
from valence.flavors.plugins.default import defaultGenerator
from valence.tests.unit.fakes import flavors_fakes as fakes from valence.tests.unit.fakes import flavors_fakes as fakes
class TestFlavors(TestCase): class TestFlavors(unittest.TestCase):
def test_get_available_criteria(self): def test_get_available_criteria(self):
expected = {'criteria': [{'name': 'default', expected = {'criteria': [{'name': 'default',
@ -36,7 +35,8 @@ class TestFlavors(TestCase):
result = sorted(result['criteria'], key=lambda x: x['name']) result = sorted(result['criteria'], key=lambda x: x['name'])
self.assertEqual(expected, result) self.assertEqual(expected, result)
@mock.patch.object(assettagGenerator, 'generate') @mock.patch(
'valence.flavors.plugins.assettag.assettagGenerator.generate')
@mock.patch('uuid.uuid4') @mock.patch('uuid.uuid4')
@mock.patch('valence.redfish.redfish.systems_list') @mock.patch('valence.redfish.redfish.systems_list')
def test_create_flavors_asserttag(self, mock_systems, def test_create_flavors_asserttag(self, mock_systems,
@ -50,7 +50,8 @@ class TestFlavors(TestCase):
expected = [fakes.fake_assettag_flavors()] expected = [fakes.fake_assettag_flavors()]
self.assertEqual(expected, result) self.assertEqual(expected, result)
@mock.patch.object(defaultGenerator, 'generate') @mock.patch(
'valence.flavors.plugins.default.defaultGenerator.generate')
@mock.patch('uuid.uuid4') @mock.patch('uuid.uuid4')
@mock.patch('valence.redfish.redfish.systems_list') @mock.patch('valence.redfish.redfish.systems_list')
def test_create_flavors_default(self, mock_systems, def test_create_flavors_default(self, mock_systems,
@ -64,8 +65,10 @@ class TestFlavors(TestCase):
expected = [fakes.fake_default_flavors()] expected = [fakes.fake_default_flavors()]
self.assertEqual(expected, result) self.assertEqual(expected, result)
@mock.patch.object(defaultGenerator, 'generate') @mock.patch(
@mock.patch.object(assettagGenerator, 'generate') 'valence.flavors.plugins.default.defaultGenerator.generate')
@mock.patch(
'valence.flavors.plugins.assettag.assettagGenerator.generate')
@mock.patch('uuid.uuid4') @mock.patch('uuid.uuid4')
@mock.patch('valence.redfish.redfish.systems_list') @mock.patch('valence.redfish.redfish.systems_list')
def test_create_flavors_asserttag_and_default(self, mock_systems, def test_create_flavors_asserttag_and_default(self, mock_systems,