summaryrefslogtreecommitdiffstats
path: root/cyborg_enhancement/mitaka_version/cyborg/cyborg/db/sqlalchemy/models.py
diff options
context:
space:
mode:
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.py132
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)
+