95 lines
3.6 KiB
Python
95 lines
3.6 KiB
Python
# Copyright 2016 - Nokia
|
|
#
|
|
# 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.
|
|
|
|
from oslo_config import cfg
|
|
|
|
from vitrage.common.constants import DatasourceOpts as DSOpts
|
|
from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE
|
|
from vitrage.datasources.zabbix.driver import ZabbixDriver
|
|
from vitrage.datasources.zabbix.properties import ZabbixProperties \
|
|
as ZabbixProps
|
|
from vitrage.datasources.zabbix import ZABBIX_DATASOURCE
|
|
from vitrage.tests import base
|
|
from vitrage.tests.mocks import utils
|
|
|
|
|
|
class TestZabbixConfig(base.BaseTest):
|
|
|
|
OPTS = [
|
|
cfg.StrOpt(DSOpts.TRANSFORMER,
|
|
default='vitrage.datasources.zabbix.transformer.'
|
|
'ZabbixTransformer',
|
|
help='Zabbix data source transformer class path',
|
|
required=True),
|
|
cfg.StrOpt(DSOpts.DRIVER,
|
|
default='vitrage.datasources.zabbix.driver.ZabbixDriver',
|
|
help='Zabbix driver class path',
|
|
required=True),
|
|
cfg.IntOpt(DSOpts.CHANGES_INTERVAL,
|
|
default=30,
|
|
min=30,
|
|
help='interval between checking changes in zabbix plugin',
|
|
required=True),
|
|
cfg.StrOpt('user', default='admin',
|
|
help='Zabbix user name'),
|
|
cfg.StrOpt('password', default='zabbix',
|
|
help='Zabbix user password'),
|
|
cfg.StrOpt('url', default='', help='Zabbix url'),
|
|
cfg.StrOpt(DSOpts.CONFIG_FILE,
|
|
help='Zabbix configuration file',
|
|
default=utils.get_resources_dir()
|
|
+ '/zabbix/zabbix_conf.yaml'),
|
|
]
|
|
|
|
# the mappings match the ones in zabbix_conf.yaml
|
|
MAPPINGS = {
|
|
'compute-1': {ZabbixProps.RESOURCE_TYPE: NOVA_HOST_DATASOURCE,
|
|
ZabbixProps.RESOURCE_NAME: 'compute-1'},
|
|
'compute-2': {ZabbixProps.RESOURCE_TYPE: NOVA_HOST_DATASOURCE,
|
|
ZabbixProps.RESOURCE_NAME: 'host2'},
|
|
}
|
|
|
|
NON_EXISTING_MAPPINGS = {
|
|
'X': {ZabbixProps.RESOURCE_TYPE: NOVA_HOST_DATASOURCE,
|
|
ZabbixProps.RESOURCE_NAME: 'compute-1'},
|
|
'compute-1': {ZabbixProps.RESOURCE_TYPE: 'X',
|
|
ZabbixProps.RESOURCE_NAME: 'compute-1'},
|
|
}
|
|
|
|
# noinspection PyPep8Naming
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestZabbixConfig, cls).setUpClass()
|
|
cls.conf = cfg.ConfigOpts()
|
|
cls.conf.register_opts(cls.OPTS, group=ZABBIX_DATASOURCE)
|
|
|
|
def test_zabbix_configuration_loading(self):
|
|
# Action
|
|
mappings = ZabbixDriver._configuration_mapping(self.conf)
|
|
|
|
# Test assertions
|
|
self.assertEqual(len(self.MAPPINGS), len(mappings))
|
|
|
|
for expected_mapping in self.MAPPINGS.items():
|
|
self.assertTrue(self._check_contains(expected_mapping, mappings))
|
|
for expected_mapping in self.NON_EXISTING_MAPPINGS.items():
|
|
self.assertFalse(self._check_contains(expected_mapping, mappings))
|
|
|
|
@staticmethod
|
|
def _check_contains(expected_mapping, mappings):
|
|
for mapping in mappings.items():
|
|
if expected_mapping == mapping:
|
|
return True
|
|
return False
|