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