¡@

Home 

OpenStack Study: models.py

OpenStack Index

**** CubicPower OpenStack Study ****

# Copyright 2014 Brocade Communications System, Inc.

# All rights reserved.

#

# 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.

#

# Authors:

# Shiv Haris (sharis@brocade.com)

# Varma Bhupatiraju (vbhupati@#brocade.com)

"""Brocade specific database schema/model."""

import sqlalchemy as sa

from neutron.db import model_base

from neutron.db import models_v2

**** CubicPower OpenStack Study ****

class ML2_BrocadeNetwork(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):

"""Schema for brocade network."""

vlan = sa.Column(sa.String(10))

segment_id = sa.Column(sa.String(36))

network_type = sa.Column(sa.String(10))

**** CubicPower OpenStack Study ****

class ML2_BrocadePort(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):

"""Schema for brocade port."""

network_id = sa.Column(sa.String(36),

sa.ForeignKey("ml2_brocadenetworks.id"),

nullable=False)

admin_state_up = sa.Column(sa.Boolean, nullable=False)

physical_interface = sa.Column(sa.String(36))

vlan_id = sa.Column(sa.String(36))

**** CubicPower OpenStack Study ****

def create_network(context, net_id, vlan, segment_id, network_type, tenant_id):

    """Create a brocade specific network/port-profiles."""

    # only network_type of vlan is supported

    session = context.session

    with session.begin(subtransactions=True):

        net = get_network(context, net_id, None)

        if not net:

            net = ML2_BrocadeNetwork(id=net_id, vlan=vlan,

                                     segment_id=segment_id,

                                     network_type='vlan',

                                     tenant_id=tenant_id)

            session.add(net)

    return net

**** CubicPower OpenStack Study ****

def delete_network(context, net_id):

    """Delete a brocade specific network/port-profiles."""

    session = context.session

    with session.begin(subtransactions=True):

        net = get_network(context, net_id, None)

        if net:

            session.delete(net)

**** CubicPower OpenStack Study ****

def get_network(context, net_id, fields=None):

    """Get brocade specific network, with vlan extension."""

    session = context.session

    return session.query(ML2_BrocadeNetwork).filter_by(id=net_id).first()

**** CubicPower OpenStack Study ****

def get_networks(context, filters=None, fields=None):

    """Get all brocade specific networks."""

    session = context.session

    return session.query(ML2_BrocadeNetwork).all()

**** CubicPower OpenStack Study ****

def create_port(context, port_id, network_id, physical_interface,

                vlan_id, tenant_id, admin_state_up):

    """Create a brocade specific port, has policy like vlan."""

    session = context.session

    with session.begin(subtransactions=True):

        port = get_port(context, port_id)

        if not port:

            port = ML2_BrocadePort(id=port_id,

                                   network_id=network_id,

                                   physical_interface=physical_interface,

                                   vlan_id=vlan_id,

                                   admin_state_up=admin_state_up,

                                   tenant_id=tenant_id)

            session.add(port)

    return port

**** CubicPower OpenStack Study ****

def get_port(context, port_id):

    """get a brocade specific port."""

    session = context.session

    return session.query(ML2_BrocadePort).filter_by(id=port_id).first()

**** CubicPower OpenStack Study ****

def get_ports(context, network_id=None):

    """get a brocade specific port."""

    session = context.session

    return session.query(ML2_BrocadePort).filter_by(

        network_id=network_id).all()

**** CubicPower OpenStack Study ****

def delete_port(context, port_id):

    """delete brocade specific port."""

    session = context.session

    with session.begin(subtransactions=True):

        port = get_port(context, port_id)

        if port:

            session.delete(port)

**** CubicPower OpenStack Study ****

def update_port_state(context, port_id, admin_state_up):

    """Update port attributes."""

    session = context.session

    with session.begin(subtransactions=True):

        session.query(ML2_BrocadePort).filter_by(

            id=port_id).update({'admin_state_up': admin_state_up})