Add framework and apiserver
[pti/o2.git] / src / o2ims / adapter / orm.py
diff --git a/src/o2ims/adapter/orm.py b/src/o2ims/adapter/orm.py
new file mode 100644 (file)
index 0000000..6cf9847
--- /dev/null
@@ -0,0 +1,97 @@
+# Copyright (C) 2021 Wind River Systems, Inc.\r
+#\r
+#  Licensed under the Apache License, Version 2.0 (the "License");\r
+#  you may not use this file except in compliance with the License.\r
+#  You may obtain a copy of the License at\r
+#\r
+#      http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+#  Unless required by applicable law or agreed to in writing, software\r
+#  distributed under the License is distributed on an "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+#  See the License for the specific language governing permissions and\r
+#  limitations under the License.\r
+\r
+import logging\r
+\r
+from sqlalchemy import (\r
+    Table,\r
+    MetaData,\r
+    Column,\r
+    Integer,\r
+    String,\r
+    Date,\r
+    ForeignKey,\r
+    event,\r
+)\r
+\r
+from sqlalchemy.orm import mapper, relationship\r
+from sqlalchemy.sql.expression import true\r
+\r
+from o2ims.domain import ocloud as ocloudModel\r
+\r
+logger = logging.getLogger(__name__)\r
+\r
+metadata = MetaData()\r
+\r
+ocloud = Table(\r
+    "ocloud",\r
+    metadata,\r
+    Column("oCloudId", String(255), primary_key=True),\r
+    Column("name", String(255)),\r
+    Column("description", String(255)),\r
+    Column("infrastructureManagementServiceEndpoint", String(255))\r
+)\r
+\r
+resourcepool = Table(\r
+    "resourcepool",\r
+    metadata,\r
+    Column("resourcePoolId", String(255), primary_key=True),\r
+    Column("name", String(255)),\r
+    Column("location", String(255)),\r
+    Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
+    # Column("extensions", String(1024))\r
+)\r
+\r
+resourcetype = Table(\r
+    "resourcetype",\r
+    metadata,\r
+    Column("resourceTypeId", String(255), primary_key=True),\r
+    Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
+    Column("name", String(255)),\r
+)\r
+\r
+resource = Table(\r
+    "resource",\r
+    metadata,\r
+    Column("resourceId", String(255), primary_key=True),\r
+    Column("parentId", String(255)),\r
+    Column("resourceTypeId", ForeignKey("resourcetype.resourceTypeId")),\r
+    Column("resourcePoolId", ForeignKey("resourcepool.resourcePoolId")),\r
+    Column("oCloudId", ForeignKey("ocloud.oCloudId"))\r
+)\r
+\r
+deploymentmanager = Table(\r
+    "deploymentmanager",\r
+    metadata,\r
+    Column("deploymentManagerId", String(255), primary_key=True),\r
+    Column("name", String(255)),\r
+    Column("deploymentManagementServiceEndpoint", String(255)),\r
+    Column("oCloudId", ForeignKey("ocloud.oCloudId"))\r
+)\r
+\r
+\r
+def start_o2ims_mappers():\r
+    logger.info("Starting O2 IMS mappers")\r
+    dm_mapper = mapper(ocloudModel.DeploymentManager, deploymentmanager)\r
+    resourcepool_mapper = mapper(ocloudModel.ResourcePool, resourcepool)\r
+    resourcetype_mapper = mapper(ocloudModel.ResourceType, resourcetype)\r
+    resource_mapper = mapper(ocloudModel.Resource, resource)\r
+    ocloud_mapper = mapper(\r
+        ocloudModel.Ocloud,\r
+        ocloud,\r
+        properties={\r
+            "deploymentManagers": relationship(dm_mapper),\r
+            "resourceTypes": relationship(resourcetype_mapper),\r
+            "resourcePools": relationship(resourcepool_mapper)\r
+        })\r