-from flask_restx import Namespace
+# Copyright (C) 2021-2022 Wind River Systems, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from flask import request
+from flask_restx import Resource, fields
-api_ims_inventory_v1 = Namespace(
- "O2IMS_Inventory",
- description='IMS Inventory related operations.')
+from o2common.views.route import O2Namespace
-api_provision_v1 = Namespace(
+
+api_ims_inventory = O2Namespace(
+ "O2IMS-InfrastructureInventory",
+ description='O2 IMS Inventory related operations.')
+
+api_provision_v1 = O2Namespace(
"PROVISION",
description='Provision related operations.')
-api_monitoring_v1 = Namespace(
- "O2IMS_InfrastructureMonitoring",
+api_ims_monitoring = O2Namespace(
+ "O2IMS-InfrastructureMonitoring",
description='O2 IMS Monitoring related operations.')
+
+
+@api_ims_inventory.route('/api_versions')
+class InventoryVersion(Resource):
+ api_version = api_ims_inventory.model(
+ 'InventoryApiVersionStructure',
+ {
+ 'version': fields.String(
+ required=True,
+ example='1.0.0',
+ description='Identifies a supported version.'
+ )
+ },
+ mask='{version,}'
+ )
+ model = api_ims_inventory.model(
+ "InventoryAPIVersion",
+ {
+ 'uriPrefix': fields.String(
+ required=True,
+ example='https://128.224.115.36:30205/' +
+ 'o2ims-infrastructureInventory',
+ description='Specifies the URI prefix for the API'),
+ 'apiVersions': fields.List(
+ fields.Nested(api_version),
+ example=[{'version': '1.0.0'}],
+ description='Version(s) supported for the API ' +
+ 'signaled by the uriPrefix attribute.'),
+ },
+ mask='{uriPrefix,apiVersions}'
+ )
+
+ @api_ims_inventory.doc('Get Inventory Version')
+ @api_ims_inventory.marshal_with(model)
+ def get(self):
+ return {
+ 'uriPrefix': request.base_url.rsplit('/', 1)[0],
+ 'apiVersions': [{
+ 'version': '1.0.0',
+ # 'isDeprecated': 'False',
+ # 'retirementDate': ''
+ }]
+ }
+
+
+@api_ims_monitoring.route('/api_versions')
+class MonitoringVersion(Resource):
+ api_version = api_ims_inventory.model(
+ 'MonitoringApiVersionStructure',
+ {
+ 'version': fields.String(
+ required=True,
+ example='1.0.0',
+ description='Identifies a supported version.'
+ )
+ },
+ mask='{version,}'
+ )
+ model = api_ims_inventory.model(
+ "MonitoringAPIVersion",
+ {
+ 'uriPrefix': fields.String(
+ required=True,
+ example='https://128.224.115.36:30205/' +
+ 'o2ims-infrastructureMonitoring',
+ description='Specifies the URI prefix for the API'),
+ 'apiVersions': fields.List(
+ fields.Nested(api_version),
+ example=[{'version': '1.0.0'}],
+ description='Version(s) supported for the API ' +
+ 'signaled by the uriPrefix attribute.'),
+ },
+ mask='{uriPrefix,apiVersions}'
+ )
+
+ @api_ims_monitoring.doc('Get Monitoring Version')
+ @api_ims_monitoring.marshal_with(model)
+ def get(self):
+ return {
+ 'uriPrefix': request.base_url.rsplit('/', 1)[0],
+ 'apiVersions': [{
+ 'version': '1.0.0',
+ # 'isDeprecated': 'False',
+ # 'retirementDate': ''
+ }]
+ }