vmware-nsx/quantum/utils.py
Somik Behera 9a82d8a9e3 1) Added a bare-bones framework for quantum plugins.
2) Created demo quantum plugin that conforms to QuantumPluginBase
    Abstract class specification.
3) Demonstrated plugin registration and invocation using the demo
    plugin called "QuantumEchoPlugin"
4) Created the initial file structure for a quantum CLI
5) Seeded the utils module that will contain frequently used Quantum utilities.
6) Modified the manager module to initialize and register the quantum plugin
    defined in a configuration file. I have hard-coded the path to plugin for now
    but this will move to a quantum.conf file.

TODO:

1) Finish up the Quantum CLI
2) Write Quantum unit tests that can be run against any plug-in for certification.
3) Create a working quantum plugin.
2011-05-13 14:23:37 -07:00

58 lines
1.7 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2011, Nicira Networks, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Borrowed from nova code base, more utilities will be added/borrowed as and
# when needed.
# @author: Somik Behera, Nicira Networks, Inc.
"""Utilities and helper functions."""
import base64
import datetime
import functools
import inspect
import json
import os
import random
import re
import socket
import string
import struct
import sys
import time
import types
def import_class(import_str):
"""Returns a class from a string including module and class."""
mod_str, _sep, class_str = import_str.rpartition('.')
try:
__import__(mod_str)
return getattr(sys.modules[mod_str], class_str)
except (ImportError, ValueError, AttributeError), exc:
print(('Inner Exception: %s'), exc)
raise exception.ClassNotFound(class_name=class_str)
def import_object(import_str):
"""Returns an object including a module or module and class."""
try:
__import__(import_str)
return sys.modules[import_str]
except ImportError:
cls = import_class(import_str)
return cls()