Add Subscription get and list API; Provide swagger openAPI doc
[pti/o2.git] / o2ims / 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 sqlalchemy import (\r
16     Table,\r
17     MetaData,\r
18     Column,\r
19     # Integer,\r
20     String,\r
21     # Date,\r
22     ForeignKey,\r
23     # engine,\r
24     # event,\r
25 )\r
26 \r
27 from sqlalchemy.orm import mapper, relationship\r
28 \r
29 from o2ims.domain import ocloud as ocloudModel\r
30 \r
31 from o2common.helper import o2logging\r
32 logger = o2logging.get_logger(__name__)\r
33 \r
34 metadata = MetaData()\r
35 \r
36 ocloud = Table(\r
37     "ocloud",\r
38     metadata,\r
39     Column("oCloudId", String(255), primary_key=True),\r
40     Column("globalcloudId", String(255)),\r
41     Column("name", String(255)),\r
42     Column("description", String(255)),\r
43     Column("infrastructureManagementServiceEndpoint", String(255))\r
44     # Column("extensions", String(1024))\r
45 )\r
46 \r
47 resourcetype = Table(\r
48     "resourcetype",\r
49     metadata,\r
50     Column("resourceTypeId", String(255), primary_key=True),\r
51     Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
52     Column("name", String(255)),\r
53     Column("vendor", String(255)),\r
54     Column("model", String(255)),\r
55     Column("version", String(255)),\r
56     Column("description", String(255)),\r
57     # Column("extensions", String(1024))\r
58 )\r
59 \r
60 resourcepool = Table(\r
61     "resourcepool",\r
62     metadata,\r
63     Column("resourcePoolId", String(255), primary_key=True),\r
64     Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
65     Column("globalLocationId", String(255)),\r
66     Column("name", String(255)),\r
67     Column("location", String(255)),\r
68     Column("description", String(255)),\r
69     # Column("resources", String(1024))\r
70     # Column("extensions", String(1024))\r
71 )\r
72 \r
73 resource = Table(\r
74     "resource",\r
75     metadata,\r
76     Column("resourceId", String(255), primary_key=True),\r
77     Column("resourceTypeId", ForeignKey("resourcetype.resourceTypeId")),\r
78     Column("resourcePoolId", ForeignKey("resourcepool.resourcePoolId")),\r
79     # Column("globalAssetId", String(255)),\r
80     # Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
81     Column("parentId", String(255)),\r
82     Column("description", String(255)),\r
83     # Column("elements", String(255))\r
84     # Column("extensions", String(1024))\r
85 )\r
86 \r
87 deploymentmanager = Table(\r
88     "deploymentmanager",\r
89     metadata,\r
90     Column("deploymentManagerId", String(255), primary_key=True),\r
91     Column("oCloudId", ForeignKey("ocloud.oCloudId")),\r
92     Column("name", String(255)),\r
93     Column("description", String(255)),\r
94     Column("deploymentManagementServiceEndpoint", String(255)),\r
95     Column("supportedLocations", String(255)),\r
96     Column("capabilities", String(255)),\r
97     Column("capacity", String(255)),\r
98     # Column("extensions", String(1024))\r
99 )\r
100 \r
101 subscription = Table(\r
102     "subscription",\r
103     metadata,\r
104     Column("subscriptionId", String(255), primary_key=True),\r
105     Column("callback", String(255)),\r
106     Column("consumerSubscriptionId", String(255)),\r
107     Column("filter", String(255)),\r
108 )\r
109 \r
110 \r
111 def start_o2ims_mappers(engine=None):\r
112     logger.info("Starting O2 IMS mappers")\r
113 \r
114     dm_mapper = mapper(ocloudModel.DeploymentManager, deploymentmanager)\r
115     resourcepool_mapper = mapper(ocloudModel.ResourcePool, resourcepool)\r
116     resourcetype_mapper = mapper(ocloudModel.ResourceType, resourcetype)\r
117     mapper(\r
118         ocloudModel.Ocloud,\r
119         ocloud,\r
120         properties={\r
121             "deploymentManagers": relationship(dm_mapper),\r
122             "resourceTypes": relationship(resourcetype_mapper),\r
123             "resourcePools": relationship(resourcepool_mapper)\r
124         })\r
125     mapper(\r
126         ocloudModel.Resource,\r
127         resource,\r
128         properties={\r
129             "resourceTypes": relationship(resourcetype_mapper),\r
130             "resourcePools": relationship(resourcepool_mapper)\r
131         }\r
132     )\r
133     mapper(ocloudModel.Subscription, subscription)\r
134 \r
135     if engine is not None:\r
136         metadata.create_all(engine)\r