Skip to content
Snippets Groups Projects
Commit 25a8cab4 authored by Erik Reid's avatar Erik Reid
Browse files

Finished feature remove-alarmsdb-references.

parents ba92d945 f7759f9b
No related branches found
No related tags found
No related merge requests found
......@@ -23,7 +23,6 @@ CONFIG_SCHEMA = {
"type": "object",
"properties": {
"alarms-db": {"$ref": "#/definitions/database_credentials"},
"ops-db": {"$ref": "#/definitions/database_credentials"},
"oid_list.conf": {"type": "string"},
"ssh": {
......@@ -76,7 +75,6 @@ CONFIG_SCHEMA = {
}
},
"required": [
"alarms-db",
"ops-db",
"oid_list.conf",
"ssh",
......
# TODO: remove all of this, as well as config parameters,
# ... and from puppet
from inventory_provider.db import db
def get_last_known_infinera_interface_status(crs, equipment, interface):
query = "SELECT status FROM infinera_alarms" \
" WHERE" \
" CONCAT(ne_name, '-', REPLACE(object_name, 'T', '')) = %s" \
" ORDER BY ne_init_time DESC, ne_clear_time DESC LIMIT 1"
search_string = equipment + "-" + interface
crs.execute(query, (search_string,))
result = crs.fetchone()
if not result:
return "unknown"
elif result[0] == "Raised":
return "down"
else:
return "up"
def get_last_known_coriant_interface_status(crs, equipment, interface):
query = "SELECT status FROM coriant_alarms" \
" WHERE ne_id_name = %s AND entity_string LIKE %s" \
" ORDER BY last_event_time DESC LIMIT 1"
crs.execute(query, (equipment, interface + "-%"))
result = crs.fetchone()
if not result:
return "unknown"
elif result[0] == "Raised":
return "down"
else:
return "up"
def get_last_known_juniper_link_interface_status(
crs, equipment, interface):
query = "SELECT IF(link_admin_status = 'up'" \
" AND link_oper_status = 'up', 1, 0) AS up FROM juniper_alarms" \
" WHERE equipment_name = %s AND link_interface_name = %s" \
" ORDER BY alarm_id DESC LIMIT 1"
crs.execute(query, ('lo0.' + equipment, interface))
result = crs.fetchone()
if not result:
return "unknown"
elif result[0] == 0:
return "down"
else:
return "up"
def get_last_known_interface_status(crs, equipment, interface):
result = get_last_known_infinera_interface_status(
crs, equipment, interface)
if result == "unknown":
result = get_last_known_coriant_interface_status(
crs, equipment, interface)
if result == "unknown":
result = get_last_known_juniper_link_interface_status(
crs, equipment, interface)
return result
def _load_juniper_servers_table(connection):
with db.cursor(connection) as crs:
crs.execute('select ip_address, project_name from juniper_servers')
for row in crs.fetchall():
yield {
'ip_address': row[0],
'project_name': row[1]
}
# def load_cache(connection):
# yield "juniper_servers", list(_load_juniper_servers_table(connection))
......@@ -12,7 +12,7 @@ from inventory_provider.tasks.app import app
from inventory_provider.tasks.common import get_redis
from inventory_provider import config
from inventory_provider import environment
from inventory_provider.db import db, opsdb, alarmsdb
from inventory_provider.db import db, opsdb
from inventory_provider import snmp
from inventory_provider import juniper
......@@ -183,27 +183,6 @@ def update_circuit_hierarchy():
logger.debug('<<< update_circuit_hierarchy')
@app.task
def update_interface_statuses():
logger = logging.getLogger(__name__)
logger.debug('>>> update_interface_statuses')
with db.connection(InventoryTask.config["ops-db"]) as cx:
services = opsdb.get_circuits(cx)
with db.connection(InventoryTask.config["alarms-db"]) as cx:
with db.cursor(cx) as csr:
for service in services:
key = 'alarmsdb:interface_status:%s:%s' \
% (service['equipment'], service['interface_name'])
status = alarmsdb.get_last_known_interface_status(
csr,
service["equipment"],
service["interface_name"])
_save_value(key, status)
logger.debug('<<< update_interface_statuses')
@app.task
def update_geant_lambdas():
logger = logging.getLogger(__name__)
......@@ -493,7 +472,6 @@ def launch_refresh_cache_all(config):
# juniper netconf & snmp data
subtasks = [
update_equipment_locations.s(),
# update_interface_statuses.s()
]
for hostname in _derive_router_hostnames(config):
logger.debug(
......
......@@ -22,12 +22,6 @@ TEST_DATA_DIRNAME = os.path.realpath(os.path.join(
def data_config_filename(tmp_dir_name):
config = {
"alarms-db": {
"hostname": "xxxxxxx.yyyyy.zzz",
"dbname": "xxxxxx",
"username": "xxxxxx",
"password": "xxxxxxxx"
},
"ops-db": {
"hostname": "xxxxxxx.yyyyy.zzz",
"dbname": "xxxxxx",
......
import inventory_provider.db.alarmsdb as alarmsdb
def test_infinera_interface_status(mocker):
mock = mocker.Mock()
mock.fetchone.return_value = ('Raised',)
assert alarmsdb.get_last_known_infinera_interface_status(
mock, 'eq1', 'intfc1'
) == "down"
mock.fetchone.return_value = ("Clear",)
assert alarmsdb.get_last_known_infinera_interface_status(
mock, 'eq1', 'intfc1'
) == "up"
mock.fetchone.return_value = ()
assert alarmsdb.get_last_known_infinera_interface_status(
mock, 'eq1', 'intfc1'
) == "unknown"
mock.execute.assert_called_with(
"SELECT status FROM infinera_alarms WHERE"
" CONCAT(ne_name, '-', REPLACE(object_name, 'T', '')) = %s"
" ORDER BY ne_init_time DESC, ne_clear_time DESC LIMIT 1",
("eq1-intfc1",))
def test_coriant_interface_status(mocker):
mock = mocker.Mock()
mock.fetchone.return_value = ('Raised',)
assert alarmsdb.get_last_known_coriant_interface_status(
mock, 'eq1', 'intfc1'
) == "down"
mock.fetchone.return_value = ("Clear",)
assert alarmsdb.get_last_known_coriant_interface_status(
mock, 'eq1', 'intfc1'
) == "up"
mock.fetchone.return_value = ()
assert alarmsdb.get_last_known_coriant_interface_status(
mock, 'eq1', 'intfc1'
) == "unknown"
mock.execute.assert_called_with(
"SELECT status FROM coriant_alarms"
" WHERE ne_id_name = %s AND entity_string LIKE %s"
" ORDER BY last_event_time DESC LIMIT 1",
("eq1", "intfc1-%"))
def test_juniper_interface_status(mocker):
mock = mocker.Mock()
mock.fetchone.return_value = (0,)
assert alarmsdb.get_last_known_juniper_link_interface_status(
mock, 'eq1', 'intfc1'
) == "down"
mock.fetchone.return_value = (1,)
assert alarmsdb.get_last_known_juniper_link_interface_status(
mock, 'eq1', 'intfc1'
) == "up"
mock.fetchone.return_value = ()
assert alarmsdb.get_last_known_juniper_link_interface_status(
mock, 'eq1', 'intfc1'
) == "unknown"
mock.execute.assert_called_with(
"SELECT IF(link_admin_status = 'up'"
" AND link_oper_status = 'up', 1, 0)"
" AS up FROM juniper_alarms"
" WHERE equipment_name = %s AND link_interface_name = %s"
" ORDER BY alarm_id DESC LIMIT 1",
("lo0.eq1", "intfc1"))
def test_interface_status(mocker):
mocked_infinera = mocker.patch(
'inventory_provider.db.alarmsdb'
'.get_last_known_infinera_interface_status')
mocked_infinera.return_value = "unknown"
mocked_coriant = mocker.patch(
'inventory_provider.db.alarmsdb'
'.get_last_known_coriant_interface_status')
mocked_coriant.return_value = "unknown"
mocked_juniper = mocker.patch(
'inventory_provider.db.alarmsdb.'
'get_last_known_juniper_link_interface_status')
mocked_juniper.return_value = "unknown"
assert alarmsdb.get_last_known_interface_status(None, '', '') == "unknown"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment