config/sysinv/sysinv/sysinv/sysinv/db/sqlalchemy/migrate_repo/versions/075_ptp.py

80 lines
2.2 KiB
Python

########################################################################
#
# Copyright (c) 2018 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
########################################################################
import uuid
from datetime import datetime
from sqlalchemy import Integer, String, Boolean, DateTime
from sqlalchemy import Column, MetaData, Table, ForeignKey
ENGINE = 'InnoDB'
CHARSET = 'utf8'
def _populate_ptp_table(migrate_engine, meta, ptp, i_system):
"""This function inserts all the initial data about journals,
into the ptp table.
"""
sys = list(i_system.select().where(i_system.c.uuid is not None).execute())
if len(sys) > 0:
ptp_insert = ptp.insert()
ptp_uuid = str(uuid.uuid4())
values = {'created_at': datetime.now(),
'updated_at': None,
'deleted_at': None,
'uuid': ptp_uuid,
'enabled': False,
'mode': 'hardware',
'transport': 'l2',
'mechanism': 'e2e',
'system_id': sys[0].id,
}
ptp_insert.execute(values)
def upgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
i_system = Table('i_system', meta, autoload=True)
ptp = Table(
'ptp',
meta,
Column('created_at', DateTime),
Column('updated_at', DateTime),
Column('deleted_at', DateTime),
Column('id', Integer, primary_key=True, nullable=False),
Column('uuid', String(36), unique=True),
Column('enabled', Boolean, default=False),
Column('mode', String(16), default='hardware'),
Column('transport', String(4), default='l2'),
Column('mechanism', String(4), default='e2e'),
Column('system_id', Integer,
ForeignKey('i_system.id', ondelete="CASCADE"),
nullable=True),
mysql_engine=ENGINE,
mysql_charset=CHARSET,
)
ptp.create()
# Populate the new ptp table with the initial data
_populate_ptp_table(migrate_engine, meta, ptp, i_system)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
ptp = Table('ptp', meta, autoload=True)
ptp.drop()