Cosmetic changes
Change-Id: If8f1b2da42ccd7851be92c418191bd4a920c2412
This commit is contained in:
parent
4ba74f4689
commit
03fc7d1fe7
@ -102,7 +102,7 @@ Response Examples
|
|||||||
Get topology
|
Get topology
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
Get the topology for the node.
|
Get the topology for the cluster.
|
||||||
Its possible to filter the edges vertices and depth of the
|
Its possible to filter the edges vertices and depth of the
|
||||||
graph
|
graph
|
||||||
|
|
||||||
@ -463,10 +463,10 @@ Response Examples
|
|||||||
"category": "RESOURCE",
|
"category": "RESOURCE",
|
||||||
"is_placeholder": false,
|
"is_placeholder": false,
|
||||||
"is_deleted": false,
|
"is_deleted": false,
|
||||||
"name": "openstack.node",
|
"name": "openstack.cluster",
|
||||||
"type": "openstack.node",
|
"type": "openstack.cluster",
|
||||||
"id": "openstack.node",
|
"id": "openstack.cluster",
|
||||||
"vitrage_id": "RESOURCE:openstack.node"
|
"vitrage_id": "RESOURCE:openstack.cluster"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": [
|
"links": [
|
||||||
|
@ -3,4 +3,4 @@ values:
|
|||||||
- normalized value:
|
- normalized value:
|
||||||
name: UNRECOGNIZED
|
name: UNRECOGNIZED
|
||||||
priority: 10
|
priority: 10
|
||||||
original values:
|
original values:
|
@ -273,10 +273,10 @@
|
|||||||
"category": "RESOURCE",
|
"category": "RESOURCE",
|
||||||
"is_placeholder": false,
|
"is_placeholder": false,
|
||||||
"is_deleted": false,
|
"is_deleted": false,
|
||||||
"name": "openstack.node",
|
"name": "openstack.cluster",
|
||||||
"type": "openstack.node",
|
"type": "openstack.cluster",
|
||||||
"id": "openstack.node",
|
"id": "openstack.cluster",
|
||||||
"vitrage_id": "RESOURCE:openstack.node",
|
"vitrage_id": "RESOURCE:openstack.cluster",
|
||||||
"state": "available",
|
"state": "available",
|
||||||
"aggregated_state": "RUNNING"
|
"aggregated_state": "RUNNING"
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ import pecan as pecan
|
|||||||
from pecan import abort
|
from pecan import abort
|
||||||
from pecan import rest
|
from pecan import rest
|
||||||
|
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ LOG = log.getLogger(__name__)
|
|||||||
class RootRestController(rest.RestController):
|
class RootRestController(rest.RestController):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def as_tree(graph, root=OPENSTACK_NODE, reverse=False):
|
def as_tree(graph, root=OPENSTACK_CLUSTER, reverse=False):
|
||||||
linked_graph = json_graph.node_link_graph(graph)
|
linked_graph = json_graph.node_link_graph(graph)
|
||||||
if reverse:
|
if reverse:
|
||||||
linked_graph = linked_graph.reverse()
|
linked_graph = linked_graph.reverse()
|
||||||
|
@ -20,7 +20,7 @@ from oslo_service import service as os_service
|
|||||||
|
|
||||||
from vitrage.common.constants import EntityCategory
|
from vitrage.common.constants import EntityCategory
|
||||||
from vitrage.datasources import launcher as datasource_launcher
|
from vitrage.datasources import launcher as datasource_launcher
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
from vitrage.entity_graph.api_handler import service as api_handler_svc
|
from vitrage.entity_graph.api_handler import service as api_handler_svc
|
||||||
from vitrage.entity_graph.consistency import service as consistency_svc
|
from vitrage.entity_graph.consistency import service as consistency_svc
|
||||||
from vitrage.entity_graph.initialization_status import InitializationStatus
|
from vitrage.entity_graph.initialization_status import InitializationStatus
|
||||||
@ -65,7 +65,7 @@ def init():
|
|||||||
event_queue = multiprocessing.Queue()
|
event_queue = multiprocessing.Queue()
|
||||||
e_graph = entity_graph.EntityGraph(
|
e_graph = entity_graph.EntityGraph(
|
||||||
'Entity Graph',
|
'Entity Graph',
|
||||||
'%s:%s' % (EntityCategory.RESOURCE, OPENSTACK_NODE))
|
'%s:%s' % (EntityCategory.RESOURCE, OPENSTACK_CLUSTER))
|
||||||
scenario_repo = ScenarioRepository(conf)
|
scenario_repo = ScenarioRepository(conf)
|
||||||
evaluator = ScenarioEvaluator(conf, e_graph, scenario_repo, event_queue)
|
evaluator = ScenarioEvaluator(conf, e_graph, scenario_repo, event_queue)
|
||||||
initialization_status = InitializationStatus()
|
initialization_status = InitializationStatus()
|
||||||
|
@ -23,7 +23,7 @@ from vitrage.datasources.nova.instance import NOVA_INSTANCE_DATASOURCE
|
|||||||
from vitrage.datasources.nova.zone import NOVA_ZONE_DATASOURCE
|
from vitrage.datasources.nova.zone import NOVA_ZONE_DATASOURCE
|
||||||
from vitrage.datasources.static_physical import STATIC_PHYSICAL_DATASOURCE
|
from vitrage.datasources.static_physical import STATIC_PHYSICAL_DATASOURCE
|
||||||
|
|
||||||
OPENSTACK_NODE = 'openstack.node'
|
OPENSTACK_CLUSTER = 'openstack.cluster'
|
||||||
|
|
||||||
# Register options for the service
|
# Register options for the service
|
||||||
OPTS = [
|
OPTS = [
|
||||||
|
@ -76,7 +76,7 @@ class ZoneTransformer(ResourceTransformerBase):
|
|||||||
def _create_neighbors(self, entity_event):
|
def _create_neighbors(self, entity_event):
|
||||||
|
|
||||||
zone_vertex_id = self._create_entity_key(entity_event)
|
zone_vertex_id = self._create_entity_key(entity_event)
|
||||||
neighbors = [self._create_node_neighbor(zone_vertex_id)]
|
neighbors = [self._create_cluster_neighbor(zone_vertex_id)]
|
||||||
hosts = extract_field_value(entity_event, 'hosts')
|
hosts = extract_field_value(entity_event, 'hosts')
|
||||||
host_transformer = self.transformers[NOVA_HOST_DATASOURCE]
|
host_transformer = self.transformers[NOVA_HOST_DATASOURCE]
|
||||||
|
|
||||||
@ -107,15 +107,15 @@ class ZoneTransformer(ResourceTransformerBase):
|
|||||||
return neighbors
|
return neighbors
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _create_node_neighbor(zone_vertex_id):
|
def _create_cluster_neighbor(zone_vertex_id):
|
||||||
|
|
||||||
node_vertex = tbase.create_node_placeholder_vertex()
|
cluster_vertex = tbase.create_cluster_placeholder_vertex()
|
||||||
|
|
||||||
relation_edge = graph_utils.create_edge(
|
relation_edge = graph_utils.create_edge(
|
||||||
source_id=node_vertex.vertex_id,
|
source_id=cluster_vertex.vertex_id,
|
||||||
target_id=zone_vertex_id,
|
target_id=zone_vertex_id,
|
||||||
relationship_type=EdgeLabels.CONTAINS)
|
relationship_type=EdgeLabels.CONTAINS)
|
||||||
return tbase.Neighbor(node_vertex, relation_edge)
|
return tbase.Neighbor(cluster_vertex, relation_edge)
|
||||||
|
|
||||||
def _create_host_neighbor(self, zone_id, host_name,
|
def _create_host_neighbor(self, zone_id, host_name,
|
||||||
host_state, sample_timestamp):
|
host_state, sample_timestamp):
|
||||||
|
@ -25,7 +25,7 @@ from vitrage.common.constants import DatasourceProperties as DSProps
|
|||||||
from vitrage.common.constants import EventAction
|
from vitrage.common.constants import EventAction
|
||||||
from vitrage.common.constants import SyncMode
|
from vitrage.common.constants import SyncMode
|
||||||
from vitrage.common.exception import VitrageTransformerError
|
from vitrage.common.exception import VitrageTransformerError
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
import vitrage.graph.utils as graph_utils
|
import vitrage.graph.utils as graph_utils
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@ -55,19 +55,19 @@ def build_key(key_values):
|
|||||||
return TransformerBase.KEY_SEPARATOR.join(map(str, key_values))
|
return TransformerBase.KEY_SEPARATOR.join(map(str, key_values))
|
||||||
|
|
||||||
|
|
||||||
def create_node_placeholder_vertex():
|
def create_cluster_placeholder_vertex():
|
||||||
key = build_key([cons.EntityCategory.RESOURCE,
|
key = build_key([cons.EntityCategory.RESOURCE,
|
||||||
OPENSTACK_NODE])
|
OPENSTACK_CLUSTER])
|
||||||
|
|
||||||
metadata = {
|
metadata = {
|
||||||
cons.VertexProperties.NAME: OPENSTACK_NODE
|
cons.VertexProperties.NAME: OPENSTACK_CLUSTER
|
||||||
}
|
}
|
||||||
|
|
||||||
return graph_utils.create_vertex(
|
return graph_utils.create_vertex(
|
||||||
key,
|
key,
|
||||||
entity_id=OPENSTACK_NODE,
|
entity_id=OPENSTACK_CLUSTER,
|
||||||
entity_category=cons.EntityCategory.RESOURCE,
|
entity_category=cons.EntityCategory.RESOURCE,
|
||||||
entity_type=OPENSTACK_NODE,
|
entity_type=OPENSTACK_CLUSTER,
|
||||||
entity_state=AVAILABLE,
|
entity_state=AVAILABLE,
|
||||||
metadata=metadata
|
metadata=metadata
|
||||||
)
|
)
|
||||||
|
@ -22,7 +22,7 @@ from vitrage.common.constants import VertexProperties as VProps
|
|||||||
from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE
|
from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE
|
||||||
from vitrage.datasources.nova.instance import NOVA_INSTANCE_DATASOURCE
|
from vitrage.datasources.nova.instance import NOVA_INSTANCE_DATASOURCE
|
||||||
from vitrage.datasources.nova.zone import NOVA_ZONE_DATASOURCE
|
from vitrage.datasources.nova.zone import NOVA_ZONE_DATASOURCE
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
from vitrage.graph import create_algorithm
|
from vitrage.graph import create_algorithm
|
||||||
from vitrage.graph import Direction
|
from vitrage.graph import Direction
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ TREE_TOPOLOGY_QUERY = {
|
|||||||
{'==': {VProps.IS_PLACEHOLDER: False}},
|
{'==': {VProps.IS_PLACEHOLDER: False}},
|
||||||
{
|
{
|
||||||
'or': [
|
'or': [
|
||||||
{'==': {VProps.TYPE: OPENSTACK_NODE}},
|
{'==': {VProps.TYPE: OPENSTACK_CLUSTER}},
|
||||||
{'==': {VProps.TYPE: NOVA_INSTANCE_DATASOURCE}},
|
{'==': {VProps.TYPE: NOVA_INSTANCE_DATASOURCE}},
|
||||||
{'==': {VProps.TYPE: NOVA_HOST_DATASOURCE}},
|
{'==': {VProps.TYPE: NOVA_HOST_DATASOURCE}},
|
||||||
{'==': {VProps.TYPE: NOVA_ZONE_DATASOURCE}}
|
{'==': {VProps.TYPE: NOVA_ZONE_DATASOURCE}}
|
||||||
|
@ -20,7 +20,7 @@ from oslo_log import log
|
|||||||
from vitrage.common.constants import EntityCategory
|
from vitrage.common.constants import EntityCategory
|
||||||
from vitrage.common.constants import VertexProperties as VProps
|
from vitrage.common.constants import VertexProperties as VProps
|
||||||
from vitrage.common.datetime_utils import utcnow
|
from vitrage.common.datetime_utils import utcnow
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
from vitrage.evaluator.actions.evaluator_event_transformer import VITRAGE_TYPE
|
from vitrage.evaluator.actions.evaluator_event_transformer import VITRAGE_TYPE
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
@ -152,7 +152,7 @@ class ConsistencyEnforcer(object):
|
|||||||
return filter(
|
return filter(
|
||||||
lambda ver:
|
lambda ver:
|
||||||
not (ver[VProps.CATEGORY] == EntityCategory.RESOURCE and
|
not (ver[VProps.CATEGORY] == EntityCategory.RESOURCE and
|
||||||
ver[VProps.TYPE] == OPENSTACK_NODE), vertices)
|
ver[VProps.TYPE] == OPENSTACK_CLUSTER), vertices)
|
||||||
|
|
||||||
def _wait_for_action(self, function):
|
def _wait_for_action(self, function):
|
||||||
count_retries = 0
|
count_retries = 0
|
||||||
|
@ -116,7 +116,8 @@ def simple_zone_generators(zone_num, snapshot_events=0, snap_vals=None):
|
|||||||
:return: generators for vm_num vms as specified
|
:return: generators for vm_num vms as specified
|
||||||
"""
|
"""
|
||||||
|
|
||||||
mapping = [('zone-{0}'.format(ind), 'node-0') for ind in range(zone_num)]
|
mapping = [('zone-{0}'.format(ind), 'cluster-0')
|
||||||
|
for ind in range(zone_num)]
|
||||||
|
|
||||||
test_entity_spec_list = [
|
test_entity_spec_list = [
|
||||||
{tg.DYNAMIC_INFO_FKEY: tg.TRANS_ZONE_SNAPSHOT_D,
|
{tg.DYNAMIC_INFO_FKEY: tg.TRANS_ZONE_SNAPSHOT_D,
|
||||||
|
@ -450,12 +450,12 @@ def _get_trans_zone_snapshot_values(spec):
|
|||||||
:rtype: list
|
:rtype: list
|
||||||
"""
|
"""
|
||||||
|
|
||||||
zone_node_mapping = spec[MAPPING_KEY]
|
zone_cluster_mapping = spec[MAPPING_KEY]
|
||||||
static_info_re = None
|
static_info_re = None
|
||||||
if spec[STATIC_INFO_FKEY] is not None:
|
if spec[STATIC_INFO_FKEY] is not None:
|
||||||
static_info_re = utils.load_specs(spec[STATIC_INFO_FKEY])
|
static_info_re = utils.load_specs(spec[STATIC_INFO_FKEY])
|
||||||
static_values = []
|
static_values = []
|
||||||
for zone_name, node_name in zone_node_mapping:
|
for zone_name, cluster_name in zone_cluster_mapping:
|
||||||
mapping = {'name': zone_name,
|
mapping = {'name': zone_name,
|
||||||
'id': zone_name}
|
'id': zone_name}
|
||||||
static_values.append(combine_data(
|
static_values.append(combine_data(
|
||||||
|
@ -24,7 +24,7 @@ from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE
|
|||||||
from vitrage.datasources.nova.host.transformer import HostTransformer
|
from vitrage.datasources.nova.host.transformer import HostTransformer
|
||||||
from vitrage.datasources.nova.zone import NOVA_ZONE_DATASOURCE
|
from vitrage.datasources.nova.zone import NOVA_ZONE_DATASOURCE
|
||||||
from vitrage.datasources.nova.zone.transformer import ZoneTransformer
|
from vitrage.datasources.nova.zone.transformer import ZoneTransformer
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
from vitrage.datasources import transformer_base as tbase
|
from vitrage.datasources import transformer_base as tbase
|
||||||
from vitrage.datasources.transformer_base import TransformerBase
|
from vitrage.datasources.transformer_base import TransformerBase
|
||||||
from vitrage.tests import base
|
from vitrage.tests import base
|
||||||
@ -130,14 +130,14 @@ class NovaZoneTransformerTest(base.BaseTest):
|
|||||||
|
|
||||||
def _validate_neighbors(self, neighbors, zone_vertex_id, event):
|
def _validate_neighbors(self, neighbors, zone_vertex_id, event):
|
||||||
|
|
||||||
node_neighbors_counter = 0
|
cluster_neighbors_counter = 0
|
||||||
|
|
||||||
for neighbor in neighbors:
|
for neighbor in neighbors:
|
||||||
vertex_type = neighbor.vertex.get(VertexProperties.TYPE)
|
vertex_type = neighbor.vertex.get(VertexProperties.TYPE)
|
||||||
|
|
||||||
if OPENSTACK_NODE == vertex_type:
|
if OPENSTACK_CLUSTER == vertex_type:
|
||||||
node_neighbors_counter += 1
|
cluster_neighbors_counter += 1
|
||||||
self._validate_node_neighbor(neighbor, zone_vertex_id)
|
self._validate_cluster_neighbor(neighbor, zone_vertex_id)
|
||||||
else:
|
else:
|
||||||
hosts = tbase.extract_field_value(event, 'hosts')
|
hosts = tbase.extract_field_value(event, 'hosts')
|
||||||
self._validate_host_neighbor(neighbor,
|
self._validate_host_neighbor(neighbor,
|
||||||
@ -146,8 +146,8 @@ class NovaZoneTransformerTest(base.BaseTest):
|
|||||||
event[DSProps.SYNC_MODE])
|
event[DSProps.SYNC_MODE])
|
||||||
|
|
||||||
self.assertEqual(1,
|
self.assertEqual(1,
|
||||||
node_neighbors_counter,
|
cluster_neighbors_counter,
|
||||||
'Zone can belongs to only one Node')
|
'Zone can belongs to only one Cluster')
|
||||||
|
|
||||||
def _validate_host_neighbor(self,
|
def _validate_host_neighbor(self,
|
||||||
host_neighbor,
|
host_neighbor,
|
||||||
@ -191,14 +191,14 @@ class NovaZoneTransformerTest(base.BaseTest):
|
|||||||
self.assertEqual(edge.source_id, zone_vertex_id)
|
self.assertEqual(edge.source_id, zone_vertex_id)
|
||||||
self.assertEqual(edge.label, EdgeLabels.CONTAINS)
|
self.assertEqual(edge.label, EdgeLabels.CONTAINS)
|
||||||
|
|
||||||
def _validate_node_neighbor(self, node_neighbor, zone_vertex_id):
|
def _validate_cluster_neighbor(self, cluster_neighbor, zone_vertex_id):
|
||||||
|
|
||||||
expected_node_neighbor = tbase.create_node_placeholder_vertex()
|
expected_cluster_neighbor = tbase.create_cluster_placeholder_vertex()
|
||||||
self.assertEqual(expected_node_neighbor, node_neighbor.vertex)
|
self.assertEqual(expected_cluster_neighbor, cluster_neighbor.vertex)
|
||||||
|
|
||||||
# Validate neighbor edge
|
# Validate neighbor edge
|
||||||
edge = node_neighbor.edge
|
edge = cluster_neighbor.edge
|
||||||
self.assertEqual(edge.source_id, node_neighbor.vertex.vertex_id)
|
self.assertEqual(edge.source_id, cluster_neighbor.vertex.vertex_id)
|
||||||
self.assertEqual(edge.target_id, zone_vertex_id)
|
self.assertEqual(edge.target_id, zone_vertex_id)
|
||||||
self.assertEqual(edge.label, EdgeLabels.CONTAINS)
|
self.assertEqual(edge.label, EdgeLabels.CONTAINS)
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ class TestStaticPhysicalTransformer(base.BaseTest):
|
|||||||
|
|
||||||
self.assertEqual(5,
|
self.assertEqual(5,
|
||||||
host_counter,
|
host_counter,
|
||||||
'Zone can belongs to only one Node')
|
'Zone can belongs to only one Cluster')
|
||||||
|
|
||||||
def _validate_host_neighbor(self,
|
def _validate_host_neighbor(self,
|
||||||
host_neighbor,
|
host_neighbor,
|
||||||
|
@ -55,7 +55,7 @@ class TestEntityGraphUnitBase(base.BaseTest):
|
|||||||
min=1)
|
min=1)
|
||||||
]
|
]
|
||||||
|
|
||||||
NUM_NODES = 1
|
NUM_CLUSTERS = 1
|
||||||
NUM_ZONES = 2
|
NUM_ZONES = 2
|
||||||
NUM_HOSTS = 4
|
NUM_HOSTS = 4
|
||||||
NUM_INSTANCES = 16
|
NUM_INSTANCES = 16
|
||||||
@ -147,9 +147,9 @@ class TestEntityGraphUnitBase(base.BaseTest):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _num_total_expected_vertices(self):
|
def _num_total_expected_vertices(self):
|
||||||
return self.NUM_NODES + self.NUM_ZONES + self.NUM_HOSTS + \
|
return self.NUM_CLUSTERS + self.NUM_ZONES + self.NUM_HOSTS + \
|
||||||
self.NUM_INSTANCES
|
self.NUM_INSTANCES
|
||||||
|
|
||||||
def _num_total_expected_edges(self):
|
def _num_total_expected_edges(self):
|
||||||
return self.NUM_NODES + self.NUM_ZONES + self.NUM_HOSTS + \
|
return self.NUM_CLUSTERS + self.NUM_ZONES + self.NUM_HOSTS + \
|
||||||
self.NUM_INSTANCES - 1
|
self.NUM_INSTANCES - 1
|
||||||
|
@ -28,7 +28,7 @@ from vitrage.common.constants import EdgeLabels as ELabel
|
|||||||
from vitrage.common.constants import EntityCategory
|
from vitrage.common.constants import EntityCategory
|
||||||
from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE
|
from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE
|
||||||
from vitrage.datasources.nova.instance import NOVA_INSTANCE_DATASOURCE
|
from vitrage.datasources.nova.instance import NOVA_INSTANCE_DATASOURCE
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
from vitrage.datasources.static_physical import SWITCH
|
from vitrage.datasources.static_physical import SWITCH
|
||||||
from vitrage.graph import create_graph
|
from vitrage.graph import create_graph
|
||||||
from vitrage.graph import utils as graph_utils
|
from vitrage.graph import utils as graph_utils
|
||||||
@ -36,7 +36,7 @@ from vitrage.tests import base
|
|||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE = 8
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER = 8
|
||||||
ENTITY_GRAPH_VMS_PER_HOST = 8
|
ENTITY_GRAPH_VMS_PER_HOST = 8
|
||||||
ENTITY_GRAPH_ALARMS_PER_HOST = 8
|
ENTITY_GRAPH_ALARMS_PER_HOST = 8
|
||||||
ENTITY_GRAPH_TESTS_PER_HOST = 20
|
ENTITY_GRAPH_TESTS_PER_HOST = 20
|
||||||
@ -51,9 +51,9 @@ ALARM_ON_HOST = 'ALARM_ON_HOST'
|
|||||||
TEST_ON_HOST = 'TEST_ON_HOST'
|
TEST_ON_HOST = 'TEST_ON_HOST'
|
||||||
|
|
||||||
v_node = graph_utils.create_vertex(
|
v_node = graph_utils.create_vertex(
|
||||||
vitrage_id=EntityCategory.RESOURCE + ':' + OPENSTACK_NODE,
|
vitrage_id=EntityCategory.RESOURCE + ':' + OPENSTACK_CLUSTER,
|
||||||
entity_id='111111111111',
|
entity_id='111111111111',
|
||||||
entity_type=OPENSTACK_NODE,
|
entity_type=OPENSTACK_CLUSTER,
|
||||||
entity_category=RESOURCE)
|
entity_category=RESOURCE)
|
||||||
v_host = graph_utils.create_vertex(
|
v_host = graph_utils.create_vertex(
|
||||||
vitrage_id=NOVA_HOST_DATASOURCE + '222222222222',
|
vitrage_id=NOVA_HOST_DATASOURCE + '222222222222',
|
||||||
@ -123,7 +123,7 @@ class GraphTestBase(base.BaseTest):
|
|||||||
self.host_test_id = 40000000
|
self.host_test_id = 40000000
|
||||||
self.entity_graph = self._create_entity_graph(
|
self.entity_graph = self._create_entity_graph(
|
||||||
'entity_graph',
|
'entity_graph',
|
||||||
num_of_hosts_per_node=ENTITY_GRAPH_HOSTS_PER_NODE,
|
num_of_hosts_per_node=ENTITY_GRAPH_HOSTS_PER_CLUSTER,
|
||||||
num_of_vms_per_host=ENTITY_GRAPH_VMS_PER_HOST,
|
num_of_vms_per_host=ENTITY_GRAPH_VMS_PER_HOST,
|
||||||
num_of_alarms_per_host=ENTITY_GRAPH_ALARMS_PER_HOST,
|
num_of_alarms_per_host=ENTITY_GRAPH_ALARMS_PER_HOST,
|
||||||
num_of_alarms_per_vm=ENTITY_GRAPH_ALARMS_PER_VM,
|
num_of_alarms_per_vm=ENTITY_GRAPH_ALARMS_PER_VM,
|
||||||
@ -141,7 +141,7 @@ class GraphTestBase(base.BaseTest):
|
|||||||
|
|
||||||
start = time.time()
|
start = time.time()
|
||||||
g = create_graph(name, EntityCategory.RESOURCE + ':' +
|
g = create_graph(name, EntityCategory.RESOURCE + ':' +
|
||||||
OPENSTACK_NODE)
|
OPENSTACK_CLUSTER)
|
||||||
g.add_vertex(v_node)
|
g.add_vertex(v_node)
|
||||||
g.add_vertex(v_switch)
|
g.add_vertex(v_switch)
|
||||||
g.add_edge(e_node_to_switch)
|
g.add_edge(e_node_to_switch)
|
||||||
|
@ -372,20 +372,20 @@ class GraphTest(GraphTestBase):
|
|||||||
'get_vertices __len__ all vertices')
|
'get_vertices __len__ all vertices')
|
||||||
|
|
||||||
node_vertices = g.get_vertices(
|
node_vertices = g.get_vertices(
|
||||||
vertex_attr_filter={VProps.TYPE: OPENSTACK_NODE})
|
vertex_attr_filter={VProps.TYPE: OPENSTACK_CLUSTER})
|
||||||
self.assertEqual(1, len(node_vertices),
|
self.assertEqual(1, len(node_vertices),
|
||||||
'get_vertices __len__ node vertices')
|
'get_vertices __len__ node vertices')
|
||||||
found_vertex = node_vertices.pop()
|
found_vertex = node_vertices.pop()
|
||||||
self.assertEqual(OPENSTACK_NODE, found_vertex[VProps.TYPE],
|
self.assertEqual(OPENSTACK_CLUSTER, found_vertex[VProps.TYPE],
|
||||||
'get_vertices check node vertex')
|
'get_vertices check node vertex')
|
||||||
|
|
||||||
node_vertices = g.get_vertices(
|
node_vertices = g.get_vertices(
|
||||||
vertex_attr_filter={VProps.TYPE: OPENSTACK_NODE,
|
vertex_attr_filter={VProps.TYPE: OPENSTACK_CLUSTER,
|
||||||
VProps.CATEGORY: RESOURCE})
|
VProps.CATEGORY: RESOURCE})
|
||||||
self.assertEqual(1, len(node_vertices),
|
self.assertEqual(1, len(node_vertices),
|
||||||
'get_vertices __len__ node vertices')
|
'get_vertices __len__ node vertices')
|
||||||
found_vertex = node_vertices.pop()
|
found_vertex = node_vertices.pop()
|
||||||
self.assertEqual(OPENSTACK_NODE, found_vertex[VProps.TYPE],
|
self.assertEqual(OPENSTACK_CLUSTER, found_vertex[VProps.TYPE],
|
||||||
'get_vertices check node vertex')
|
'get_vertices check node vertex')
|
||||||
|
|
||||||
def _check_callback_result(self, result, msg, exp_prev, exp_curr):
|
def _check_callback_result(self, result, msg, exp_prev, exp_curr):
|
||||||
|
@ -28,22 +28,22 @@ class GraphAlgorithmTest(GraphTestBase):
|
|||||||
def test_graph_query_vertices(self):
|
def test_graph_query_vertices(self):
|
||||||
ga = create_algorithm(self.entity_graph)
|
ga = create_algorithm(self.entity_graph)
|
||||||
|
|
||||||
query = {'==': {VProps.TYPE: OPENSTACK_NODE}}
|
query = {'==': {VProps.TYPE: OPENSTACK_CLUSTER}}
|
||||||
subgraph = ga.graph_query_vertices(query)
|
subgraph = ga.graph_query_vertices(query)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
1, # For NODE
|
1, # For Cluster
|
||||||
subgraph.num_vertices(), 'num of vertex node')
|
subgraph.num_vertices(), 'num of vertex node')
|
||||||
|
|
||||||
query = {
|
query = {
|
||||||
'or': [
|
'or': [
|
||||||
{'==': {VProps.TYPE: NOVA_HOST_DATASOURCE}},
|
{'==': {VProps.TYPE: NOVA_HOST_DATASOURCE}},
|
||||||
{'==': {VProps.TYPE: OPENSTACK_NODE}}
|
{'==': {VProps.TYPE: OPENSTACK_CLUSTER}}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
subgraph = ga.graph_query_vertices(query)
|
subgraph = ga.graph_query_vertices(query)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE,
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER,
|
||||||
subgraph.num_edges(), 'num of edges Host <-- NODE')
|
subgraph.num_edges(), 'num of edges Host <-- NODE')
|
||||||
|
|
||||||
query = {
|
query = {
|
||||||
@ -51,15 +51,15 @@ class GraphAlgorithmTest(GraphTestBase):
|
|||||||
{'==': {VProps.TYPE: NOVA_INSTANCE_DATASOURCE}},
|
{'==': {VProps.TYPE: NOVA_INSTANCE_DATASOURCE}},
|
||||||
{'==': {VProps.CATEGORY: ALARM}},
|
{'==': {VProps.CATEGORY: ALARM}},
|
||||||
{'==': {VProps.TYPE: NOVA_HOST_DATASOURCE}},
|
{'==': {VProps.TYPE: NOVA_HOST_DATASOURCE}},
|
||||||
{'==': {VProps.TYPE: OPENSTACK_NODE}}
|
{'==': {VProps.TYPE: OPENSTACK_CLUSTER}}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
subgraph = ga.graph_query_vertices(query)
|
subgraph = ga.graph_query_vertices(query)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE +
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER +
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE * ENTITY_GRAPH_ALARMS_PER_HOST +
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER * ENTITY_GRAPH_ALARMS_PER_HOST +
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE * ENTITY_GRAPH_VMS_PER_HOST +
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER * ENTITY_GRAPH_VMS_PER_HOST +
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE * ENTITY_GRAPH_VMS_PER_HOST *
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER * ENTITY_GRAPH_VMS_PER_HOST *
|
||||||
ENTITY_GRAPH_ALARMS_PER_VM,
|
ENTITY_GRAPH_ALARMS_PER_VM,
|
||||||
subgraph.num_edges(), 'num of BOTH edges Host (depth 1)')
|
subgraph.num_edges(), 'num of BOTH edges Host (depth 1)')
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ class GraphAlgorithmTest(GraphTestBase):
|
|||||||
query_dict=query, root_id=first_host_id, depth=1)
|
query_dict=query, root_id=first_host_id, depth=1)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
1 + # For tye host
|
1 + # For tye host
|
||||||
1 + # For NODE
|
1 + # For Cluster
|
||||||
1 + # For SWITCH
|
1 + # For SWITCH
|
||||||
ENTITY_GRAPH_ALARMS_PER_HOST +
|
ENTITY_GRAPH_ALARMS_PER_HOST +
|
||||||
ENTITY_GRAPH_TESTS_PER_HOST +
|
ENTITY_GRAPH_TESTS_PER_HOST +
|
||||||
@ -94,8 +94,8 @@ class GraphAlgorithmTest(GraphTestBase):
|
|||||||
|
|
||||||
subgraph = ga.graph_query_vertices(root_id=first_host_id, depth=2)
|
subgraph = ga.graph_query_vertices(root_id=first_host_id, depth=2)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
1 + # Node to switch
|
1 + # Cluster to switch
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE * 2 +
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER * 2 +
|
||||||
ENTITY_GRAPH_ALARMS_PER_HOST +
|
ENTITY_GRAPH_ALARMS_PER_HOST +
|
||||||
ENTITY_GRAPH_TESTS_PER_HOST +
|
ENTITY_GRAPH_TESTS_PER_HOST +
|
||||||
ENTITY_GRAPH_VMS_PER_HOST +
|
ENTITY_GRAPH_VMS_PER_HOST +
|
||||||
@ -118,15 +118,15 @@ class GraphAlgorithmTest(GraphTestBase):
|
|||||||
}
|
}
|
||||||
subgraph = ga.graph_query_vertices(query_dict=query, depth=3)
|
subgraph = ga.graph_query_vertices(query_dict=query, depth=3)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
1 + # Node to switch
|
1 + # Cluster to switch
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE * 2 +
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER * 2 +
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE * ENTITY_GRAPH_TESTS_PER_HOST +
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER * ENTITY_GRAPH_TESTS_PER_HOST +
|
||||||
ENTITY_GRAPH_HOSTS_PER_NODE * ENTITY_GRAPH_VMS_PER_HOST,
|
ENTITY_GRAPH_HOSTS_PER_CLUSTER * ENTITY_GRAPH_VMS_PER_HOST,
|
||||||
subgraph.num_edges(), 'num of edges Node (depth 3)')
|
subgraph.num_edges(), 'num of edges Node (depth 3)')
|
||||||
|
|
||||||
query = {
|
query = {
|
||||||
'or': [
|
'or': [
|
||||||
{'==': {VProps.TYPE: OPENSTACK_NODE}},
|
{'==': {VProps.TYPE: OPENSTACK_CLUSTER}},
|
||||||
{'==': {VProps.CATEGORY: ALARM}},
|
{'==': {VProps.CATEGORY: ALARM}},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -171,10 +171,10 @@ class GraphAlgorithmTest(GraphTestBase):
|
|||||||
t_v_node = graph_utils.create_vertex(
|
t_v_node = graph_utils.create_vertex(
|
||||||
vitrage_id='6',
|
vitrage_id='6',
|
||||||
entity_category=RESOURCE,
|
entity_category=RESOURCE,
|
||||||
entity_type=OPENSTACK_NODE)
|
entity_type=OPENSTACK_CLUSTER)
|
||||||
t_v_node_not_in_graph = graph_utils.create_vertex(
|
t_v_node_not_in_graph = graph_utils.create_vertex(
|
||||||
vitrage_id='7', entity_category=RESOURCE,
|
vitrage_id='7', entity_category=RESOURCE,
|
||||||
entity_type=OPENSTACK_NODE + ' not in graph')
|
entity_type=OPENSTACK_CLUSTER + ' not in graph')
|
||||||
|
|
||||||
e_alarm_on_host = graph_utils.create_edge(
|
e_alarm_on_host = graph_utils.create_edge(
|
||||||
t_v_host_alarm.vertex_id, t_v_host.vertex_id, ELabel.ON)
|
t_v_host_alarm.vertex_id, t_v_host.vertex_id, ELabel.ON)
|
||||||
|
@ -27,7 +27,7 @@ from vitrage.datasources import CINDER_VOLUME_DATASOURCE
|
|||||||
from vitrage.datasources import NOVA_HOST_DATASOURCE
|
from vitrage.datasources import NOVA_HOST_DATASOURCE
|
||||||
from vitrage.datasources import NOVA_INSTANCE_DATASOURCE
|
from vitrage.datasources import NOVA_INSTANCE_DATASOURCE
|
||||||
from vitrage.datasources import NOVA_ZONE_DATASOURCE
|
from vitrage.datasources import NOVA_ZONE_DATASOURCE
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
from vitrage.datasources.static_physical import SWITCH
|
from vitrage.datasources.static_physical import SWITCH
|
||||||
from vitrage.graph import Edge
|
from vitrage.graph import Edge
|
||||||
from vitrage.graph import NXGraph
|
from vitrage.graph import NXGraph
|
||||||
@ -112,16 +112,16 @@ class BaseTopologyTest(test.BaseTestCase):
|
|||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
os.remove(path)
|
os.remove(path)
|
||||||
|
|
||||||
def _entities_validation_data(self, node_entities=1, node_edges=1,
|
def _entities_validation_data(self, cluster_entities=1, cluster_edges=1,
|
||||||
zone_entities=1, zone_edges=2,
|
zone_entities=1, zone_edges=2,
|
||||||
host_entities=1, host_edges=1,
|
host_entities=1, host_edges=1,
|
||||||
instance_entities=0, instance_edges=0,
|
instance_entities=0, instance_edges=0,
|
||||||
volume_entities=0, volume_edges=0,
|
volume_entities=0, volume_edges=0,
|
||||||
switch_entities=0, switch_edges=0):
|
switch_entities=0, switch_edges=0):
|
||||||
return [
|
return [
|
||||||
{VProps.TYPE: OPENSTACK_NODE,
|
{VProps.TYPE: OPENSTACK_CLUSTER,
|
||||||
self.NUM_ENTITIES_PER_TYPE: node_entities,
|
self.NUM_ENTITIES_PER_TYPE: cluster_entities,
|
||||||
self.NUM_EDGES_PER_TYPE: node_edges},
|
self.NUM_EDGES_PER_TYPE: cluster_edges},
|
||||||
{VProps.TYPE: NOVA_ZONE_DATASOURCE,
|
{VProps.TYPE: NOVA_ZONE_DATASOURCE,
|
||||||
self.NUM_ENTITIES_PER_TYPE: zone_entities,
|
self.NUM_ENTITIES_PER_TYPE: zone_entities,
|
||||||
self.NUM_EDGES_PER_TYPE: zone_edges},
|
self.NUM_EDGES_PER_TYPE: zone_edges},
|
||||||
@ -284,7 +284,7 @@ class BaseTopologyTest(test.BaseTestCase):
|
|||||||
return '{"and": [{"==": {"category": "RESOURCE"}},' \
|
return '{"and": [{"==": {"category": "RESOURCE"}},' \
|
||||||
'{"==": {"is_deleted": false}},' \
|
'{"==": {"is_deleted": false}},' \
|
||||||
'{"==": {"is_placeholder": false}},' \
|
'{"==": {"is_placeholder": false}},' \
|
||||||
'{"or": [{"==": {"type": "openstack.node"}},' \
|
'{"or": [{"==": {"type": "openstack.cluster"}},' \
|
||||||
'{"==": {"type": "nova.instance"}},' \
|
'{"==": {"type": "nova.instance"}},' \
|
||||||
'{"==": {"type": "nova.host"}},' \
|
'{"==": {"type": "nova.host"}},' \
|
||||||
'{"==": {"type": "nova.zone"}}]}]}'
|
'{"==": {"type": "nova.zone"}}]}]}'
|
||||||
@ -294,6 +294,6 @@ class BaseTopologyTest(test.BaseTestCase):
|
|||||||
return '{"and": [{"==": {"category": "RESOURCE"}},' \
|
return '{"and": [{"==": {"category": "RESOURCE"}},' \
|
||||||
'{"==": {"is_deleted": false}},' \
|
'{"==": {"is_deleted": false}},' \
|
||||||
'{"==": {"is_placeholder": false}},' \
|
'{"==": {"is_placeholder": false}},' \
|
||||||
'{"or": [{"==": {"type": "openstack.node"}},' \
|
'{"or": [{"==": {"type": "openstack.cluster"}},' \
|
||||||
'{"==": {"type": "nova.host"}},' \
|
'{"==": {"type": "nova.host"}},' \
|
||||||
'{"==": {"type": "nova.zone"}}]}]}'
|
'{"==": {"type": "nova.zone"}}]}]}'
|
||||||
|
@ -23,7 +23,7 @@ from vitrage.datasources import CINDER_VOLUME_DATASOURCE
|
|||||||
from vitrage.datasources import NOVA_HOST_DATASOURCE
|
from vitrage.datasources import NOVA_HOST_DATASOURCE
|
||||||
from vitrage.datasources import NOVA_INSTANCE_DATASOURCE
|
from vitrage.datasources import NOVA_INSTANCE_DATASOURCE
|
||||||
from vitrage.datasources import NOVA_ZONE_DATASOURCE
|
from vitrage.datasources import NOVA_ZONE_DATASOURCE
|
||||||
from vitrage.datasources import OPENSTACK_NODE
|
from vitrage.datasources import OPENSTACK_CLUSTER
|
||||||
from vitrage.graph import Edge
|
from vitrage.graph import Edge
|
||||||
from vitrage.graph import NXGraph
|
from vitrage.graph import NXGraph
|
||||||
from vitrage.graph import Vertex
|
from vitrage.graph import Vertex
|
||||||
@ -148,15 +148,15 @@ class TestTopology(BaseTopologyTest):
|
|||||||
# entity graph processor
|
# entity graph processor
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
|
||||||
def _entities_validation_data(self, node_entities=1, node_edges=1,
|
def _entities_validation_data(self, cluster_entities=1, cluster_edges=1,
|
||||||
zone_entities=1, zone_edges=2,
|
zone_entities=1, zone_edges=2,
|
||||||
host_entities=1, host_edges=1,
|
host_entities=1, host_edges=1,
|
||||||
instance_entities=0, instance_edges=0,
|
instance_entities=0, instance_edges=0,
|
||||||
volume_entities=0, volume_edges=0):
|
volume_entities=0, volume_edges=0):
|
||||||
return [
|
return [
|
||||||
{VProps.TYPE: OPENSTACK_NODE,
|
{VProps.TYPE: OPENSTACK_CLUSTER,
|
||||||
self.NUM_ENTITIES_PER_TYPE: node_entities,
|
self.NUM_ENTITIES_PER_TYPE: cluster_entities,
|
||||||
self.NUM_EDGES_PER_TYPE: node_edges},
|
self.NUM_EDGES_PER_TYPE: cluster_edges},
|
||||||
{VProps.TYPE: NOVA_ZONE_DATASOURCE,
|
{VProps.TYPE: NOVA_ZONE_DATASOURCE,
|
||||||
self.NUM_ENTITIES_PER_TYPE: zone_entities,
|
self.NUM_ENTITIES_PER_TYPE: zone_entities,
|
||||||
self.NUM_EDGES_PER_TYPE: zone_edges},
|
self.NUM_EDGES_PER_TYPE: zone_edges},
|
||||||
@ -316,7 +316,7 @@ class TestTopology(BaseTopologyTest):
|
|||||||
return '{"and": [{"==": {"category": "RESOURCE"}},' \
|
return '{"and": [{"==": {"category": "RESOURCE"}},' \
|
||||||
'{"==": {"is_deleted": false}},' \
|
'{"==": {"is_deleted": false}},' \
|
||||||
'{"==": {"is_placeholder": false}},' \
|
'{"==": {"is_placeholder": false}},' \
|
||||||
'{"or": [{"==": {"type": "openstack.node"}},' \
|
'{"or": [{"==": {"type": "openstack.cluster"}},' \
|
||||||
'{"==": {"type": "nova.instance"}},' \
|
'{"==": {"type": "nova.instance"}},' \
|
||||||
'{"==": {"type": "nova.host"}},' \
|
'{"==": {"type": "nova.host"}},' \
|
||||||
'{"==": {"type": "nova.zone"}}]}]}'
|
'{"==": {"type": "nova.zone"}}]}]}'
|
||||||
@ -326,6 +326,6 @@ class TestTopology(BaseTopologyTest):
|
|||||||
return '{"and": [{"==": {"category": "RESOURCE"}},' \
|
return '{"and": [{"==": {"category": "RESOURCE"}},' \
|
||||||
'{"==": {"is_deleted": false}},' \
|
'{"==": {"is_deleted": false}},' \
|
||||||
'{"==": {"is_placeholder": false}},' \
|
'{"==": {"is_placeholder": false}},' \
|
||||||
'{"or": [{"==": {"type": "openstack.node"}},' \
|
'{"or": [{"==": {"type": "openstack.cluster"}},' \
|
||||||
'{"==": {"type": "nova.host"}},' \
|
'{"==": {"type": "nova.host"}},' \
|
||||||
'{"==": {"type": "nova.zone"}}]}]}'
|
'{"==": {"type": "nova.zone"}}]}]}'
|
||||||
|
Loading…
Reference in New Issue
Block a user