Fix: INF-254 retry method defined on the higher level makes primary mapper defined...
[pti/o2.git] / o2dms / adapter / orm.py
index 05821dc..3c1709c 100644 (file)
 #  See the License for the specific language governing permissions and\r
 #  limitations under the License.\r
 \r
+from retry import retry\r
 from sqlalchemy import (\r
     Table,\r
     MetaData,\r
     Column,\r
     Integer,\r
     String,\r
+    Text,\r
     # Date,\r
     DateTime,\r
     # ForeignKey,\r
     # engine,\r
     # event,\r
+    exc\r
 )\r
 \r
 from sqlalchemy.orm import mapper\r
@@ -45,16 +48,63 @@ nfDeploymentDesc = Table(
     Column("deploymentManagerId", String(255)),\r
     Column("name", String(255)),\r
     Column("description", String(255)),\r
-    Column("inputParams", String(255)),\r
+    Column("inputParams", Text()),\r
     Column("outputParams", String(255)),\r
+    Column("artifactRepoUrl", String(255)),\r
+    Column("artifactName", String(255)),\r
     # Column("extensions", String(1024))\r
 )\r
 \r
+nfDeployment = Table(\r
+    "nfDeployment",\r
+    metadata,\r
+    Column("updatetime", DateTime),\r
+    Column("createtime", DateTime),\r
+    Column("hash", String(255)),\r
+    Column("version_number", Integer),\r
+\r
+    Column("id", String(255), primary_key=True),\r
+    Column("deploymentManagerId", String(255)),\r
+    Column("name", String(255)),\r
+    Column("description", String(255)),\r
+    Column("descriptorId", String(255)),\r
+    Column("parentDeploymentId", String(255)),\r
+    Column("status", Integer)\r
+)\r
+\r
+nfOCloudVResource = Table(\r
+    "nfOcloudVRes",\r
+    metadata,\r
+    Column("updatetime", DateTime),\r
+    Column("createtime", DateTime),\r
+    Column("hash", String(255)),\r
+    Column("version_number", Integer),\r
+\r
+    Column("id", String(255), primary_key=True),\r
+    Column("deploymentManagerId", String(255)),\r
+    Column("name", String(255)),\r
+    Column("description", String(255)),\r
+    Column("descriptorId", String(255)),\r
+    Column("vresourceType", String(255)),\r
+    Column("status", Integer),\r
+    Column("metadata", String(2048)),\r
+    Column("nfDeploymentId", 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_o2dms_mappers(engine=None):\r
     logger.info("Starting O2 DMS mappers")\r
 \r
     mapper(dmsModel.NfDeploymentDesc, nfDeploymentDesc)\r
+    mapper(dmsModel.NfDeployment, nfDeployment)\r
+    mapper(dmsModel.NfOCloudVResource, nfOCloudVResource)\r
 \r
     if engine is not None:\r
-        metadata.create_all(engine)\r
+        wait_for_metadata_ready(engine)\r