Add tox
[pti/o2.git] / o2ims / adapter / orm.py
1 # Copyright (C) 2021 Wind River Systems, Inc.\r
2 #\r
3 #  Licensed under the Apache License, Version 2.0 (the "License");\r
4 #  you may not use this file except in compliance with the License.\r
5 #  You may obtain a copy of the License at\r
6 #\r
7 #      http://www.apache.org/licenses/LICENSE-2.0\r
8 #\r
9 #  Unless required by applicable law or agreed to in writing, software\r
10 #  distributed under the License is distributed on an "AS IS" BASIS,\r
11 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12 #  See the License for the specific language governing permissions and\r
13 #  limitations under the License.\r
14 \r
15 import logging\r
16 \r
17 from sqlalchemy import (\r
18     Table,\r
19     MetaData,\r
20     Column,\r
21     # Integer,\r
22     String,\r
23     # Date,\r
24     ForeignKey,\r
25     # event,\r
26 )\r
27 \r
28 from sqlalchemy.orm import mapper, relationship\r
29 # from sqlalchemy.sql.expression import true\r
30 \r
31 from o2ims.domain import ocloud as ocloudModel\r
32 \r
33 logger = logging.getLogger(__name__)\r
34 \r
35 metadata = MetaData()\r
36 \r
37 ocloud = Table(\r
38     "ocloud",\r
39     metadata,\r
40     Column("oCloudId", String(255), primary_key=True),\r
41     Column("name", String(255)),\r
42     Column("description", String(255)),\r
43     Column("infrastructureManagementServiceEndpoint", String(255))\r
44 )\r
45 \r
46 resourcepool = Table(\r
47     "resourcepool",\r
48     metadata,\r
49     Column("resourcePoolId", String(255), primary_key=True),\r
50     Column("name", String(255)),\r
51     Column("location", String(255)),\r
52     Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
53     # Column("extensions", String(1024))\r
54 )\r
55 \r
56 resourcetype = Table(\r
57     "resourcetype",\r
58     metadata,\r
59     Column("resourceTypeId", String(255), primary_key=True),\r
60     Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
61     Column("name", String(255)),\r
62 )\r
63 \r
64 resource = Table(\r
65     "resource",\r
66     metadata,\r
67     Column("resourceId", String(255), primary_key=True),\r
68     Column("parentId", String(255)),\r
69     Column("resourceTypeId", ForeignKey("resourcetype.resourceTypeId")),\r
70     Column("resourcePoolId", ForeignKey("resourcepool.resourcePoolId")),\r
71     Column("oCloudId", ForeignKey("ocloud.oCloudId"))\r
72 )\r
73 \r
74 deploymentmanager = Table(\r
75     "deploymentmanager",\r
76     metadata,\r
77     Column("deploymentManagerId", String(255), primary_key=True),\r
78     Column("name", String(255)),\r
79     Column("deploymentManagementServiceEndpoint", String(255)),\r
80     Column("oCloudId", ForeignKey("ocloud.oCloudId"))\r
81 )\r
82 \r
83 \r
84 def start_o2ims_mappers():\r
85     logger.info("Starting O2 IMS mappers")\r
86     dm_mapper = mapper(ocloudModel.DeploymentManager, deploymentmanager)\r
87     resourcepool_mapper = mapper(ocloudModel.ResourcePool, resourcepool)\r
88     resourcetype_mapper = mapper(ocloudModel.ResourceType, resourcetype)\r
89     # resource_mapper = mapper(ocloudModel.Resource, resource)\r
90     mapper(\r
91         ocloudModel.Ocloud,\r
92         ocloud,\r
93         properties={\r
94             "deploymentManagers": relationship(dm_mapper),\r
95             "resourceTypes": relationship(resourcetype_mapper),\r
96             "resourcePools": relationship(resourcepool_mapper)\r
97         })\r