Coverage for osm_policy_module/common/common_db_client.py: 51%

35 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-05-07 08:03 +0000

1# -*- coding: utf-8 -*- 

2 

3# Copyright 2018 Whitestack, LLC 

4# ************************************************************* 

5 

6# This file is part of OSM Monitoring module 

7# All Rights Reserved to Whitestack, LLC 

8 

9# Licensed under the Apache License, Version 2.0 (the "License"); you may 

10# not use this file except in compliance with the License. You may obtain 

11# a copy of the License at 

12 

13# http://www.apache.org/licenses/LICENSE-2.0 

14 

15# Unless required by applicable law or agreed to in writing, software 

16# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 

17# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 

18# License for the specific language governing permissions and limitations 

19# under the License. 

20 

21# For those usages not covered by the Apache License, Version 2.0 please 

22# contact: bdiaz@whitestack.com or glavado@whitestack.com 

23## 

24from osm_common import dbmongo, dbmemory 

25 

26from osm_policy_module.core.config import Config 

27from osm_policy_module.core.exceptions import VdurNotFound 

28 

29 

30class CommonDbClient: 

31 def __init__(self, config: Config): 

32 if config.get("database", "driver") == "mongo": 

33 self.common_db = dbmongo.DbMongo() 

34 elif config.get("database", "driver") == "memory": 

35 self.common_db = dbmemory.DbMemory() 

36 else: 

37 raise Exception( 

38 "Unknown database driver {}".format(config.get("section", "driver")) 

39 ) 

40 self.common_db.db_connect(config.get("database")) 

41 

42 def get_vnfr(self, nsr_id: str, member_index: str): 

43 vnfr = self.common_db.get_one( 

44 "vnfrs", {"nsr-id-ref": nsr_id, "member-vnf-index-ref": member_index} 

45 ) 

46 return vnfr 

47 

48 def get_vnfrs(self, nsr_id: str): 

49 # TODO: Change for multiple DF support 

50 nsr_nsd_df = self.get_nsr(nsr_id)["nsd"].get("df", [{}])[0] 

51 all_nsd_member_vnf_index = [ 

52 vnf.get("id") for vnf in nsr_nsd_df.get("vnf-profile", []) 

53 ] 

54 return [ 

55 self.get_vnfr(nsr_id, member_index) 

56 for member_index in all_nsd_member_vnf_index 

57 ] 

58 

59 def get_vnfd(self, vnfd_id: str): 

60 vnfr = self.common_db.get_one("vnfds", {"_id": vnfd_id}) 

61 return vnfr 

62 

63 def get_nsr(self, nsr_id: str): 

64 nsr = self.common_db.get_one("nsrs", {"id": nsr_id}) 

65 return nsr 

66 

67 def get_nslcmop(self, nslcmop_id): 

68 nslcmop = self.common_db.get_one("nslcmops", {"_id": nslcmop_id}) 

69 return nslcmop 

70 

71 def get_vdur(self, nsr_id, member_index, vdur_name): 

72 vnfr = self.get_vnfr(nsr_id, member_index) 

73 for vdur in vnfr["vdur"]: 

74 if vdur["name"] == vdur_name: 

75 return vdur 

76 raise VdurNotFound( 

77 "vdur not found for nsr-id %s, member_index %s and vdur_name %s", 

78 nsr_id, 

79 member_index, 

80 vdur_name, 

81 ) 

82 

83 def create_nslcmop(self, nslcmop): 

84 self.common_db.create("nslcmops", nslcmop)