X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fadapter%2Form.py;h=43b48b001b6ebafeffdfb92ffbebcbfd1d91e469;hb=7b80a6162b616d1cd33d3af4367abfb8d56622d8;hp=61c3157545f6514deb5a05dc82048b25f54b7e6e;hpb=62f8863960ebd439c714b0ceed204731d9b31266;p=pti%2Fo2.git diff --git a/o2ims/adapter/orm.py b/o2ims/adapter/orm.py index 61c3157..43b48b0 100644 --- a/o2ims/adapter/orm.py +++ b/o2ims/adapter/orm.py @@ -12,23 +12,32 @@ # See the License for the specific language governing permissions and # limitations under the License. +# from typing_extensions import Required +from retry import retry from sqlalchemy import ( Table, MetaData, Column, Integer, String, + Text, + Enum, # Date, DateTime, ForeignKey, + # Boolean, # engine, # event, + exc, ) from sqlalchemy.orm import mapper, relationship # from sqlalchemy.sql.sqltypes import Integer from o2ims.domain import ocloud as ocloudModel +from o2ims.domain import subscription_obj as subModel +from o2ims.domain import configuration_obj as confModel +from o2ims.domain.resource_type import ResourceTypeEnum from o2common.helper import o2logging logger = o2logging.get_logger(__name__) @@ -59,6 +68,8 @@ resourcetype = Table( Column("hash", String(255)), Column("resourceTypeId", String(255), primary_key=True), + Column("resourceTypeEnum", Enum( + ResourceTypeEnum, native_enum=False), nullable=False), Column("oCloudId", ForeignKey("ocloud.oCloudId")), Column("name", String(255)), Column("vendor", String(255)), @@ -97,11 +108,11 @@ resource = Table( Column("resourceId", String(255), primary_key=True), Column("resourceTypeId", ForeignKey("resourcetype.resourceTypeId")), Column("resourcePoolId", ForeignKey("resourcepool.resourcePoolId")), + Column("name", String(255)), # Column("globalAssetId", String(255)), - # Column("oCloudId", ForeignKey("ocloud.oCloudId")), Column("parentId", String(255)), Column("description", String(255)), - # Column("elements", String(255)) + Column("elements", Text()) # Column("extensions", String(1024)) ) @@ -111,6 +122,7 @@ deploymentmanager = Table( Column("updatetime", DateTime), Column("createtime", DateTime), Column("hash", String(255)), + Column("version_number", Integer), Column("deploymentManagerId", String(255), primary_key=True), Column("oCloudId", ForeignKey("ocloud.oCloudId")), @@ -137,6 +149,26 @@ subscription = Table( Column("filter", String(255)), ) +configuration = Table( + "configuration", + metadata, + Column("updatetime", DateTime), + Column("createtime", DateTime), + + Column("configurationId", String(255), primary_key=True), + Column("conftype", String(255)), + Column("callback", String(255)), + Column("status", String(255)), + Column("comments", String(255)), +) + + +@retry((exc.IntegrityError), tries=3, delay=2) +def wait_for_metadata_ready(engine): + # wait for mapper ready + metadata.create_all(engine, checkfirst=True) + logger.info("metadata is ready") + def start_o2ims_mappers(engine=None): logger.info("Starting O2 IMS mappers") @@ -160,7 +192,8 @@ def start_o2ims_mappers(engine=None): "resourcePools": relationship(resourcepool_mapper) } ) - mapper(ocloudModel.Subscription, subscription) + mapper(subModel.Subscription, subscription) + mapper(confModel.Configuration, configuration) if engine is not None: - metadata.create_all(engine) + wait_for_metadata_ready(engine)