properties refactoring "vitrage_XXX"

Change-Id: If2f403106bd0a9c67fd8add422651be40c70d495
This commit is contained in:
Alon Heller 2017-06-11 14:21:56 +03:00
parent fa18d22399
commit 77fa34ed6f
9 changed files with 121 additions and 121 deletions

View File

@ -53,13 +53,13 @@ class Topolgy(generic.View):
query = request.GET.get('query')
elif graph_type == 'tree':
''' Default tree query - get computes, used by Sunburst'''
query = '{"and": [{"==": {"category": "RESOURCE"}},' \
'{"==": {"is_deleted": false}},' \
'{"==": {"is_placeholder": false}},' \
'{"or": [{"==": {"type": "openstack.cluster"}},' \
'{"==": {"type": "nova.instance"}},' \
'{"==": {"type": "nova.host"}},' \
'{"==": {"type": "nova.zone"}}]}]}'
query = '{"and": [{"==": {"vitrage_category": "RESOURCE"}},' \
'{"==": {"vitrage_is_deleted": false}},' \
'{"==": {"vitrage_is_placeholder": false}},' \
'{"or": [{"==": {"vitrage_type": "openstack.cluster"}},' \
'{"==": {"vitrage_type": "nova.instance"}},' \
'{"==": {"vitrage_type": "nova.host"}},' \
'{"==": {"vitrage_type": "nova.zone"}}]}]}'
return vitrage.topology(request=request,
query=query,

View File

@ -12,9 +12,9 @@
<th st-sort="update_timestamp">{$ 'TimeStamp' | translate $}</th>
<th st-sort="name">{$ 'Name' | translate $}</th>
<th st-sort="resource_type">{$ 'Resource Type' | translate $}</th>
<th st-sort="resource_id">{$ 'Resource ID' | translate $}</th>
<th st-sort="vitrage_resource_id">{$ 'Resource ID' | translate $}</th>
<th st-sort="severity">{$ 'Severity' | translate $}</th>
<th st-sort="type">{$ 'Type' | translate $}</th>
<th st-sort="vitrage_type">{$ 'Type' | translate $}</th>
<th>{$ 'RCA' | translate $}</th>
</tr>
<tr>
@ -27,13 +27,13 @@
</thead>
<tbody>
<tr ng-repeat="alarm in alarmList.ialarms track by $index">
<td title="{$ alarm.aggregated_severity $}"><i class="fa first-column" ng-class="{'orange fa-exclamation-triangle': alarm.operational_severity == 'SEVERE', 'yellow fa-exclamation-triangle': alarm.operational_severity == 'WARNING', 'red fa-exclamation-circle': alarm.operational_severity == 'CRITICAL', 'green fa-check': alarm.operational_severity == 'OK', 'gray fa-circle-o-notch': alarm.operational_severity == 'N/A'}"></i></td>
<td title="{$ alarm.vitrage_aggregated_severity $}"><i class="fa first-column" ng-class="{'orange fa-exclamation-triangle': alarm.vitrage_operational_severity == 'SEVERE', 'yellow fa-exclamation-triangle': alarm.vitrage_operational_severity == 'WARNING', 'red fa-exclamation-circle': alarm.vitrage_operational_severity == 'CRITICAL', 'green fa-check': alarm.vitrage_operational_severity == 'OK', 'gray fa-circle-o-notch': alarm.vitrage_operational_severity == 'N/A'}"></i></td>
<td><i class="fa fa-clock-o"></i> {$alarm.update_timestamp | date:"yyyy-MM-dd hh:mm:ss"$} </td>
<td>{$alarm.name$}</td>
<td>{$alarm.resource_type$}</td>
<td>{$alarm.resource_id$}</td>
<td>{$alarm.aggregated_severity | lowercase$}</td>
<td>{$alarm.type$}</td>
<td>{$alarm.vitrage_resource_id$}</td>
<td>{$alarm.vitrage_aggregated_severity | lowercase$}</td>
<td>{$alarm.vitrage_type$}</td>
<td ng-click="alarmList.onRcaClick(alarm)"><i class="fa fa-sitemap"></i></td>
</tr>
</tbody>

View File

@ -11,7 +11,7 @@
hz-table>
<thead>
<tr>
<th class="state-col" st-sort="aggregated_state"></th>
<th class="state-col" st-sort="vitrage_aggregated_state"></th>
<th class="timestamp-col" st-sort="update_timestamp">{$ 'Time' | translate $}</th>
<th class="name-col" st-sort="name">{$ 'Name' | translate $}</th>
<th class="rca-col">{$ 'RCA' | translate $}</th>
@ -19,7 +19,7 @@
</thead>
<tbody>
<tr ng-repeat="alarm in alarmsCtrl.computeAlarms track by $index">
<td title="{$ alarm.aggregated_state $}"><i class="fa" ng-class="{'orange fa-exclamation-triangle': alarm.operational_severity == 'SEVERE', 'yellow fa-exclamation-triangle': alarm.operational_severity == 'WARNING', 'red fa-exclamation-circle': alarm.operational_severity == 'CRITICAL', 'green fa-check': alarm.operational_severity == 'OK', 'gray fa-circle-o-notch': alarm.operational_severity == 'N/A'}"></i></td>
<td title="{$ alarm.vitrage_aggregated_state $}"><i class="fa" ng-class="{'orange fa-exclamation-triangle': alarm.vitrage_operational_severity == 'SEVERE', 'yellow fa-exclamation-triangle': alarm.vitrage_operational_severity == 'WARNING', 'red fa-exclamation-circle': alarm.vitrage_operational_severity == 'CRITICAL', 'green fa-check': alarm.vitrage_operational_severity == 'OK', 'gray fa-circle-o-notch': alarm.vitrage_operational_severity == 'N/A'}"></i></td>
<td title="{$alarm.update_timestamp | date:'yyyy-MM-dd hh:mm:ss'$}"><i class="fa fa-clock-o"></i> {$alarm.update_timestamp | date:"yyyy-MM-dd hh:mm:ss"$} </td>
<td class="ellipsis" title="{$alarm.name$}">{$alarm.name$}</td>
<td title="{$ 'Root Cause Analysis' | translate $}" ng-click="alarmsCtrl.onAlarmClick(alarm)"><i class="fa fa-sitemap"></i></td>

View File

@ -106,16 +106,16 @@ function hzRootCauseAnalysisGraph($filter) {
var className = " clickable";
var alertName = key.name, // CPU load
alertCategory = key.category, // ALARM
alertCategory = key.vitrage_category, // ALARM
alertInfo = key.info || '', // WARNING - 15min load 1.66 at 32 CPUs
alertResourceId = key.resource_id, // host-0
alertResourceId = key.vitrage_resource_id, // host-0
alertResourceName = key.resource_name, // host-0
alertResourceType = key.resource_type, // nova.host
alertSeverity = key.severity, //WARNING
alertOperationalSeverity = key.operational_severity ? key.operational_severity.toUpperCase() : key.operational_severity, //WARNING
alertOperationalSeverity = key.vitrage_operational_severity ? key.vitrage_operational_severity.toUpperCase() : key.vitrage_operational_severity, //WARNING
alertState = key.state ? key.state.toUpperCase() : key.state, //Active
alertTimeStamp = $filter('date')(key.update_timestamp, 'MM/dd/yyyy h:mma'), //2015-12-01T12:46:41Z
alertType = key.type, //nagios
alertType = key.vitrage_type, //nagios
alertVitrageId = key.vitrage_id;
var html = '';

View File

@ -88,7 +88,7 @@ function hzSunburst() {
}
function cloneSelectedItem(d) {
scope.selected = {id: d.id, name: d.name, state: d.aggregated_state,vitrage_id: d.vitrage_id, type: d.type};
scope.selected = {id: d.id, name: d.name, state: d.vitrage_aggregated_state,vitrage_id: d.vitrage_id, type: d.vitrage_type};
}
// Interpolate the scales!
@ -111,8 +111,8 @@ function hzSunburst() {
}
function getColor(d) {
if (d.operational_state) {
switch (d.operational_state.toUpperCase()) {
if (d.vitrage_operational_state) {
switch (d.vitrage_operational_state.toUpperCase()) {
case 'ERROR':
case 'DELETED':
return '#BE0006';

View File

@ -109,7 +109,7 @@
var category = d.category,
cls = '';
if (category && category.toLowerCase() === 'alarm') {
var severity = d.operational_severity;
var severity = d.vitrage_operational_severity;
if (severity) {
switch (severity.toLowerCase()) {
case 'critical':
@ -137,7 +137,7 @@
return n.id == d.id;
});
var state = reald.operational_state;
var state = reald.vitrage_operational_state;
if (state) {
switch (state.toLowerCase()) {
case 'error':
@ -161,7 +161,7 @@
if (category && category.toLowerCase() === 'alarm') {
icon_size = '18px';
} else {
var type = d.type || 'no_type';
var type = d.vitrage_type || 'no_type';
switch (type.toLowerCase()) {
case 'nova.instance':
case 'nova.host':
@ -192,7 +192,7 @@
})
.classed('icon', true)
.classed('fill-only', function(d) {
var type = (d.type || '').toLowerCase();
var type = (d.vitrage_type || '').toLowerCase();
if (type && type === 'nova.host' || type === 'cinder.volume') {
return true;
}
@ -203,7 +203,7 @@
if (category && category.toLowerCase() === 'alarm') {
icon = '\uf0f3'; //\uf0a2'; //bell-o
} else {
var type = d.type || 'no_type';
var type = d.vitrage_type || 'no_type';
switch (type.toLowerCase()) {
case 'nova.instance':
icon = '\uf108'; //fa-desktop

View File

@ -365,7 +365,7 @@ function hzEntitiesGraph() {
cls = '';
if (category && category.toLowerCase() === 'alarm') {
var severity = d.operational_severity;
var severity = d.vitrage_operational_severity;
if (severity) {
switch (severity.toLowerCase()) {
case 'critical':
@ -389,7 +389,7 @@ function hzEntitiesGraph() {
}
}
} else {
var state = d.operational_state;
var state = d.vitrage_operational_state;
if (state) {
switch (state.toLowerCase()) {
case 'error':
@ -413,7 +413,7 @@ function hzEntitiesGraph() {
if (category && category.toLowerCase() === 'alarm') {
icon_size = '18px';
} else {
var type = d.type || 'no_type';
var type = d.vitrage_type || 'no_type';
switch(type.toLowerCase()) {
case 'nova.instance':
case 'nova.host':
@ -445,7 +445,7 @@ function hzEntitiesGraph() {
})
.classed('icon', true)
.classed('fill-only', function(d) {
var type = (d.type || '').toLowerCase();
var type = (d.vitrage_type || '').toLowerCase();
if (type && type === 'nova.host' || type === 'cinder.volume') {
return true;
}
@ -457,7 +457,7 @@ function hzEntitiesGraph() {
if (category && category.toLowerCase() === 'alarm') {
icon = '\uf0f3'; //\uf0a2'; //bell-o
} else {
var type = d.type || 'no_type';
var type = d.vitrage_type || 'no_type';
switch(type.toLowerCase()) {
case 'nova.instance':
icon = '\uf108'; //fa-desktop
@ -700,7 +700,7 @@ function hzEntitiesGraph() {
if (node.category.toLowerCase() === 'alarm') {
node.high = true;
node.highDepth = 0;
} else if (!node.high && node.type && node.type.toLowerCase() === 'sdn_controller') {
} else if (!node.high && node.vitrage_type && node.vitrage_type.toLowerCase() === 'sdn_controller') {
findNodes(node, depth, allNodes, linksMap);
}
}

View File

@ -14,7 +14,7 @@ function hzEntitiesInfo() {
return directive;
function link(scope, element, attrs) {
scope.blackList = ['name', 'is_deleted', 'is_placeholder', 'index', 'graph_index',
scope.blackList = ['name', 'vitrage_is_deleted', 'vitrage_is_placeholder', 'index', 'graph_index',
'fixed', 'weight', 'px', 'py', 'x', 'y', 'width', 'height', 'bbox', 'high', 'highDepth'];
}
}

View File

@ -4,8 +4,8 @@
"nodes": [
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-8",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -13,12 +13,12 @@
"type": "nova.instance",
"id": "20d12a8a-ea9a-89c6-5947-83bea959362e",
"vitrage_id": "RESOURCE:nova.instance:20d12a8a-ea9a-89c6-5947-83bea959362e",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-2",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -26,12 +26,12 @@
"type": "nova.instance",
"id": "dc35fa2f-4515-1653-ef6b-03b471bb395b",
"vitrage_id": "RESOURCE:nova.instance:dc35fa2f-4515-1653-ef6b-03b471bb395b",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-13",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -39,12 +39,12 @@
"type": "nova.instance",
"id": "9879cf5a-bdcf-3651-3017-961ed887ec86",
"vitrage_id": "RESOURCE:nova.instance:9879cf5a-bdcf-3651-3017-961ed887ec86",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-10",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -52,12 +52,12 @@
"type": "nova.instance",
"id": "fe124f4b-9ed7-4591-fcd1-803cf5c33cb1",
"vitrage_id": "RESOURCE:nova.instance:fe124f4b-9ed7-4591-fcd1-803cf5c33cb1",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-11",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -65,60 +65,60 @@
"type": "nova.instance",
"id": "f2e48a97-7350-061e-12d3-84c6dc3e67c0",
"vitrage_id": "RESOURCE:nova.instance:f2e48a97-7350-061e-12d3-84c6dc3e67c0",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "host-2",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "available",
"type": "nova.host",
"id": "host-2",
"vitrage_id": "RESOURCE:nova.host:host-2",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "host-3",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "available",
"type": "nova.host",
"id": "host-3",
"vitrage_id": "RESOURCE:nova.host:host-3",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "host-0",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "available",
"type": "nova.host",
"id": "host-0",
"vitrage_id": "RESOURCE:nova.host:host-0",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "host-1",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "available",
"type": "nova.host",
"id": "host-1",
"vitrage_id": "RESOURCE:nova.host:host-1",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-9",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -126,12 +126,12 @@
"type": "nova.instance",
"id": "275097cf-954e-8e24-b185-9514e24b8591",
"vitrage_id": "RESOURCE:nova.instance:275097cf-954e-8e24-b185-9514e24b8591",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-1",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -139,12 +139,12 @@
"type": "nova.instance",
"id": "a0f0805f-c804-cffe-c25a-1b38f555ed68",
"vitrage_id": "RESOURCE:nova.instance:a0f0805f-c804-cffe-c25a-1b38f555ed68",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-14",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -152,24 +152,24 @@
"type": "nova.instance",
"id": "56af57d2-34a4-19b1-5106-b613637a11a7",
"vitrage_id": "RESOURCE:nova.instance:56af57d2-34a4-19b1-5106-b613637a11a7",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "zone-1",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "available",
"type": "nova.zone",
"id": "zone-1",
"vitrage_id": "RESOURCE:nova.zone:zone-1",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-3",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -177,12 +177,12 @@
"type": "nova.instance",
"id": "16e14c58-d254-2bec-53e4-c766e48810aa",
"vitrage_id": "RESOURCE:nova.instance:16e14c58-d254-2bec-53e4-c766e48810aa",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-7",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "SUSPENDED",
@ -190,12 +190,12 @@
"type": "nova.instance",
"id": "f35a1e10-74ff-7332-8edf-83cd6ffcb2de",
"vitrage_id": "RESOURCE:nova.instance:f35a1e10-74ff-7332-8edf-83cd6ffcb2de",
"aggregated_state": "SUSPENDED"
"vitrage_aggregated_state": "SUSPENDED"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-4",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -203,12 +203,12 @@
"type": "nova.instance",
"id": "ea8a450e-cab1-2272-f431-494b40c5c378",
"vitrage_id": "RESOURCE:nova.instance:ea8a450e-cab1-2272-f431-494b40c5c378",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-6",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -216,12 +216,12 @@
"type": "nova.instance",
"id": "6e42bdc3-b776-1b2c-2c7d-b7a8bb98f721",
"vitrage_id": "RESOURCE:nova.instance:6e42bdc3-b776-1b2c-2c7d-b7a8bb98f721",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-5",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ACTIVE",
@ -229,24 +229,24 @@
"type": "nova.instance",
"id": "8c951613-c660-87c0-c18b-0fa3293ce8d8",
"vitrage_id": "RESOURCE:nova.instance:8c951613-c660-87c0-c18b-0fa3293ce8d8",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "zone-0",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "available",
"type": "nova.zone",
"id": "zone-0",
"vitrage_id": "RESOURCE:nova.zone:zone-0",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-0",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "ERROR",
@ -254,12 +254,12 @@
"type": "nova.instance",
"id": "78353ce4-2710-49b5-1341-b8cbb6000ebc",
"vitrage_id": "RESOURCE:nova.instance:78353ce4-2710-49b5-1341-b8cbb6000ebc",
"aggregated_state": "ERROR"
"vitrage_aggregated_state": "ERROR"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "vm-12",
"update_timestamp": "2015-12-01T12:46:41Z",
"state": "PAUSED",
@ -267,164 +267,164 @@
"type": "nova.instance",
"id": "35bf479a-75d9-80a9-874e-d3b50fb2dd2e",
"vitrage_id": "RESOURCE:nova.instance:35bf479a-75d9-80a9-874e-d3b50fb2dd2e",
"aggregated_state": "SUSPENDED"
"vitrage_aggregated_state": "SUSPENDED"
},
{
"category": "RESOURCE",
"is_placeholder": false,
"is_deleted": false,
"vitrage_is_placeholder": false,
"vitrage_is_deleted": false,
"name": "openstack.node",
"type": "openstack.node",
"id": "openstack.node",
"vitrage_id": "RESOURCE:openstack.node",
"state": "available",
"aggregated_state": "RUNNING"
"vitrage_aggregated_state": "RUNNING"
}
],
"links": [
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 3,
"key": "contains",
"source": 5
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 1,
"key": "contains",
"source": 5
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 16,
"key": "contains",
"source": 5
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 11,
"key": "contains",
"source": 5
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 13,
"key": "contains",
"source": 6
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 4,
"key": "contains",
"source": 6
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 14,
"key": "contains",
"source": 6
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 20,
"key": "contains",
"source": 7
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 0,
"key": "contains",
"source": 7
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 19,
"key": "contains",
"source": 7
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 15,
"key": "contains",
"source": 7
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 9,
"key": "contains",
"source": 8
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 10,
"key": "contains",
"source": 8
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 2,
"key": "contains",
"source": 8
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 17,
"key": "contains",
"source": 8
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 6,
"key": "contains",
"source": 12
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 8,
"key": "contains",
"source": 12
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 5,
"key": "contains",
"source": 18
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 7,
"key": "contains",
"source": 18
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 18,
"key": "contains",
"source": 21
},
{
"relationship_name": "contains",
"is_deleted": false,
"vitrage_is_deleted": false,
"target": 12,
"key": "contains",
"source": 21