# limitations under the License.\r
\r
# from typing_extensions import Required\r
+from retry import retry\r
from sqlalchemy import (\r
Table,\r
MetaData,\r
# Date,\r
DateTime,\r
ForeignKey,\r
+ # Boolean,\r
# engine,\r
# event,\r
+ exc,\r
)\r
\r
from sqlalchemy.orm import mapper, relationship\r
\r
from o2ims.domain import ocloud as ocloudModel\r
from o2ims.domain import subscription_obj as subModel\r
+from o2ims.domain import configuration_obj as confModel\r
from o2ims.domain.resource_type import ResourceTypeEnum\r
\r
from o2common.helper import o2logging\r
Column("hash", String(255)),\r
\r
Column("resourceTypeId", String(255), primary_key=True),\r
- Column("resourceTypeEnum", Enum(ResourceTypeEnum), nullable=False),\r
+ Column("resourceTypeEnum", Enum(\r
+ ResourceTypeEnum, native_enum=False), nullable=False),\r
Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
Column("name", String(255)),\r
Column("vendor", String(255)),\r
Column("filter", String(255)),\r
)\r
\r
+configuration = Table(\r
+ "configuration",\r
+ metadata,\r
+ Column("updatetime", DateTime),\r
+ Column("createtime", DateTime),\r
+\r
+ Column("configurationId", String(255), primary_key=True),\r
+ Column("conftype", String(255)),\r
+ Column("callback", String(255)),\r
+ Column("status", String(255)),\r
+ Column("comments", String(255)),\r
+)\r
+\r
+\r
+@retry((exc.IntegrityError), tries=3, delay=2)\r
+def wait_for_metadata_ready(engine):\r
+ # wait for mapper ready\r
+ metadata.create_all(engine, checkfirst=True)\r
+ logger.info("metadata is ready")\r
+\r
\r
def start_o2ims_mappers(engine=None):\r
logger.info("Starting O2 IMS mappers")\r
}\r
)\r
mapper(subModel.Subscription, subscription)\r
+ mapper(confModel.Configuration, configuration)\r
\r
if engine is not None:\r
- metadata.create_all(engine)\r
+ wait_for_metadata_ready(engine)\r