diff options
Diffstat (limited to 'cyborg_enhancement/mitaka_version/cyborg/cyborg/db/sqlalchemy/models.py')
-rw-r--r-- | cyborg_enhancement/mitaka_version/cyborg/cyborg/db/sqlalchemy/models.py | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/cyborg_enhancement/mitaka_version/cyborg/cyborg/db/sqlalchemy/models.py b/cyborg_enhancement/mitaka_version/cyborg/cyborg/db/sqlalchemy/models.py new file mode 100644 index 0000000..5a301c4 --- /dev/null +++ b/cyborg_enhancement/mitaka_version/cyborg/cyborg/db/sqlalchemy/models.py @@ -0,0 +1,132 @@ +# Copyright 2017 Huawei Technologies Co.,LTD. +# 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. + +"""SQLAlchemy models for accelerator service.""" + +from oslo_db import options as db_options +from oslo_db.sqlalchemy import models +import six.moves.urllib.parse as urlparse +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy import Column, String, Integer, Boolean, ForeignKey, Index +from sqlalchemy import schema +from sqlalchemy import Text + +from cyborg.common import paths +from cyborg.conf import CONF + + +_DEFAULT_SQL_CONNECTION = 'sqlite:///' + paths.state_path_def('cyborg.sqlite') +db_options.set_defaults(CONF, connection=_DEFAULT_SQL_CONNECTION) + + +def table_args(): + engine_name = urlparse.urlparse(CONF.database.connection).scheme + if engine_name == 'mysql': + return {'mysql_engine': CONF.database.mysql_engine, + 'mysql_charset': "utf8"} + return None + + +class CyborgBase(models.TimestampMixin, models.ModelBase): + metadata = None + + def as_dict(self): + d = {} + for c in self.__table__.columns: + d[c.name] = self[c.name] + return d + + +Base = declarative_base(cls=CyborgBase) + + +class Accelerator(Base): + """Represents the accelerators.""" + + __tablename__ = 'accelerators' + __table_args__ = ( + schema.UniqueConstraint('uuid', name='uniq_accelerators0uuid'), + table_args() + ) + + id = Column(Integer, primary_key=True) + uuid = Column(String(36), nullable=False) + name = Column(String(255), nullable=False) + description = Column(String(255), nullable=True) + project_id = Column(String(36), nullable=True) + user_id = Column(String(36), nullable=True) + device_type = Column(String(255), nullable=False) + acc_type = Column(String(255), nullable=False) + acc_capability = Column(String(255), nullable=False) + vendor_id = Column(String(255), nullable=False) + product_id = Column(String(255), nullable=False) + remotable = Column(Integer, nullable=False) + + +class Port(Base): + """Represents the ports which physical cards provided.""" + + __tablename__ = 'ports' + __table_args__ = ( + schema.UniqueConstraint('uuid', name='uniq_ports0uuid'), + table_args() + ) + + id = Column(Integer, primary_key=True) + uuid = Column(String(36), nullable=False) + computer_node = Column(String(36), nullable=False) + phy_port_name = Column(String(255), nullable=False) + pci_slot = Column(String(255), nullable=False) + vendor_id = Column(String(255), nullable=False) + product_id = Column(String(255), nullable=False) + is_used = Column(Integer, nullable=False) + accelerator_id = Column(String(36), nullable=True) + bind_instance_id = Column(String(36), nullable=True) + bind_port_id = Column(String(36), nullable=True) + device_type = Column(String(255), nullable=True) + + +class Deployable(Base): + """Represents the deployables which physical cards provided.""" + + __tablename__ = 'deployables' + __table_args__ = ( + schema.UniqueConstraint('uuid', name='uniq_deployables0uuid'), + Index('deployables_parent_uuid_idx', 'parent_uuid'), + Index('deployables_root_uuid_idx', 'root_uuid'), + # Index('deployables_accelerator_id_idx', 'accelerator_id'), + table_args() + ) + + id = Column(Integer, primary_key=True) + uuid = Column(String(36), nullable=False) + name = Column(String(36), nullable=False) + parent_uuid = Column(String(36), + ForeignKey('deployables.uuid'),nullable=True) + root_uuid = Column(String(36), + ForeignKey('deployables.uuid'), nullable=True) + pcie_address = Column(String(255), nullable=False) + host = Column(String(255), nullable=False) + board = Column(String(255), nullable=False) + vendor = Column(String(255), nullable=False) + version = Column(String(255), nullable=False) + type = Column(String(255), nullable=False) + assignable = Column(Boolean, nullable=False) + instance_uuid = Column(String(36), nullable=True) + availability = Column(String(255), nullable=False) + # accelerator_id = Column(Integer, + # ForeignKey('accelerators.id', ondelete="CASCADE"), + # nullable=False) + |