1 # -*- coding: utf-8 -*-
3 # Copyright 2018 Whitestack, LLC
4 # *************************************************************
6 # This file is part of OSM Monitoring module
7 # All Rights Reserved to Whitestack, LLC
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
13 # http://www.apache.org/licenses/LICENSE-2.0
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
21 # For those usages not covered by the Apache License, Version 2.0 please
22 # contact: bdiaz@whitestack.com or glavado@whitestack.com
28 from playhouse
.db_url
import connect
30 from osm_mon
.core
.settings
import Config
32 log
= logging
.getLogger(__name__
)
33 cfg
= Config
.instance()
36 db
= connect(cfg
.DATABASE
)
39 class BaseModel(Model
):
44 class VimCredentials(BaseModel
):
45 uuid
= CharField(unique
=True)
50 password
= CharField()
51 tenant_name
= CharField()
52 config
= TextField(default
='{}')
55 class Alarm(BaseModel
):
56 alarm_id
= CharField()
57 threshold
= FloatField()
58 operation
= CharField()
59 metric_name
= CharField()
60 vdu_name
= CharField()
61 vnf_member_index
= CharField()
63 credentials
= ForeignKeyField(VimCredentials
, backref
='alarms')
66 class DatabaseManager
:
67 def create_tables(self
):
70 db
.create_tables([VimCredentials
, Alarm
])
72 except Exception as e
:
73 log
.exception("Error creating tables: ")
75 def get_credentials(self
, vim_uuid
):
76 return VimCredentials
.get_or_none(VimCredentials
.uuid
== vim_uuid
)
78 def save_credentials(self
, vim_credentials
):
79 """Saves vim credentials. If a record with same uuid exists, overwrite it."""
80 exists
= VimCredentials
.get_or_none(VimCredentials
.uuid
== vim_credentials
.uuid
)
82 vim_credentials
.id = exists
.id
83 vim_credentials
.save()
85 def get_credentials_for_alarm_id(self
, alarm_id
, vim_type
):
86 alarm
= Alarm
.select() \
87 .where(Alarm
.alarm_id
== alarm_id
) \
88 .join(VimCredentials
) \
89 .where(VimCredentials
.type == vim_type
).get()
90 return alarm
.credentials
92 def get_alarm(self
, alarm_id
, vim_type
):
93 alarm
= Alarm
.select() \
94 .where(Alarm
.alarm_id
== alarm_id
) \
95 .join(VimCredentials
) \
96 .where(VimCredentials
.type == vim_type
).get()
99 def save_alarm(self
, alarm_id
, vim_uuid
, threshold
=None, operation
=None, metric_name
=None, vdu_name
=None,
100 vnf_member_index
=None, ns_id
=None):
101 """Saves alarm. If a record with same id and vim_uuid exists, overwrite it."""
103 alarm
.alarm_id
= alarm_id
104 creds
= VimCredentials
.get(VimCredentials
.uuid
== vim_uuid
)
105 alarm
.credentials
= creds
106 alarm
.threshold
= threshold
107 alarm
.operation
= operation
108 alarm
.metric_name
= metric_name
109 alarm
.vdu_name
= vdu_name
110 alarm
.vnf_member_index
= vnf_member_index
112 exists
= Alarm
.select(Alarm
.alarm_id
== alarm
.alarm_id
) \
113 .join(VimCredentials
) \
114 .where(VimCredentials
.uuid
== vim_uuid
)
116 alarm
.id = exists
[0].id