summaryrefslogtreecommitdiffstats
path: root/mock-aai/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'mock-aai/app.py')
-rw-r--r--mock-aai/app.py154
1 files changed, 154 insertions, 0 deletions
diff --git a/mock-aai/app.py b/mock-aai/app.py
new file mode 100644
index 0000000..408d3e4
--- /dev/null
+++ b/mock-aai/app.py
@@ -0,0 +1,154 @@
+"""A&AI mock application."""
+"""
+ Copyright 2023 Deutsche Telekom AG, Orange
+
+ 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 Flask
+from flask_restful import Resource, Api
+
+from resources.cloud_region import (
+ CloudRegion,
+ CloudRegionList,
+ CloudRegionRelationshipList,
+ CloudRegionRelationship,
+ Tenant,
+ TenantList,
+)
+from resources.complex import Complex, ComplexList
+from resources.customer import (
+ Customer,
+ CustomerList,
+ ServiceSubscription,
+ ServiceSubscriptionInstance,
+ ServiceSubscriptionList,
+ ServiceSubscriptionRelationship,
+ ServiceSubscriptionRelationshipList,
+ ServiceSubscriptionInstanceList,
+ ServiceSubscriptionInstanceRelationshipList,
+)
+from resources.network import Network
+from resources.vnf import Vnf, VfModule, VfModuleList
+
+app = Flask(__name__)
+api = Api(app)
+
+API_VERSIONS_SUPPORTED = ["v16", "v20", "v23", "v26"]
+
+def generate_urls_for_all_versions(endpoint_pattern: str) -> list:
+ """Helper function.
+
+ Generates list of endpoints by replacing <version> pattern for each supported API version.
+
+ Args:
+ endpoint_pattern (str): url pattern with <version> tag to be replaced
+
+ Returns:
+ list: List of string values reporesenting endpoints that are currently supported
+
+ """
+ return [endpoint_pattern.replace("<version>", api_version) for api_version in API_VERSIONS_SUPPORTED]
+
+@app.route("/reset")
+def reset() -> str:
+ """Reset endpoint.
+
+ Reset all resources.
+
+ Returns:
+ str: Empty string, it has to returns anything
+
+ """
+ CloudRegion.reset()
+ Complex.reset()
+ Customer.reset()
+ Network.reset()
+ Vnf.reset()
+ return ""
+
+
+# Cloud region resource
+api.add_resource(CloudRegionList, *generate_urls_for_all_versions("/aai/<version>/cloud-infrastructure/cloud-regions"))
+api.add_resource(
+ CloudRegion,
+ *generate_urls_for_all_versions("/aai/<version>/cloud-infrastructure/cloud-regions/cloud-region/<cloud_owner>/<cloud_region_id>"),
+)
+api.add_resource(
+ CloudRegionRelationshipList,
+ *generate_urls_for_all_versions("/aai/<version>/cloud-infrastructure/cloud-regions/cloud-region/<cloud_owner>/<cloud_region_id>/relationship-list"),
+)
+api.add_resource(
+ CloudRegionRelationship,
+ *generate_urls_for_all_versions("/aai/<version>/cloud-infrastructure/cloud-regions/cloud-region/<cloud_owner>/<cloud_region_id>/relationship-list/relationship"),
+)
+api.add_resource(
+ TenantList,
+ *generate_urls_for_all_versions("/aai/<version>/cloud-infrastructure/cloud-regions/cloud-region/<cloud_owner>/<cloud_region_id>/tenants"),
+)
+api.add_resource(
+ Tenant,
+ *generate_urls_for_all_versions("/aai/<version>/cloud-infrastructure/cloud-regions/cloud-region/<cloud_owner>/<cloud_region_id>/tenants/tenant/<tenant_id>"),
+)
+# Complex resource
+api.add_resource(ComplexList, *generate_urls_for_all_versions("/aai/<version>/cloud-infrastructure/complexes"))
+api.add_resource(
+ Complex, *generate_urls_for_all_versions("/aai/<version>/cloud-infrastructure/complexes/complex/<physical_location_id>")
+)
+# Customer resource
+api.add_resource(CustomerList, *generate_urls_for_all_versions("/aai/<version>/business/customers"))
+api.add_resource(Customer, *generate_urls_for_all_versions("/aai/<version>/business/customers/customer/<global_customer_id>"))
+api.add_resource(
+ ServiceSubscriptionList,
+ *generate_urls_for_all_versions("/aai/<version>/business/customers/customer/<global_customer_id>/service-subscriptions"),
+)
+api.add_resource(
+ ServiceSubscription,
+ *generate_urls_for_all_versions("/aai/<version>/business/customers/customer/<global_customer_id>/service-subscriptions/service-subscription/<service_type>"),
+)
+api.add_resource(
+ ServiceSubscriptionRelationshipList,
+ *generate_urls_for_all_versions("/aai/<version>/business/customers/customer/<global_customer_id>/service-subscriptions/service-subscription/<service_type>/relationship-list"),
+)
+api.add_resource(
+ ServiceSubscriptionRelationship,
+ *generate_urls_for_all_versions("/aai/<version>/business/customers/customer/<global_customer_id>/service-subscriptions/service-subscription/<service_type>/relationship-list/relationship"),
+)
+api.add_resource(
+ ServiceSubscriptionInstance,
+ *generate_urls_for_all_versions("/aai/<version>/business/customers/customer/<global_customer_id>/service-subscriptions/service-subscription/<service_type>/service-instances/service-instance/<service_instance_id>"),
+)
+api.add_resource(
+ ServiceSubscriptionInstanceList,
+ *generate_urls_for_all_versions("/aai/<version>/business/customers/customer/<global_customer_id>/service-subscriptions/service-subscription/<service_type>/service-instances"),
+)
+api.add_resource(
+ ServiceSubscriptionInstanceRelationshipList,
+ *generate_urls_for_all_versions("/aai/<version>/business/customers/customer/<global_customer_id>/service-subscriptions/service-subscription/<service_type>/service-instances/service-instance/<service_instance_id>/relationship-list"),
+)
+# VNF resource
+api.add_resource(Vnf, *generate_urls_for_all_versions("/aai/<version>/network/generic-vnfs/generic-vnf/<vnf_instance_id>"))
+api.add_resource(
+ VfModule,
+ *generate_urls_for_all_versions("/aai/<version>/network/generic-vnfs/generic-vnf/<vnf_instance_id>/vf-modules/<vf_module_instance_id>"),
+)
+api.add_resource(
+ VfModuleList,
+ *generate_urls_for_all_versions("/aai/<version>/network/generic-vnfs/generic-vnf/<vnf_instance_id>/vf-modules"),
+)
+api.add_resource(
+ Network, *generate_urls_for_all_versions("/aai/<version>/network/l3-networks/l3-network/<network_instance_id>")
+)
+
+
+if __name__ == "__main__":
+ app.run(host="0.0.0.0", debug=True)