1 # Copyright (C) 2021 Wind River Systems, Inc.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 # from typing_extensions import Required
16 from retry import retry
17 from sqlalchemy import (
34 from sqlalchemy.orm import mapper, relationship
35 # from sqlalchemy.sql.sqltypes import Integer
37 from o2ims.domain import ocloud as ocloudModel
38 from o2ims.domain import subscription_obj as subModel
39 from o2ims.domain import configuration_obj as confModel
40 from o2ims.domain.resource_type import ResourceTypeEnum
42 from o2common.helper import o2logging
43 logger = o2logging.get_logger(__name__)
50 Column("updatetime", DateTime),
51 Column("createtime", DateTime),
52 Column("hash", String(255)),
53 Column("version_number", Integer),
55 Column("oCloudId", String(255), primary_key=True),
56 Column("globalcloudId", String(255)),
57 Column("name", String(255)),
58 Column("description", String(255)),
59 Column("infrastructureManagementServiceEndpoint", String(255))
60 # Column("extensions", String(1024))
66 Column("updatetime", DateTime),
67 Column("createtime", DateTime),
68 Column("hash", String(255)),
70 Column("resourceTypeId", String(255), primary_key=True),
71 Column("resourceTypeEnum", Enum(
72 ResourceTypeEnum, native_enum=False), nullable=False),
73 Column("oCloudId", ForeignKey("ocloud.oCloudId")),
74 Column("name", String(255)),
75 Column("vendor", String(255)),
76 Column("model", String(255)),
77 Column("version", String(255)),
78 Column("description", String(255)),
79 # Column("extensions", String(1024))
85 Column("updatetime", DateTime),
86 Column("createtime", DateTime),
87 Column("hash", String(255)),
88 Column("version_number", Integer),
90 Column("resourcePoolId", String(255), primary_key=True),
91 Column("oCloudId", ForeignKey("ocloud.oCloudId")),
92 Column("globalLocationId", String(255)),
93 Column("name", String(255)),
94 Column("location", String(255)),
95 Column("description", String(255)),
96 # Column("resources", String(1024))
97 # Column("extensions", String(1024))
103 Column("updatetime", DateTime),
104 Column("createtime", DateTime),
105 Column("hash", String(255)),
106 Column("version_number", Integer),
108 Column("resourceId", String(255), primary_key=True),
109 Column("resourceTypeId", ForeignKey("resourcetype.resourceTypeId")),
110 Column("resourcePoolId", ForeignKey("resourcepool.resourcePoolId")),
111 Column("name", String(255)),
112 # Column("globalAssetId", String(255)),
113 Column("parentId", String(255)),
114 Column("description", String(255)),
115 Column("elements", Text())
116 # Column("extensions", String(1024))
119 deploymentmanager = Table(
122 Column("updatetime", DateTime),
123 Column("createtime", DateTime),
124 Column("hash", String(255)),
125 Column("version_number", Integer),
127 Column("deploymentManagerId", String(255), primary_key=True),
128 Column("oCloudId", ForeignKey("ocloud.oCloudId")),
129 Column("name", String(255)),
130 Column("description", String(255)),
131 Column("deploymentManagementServiceEndpoint", String(255)),
132 Column("supportedLocations", String(255)),
133 Column("capabilities", String(255)),
134 Column("capacity", String(255)),
135 Column("profile", Text())
136 # Column("extensions", String(1024))
139 subscription = Table(
142 Column("updatetime", DateTime),
143 Column("createtime", DateTime),
144 Column("hash", String(255)),
145 Column("version_number", Integer),
147 Column("subscriptionId", String(255), primary_key=True),
148 Column("callback", String(255)),
149 Column("consumerSubscriptionId", String(255)),
150 Column("filter", String(255)),
153 configuration = Table(
156 Column("updatetime", DateTime),
157 Column("createtime", DateTime),
159 Column("configurationId", String(255), primary_key=True),
160 Column("conftype", String(255)),
161 Column("callback", String(255)),
162 Column("status", String(255)),
163 Column("comments", String(255)),
167 @retry((exc.IntegrityError), tries=3, delay=2)
168 def wait_for_metadata_ready(engine):
169 # wait for mapper ready
170 metadata.create_all(engine, checkfirst=True)
171 logger.info("metadata is ready")
174 def start_o2ims_mappers(engine=None):
175 logger.info("Starting O2 IMS mappers")
177 dm_mapper = mapper(ocloudModel.DeploymentManager, deploymentmanager)
178 resourcepool_mapper = mapper(ocloudModel.ResourcePool, resourcepool)
179 resourcetype_mapper = mapper(ocloudModel.ResourceType, resourcetype)
184 "deploymentManagers": relationship(dm_mapper),
185 "resourceTypes": relationship(resourcetype_mapper),
186 "resourcePools": relationship(resourcepool_mapper)
189 ocloudModel.Resource,
192 "resourceTypes": relationship(resourcetype_mapper),
193 "resourcePools": relationship(resourcepool_mapper)
196 mapper(subModel.Subscription, subscription)
197 mapper(confModel.Configuration, configuration)
199 if engine is not None:
200 wait_for_metadata_ready(engine)