3c1709c7e950d5ea4ac1ed5f014b8c4e47909a58
[pti/o2.git] / o2dms / adapter / orm.py
1 # Copyright (C) 2021 Wind River Systems, Inc.\r
2 #\r
3 #  Licensed under the Apache License, Version 2.0 (the "License");\r
4 #  you may not use this file except in compliance with the License.\r
5 #  You may obtain a copy of the License at\r
6 #\r
7 #      http://www.apache.org/licenses/LICENSE-2.0\r
8 #\r
9 #  Unless required by applicable law or agreed to in writing, software\r
10 #  distributed under the License is distributed on an "AS IS" BASIS,\r
11 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12 #  See the License for the specific language governing permissions and\r
13 #  limitations under the License.\r
14 \r
15 from retry import retry\r
16 from sqlalchemy import (\r
17     Table,\r
18     MetaData,\r
19     Column,\r
20     Integer,\r
21     String,\r
22     Text,\r
23     # Date,\r
24     DateTime,\r
25     # ForeignKey,\r
26     # engine,\r
27     # event,\r
28     exc\r
29 )\r
30 \r
31 from sqlalchemy.orm import mapper\r
32 from o2dms.domain import dms as dmsModel\r
33 \r
34 from o2common.helper import o2logging\r
35 logger = o2logging.get_logger(__name__)\r
36 \r
37 metadata = MetaData()\r
38 \r
39 nfDeploymentDesc = Table(\r
40     "nfDeploymentDesc",\r
41     metadata,\r
42     Column("updatetime", DateTime),\r
43     Column("createtime", DateTime),\r
44     Column("hash", String(255)),\r
45     Column("version_number", Integer),\r
46 \r
47     Column("id", String(255), primary_key=True),\r
48     Column("deploymentManagerId", String(255)),\r
49     Column("name", String(255)),\r
50     Column("description", String(255)),\r
51     Column("inputParams", Text()),\r
52     Column("outputParams", String(255)),\r
53     Column("artifactRepoUrl", String(255)),\r
54     Column("artifactName", String(255)),\r
55     # Column("extensions", String(1024))\r
56 )\r
57 \r
58 nfDeployment = Table(\r
59     "nfDeployment",\r
60     metadata,\r
61     Column("updatetime", DateTime),\r
62     Column("createtime", DateTime),\r
63     Column("hash", String(255)),\r
64     Column("version_number", Integer),\r
65 \r
66     Column("id", String(255), primary_key=True),\r
67     Column("deploymentManagerId", String(255)),\r
68     Column("name", String(255)),\r
69     Column("description", String(255)),\r
70     Column("descriptorId", String(255)),\r
71     Column("parentDeploymentId", String(255)),\r
72     Column("status", Integer)\r
73 )\r
74 \r
75 nfOCloudVResource = Table(\r
76     "nfOcloudVRes",\r
77     metadata,\r
78     Column("updatetime", DateTime),\r
79     Column("createtime", DateTime),\r
80     Column("hash", String(255)),\r
81     Column("version_number", Integer),\r
82 \r
83     Column("id", String(255), primary_key=True),\r
84     Column("deploymentManagerId", String(255)),\r
85     Column("name", String(255)),\r
86     Column("description", String(255)),\r
87     Column("descriptorId", String(255)),\r
88     Column("vresourceType", String(255)),\r
89     Column("status", Integer),\r
90     Column("metadata", String(2048)),\r
91     Column("nfDeploymentId", String(255))\r
92 )\r
93 \r
94 \r
95 @retry((exc.IntegrityError), tries=3, delay=2)\r
96 def wait_for_metadata_ready(engine):\r
97     # wait for mapper ready\r
98     metadata.create_all(engine, checkfirst=True)\r
99     logger.info("metadata is ready")\r
100 \r
101 \r
102 def start_o2dms_mappers(engine=None):\r
103     logger.info("Starting O2 DMS mappers")\r
104 \r
105     mapper(dmsModel.NfDeploymentDesc, nfDeploymentDesc)\r
106     mapper(dmsModel.NfDeployment, nfDeployment)\r
107     mapper(dmsModel.NfOCloudVResource, nfOCloudVResource)\r
108 \r
109     if engine is not None:\r
110         wait_for_metadata_ready(engine)\r