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
.sqlite_ext
import SqliteExtDatabase
30 from osm_mon
.plugins
.OpenStack
.settings
import Config
32 log
= logging
.getLogger(__name__
)
33 cfg
= Config
.instance()
35 db
= SqliteExtDatabase('mon.db')
38 class BaseModel(Model
):
43 class VimCredentials(BaseModel
):
44 uuid
= CharField(unique
=True)
49 password
= CharField()
50 tenant_name
= CharField()
54 class Alarm(BaseModel
):
55 alarm_id
= CharField()
56 credentials
= ForeignKeyField(VimCredentials
, backref
='alarms')
59 class DatabaseManager
:
60 def create_tables(self
):
63 db
.create_tables([VimCredentials
, Alarm
])
65 except Exception as e
:
66 log
.exception("Error creating tables: ")
68 def get_credentials(self
, vim_uuid
):
69 return VimCredentials
.get_or_none(VimCredentials
.uuid
== vim_uuid
)
71 def save_credentials(self
, vim_credentials
):
72 """Saves vim credentials. If a record with same uuid exists, overwrite it."""
73 exists
= VimCredentials
.get_or_none(VimCredentials
.uuid
== vim_credentials
.uuid
)
75 vim_credentials
.id = exists
.id
76 vim_credentials
.save()
78 def get_credentials_for_alarm_id(self
, alarm_id
, vim_type
):
79 alarm
= Alarm
.select() \
80 .where(Alarm
.alarm_id
== alarm_id
) \
81 .join(VimCredentials
) \
82 .where(VimCredentials
.type == vim_type
).get()
83 return alarm
.credentials
85 def save_alarm(self
, alarm_id
, vim_uuid
):
86 """Saves alarm. If a record with same id and vim_uuid exists, overwrite it."""
88 alarm
.alarm_id
= alarm_id
89 creds
= VimCredentials
.get(VimCredentials
.uuid
== vim_uuid
)
90 alarm
.credentials
= creds
91 exists
= Alarm
.select(Alarm
.alarm_id
== alarm
.alarm_id
) \
92 .join(VimCredentials
) \
93 .where(VimCredentials
.uuid
== vim_uuid
)
95 alarm
.id = exists
[0].id