Ejemplo n.º 1
0
class PortBinding(PortBindingBase):
    # Version 1.0: Initial version
    VERSION = '1.0'

    db_model = ml2_models.PortBinding

    fields = {
        'port_id': common_types.UUIDField(),
        'host': obj_fields.StringField(),
        'profile': common_types.DictOfMiscValuesField(),
        'vif_type': obj_fields.StringField(),
        'vif_details': common_types.DictOfMiscValuesField(nullable=True),
        'vnic_type': obj_fields.StringField(),
        'status': common_types.PortBindingStatusEnumField(
            default=constants.ACTIVE),
    }

    primary_keys = ['port_id', 'host']

    @classmethod
    def get_port_id_and_host(cls, context, vif_type, vnic_type, status):
        """Returns only the port_id and the host of matching registers

        This method returns only the primary keys of a "PortBinding" register,
        reducing the query complexity and increasing the retrieval speed.
        This query does not check the "PortBinding" owner or RBACs.
        """
        with cls.db_context_reader(context):
            query = context.session.query(cls.db_model.port_id,
                                          cls.db_model.host)
            query = query.filter(and_(
                cls.db_model.vif_type == vif_type,
                cls.db_model.vnic_type == vnic_type,
                cls.db_model.status == status))
            return query.all()
Ejemplo n.º 2
0
class PortBinding(PortBindingBase):
    # Version 1.0: Initial version
    VERSION = '1.0'

    db_model = ml2_models.PortBinding

    fields = {
        'port_id': common_types.UUIDField(),
        'host': obj_fields.StringField(),
        'profile': common_types.DictOfMiscValuesField(),
        'vif_type': obj_fields.StringField(),
        'vif_details': common_types.DictOfMiscValuesField(nullable=True),
        'vnic_type': obj_fields.StringField(),
        'status': common_types.PortBindingStatusEnumField(
            default=constants.ACTIVE),
    }

    primary_keys = ['port_id', 'host']