bp/vitrage_template_loader - load templates from templates dir
Change-Id: I63f7ffce134486dbc5cf91a06e31b3871aacf266
This commit is contained in:
parent
9d7abdbcb6
commit
befb9c3dd1
24
vitrage/common/file_utils.py
Normal file
24
vitrage/common/file_utils.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# 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.
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def load_files(dir_path, suffix=None):
|
||||||
|
|
||||||
|
loaded_files = os.listdir(dir_path)
|
||||||
|
|
||||||
|
if suffix:
|
||||||
|
loaded_files = [f for f in loaded_files if f.endswith(suffix)]
|
||||||
|
|
||||||
|
return loaded_files
|
21
vitrage/evaluator/template.py
Normal file
21
vitrage/evaluator/template.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# 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_log import log
|
||||||
|
|
||||||
|
|
||||||
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Template(object):
|
||||||
|
pass
|
37
vitrage/evaluator/template_loader.py
Normal file
37
vitrage/evaluator/template_loader.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# 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.
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from oslo_log import log
|
||||||
|
|
||||||
|
from vitrage.common import file_utils
|
||||||
|
|
||||||
|
|
||||||
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def load_templates_files(conf):
|
||||||
|
|
||||||
|
templates_dir_path = conf.evaluator.templates_dir
|
||||||
|
templates_files = file_utils.load_files(templates_dir_path, '.yaml')
|
||||||
|
|
||||||
|
templates_configs = []
|
||||||
|
for template_file in templates_files:
|
||||||
|
|
||||||
|
full_path = templates_dir_path + '/' + template_file
|
||||||
|
with open(full_path, 'r') as stream:
|
||||||
|
config = yaml.load(stream)
|
||||||
|
templates_configs.append(config)
|
||||||
|
|
||||||
|
return templates_configs
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2015 - Alcatel-Lucent
|
# Copyright 2016 - Nokia
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -57,12 +57,12 @@ def _get_full_path(target_filename, target_folder):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if target_folder is None:
|
if target_folder is None:
|
||||||
target_folder = _get_resources_dir()
|
target_folder = get_resources_dir()
|
||||||
target = '{0}/{1}'.format(target_folder, target_filename)
|
target = '{0}/{1}'.format(target_folder, target_filename)
|
||||||
return target
|
return target
|
||||||
|
|
||||||
|
|
||||||
def _get_resources_dir(filename=None, target_folder='resources'):
|
def get_resources_dir(filename=None, target_folder='resources'):
|
||||||
"""Locates the resources directory dynamically.
|
"""Locates the resources directory dynamically.
|
||||||
|
|
||||||
:param filename: file to locate in directory
|
:param filename: file to locate in directory
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
metadata:
|
||||||
|
id=host_high_cpu_load_to_instance_cpu_suboptimal
|
||||||
|
definitions:
|
||||||
|
entities:
|
||||||
|
- entity:
|
||||||
|
category: ALARM
|
||||||
|
type: HOST_HIGH_CPU_LOAD
|
||||||
|
internal_id: 1
|
||||||
|
- entity:
|
||||||
|
category: ALARM
|
||||||
|
type: VM_CPU_SUBOPTIMAL_PERFORMANCE
|
||||||
|
internal_id: 2
|
||||||
|
- entity:
|
||||||
|
category: RESOURCE
|
||||||
|
type: HOST
|
||||||
|
internal_id: 3
|
||||||
|
- entity:
|
||||||
|
category: RESOURCE
|
||||||
|
type: INSTANCE
|
||||||
|
internal_id: 4
|
||||||
|
relationships:
|
||||||
|
- relationship:
|
||||||
|
source: 1
|
||||||
|
target: 3
|
||||||
|
type: on
|
||||||
|
internal_id : alarm_on_host
|
||||||
|
- relationship:
|
||||||
|
source: 2
|
||||||
|
target: 4
|
||||||
|
type: on
|
||||||
|
internal_id : alarm_on_instance
|
||||||
|
- relationship:
|
||||||
|
source: 3
|
||||||
|
target: 4
|
||||||
|
type: contains
|
||||||
|
internal_id : host_contains_instance
|
15
vitrage/tests/unit/evaluator/__init__.py
Normal file
15
vitrage/tests/unit/evaluator/__init__.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
__author__ = 'stack'
|
52
vitrage/tests/unit/evaluator/test_template_loader.py
Normal file
52
vitrage/tests/unit/evaluator/test_template_loader.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# 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.
|
||||||
|
import os
|
||||||
|
|
||||||
|
from oslo_config import cfg
|
||||||
|
from oslo_log import log as logging
|
||||||
|
|
||||||
|
from vitrage.evaluator import template_loader
|
||||||
|
from vitrage.tests import base
|
||||||
|
from vitrage.tests.mocks import utils
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class TemplateLoaderTest(base.BaseTest):
|
||||||
|
|
||||||
|
OPTS = [
|
||||||
|
cfg.StrOpt('templates_dir',
|
||||||
|
default=utils.get_resources_dir() + '/templates',
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TemplateLoaderTest, self).setUp()
|
||||||
|
|
||||||
|
self.template_dir_path = utils.get_resources_dir() + '/templates'
|
||||||
|
|
||||||
|
self.conf = cfg.ConfigOpts()
|
||||||
|
self.conf.register_opts(self.OPTS, group='evaluator')
|
||||||
|
|
||||||
|
def test_template_loader(self):
|
||||||
|
|
||||||
|
# Setup
|
||||||
|
total_templates = os.listdir(self.template_dir_path)
|
||||||
|
|
||||||
|
# Action
|
||||||
|
template_configs = template_loader.load_templates_files(self.conf)
|
||||||
|
|
||||||
|
# Test assertions
|
||||||
|
self.assertEqual(len(total_templates), len(template_configs))
|
Loading…
x
Reference in New Issue
Block a user