X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2dms%2Fadapter%2Form.py;fp=o2dms%2Fadapter%2Form.py;h=3c1709c7e950d5ea4ac1ed5f014b8c4e47909a58;hb=f3aaeb6d1dcf62b7ebb0554aa2004e8f46f8a72a;hp=1fa808b6762213a9dabf3a7cea5996a10f95e921;hpb=659a526fb149407f1bc7c598e1943195915dcbd6;p=pti%2Fo2.git diff --git a/o2dms/adapter/orm.py b/o2dms/adapter/orm.py index 1fa808b..3c1709c 100644 --- a/o2dms/adapter/orm.py +++ b/o2dms/adapter/orm.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +from retry import retry from sqlalchemy import ( Table, MetaData, @@ -24,6 +25,7 @@ from sqlalchemy import ( # ForeignKey, # engine, # event, + exc ) from sqlalchemy.orm import mapper @@ -90,6 +92,13 @@ nfOCloudVResource = Table( ) +@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_o2dms_mappers(engine=None): logger.info("Starting O2 DMS mappers") @@ -98,4 +107,4 @@ def start_o2dms_mappers(engine=None): mapper(dmsModel.NfOCloudVResource, nfOCloudVResource) if engine is not None: - metadata.create_all(engine, checkfirst=True) + wait_for_metadata_ready(engine)