# Path: os_vif/exception.py
# class ExceptionBase(Exception):
# class LibraryNotInitialized(ExceptionBase):
# class NoMatchingPlugin(ExceptionBase):
# class NoMatchingPortProfileClass(ExceptionBase):
# class NoSupportedPortProfileVersion(ExceptionBase):
# class NoMatchingVIFClass(ExceptionBase):
# class NoSupportedVIFVersion(ExceptionBase):
# class PlugException(ExceptionBase):
# class UnplugException(ExceptionBase):
# class NetworkMissingPhysicalNetwork(ExceptionBase):
# class NetworkInterfaceNotFound(ExceptionBase):
# class NetworkInterfaceTypeNotDefined(ExceptionBase):
# class ExternalImport(ExceptionBase):
# class NotImplementedForOS(ExceptionBase):
#     def __init__(self, message=None, **kwargs):
#     def format_message(self):
# 
# Path: os_vif/objects/base.py
# class VersionedObject(ovo_base.VersionedObject):
# class VersionedObjectPrintableMixin(object):
#     OBJ_PROJECT_NAMESPACE = 'os_vif'
#     def __str__(self):


from oslo_utils import versionutils
from oslo_versionedobjects import base
from oslo_versionedobjects import fields
from os_vif import exception
from os_vif.objects import base as osv_base
                           max_version=max_version)


@base.VersionedObjectRegistry.register
class HostPortProfileInfo(osv_base.VersionedObject,
                          base.ComparableVersionedObject,
                          osv_base.VersionedObjectPrintableMixin):
    """
    Class describing a PortProfile class and its supported versions
    """
    # Version 1.0: Initial version
    VERSION = "1.0"

    fields = {
        # object name of the subclass of os_vif.objects.vif.VIFPortProfileBase
        "profile_object_name": fields.StringField(),

        # String representing the earliest version of @name
        # that the plugin understands
        "min_version": fields.StringField(),

        # String representing the latest version of @name
        # that the plugin understands
        "max_version": fields.StringField(),
    }

    def get_common_version(self):
        return _get_common_version(self.profile_object_name,
                                   self.max_version,
                                   self.min_version,

# Path: os_vif/exception.py
# class ExceptionBase(Exception):
# class LibraryNotInitialized(ExceptionBase):
# class NoMatchingPlugin(ExceptionBase):
# class NoMatchingPortProfileClass(ExceptionBase):
# class NoSupportedPortProfileVersion(ExceptionBase):
# class NoMatchingVIFClass(ExceptionBase):
# class NoSupportedVIFVersion(ExceptionBase):
# class PlugException(ExceptionBase):
# class UnplugException(ExceptionBase):
# class NetworkMissingPhysicalNetwork(ExceptionBase):
# class NetworkInterfaceNotFound(ExceptionBase):
# class NetworkInterfaceTypeNotDefined(ExceptionBase):
# class ExternalImport(ExceptionBase):
# class NotImplementedForOS(ExceptionBase):
#     def __init__(self, message=None, **kwargs):
#     def format_message(self):
# 
# Path: os_vif/objects/base.py
# class VersionedObject(ovo_base.VersionedObject):
# class VersionedObjectPrintableMixin(object):
#     OBJ_PROJECT_NAMESPACE = 'os_vif'
#     def __str__(self):


# Path: os_vif/objects/host_info.py
from oslo_utils import versionutils
from oslo_versionedobjects import base
from oslo_versionedobjects import fields
from os_vif import exception
from os_vif.objects import base as osv_base

                           max_version=max_version)


@base.VersionedObjectRegistry.register
class HostPortProfileInfo(osv_base.VersionedObject,
                          base.ComparableVersionedObject,
                          osv_base.VersionedObjectPrintableMixin):
    """
    Class describing a PortProfile class and its supported versions
    """
    # Version 1.0: Initial version
    VERSION = "1.0"

    fields = {
        # object name of the subclass of os_vif.objects.vif.VIFPortProfileBase
        "profile_object_name": fields.StringField(),

        # String representing the earliest version of @name
        # that the plugin understands
        "min_version": fields.StringField(),

        # String representing the latest version of @name
        # that the plugin understands
        "max_version": fields.StringField(),
    }

    def get_common_version(self):
        return _get_common_version(self.profile_object_name,
                                   self.max_version,
                                   self.min_version,

                                   exception.NoMatchingPortProfileClass,