6c4a67851e46d24849779cb7563ebeb91de99de4
[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 # from typing_extensions import Required\r
16 from sqlalchemy import (\r
17     Table,\r
18     MetaData,\r
19     Column,\r
20     Integer,\r
21     String,\r
22     Text,\r
23     Enum,\r
24     # Date,\r
25     DateTime,\r
26     ForeignKey,\r
27     # Boolean,\r
28     # engine,\r
29     # event,\r
30 )\r
31 \r
32 from sqlalchemy.orm import mapper, relationship\r
33 # from sqlalchemy.sql.sqltypes import Integer\r
34 \r
35 from o2ims.domain import ocloud as ocloudModel\r
36 from o2ims.domain import subscription_obj as subModel\r
37 from o2ims.domain import configuration_obj as confModel\r
38 from o2ims.domain.resource_type import ResourceTypeEnum\r
39 \r
40 from o2common.helper import o2logging\r
41 logger = o2logging.get_logger(__name__)\r
42 \r
43 metadata = MetaData()\r
44 \r
45 ocloud = Table(\r
46     "ocloud",\r
47     metadata,\r
48     Column("updatetime", DateTime),\r
49     Column("createtime", DateTime),\r
50     Column("hash", String(255)),\r
51     Column("version_number", Integer),\r
52 \r
53     Column("oCloudId", String(255), primary_key=True),\r
54     Column("globalcloudId", String(255)),\r
55     Column("name", String(255)),\r
56     Column("description", String(255)),\r
57     Column("infrastructureManagementServiceEndpoint", String(255))\r
58     # Column("extensions", String(1024))\r
59 )\r
60 \r
61 resourcetype = Table(\r
62     "resourcetype",\r
63     metadata,\r
64     Column("updatetime", DateTime),\r
65     Column("createtime", DateTime),\r
66     Column("hash", String(255)),\r
67 \r
68     Column("resourceTypeId", String(255), primary_key=True),\r
69     Column("resourceTypeEnum", Enum(\r
70         ResourceTypeEnum, native_enum=False), nullable=False),\r
71     Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
72     Column("name", String(255)),\r
73     Column("vendor", String(255)),\r
74     Column("model", String(255)),\r
75     Column("version", String(255)),\r
76     Column("description", String(255)),\r
77     # Column("extensions", String(1024))\r
78 )\r
79 \r
80 resourcepool = Table(\r
81     "resourcepool",\r
82     metadata,\r
83     Column("updatetime", DateTime),\r
84     Column("createtime", DateTime),\r
85     Column("hash", String(255)),\r
86     Column("version_number", Integer),\r
87 \r
88     Column("resourcePoolId", String(255), primary_key=True),\r
89     Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
90     Column("globalLocationId", String(255)),\r
91     Column("name", String(255)),\r
92     Column("location", String(255)),\r
93     Column("description", String(255)),\r
94     # Column("resources", String(1024))\r
95     # Column("extensions", String(1024))\r
96 )\r
97 \r
98 resource = Table(\r
99     "resource",\r
100     metadata,\r
101     Column("updatetime", DateTime),\r
102     Column("createtime", DateTime),\r
103     Column("hash", String(255)),\r
104     Column("version_number", Integer),\r
105 \r
106     Column("resourceId", String(255), primary_key=True),\r
107     Column("resourceTypeId", ForeignKey("resourcetype.resourceTypeId")),\r
108     Column("resourcePoolId", ForeignKey("resourcepool.resourcePoolId")),\r
109     Column("name", String(255)),\r
110     # Column("globalAssetId", String(255)),\r
111     Column("parentId", String(255)),\r
112     Column("description", String(255)),\r
113     Column("elements", Text())\r
114     # Column("extensions", String(1024))\r
115 )\r
116 \r
117 deploymentmanager = Table(\r
118     "deploymentmanager",\r
119     metadata,\r
120     Column("updatetime", DateTime),\r
121     Column("createtime", DateTime),\r
122     Column("hash", String(255)),\r
123     Column("version_number", Integer),\r
124 \r
125     Column("deploymentManagerId", String(255), primary_key=True),\r
126     Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
127     Column("name", String(255)),\r
128     Column("description", String(255)),\r
129     Column("deploymentManagementServiceEndpoint", String(255)),\r
130     Column("supportedLocations", String(255)),\r
131     Column("capabilities", String(255)),\r
132     Column("capacity", String(255)),\r
133     # Column("extensions", String(1024))\r
134 )\r
135 \r
136 subscription = Table(\r
137     "subscription",\r
138     metadata,\r
139     Column("updatetime", DateTime),\r
140     Column("createtime", DateTime),\r
141     Column("hash", String(255)),\r
142     Column("version_number", Integer),\r
143 \r
144     Column("subscriptionId", String(255), primary_key=True),\r
145     Column("callback", String(255)),\r
146     Column("consumerSubscriptionId", String(255)),\r
147     Column("filter", String(255)),\r
148 )\r
149 \r
150 configuration = Table(\r
151     "configuration",\r
152     metadata,\r
153     Column("updatetime", DateTime),\r
154     Column("createtime", DateTime),\r
155 \r
156     Column("configurationId", String(255), primary_key=True),\r
157     Column("conftype", String(255)),\r
158     Column("callback", String(255)),\r
159     Column("status", String(255)),\r
160     Column("comments", String(255)),\r
161 )\r
162 \r
163 \r
164 def start_o2ims_mappers(engine=None):\r
165     logger.info("Starting O2 IMS mappers")\r
166 \r
167     dm_mapper = mapper(ocloudModel.DeploymentManager, deploymentmanager)\r
168     resourcepool_mapper = mapper(ocloudModel.ResourcePool, resourcepool)\r
169     resourcetype_mapper = mapper(ocloudModel.ResourceType, resourcetype)\r
170     mapper(\r
171         ocloudModel.Ocloud,\r
172         ocloud,\r
173         properties={\r
174             "deploymentManagers": relationship(dm_mapper),\r
175             "resourceTypes": relationship(resourcetype_mapper),\r
176             "resourcePools": relationship(resourcepool_mapper)\r
177         })\r
178     mapper(\r
179         ocloudModel.Resource,\r
180         resource,\r
181         properties={\r
182             "resourceTypes": relationship(resourcetype_mapper),\r
183             "resourcePools": relationship(resourcepool_mapper)\r
184         }\r
185     )\r
186     mapper(subModel.Subscription, subscription)\r
187     mapper(confModel.Configuration, configuration)\r
188 \r
189     if engine is not None:\r
190         metadata.create_all(engine, checkfirst=True)\r