¡@

Home 

OpenStack Study: 233_add_stats_in_compute_nodes.py

OpenStack Index

**** CubicPower OpenStack Study ****

def upgrade(engine):

    meta = MetaData()

    meta.bind = engine

    # Drop the compute_node_stats table and add a 'stats' column to

    # compute_nodes directly.  The data itself is transient and doesn't

    # need to be copied over.

    table_names = ('compute_node_stats', 'shadow_compute_node_stats')

    for table_name in table_names:

        table = Table(table_name, meta, autoload=True)

        table.drop()

    # Add a new stats column to compute nodes

    table_names = ('compute_nodes', 'shadow_compute_nodes')

    for table_name in table_names:

        table = Table(table_name, meta, autoload=True)

        stats = Column('stats', Text, default='{}')

        table.create_column(stats)

**** CubicPower OpenStack Study ****

def downgrade(engine):

    meta = MetaData()

    meta.bind = engine

    table_names = ('compute_nodes', 'shadow_compute_nodes')

    for table_name in table_names:

        table = Table(table_name, meta, autoload=True)

        table.drop_column('stats')

    if engine.name == 'mysql':

        fk_name = 'fk_compute_node_stats_compute_node_id'

    else:

        fk_name = 'compute_node_stats_compute_node_id_fkey'

    table = Table('compute_node_stats', meta,

            Column('created_at', DateTime, default=timeutils.utcnow),

            Column('updated_at', DateTime, onupdate=timeutils.utcnow),

            Column('deleted_at', DateTime),

            Column('deleted', Integer, default=0),

            Column('id', Integer, nullable=False),

            Column('key', String(255), nullable=False),

            Column('value', String(255), nullable=True),

            Column('compute_node_id', Integer,

                ForeignKey('compute_nodes.id', name=fk_name),

                index=True),

            Index('compute_node_stats_node_id_and_deleted_idx',

                  'compute_node_id', 'deleted'),

            mysql_engine='InnoDB',

            mysql_charset='utf8'

    )

    table.create()

    # shadow version has no fkey or index

    table = Table('shadow_compute_node_stats', meta,

            Column('created_at', DateTime, default=timeutils.utcnow),

            Column('updated_at', DateTime, onupdate=timeutils.utcnow),

            Column('deleted_at', DateTime),

            Column('deleted', Integer, default=0),

            Column('id', Integer, primary_key=True, nullable=False),

            Column('key', String(255), nullable=False),

            Column('value', String(255), nullable=True),

            Column('compute_node_id', Integer),

            mysql_engine='InnoDB',

            mysql_charset='utf8'

    )

    table.create()