diff options
Diffstat (limited to 'components/pm-subscription-handler/pmsh_service/mod/api/services/nf_service.py')
-rw-r--r-- | components/pm-subscription-handler/pmsh_service/mod/api/services/nf_service.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/components/pm-subscription-handler/pmsh_service/mod/api/services/nf_service.py b/components/pm-subscription-handler/pmsh_service/mod/api/services/nf_service.py new file mode 100644 index 00000000..1fca766a --- /dev/null +++ b/components/pm-subscription-handler/pmsh_service/mod/api/services/nf_service.py @@ -0,0 +1,75 @@ +# ============LICENSE_START=================================================== +# Copyright (C) 2021 Nordix Foundation. +# ============================================================================ +# 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. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END===================================================== + +from mod import db, aai_client, logger +from mod.api.db_models import NetworkFunctionModel +from mod.pmsh_config import AppConfig +from mod.network_function import NetworkFunctionFilter + + +def capture_filtered_nfs(sub_name): + """ + Retrieves network functions from AAI client and + returns a list of filtered NetworkFunctions using the Filter + + Args: + sub_name (string): The name of subscription inorder to perform filtering + Returns: + list[NetworkFunction]: a list of filtered NetworkFunction Objects. + """ + logger.info(f'Getting filtered nfs for subscription: {sub_name}') + nf_filter = NetworkFunctionFilter.get_network_function_filter(sub_name) + return aai_client.get_pmsh_nfs_from_aai(AppConfig.get_instance(), nf_filter) + + +def create_nf_event_body(nf, change_type): + """ + Creates a network function event body to publish on MR + + Args: + nf (NetworkFunction): the Network function to include in the event. + change_type (string): define the change type to be applied on node + Returns: + dict: network function event body to publish on MR. + """ + app_conf = AppConfig.get_instance() + return {'nfName': nf.nf_name, + 'ipAddress': nf.ipv4_address if nf.ipv6_address in (None, '') + else nf.ipv6_address, + 'blueprintName': nf.sdnc_model_name, + 'blueprintVersion': nf.sdnc_model_version, + 'policyName': app_conf.operational_policy_name, + 'changeType': change_type, + 'closedLoopControlName': app_conf.control_loop_name} + + +def save_nf(nf): + """ + Saves the network function request to the db + Args: + nf (NetworkFunction) : requested network function to save + """ + network_function = NetworkFunctionModel(nf_name=nf.nf_name, + ipv4_address=nf.ipv4_address, + ipv6_address=nf.ipv6_address, + model_invariant_id=nf.model_invariant_id, + model_version_id=nf.model_version_id, + model_name=nf.model_name, + sdnc_model_name=nf.sdnc_model_name, + sdnc_model_version=nf.sdnc_model_version) + db.session.add(network_function) |