Adding Heat Resource Topology to Horizon
Change-Id: Ie9f2040850df3d7f1fcefe68430e9103c972f80f Implements: blueprint heat-ui-resource-topology
275
horizon/static/horizon/js/horizon.heattop.js
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* HeatTop JS Framework
|
||||||
|
* Dependencies: jQuery 1.7.1 or later, d3 v3 or later
|
||||||
|
* Date: June 2013
|
||||||
|
* Description: JS Framework that subclasses the D3 Force Directed Graph library to create
|
||||||
|
* Heat-specific objects and relationships with the purpose of displaying
|
||||||
|
* Stacks, Resources, and related Properties in a Resource Topology Graph.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var container = "#heat_resource_topology";
|
||||||
|
|
||||||
|
if ($(container).length){
|
||||||
|
var width = $(container).width(),
|
||||||
|
height = 500,
|
||||||
|
stack_id = $("#stack_id").data("stack_id"),
|
||||||
|
ajax_url = '/project/stacks/get_d3_data/'+stack_id+'/',
|
||||||
|
graph = $("#d3_data").data("d3_data"),
|
||||||
|
force = d3.layout.force()
|
||||||
|
.nodes(graph.nodes)
|
||||||
|
.links([])
|
||||||
|
.gravity(0.1)
|
||||||
|
.charge(-2000)
|
||||||
|
.linkDistance(100)
|
||||||
|
.size([width, height])
|
||||||
|
.on("tick",tick),
|
||||||
|
svg = d3.select(container).append("svg")
|
||||||
|
.attr("width", width)
|
||||||
|
.attr("height", height),
|
||||||
|
node = svg.selectAll(".node"),
|
||||||
|
link = svg.selectAll(".link"),
|
||||||
|
needs_update = false,
|
||||||
|
nodes = force.nodes(),
|
||||||
|
links = force.links();
|
||||||
|
|
||||||
|
build_links();
|
||||||
|
update();
|
||||||
|
|
||||||
|
|
||||||
|
function update(){
|
||||||
|
node = node.data(nodes, function(d){return d.name});
|
||||||
|
link = link.data(links);
|
||||||
|
|
||||||
|
var nodeEnter = node.enter().append("g")
|
||||||
|
.attr("class", "node")
|
||||||
|
.attr("node_name", function(d){ return d.name })
|
||||||
|
.attr("node_id", function(d){ return d.instance })
|
||||||
|
.call(force.drag);
|
||||||
|
|
||||||
|
nodeEnter.append("image")
|
||||||
|
.attr("xlink:href", function(d) { return d.image; })
|
||||||
|
.attr("id", function(d){return "image_"+ d.name})
|
||||||
|
.attr("x", function(d) { return d.image_x; })
|
||||||
|
.attr("y", function(d) { return d.image_y; })
|
||||||
|
.attr("width", function(d) { return d.image_size; })
|
||||||
|
.attr("height", function(d) { return d.image_size; });
|
||||||
|
node.exit().remove();
|
||||||
|
|
||||||
|
link.enter().insert("svg:line", "g.node")
|
||||||
|
.attr("class", "link")
|
||||||
|
.style("stroke-width", function(d) { return Math.sqrt(d.value); });
|
||||||
|
link.exit().remove();
|
||||||
|
//Setup click action for all nodes
|
||||||
|
node.on("mouseover", function(d) {
|
||||||
|
$("#info_box").html(d.info_box);
|
||||||
|
current_info = d.name;
|
||||||
|
});
|
||||||
|
node.on("mouseout", function(d) {
|
||||||
|
$("#info_box").html('');
|
||||||
|
});
|
||||||
|
|
||||||
|
force.start();
|
||||||
|
}
|
||||||
|
function tick() {
|
||||||
|
link.attr("x1", function(d) { return d.source.x; })
|
||||||
|
.attr("y1", function(d) { return d.source.y; })
|
||||||
|
.attr("x2", function(d) { return d.target.x; })
|
||||||
|
.attr("y2", function(d) { return d.target.y; });
|
||||||
|
|
||||||
|
node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
|
||||||
|
}
|
||||||
|
|
||||||
|
//Load initial Stack box
|
||||||
|
$("#stack_box").html(graph.stack.info_box);
|
||||||
|
//On Page load, set Action In Progress
|
||||||
|
var in_progress = false;
|
||||||
|
set_in_progress(graph.stack, node);
|
||||||
|
|
||||||
|
//If status is In Progress, start AJAX polling
|
||||||
|
var poll_time = 0;
|
||||||
|
if (in_progress == true){poll_time = 3000;}
|
||||||
|
else {poll_time = 30000;}
|
||||||
|
ajax_poll(poll_time);
|
||||||
|
|
||||||
|
function set_in_progress(stack, nodes) {
|
||||||
|
if (stack.in_progress == true){in_progress = true;}
|
||||||
|
for (var i=0;i<nodes.length;i++) {
|
||||||
|
var d = nodes[i];
|
||||||
|
if (d.in_progress == true){in_progress = true;return false;}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function findNode(name) {
|
||||||
|
for (var i=0;i<nodes.length;i++) {if (nodes[i].name === name){return nodes[i];}};
|
||||||
|
};
|
||||||
|
|
||||||
|
function findNodeIndex(name) {
|
||||||
|
for (var i=0;i<nodes.length;i++) {if (nodes[i].name==name){return i;}};
|
||||||
|
};
|
||||||
|
function addNode (node) {
|
||||||
|
nodes.push(node);
|
||||||
|
needs_update = true;
|
||||||
|
};
|
||||||
|
function removeNode (name) {
|
||||||
|
var i = 0;
|
||||||
|
var n = findNode(name);
|
||||||
|
while (i < links.length) {
|
||||||
|
if ((links[i]['source'] == n)||(links[i]['target'] == n))
|
||||||
|
{
|
||||||
|
links.splice(i,1);
|
||||||
|
}
|
||||||
|
else i++;
|
||||||
|
}
|
||||||
|
nodes.splice(findNodeIndex(name),1);
|
||||||
|
needs_update = true;
|
||||||
|
};
|
||||||
|
function remove_nodes(old_nodes, new_nodes){
|
||||||
|
//Check for removed nodes
|
||||||
|
for (var i=0;i<old_nodes.length;i++) {
|
||||||
|
var remove_node = true;
|
||||||
|
for (var j=0;j<new_nodes.length;j++) {
|
||||||
|
if (old_nodes[i].name==new_nodes[j].name){
|
||||||
|
remove_node = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (remove_node==true){
|
||||||
|
removeNode(old_nodes[i].name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function build_links(){
|
||||||
|
for (var i=0;i<nodes.length;i++){
|
||||||
|
build_node_links(nodes[i]);
|
||||||
|
build_reverse_links(nodes[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function build_node_links(node){
|
||||||
|
for (var j=0;j<node.required_by.length;j++){
|
||||||
|
var push_link = true;
|
||||||
|
var target_idx = '';
|
||||||
|
var source_idx = findNodeIndex(node.name);
|
||||||
|
//make sure target node exists
|
||||||
|
try {
|
||||||
|
target_idx = findNodeIndex(node.required_by[j]);
|
||||||
|
} catch(err) {
|
||||||
|
console.log(err);
|
||||||
|
push_link =false;
|
||||||
|
}
|
||||||
|
//check for duplicates
|
||||||
|
for (var lidx=0;lidx<links.length;lidx++) {
|
||||||
|
if ((links[lidx]['source'] == source_idx)&&(links[lidx]['target'] == target_idx))
|
||||||
|
{
|
||||||
|
push_link=false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (push_link==true && (source_idx && target_idx)){
|
||||||
|
links.push({
|
||||||
|
'source':source_idx,
|
||||||
|
'target':target_idx,
|
||||||
|
'value':1
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_reverse_links(node){
|
||||||
|
for (var i=0;i<nodes.length;i++){
|
||||||
|
if(nodes[i].required_by){
|
||||||
|
for (var j=0;j<nodes[i].required_by.length;j++){
|
||||||
|
var dependency = nodes[i].required_by[j];
|
||||||
|
//if new node is required by existing node, push new link
|
||||||
|
if(node.name==dependency){
|
||||||
|
links.push({
|
||||||
|
'source':findNodeIndex(nodes[i].name),
|
||||||
|
'target':findNodeIndex(node.name),
|
||||||
|
'value':1
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ajax_poll(poll_time){
|
||||||
|
setTimeout(function() {
|
||||||
|
$.getJSON(ajax_url, function(json) {
|
||||||
|
//update d3 data element
|
||||||
|
$("#d3_data").attr("data-d3_data", JSON.stringify(json));
|
||||||
|
|
||||||
|
//update stack
|
||||||
|
$("#stack_box").html(json.stack.info_box);
|
||||||
|
set_in_progress(json.stack, json.nodes);
|
||||||
|
needs_update = false;
|
||||||
|
|
||||||
|
//Check Remove nodes
|
||||||
|
remove_nodes(nodes, json.nodes);
|
||||||
|
|
||||||
|
//Check for updates and new nodes
|
||||||
|
json.nodes.forEach(function(d){
|
||||||
|
current_node = findNode(d.name);
|
||||||
|
//Check if node already exists
|
||||||
|
if (current_node) {
|
||||||
|
//Node already exists, just update it
|
||||||
|
current_node.status = d.status;
|
||||||
|
|
||||||
|
//Status has changed, image should be updated
|
||||||
|
if (current_node.image != d.image){
|
||||||
|
current_node.image = d.image;
|
||||||
|
var this_image = d3.select("#image_"+current_node.name);
|
||||||
|
this_image
|
||||||
|
.transition()
|
||||||
|
.attr("x", function(d) { return d.image_x + 5; })
|
||||||
|
.duration(100)
|
||||||
|
.transition()
|
||||||
|
.attr("x", function(d) { return d.image_x - 5; })
|
||||||
|
.duration(100)
|
||||||
|
.transition()
|
||||||
|
.attr("x", function(d) { return d.image_x + 5; })
|
||||||
|
.duration(100)
|
||||||
|
.transition()
|
||||||
|
.attr("x", function(d) { return d.image_x - 5; })
|
||||||
|
.duration(100)
|
||||||
|
.transition()
|
||||||
|
.attr("xlink:href", d.image)
|
||||||
|
.transition()
|
||||||
|
.attr("x", function(d) { return d.image_x; })
|
||||||
|
.duration(100)
|
||||||
|
.ease("bounce")
|
||||||
|
}
|
||||||
|
|
||||||
|
//Status has changed, update info_box
|
||||||
|
current_node.info_box = d.info_box;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
addNode(d);
|
||||||
|
build_links();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//if any updates needed, do update now
|
||||||
|
if (needs_update==true){
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//if no nodes still in progress, slow AJAX polling
|
||||||
|
if (in_progress==false){poll_time = 30000;}
|
||||||
|
else {poll_time = 3000;}
|
||||||
|
ajax_poll(poll_time);
|
||||||
|
}, poll_time);
|
||||||
|
}
|
||||||
|
}
|
@ -38,6 +38,7 @@
|
|||||||
<script src='{{ STATIC_URL }}horizon/js/horizon.projects.js' type='text/javascript' charset='utf-8'></script>
|
<script src='{{ STATIC_URL }}horizon/js/horizon.projects.js' type='text/javascript' charset='utf-8'></script>
|
||||||
<script src='{{ STATIC_URL }}horizon/js/horizon.networktopology.js' type='text/javascript' charset='utf-8'></script>
|
<script src='{{ STATIC_URL }}horizon/js/horizon.networktopology.js' type='text/javascript' charset='utf-8'></script>
|
||||||
<script src='{{ STATIC_URL }}horizon/js/horizon.d3piechart.js' type='text/javascript' charset='utf-8'></script>
|
<script src='{{ STATIC_URL }}horizon/js/horizon.d3piechart.js' type='text/javascript' charset='utf-8'></script>
|
||||||
|
<script src='{{ STATIC_URL }}horizon/js/horizon.heattop.js' type='text/javascript' charset='utf-8'></script>
|
||||||
{% block custom_js_files %}{% endblock %}
|
{% block custom_js_files %}{% endblock %}
|
||||||
{% endcompress %}
|
{% endcompress %}
|
||||||
|
|
||||||
|
84
openstack_dashboard/dashboards/project/stacks/api.py
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
import json
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from django.http import HttpResponse
|
||||||
|
|
||||||
|
from openstack_dashboard.api.heat import resources_list
|
||||||
|
from openstack_dashboard.api.heat import stack_get
|
||||||
|
|
||||||
|
from openstack_dashboard.dashboards.project.stacks.mappings \
|
||||||
|
import get_resource_image
|
||||||
|
from openstack_dashboard.dashboards.project.stacks.mappings \
|
||||||
|
import get_resource_status
|
||||||
|
from openstack_dashboard.dashboards.project.stacks.sro import resource_info
|
||||||
|
from openstack_dashboard.dashboards.project.stacks.sro import stack_info
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Stack(object):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def d3_data(request, stack_id=''):
|
||||||
|
try:
|
||||||
|
stack = stack_get(request, stack_id)
|
||||||
|
except:
|
||||||
|
stack = Stack()
|
||||||
|
stack.id = stack_id
|
||||||
|
stack.stack_name = request.session.get('stack_name', '')
|
||||||
|
stack.stack_status = 'DELETE_COMPLETE'
|
||||||
|
stack.stack_status_reason = 'DELETE_COMPLETE'
|
||||||
|
|
||||||
|
try:
|
||||||
|
resources = resources_list(request, stack.stack_name)
|
||||||
|
except:
|
||||||
|
resources = []
|
||||||
|
|
||||||
|
d3_data = {"nodes": [], "stack": {}}
|
||||||
|
if stack:
|
||||||
|
stack_image = get_resource_image(stack.stack_status, 'stack')
|
||||||
|
stack_node = {
|
||||||
|
'stack_id': stack.id,
|
||||||
|
'name': stack.stack_name,
|
||||||
|
'status': stack.stack_status,
|
||||||
|
'image': stack_image,
|
||||||
|
'image_size': 60,
|
||||||
|
'image_x': -30,
|
||||||
|
'image_y': -30,
|
||||||
|
'text_x': 40,
|
||||||
|
'text_y': ".35em",
|
||||||
|
'in_progress': True if (get_resource_status(stack.stack_status) ==
|
||||||
|
'IN_PROGRESS') else False,
|
||||||
|
'info_box': stack_info(stack, stack_image)
|
||||||
|
}
|
||||||
|
d3_data['stack'] = stack_node
|
||||||
|
|
||||||
|
if resources:
|
||||||
|
for resource in resources:
|
||||||
|
resource_image = get_resource_image(resource.resource_status,
|
||||||
|
resource.resource_type)
|
||||||
|
in_progress = True if (
|
||||||
|
get_resource_status(resource.resource_status)
|
||||||
|
== 'IN_PROGRESS') else False
|
||||||
|
resource_node = {
|
||||||
|
'name': resource.logical_resource_id,
|
||||||
|
'status': resource.resource_status,
|
||||||
|
'image': resource_image,
|
||||||
|
'required_by': resource.required_by,
|
||||||
|
'image_size': 50,
|
||||||
|
'image_x': -25,
|
||||||
|
'image_y': -25,
|
||||||
|
'text_x': 35,
|
||||||
|
'text_y': ".35em",
|
||||||
|
'in_progress': in_progress,
|
||||||
|
'info_box': resource_info(resource)
|
||||||
|
}
|
||||||
|
d3_data['nodes'].append(resource_node)
|
||||||
|
return json.dumps(d3_data)
|
||||||
|
|
||||||
|
|
||||||
|
def get_d3_data(request, stack_id=''):
|
||||||
|
return HttpResponse(d3_data(request, stack_id=stack_id),
|
||||||
|
content_type="application/json")
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
import urlparse
|
import urlparse
|
||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
@ -81,3 +82,64 @@ def stack_output(output):
|
|||||||
if parts.netloc and parts.scheme in ('http', 'https'):
|
if parts.netloc and parts.scheme in ('http', 'https'):
|
||||||
return u'<a href="%s" target="_blank">%s</a>' % (output, output)
|
return u'<a href="%s" target="_blank">%s</a>' % (output, output)
|
||||||
return unicode(output)
|
return unicode(output)
|
||||||
|
|
||||||
|
|
||||||
|
resource_images = {
|
||||||
|
'LB_FAILED': '/static/dashboard/img/lb-red.svg',
|
||||||
|
'LB_DELETE': '/static/dashboard/img/lb-red.svg',
|
||||||
|
'LB_IN_PROGRESS': '/static/dashboard/img/lb-gray.gif',
|
||||||
|
'LB_COMPLETE': '/static/dashboard/img/lb-green.svg',
|
||||||
|
'DB_FAILED': '/static/dashboard/img/db-red.svg',
|
||||||
|
'DB_DELETE': '/static/dashboard/img/db-red.svg',
|
||||||
|
'DB_IN_PROGRESS': '/static/dashboard/img/db-gray.gif',
|
||||||
|
'DB_COMPLETE': '/static/dashboard/img/db-green.svg',
|
||||||
|
'STACK_FAILED': '/static/dashboard/img/stack-red.svg',
|
||||||
|
'STACK_DELETE': '/static/dashboard/img/stack-red.svg',
|
||||||
|
'STACK_IN_PROGRESS': '/static/dashboard/img/stack-gray.gif',
|
||||||
|
'STACK_COMPLETE': '/static/dashboard/img/stack-green.svg',
|
||||||
|
'SERVER_FAILED': '/static/dashboard/img/server-red.svg',
|
||||||
|
'SERVER_DELETE': '/static/dashboard/img/server-red.svg',
|
||||||
|
'SERVER_IN_PROGRESS': '/static/dashboard/img/server-gray.gif',
|
||||||
|
'SERVER_COMPLETE': '/static/dashboard/img/server-green.svg',
|
||||||
|
'UNKNOWN_FAILED': '/static/dashboard/img/unknown-red.svg',
|
||||||
|
'UNKNOWN_DELETE': '/static/dashboard/img/unknown-red.svg',
|
||||||
|
'UNKNOWN_IN_PROGRESS': '/static/dashboard/img/unknown-gray.gif',
|
||||||
|
'UNKNOWN_COMPLETE': '/static/dashboard/img/unknown-green.svg',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_resource_type(type):
|
||||||
|
if re.search('LoadBalancer', type):
|
||||||
|
return 'LB'
|
||||||
|
elif re.search('DBInstance', type):
|
||||||
|
return 'DB'
|
||||||
|
elif re.search('Instance', type):
|
||||||
|
return 'SERVER'
|
||||||
|
elif re.search('stack', type):
|
||||||
|
return 'STACK'
|
||||||
|
else:
|
||||||
|
return 'UNKNOWN'
|
||||||
|
|
||||||
|
|
||||||
|
def get_resource_status(status):
|
||||||
|
if re.search('IN_PROGRESS', status):
|
||||||
|
return 'IN_PROGRESS'
|
||||||
|
elif re.search('FAILED', status):
|
||||||
|
return 'FAILED'
|
||||||
|
elif re.search('DELETE', status):
|
||||||
|
return 'DELETE'
|
||||||
|
else:
|
||||||
|
return 'COMPLETE'
|
||||||
|
|
||||||
|
|
||||||
|
def get_resource_image(status, type):
|
||||||
|
'''
|
||||||
|
Sets the image url and in_progress action sw based on status.
|
||||||
|
'''
|
||||||
|
resource_type = get_resource_type(type)
|
||||||
|
resource_status = get_resource_status(status)
|
||||||
|
resource_state = resource_type + "_" + resource_status
|
||||||
|
|
||||||
|
for key in resource_images:
|
||||||
|
if key == resource_state:
|
||||||
|
return resource_images.get(key)
|
||||||
|
31
openstack_dashboard/dashboards/project/stacks/sro.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
from django.template.defaultfilters import title
|
||||||
|
from django.template.loader import render_to_string
|
||||||
|
|
||||||
|
from horizon.utils.filters import replace_underscores
|
||||||
|
|
||||||
|
|
||||||
|
def stack_info(stack, stack_image):
|
||||||
|
stack.stack_status_desc = title(replace_underscores(stack.stack_status))
|
||||||
|
if stack.stack_status_reason:
|
||||||
|
stack.stack_status_reason = title(
|
||||||
|
replace_underscores(stack.stack_status_reason)
|
||||||
|
)
|
||||||
|
context = {}
|
||||||
|
context['stack'] = stack
|
||||||
|
context['stack_image'] = stack_image
|
||||||
|
return render_to_string('project/stacks/_stack_info.html',
|
||||||
|
context)
|
||||||
|
|
||||||
|
|
||||||
|
def resource_info(resource):
|
||||||
|
resource.resource_status_desc = title(
|
||||||
|
replace_underscores(resource.resource_status)
|
||||||
|
)
|
||||||
|
if resource.resource_status_reason:
|
||||||
|
resource.resource_status_reason = title(
|
||||||
|
replace_underscores(resource.resource_status_reason)
|
||||||
|
)
|
||||||
|
context = {}
|
||||||
|
context['resource'] = resource
|
||||||
|
return render_to_string('project/stacks/_resource_info.html',
|
||||||
|
context)
|
@ -20,6 +20,7 @@ from horizon import messages
|
|||||||
from horizon import tabs
|
from horizon import tabs
|
||||||
from openstack_dashboard import api
|
from openstack_dashboard import api
|
||||||
|
|
||||||
|
from openstack_dashboard.dashboards.project.stacks.api import d3_data
|
||||||
from openstack_dashboard.dashboards.project.stacks.tables import EventsTable
|
from openstack_dashboard.dashboards.project.stacks.tables import EventsTable
|
||||||
from openstack_dashboard.dashboards.project.stacks.tables import ResourcesTable
|
from openstack_dashboard.dashboards.project.stacks.tables import ResourcesTable
|
||||||
|
|
||||||
@ -27,6 +28,20 @@ from openstack_dashboard.dashboards.project.stacks.tables import ResourcesTable
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class StackTopologyTab(tabs.Tab):
|
||||||
|
name = _("Topology")
|
||||||
|
slug = "topology"
|
||||||
|
template_name = "project/stacks/_detail_topology.html"
|
||||||
|
preload = False
|
||||||
|
|
||||||
|
def get_context_data(self, request):
|
||||||
|
context = {}
|
||||||
|
stack = self.tab_group.kwargs['stack']
|
||||||
|
context['stack_id'] = stack.id
|
||||||
|
context['d3_data'] = d3_data(request, stack_id=stack.id)
|
||||||
|
return context
|
||||||
|
|
||||||
|
|
||||||
class StackOverviewTab(tabs.Tab):
|
class StackOverviewTab(tabs.Tab):
|
||||||
name = _("Overview")
|
name = _("Overview")
|
||||||
slug = "overview"
|
slug = "overview"
|
||||||
@ -90,7 +105,8 @@ class StackResourcesTab(tabs.Tab):
|
|||||||
|
|
||||||
class StackDetailTabs(tabs.TabGroup):
|
class StackDetailTabs(tabs.TabGroup):
|
||||||
slug = "stack_details"
|
slug = "stack_details"
|
||||||
tabs = (StackOverviewTab, StackResourcesTab, StackEventsTab)
|
tabs = (StackTopologyTab, StackOverviewTab, StackResourcesTab,
|
||||||
|
StackEventsTab)
|
||||||
sticky = True
|
sticky = True
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
{% load i18n sizeformat %}
|
||||||
|
|
||||||
|
<div id="resource_container">
|
||||||
|
<div id="info_box"></div>
|
||||||
|
<div id="stack_box"></div>
|
||||||
|
<div id="heat_resource_topology"></div>
|
||||||
|
<div id="stack_id" data-stack_id="{{ stack_id }}"></div>
|
||||||
|
<div id="d3_data" data-d3_data="{{ d3_data }}"></div>
|
||||||
|
</div>
|
@ -0,0 +1,10 @@
|
|||||||
|
<h3>{{ resource.logical_resource_id }}</h3>
|
||||||
|
|
||||||
|
{% if resource.resource_status == 'CREATE_FAILED' %}
|
||||||
|
<p class="error">{{ resource.resource_status_desc }}</p>
|
||||||
|
<p class="error">{{ resource.resource_status_reason }}</p>
|
||||||
|
{% else %}
|
||||||
|
<p>{{ resource.resource_status_desc }}</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<p>{{ resource.resource_type }}</p>
|
@ -0,0 +1,16 @@
|
|||||||
|
<img src="{{ stack_image }}" width="35px" height="35px" />
|
||||||
|
<div id="stack_info">
|
||||||
|
<h3>{{ stack.stack_name }}</h3>
|
||||||
|
<p class="error">{{ stack.stack_status_desc }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
{% if stack.stack_status == 'CREATE_FAILED' %}
|
||||||
|
<p class="error">{{ stack.stack_status_reason }}</p>
|
||||||
|
{% else %}
|
||||||
|
<p>{{ stack.stack_status_desc }}</p>
|
||||||
|
{% endif %}
|
||||||
|
{% for output in stack.outputs %}
|
||||||
|
{% if output.output_key == 'WebsiteURL' %}
|
||||||
|
<a href="{{ output.output_value }}">{{ output.description }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
@ -15,6 +15,7 @@
|
|||||||
from django.conf.urls.defaults import patterns
|
from django.conf.urls.defaults import patterns
|
||||||
from django.conf.urls.defaults import url
|
from django.conf.urls.defaults import url
|
||||||
|
|
||||||
|
from openstack_dashboard.dashboards.project.stacks.api import get_d3_data
|
||||||
from openstack_dashboard.dashboards.project.stacks.views import CreateStackView
|
from openstack_dashboard.dashboards.project.stacks.views import CreateStackView
|
||||||
from openstack_dashboard.dashboards.project.stacks.views import DetailView
|
from openstack_dashboard.dashboards.project.stacks.views import DetailView
|
||||||
from openstack_dashboard.dashboards.project.stacks.views import IndexView
|
from openstack_dashboard.dashboards.project.stacks.views import IndexView
|
||||||
@ -32,4 +33,7 @@ urlpatterns = patterns(
|
|||||||
url(r'^stack/(?P<stack_id>[^/]+)/$', DetailView.as_view(), name='detail'),
|
url(r'^stack/(?P<stack_id>[^/]+)/$', DetailView.as_view(), name='detail'),
|
||||||
url(r'^stack/(?P<stack_id>[^/]+)/(?P<resource_name>[^/]+)/$',
|
url(r'^stack/(?P<stack_id>[^/]+)/(?P<resource_name>[^/]+)/$',
|
||||||
ResourceView.as_view(), name='resource'),
|
ResourceView.as_view(), name='resource'),
|
||||||
|
|
||||||
|
#AJAX urls
|
||||||
|
url(r'^get_d3_data/(?P<stack_id>[^/]+)/$', get_d3_data, name='d3_data')
|
||||||
)
|
)
|
||||||
|
@ -102,6 +102,8 @@ class DetailView(tabs.TabView):
|
|||||||
try:
|
try:
|
||||||
stack = api.heat.stack_get(request, stack_id)
|
stack = api.heat.stack_get(request, stack_id)
|
||||||
self._stack = stack
|
self._stack = stack
|
||||||
|
request.session['stack_id'] = stack.id
|
||||||
|
request.session['stack_name'] = stack.stack_name
|
||||||
except:
|
except:
|
||||||
msg = _("Unable to retrieve stack.")
|
msg = _("Unable to retrieve stack.")
|
||||||
redirect = reverse('horizon:project:stacks:index')
|
redirect = reverse('horizon:project:stacks:index')
|
||||||
|
BIN
openstack_dashboard/static/dashboard/img/db-gray.gif
Normal file
After Width: | Height: | Size: 12 KiB |
85
openstack_dashboard/static/dashboard/img/db-gray.svg
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.67 92 92" enable-background="new -3.1 -2.67 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_2_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.33,1.5c23.11,0,41.839,18.73,41.839,41.83c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#808080" stroke-width="3" stroke-miterlimit="10" d="M85.169,43.33c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5C66.44,1.5,85.169,20.23,85.169,43.33z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<path fill="#808080" d="M63.49,52.5v3.99c0,3.75-8.8,6.78-19.67,6.78s-19.67-3.03-19.67-6.78V52.5c0.01,0.01,0.01,0.01,0.02,0.021
|
||||||
|
c0.31,3.649,8.98,6.579,19.65,6.579s19.34-2.93,19.65-6.579C63.48,52.51,63.48,52.51,63.49,52.5z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,48.33v3.98c0,0.069,0,0.14-0.02,0.21c-2.69,3.239-11.07,5.09-19.65,5.09s-16.96-1.851-19.65-5.09
|
||||||
|
c-0.02-0.07-0.02-0.141-0.02-0.21v-3.98c0.04,0.05,0.09,0.11,0.14,0.16c1.27,3.16,9.53,5.63,19.53,5.63
|
||||||
|
c9.92,0,18.13-2.43,19.48-5.58C63.37,48.47,63.43,48.4,63.49,48.33z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,30.42l-0.03,4.21c-2.72,3-11.119,4.66-19.64,4.66c-8.55,0-16.98-1.67-19.67-4.69v-4.18
|
||||||
|
c0.04,0.05,0.09,0.09,0.14,0.14c1.12,2.94,9.43,5.23,19.53,5.23c10.1,0,18.41-2.29,19.53-5.23C63.4,30.51,63.45,30.47,63.49,30.42
|
||||||
|
z"/>
|
||||||
|
<path fill="#808080" d="M63.49,34.6l-0.03,4.54c-0.029,0.13-0.069,0.26-0.119,0.39c-2.83,3.04-11.091,4.74-19.521,4.74
|
||||||
|
c-8.5,0-16.82-1.73-19.59-4.81c-0.03-0.09-0.06-0.19-0.08-0.28v-4.17c0.68,3.2,9.22,5.77,19.67,5.77
|
||||||
|
c10.45,0,18.99-2.57,19.64-5.82v-0.33C63.47,34.62,63.48,34.61,63.49,34.6z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,39.37l-0.02,4.2c-2.71,3.13-11.09,4.88-19.65,4.88c-8.58,0-16.98-1.76-19.67-4.9v-4.18
|
||||||
|
c0.03,0.03,0.05,0.06,0.08,0.09c1.1,3.07,9.44,5.5,19.59,5.5c10.03,0,18.29-2.37,19.521-5.43C63.4,39.48,63.44,39.42,63.49,39.37z
|
||||||
|
"/>
|
||||||
|
<path fill="#808080" d="M63.49,43.55l-0.02,4.4c-0.03,0.2-0.09,0.39-0.17,0.59c-2.86,3.12-11.07,4.9-19.48,4.9
|
||||||
|
c-8.46,0-16.71-1.801-19.53-4.95c-0.07-0.17-0.11-0.34-0.14-0.51V43.8c0.54,3.4,9.14,6.14,19.67,6.14
|
||||||
|
c10.53,0,19.13-2.74,19.65-6.17v-0.2C63.48,43.56,63.48,43.56,63.49,43.55z"/>
|
||||||
|
<path fill="#808080" d="M63.47,43.57v0.2c-0.521,3.43-9.12,6.17-19.65,6.17c-10.53,0-19.13-2.74-19.67-6.14v-0.25
|
||||||
|
c2.69,3.14,11.09,4.9,19.67,4.9C52.38,48.45,60.76,46.7,63.47,43.57z"/>
|
||||||
|
<path fill="#808080" d="M63.459,34.63v0.33c-0.649,3.25-9.189,5.82-19.64,5.82c-10.45,0-18.99-2.57-19.67-5.77V34.6
|
||||||
|
c2.69,3.02,11.12,4.69,19.67,4.69C52.34,39.29,60.74,37.63,63.459,34.63z"/>
|
||||||
|
<path fill="#636464" d="M63.49,29.87c0,0.23-0.04,0.46-0.14,0.69c-2.811,2.93-11.11,4.55-19.53,4.55s-16.72-1.62-19.53-4.55
|
||||||
|
c-0.1-0.23-0.14-0.46-0.14-0.69c0-3.27,8.8-5.92,19.67-5.92S63.49,26.6,63.49,29.87z"/>
|
||||||
|
<path fill="#636464" d="M63.35,30.56c-1.12,2.94-9.431,5.23-19.53,5.23c-10.1,0-18.41-2.29-19.53-5.23
|
||||||
|
c2.81,2.93,11.11,4.55,19.53,4.55S60.54,33.49,63.35,30.56z"/>
|
||||||
|
<path fill="#808080" d="M63.47,52.521C63.16,56.17,54.49,59.1,43.82,59.1s-19.34-2.93-19.65-6.579
|
||||||
|
c2.69,3.239,11.07,5.09,19.65,5.09S60.78,55.76,63.47,52.521z"/>
|
||||||
|
<path fill="#808080" d="M63.3,48.54c-1.351,3.15-9.561,5.58-19.48,5.58c-10,0-18.26-2.47-19.53-5.63
|
||||||
|
c2.82,3.149,11.07,4.95,19.53,4.95C52.23,53.44,60.44,51.66,63.3,48.54z"/>
|
||||||
|
<path fill="#808080" d="M63.34,39.53c-1.23,3.06-9.49,5.43-19.521,5.43c-10.15,0-18.49-2.43-19.59-5.5
|
||||||
|
c2.77,3.08,11.09,4.81,19.59,4.81C52.25,44.27,60.51,42.57,63.34,39.53z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.35,30.56
|
||||||
|
c0.05-0.05,0.1-0.09,0.14-0.14l-0.03,4.21"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.15,34.6v-4.18
|
||||||
|
c0.04,0.05,0.09,0.09,0.14,0.14"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.3,48.54
|
||||||
|
c0.069-0.07,0.13-0.14,0.189-0.21v3.98c0,0.069,0,0.14-0.02,0.21"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.17,52.521
|
||||||
|
c-0.02-0.07-0.02-0.141-0.02-0.21v-3.98c0.04,0.05,0.09,0.11,0.14,0.16"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.15,43.55
|
||||||
|
v-4.18c0.03,0.03,0.05,0.06,0.08,0.09"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.34,39.53
|
||||||
|
c0.06-0.05,0.1-0.11,0.149-0.16l-0.02,4.2"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.23,39.46
|
||||||
|
c-0.03-0.09-0.06-0.19-0.08-0.28v-4.17V34.6c2.69,3.02,11.12,4.69,19.67,4.69c8.521,0,16.92-1.66,19.64-4.66
|
||||||
|
c0.011-0.01,0.021-0.02,0.03-0.03l-0.03,4.54c-0.029,0.13-0.069,0.26-0.119,0.39c-1.23,3.06-9.49,5.43-19.521,5.43
|
||||||
|
C33.67,44.96,25.33,42.53,24.23,39.46z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.47,52.521
|
||||||
|
c0.01-0.011,0.01-0.011,0.02-0.021v3.99c0,3.75-8.8,6.78-19.67,6.78s-19.67-3.03-19.67-6.78V52.5c0.01,0.01,0.01,0.01,0.02,0.021
|
||||||
|
c2.69,3.239,11.07,5.09,19.65,5.09S60.78,55.76,63.47,52.521z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.47,43.57
|
||||||
|
c0.01-0.01,0.01-0.01,0.02-0.02l-0.02,4.4c-0.03,0.2-0.09,0.39-0.17,0.59c-1.351,3.15-9.561,5.58-19.48,5.58
|
||||||
|
c-10,0-18.26-2.47-19.53-5.63c-0.07-0.17-0.11-0.34-0.14-0.51V43.8v-0.25c2.69,3.14,11.09,4.9,19.67,4.9
|
||||||
|
C52.38,48.45,60.76,46.7,63.47,43.57z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.29,30.56
|
||||||
|
c-0.1-0.23-0.14-0.46-0.14-0.69c0-3.27,8.8-5.92,19.67-5.92s19.67,2.65,19.67,5.92c0,0.23-0.04,0.46-0.14,0.69
|
||||||
|
c-1.12,2.94-9.431,5.23-19.53,5.23C33.72,35.79,25.41,33.5,24.29,30.56z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.4 KiB |
85
openstack_dashboard/static/dashboard/img/db-green.svg
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.67 92 92" enable-background="new -3.1 -2.67 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_2_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.33,1.5c23.11,0,41.839,18.73,41.839,41.83c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#186735" stroke-width="3" stroke-miterlimit="10" d="M85.169,43.33c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5C66.44,1.5,85.169,20.23,85.169,43.33z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<path fill="#166734" d="M63.49,52.5v3.99c0,3.75-8.8,6.78-19.67,6.78s-19.67-3.03-19.67-6.78V52.5c0.01,0.01,0.01,0.01,0.02,0.021
|
||||||
|
c0.31,3.649,8.98,6.579,19.65,6.579s19.34-2.93,19.65-6.579C63.48,52.51,63.48,52.51,63.49,52.5z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,48.33v3.98c0,0.069,0,0.14-0.02,0.21c-2.69,3.239-11.07,5.09-19.65,5.09s-16.96-1.851-19.65-5.09
|
||||||
|
c-0.02-0.07-0.02-0.141-0.02-0.21v-3.98c0.04,0.05,0.09,0.11,0.14,0.16c1.27,3.16,9.53,5.63,19.53,5.63
|
||||||
|
c9.92,0,18.13-2.43,19.48-5.58C63.37,48.47,63.43,48.4,63.49,48.33z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,30.42l-0.03,4.21c-2.72,3-11.119,4.66-19.64,4.66c-8.55,0-16.98-1.67-19.67-4.69v-4.18
|
||||||
|
c0.04,0.05,0.09,0.09,0.14,0.14c1.12,2.94,9.43,5.23,19.53,5.23c10.1,0,18.41-2.29,19.53-5.23C63.4,30.51,63.45,30.47,63.49,30.42
|
||||||
|
z"/>
|
||||||
|
<path fill="#166734" d="M63.49,34.6l-0.03,4.54c-0.029,0.13-0.069,0.26-0.119,0.39c-2.83,3.04-11.091,4.74-19.521,4.74
|
||||||
|
c-8.5,0-16.82-1.73-19.59-4.81c-0.03-0.09-0.06-0.19-0.08-0.28v-4.17c0.68,3.2,9.22,5.77,19.67,5.77
|
||||||
|
c10.45,0,18.99-2.57,19.64-5.82v-0.33C63.47,34.62,63.48,34.61,63.49,34.6z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,39.37l-0.02,4.2c-2.71,3.13-11.09,4.88-19.65,4.88c-8.58,0-16.98-1.76-19.67-4.9v-4.18
|
||||||
|
c0.03,0.03,0.05,0.06,0.08,0.09c1.1,3.07,9.44,5.5,19.59,5.5c10.03,0,18.29-2.37,19.521-5.43C63.4,39.48,63.44,39.42,63.49,39.37z
|
||||||
|
"/>
|
||||||
|
<path fill="#166734" d="M63.49,43.55l-0.02,4.4c-0.03,0.2-0.09,0.39-0.17,0.59c-2.86,3.12-11.07,4.9-19.48,4.9
|
||||||
|
c-8.46,0-16.71-1.801-19.53-4.95c-0.07-0.17-0.11-0.34-0.14-0.51V43.8c0.54,3.4,9.14,6.14,19.67,6.14
|
||||||
|
c10.53,0,19.13-2.74,19.65-6.17v-0.2C63.48,43.56,63.48,43.56,63.49,43.55z"/>
|
||||||
|
<path fill="#0F8140" d="M63.47,43.57v0.2c-0.521,3.43-9.12,6.17-19.65,6.17c-10.53,0-19.13-2.74-19.67-6.14v-0.25
|
||||||
|
c2.69,3.14,11.09,4.9,19.67,4.9C52.38,48.45,60.76,46.7,63.47,43.57z"/>
|
||||||
|
<path fill="#0F8140" d="M63.459,34.63v0.33c-0.649,3.25-9.189,5.82-19.64,5.82c-10.45,0-18.99-2.57-19.67-5.77V34.6
|
||||||
|
c2.69,3.02,11.12,4.69,19.67,4.69C52.34,39.29,60.74,37.63,63.459,34.63z"/>
|
||||||
|
<path fill="#1F572B" d="M63.49,29.87c0,0.23-0.04,0.46-0.14,0.69c-2.811,2.93-11.11,4.55-19.53,4.55s-16.72-1.62-19.53-4.55
|
||||||
|
c-0.1-0.23-0.14-0.46-0.14-0.69c0-3.27,8.8-5.92,19.67-5.92S63.49,26.6,63.49,29.87z"/>
|
||||||
|
<path fill="#0F8140" d="M63.35,30.56c-1.12,2.94-9.431,5.23-19.53,5.23c-10.1,0-18.41-2.29-19.53-5.23
|
||||||
|
c2.81,2.93,11.11,4.55,19.53,4.55S60.54,33.49,63.35,30.56z"/>
|
||||||
|
<path fill="#0F8140" d="M63.47,52.521C63.16,56.17,54.49,59.1,43.82,59.1s-19.34-2.93-19.65-6.579
|
||||||
|
c2.69,3.239,11.07,5.09,19.65,5.09S60.78,55.76,63.47,52.521z"/>
|
||||||
|
<path fill="#0F8140" d="M63.3,48.54c-1.351,3.15-9.561,5.58-19.48,5.58c-10,0-18.26-2.47-19.53-5.63
|
||||||
|
c2.82,3.149,11.07,4.95,19.53,4.95C52.23,53.44,60.44,51.66,63.3,48.54z"/>
|
||||||
|
<path fill="#0F8140" d="M63.34,39.53c-1.23,3.06-9.49,5.43-19.521,5.43c-10.15,0-18.49-2.43-19.59-5.5
|
||||||
|
c2.77,3.08,11.09,4.81,19.59,4.81C52.25,44.27,60.51,42.57,63.34,39.53z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.35,30.56
|
||||||
|
c0.05-0.05,0.1-0.09,0.14-0.14l-0.03,4.21"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.15,34.6v-4.18
|
||||||
|
c0.04,0.05,0.09,0.09,0.14,0.14"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.3,48.54
|
||||||
|
c0.069-0.07,0.13-0.14,0.189-0.21v3.98c0,0.069,0,0.14-0.02,0.21"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.17,52.521
|
||||||
|
c-0.02-0.07-0.02-0.141-0.02-0.21v-3.98c0.04,0.05,0.09,0.11,0.14,0.16"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.15,43.55
|
||||||
|
v-4.18c0.03,0.03,0.05,0.06,0.08,0.09"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.34,39.53
|
||||||
|
c0.06-0.05,0.1-0.11,0.149-0.16l-0.02,4.2"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.23,39.46
|
||||||
|
c-0.03-0.09-0.06-0.19-0.08-0.28v-4.17V34.6c2.69,3.02,11.12,4.69,19.67,4.69c8.521,0,16.92-1.66,19.64-4.66
|
||||||
|
c0.011-0.01,0.021-0.02,0.03-0.03l-0.03,4.54c-0.029,0.13-0.069,0.26-0.119,0.39c-1.23,3.06-9.49,5.43-19.521,5.43
|
||||||
|
C33.67,44.96,25.33,42.53,24.23,39.46z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.47,52.521
|
||||||
|
c0.01-0.011,0.01-0.011,0.02-0.021v3.99c0,3.75-8.8,6.78-19.67,6.78s-19.67-3.03-19.67-6.78V52.5c0.01,0.01,0.01,0.01,0.02,0.021
|
||||||
|
c2.69,3.239,11.07,5.09,19.65,5.09S60.78,55.76,63.47,52.521z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.47,43.57
|
||||||
|
c0.01-0.01,0.01-0.01,0.02-0.02l-0.02,4.4c-0.03,0.2-0.09,0.39-0.17,0.59c-1.351,3.15-9.561,5.58-19.48,5.58
|
||||||
|
c-10,0-18.26-2.47-19.53-5.63c-0.07-0.17-0.11-0.34-0.14-0.51V43.8v-0.25c2.69,3.14,11.09,4.9,19.67,4.9
|
||||||
|
C52.38,48.45,60.76,46.7,63.47,43.57z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.29,30.56
|
||||||
|
c-0.1-0.23-0.14-0.46-0.14-0.69c0-3.27,8.8-5.92,19.67-5.92s19.67,2.65,19.67,5.92c0,0.23-0.04,0.46-0.14,0.69
|
||||||
|
c-1.12,2.94-9.431,5.23-19.53,5.23C33.72,35.79,25.41,33.5,24.29,30.56z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.4 KiB |
85
openstack_dashboard/static/dashboard/img/db-red.svg
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.67 92 92" enable-background="new -3.1 -2.67 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_2_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.33,1.5c23.11,0,41.839,18.73,41.839,41.83c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#C82128" stroke-width="3" stroke-miterlimit="10" d="M85.169,43.33c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5C66.44,1.5,85.169,20.23,85.169,43.33z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<path fill="#C82027" d="M63.49,52.5v3.99c0,3.75-8.8,6.78-19.67,6.78s-19.67-3.03-19.67-6.78V52.5c0.01,0.01,0.01,0.01,0.02,0.021
|
||||||
|
c0.31,3.649,8.98,6.579,19.65,6.579s19.34-2.93,19.65-6.579C63.48,52.51,63.48,52.51,63.49,52.5z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,48.33v3.98c0,0.069,0,0.14-0.02,0.21c-2.69,3.239-11.07,5.09-19.65,5.09s-16.96-1.851-19.65-5.09
|
||||||
|
c-0.02-0.07-0.02-0.141-0.02-0.21v-3.98c0.04,0.05,0.09,0.11,0.14,0.16c1.27,3.16,9.53,5.63,19.53,5.63
|
||||||
|
c9.92,0,18.13-2.43,19.48-5.58C63.37,48.47,63.43,48.4,63.49,48.33z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,30.42l-0.03,4.21c-2.72,3-11.119,4.66-19.64,4.66c-8.55,0-16.98-1.67-19.67-4.69v-4.18
|
||||||
|
c0.04,0.05,0.09,0.09,0.14,0.14c1.12,2.94,9.43,5.23,19.53,5.23c10.1,0,18.41-2.29,19.53-5.23C63.4,30.51,63.45,30.47,63.49,30.42
|
||||||
|
z"/>
|
||||||
|
<path fill="#C82027" d="M63.49,34.6l-0.03,4.54c-0.029,0.13-0.069,0.26-0.119,0.39c-2.83,3.04-11.091,4.74-19.521,4.74
|
||||||
|
c-8.5,0-16.82-1.73-19.59-4.81c-0.03-0.09-0.06-0.19-0.08-0.28v-4.17c0.68,3.2,9.22,5.77,19.67,5.77
|
||||||
|
c10.45,0,18.99-2.57,19.64-5.82v-0.33C63.47,34.62,63.48,34.61,63.49,34.6z"/>
|
||||||
|
<path fill="#FFFFFF" d="M63.49,39.37l-0.02,4.2c-2.71,3.13-11.09,4.88-19.65,4.88c-8.58,0-16.98-1.76-19.67-4.9v-4.18
|
||||||
|
c0.03,0.03,0.05,0.06,0.08,0.09c1.1,3.07,9.44,5.5,19.59,5.5c10.03,0,18.29-2.37,19.521-5.43C63.4,39.48,63.44,39.42,63.49,39.37z
|
||||||
|
"/>
|
||||||
|
<path fill="#C82027" d="M63.49,43.55l-0.02,4.4c-0.03,0.2-0.09,0.39-0.17,0.59c-2.86,3.12-11.07,4.9-19.48,4.9
|
||||||
|
c-8.46,0-16.71-1.801-19.53-4.95c-0.07-0.17-0.11-0.34-0.14-0.51V43.8c0.54,3.4,9.14,6.14,19.67,6.14
|
||||||
|
c10.53,0,19.13-2.74,19.65-6.17v-0.2C63.48,43.56,63.48,43.56,63.49,43.55z"/>
|
||||||
|
<path fill="#C82027" d="M63.47,43.57v0.2c-0.521,3.43-9.12,6.17-19.65,6.17c-10.53,0-19.13-2.74-19.67-6.14v-0.25
|
||||||
|
c2.69,3.14,11.09,4.9,19.67,4.9C52.38,48.45,60.76,46.7,63.47,43.57z"/>
|
||||||
|
<path fill="#C82027" d="M63.459,34.63v0.33c-0.649,3.25-9.189,5.82-19.64,5.82c-10.45,0-18.99-2.57-19.67-5.77V34.6
|
||||||
|
c2.69,3.02,11.12,4.69,19.67,4.69C52.34,39.29,60.74,37.63,63.459,34.63z"/>
|
||||||
|
<path fill="#9F1D20" d="M63.49,29.87c0,0.23-0.04,0.46-0.14,0.69c-2.811,2.93-11.11,4.55-19.53,4.55s-16.72-1.62-19.53-4.55
|
||||||
|
c-0.1-0.23-0.14-0.46-0.14-0.69c0-3.27,8.8-5.92,19.67-5.92S63.49,26.6,63.49,29.87z"/>
|
||||||
|
<path fill="#9F1D20" d="M63.35,30.56c-1.12,2.94-9.431,5.23-19.53,5.23c-10.1,0-18.41-2.29-19.53-5.23
|
||||||
|
c2.81,2.93,11.11,4.55,19.53,4.55S60.54,33.49,63.35,30.56z"/>
|
||||||
|
<path fill="#C82027" d="M63.47,52.521C63.16,56.17,54.49,59.1,43.82,59.1s-19.34-2.93-19.65-6.579
|
||||||
|
c2.69,3.239,11.07,5.09,19.65,5.09S60.78,55.76,63.47,52.521z"/>
|
||||||
|
<path fill="#C82027" d="M63.3,48.54c-1.351,3.15-9.561,5.58-19.48,5.58c-10,0-18.26-2.47-19.53-5.63
|
||||||
|
c2.82,3.149,11.07,4.95,19.53,4.95C52.23,53.44,60.44,51.66,63.3,48.54z"/>
|
||||||
|
<path fill="#C82027" d="M63.34,39.53c-1.23,3.06-9.49,5.43-19.521,5.43c-10.15,0-18.49-2.43-19.59-5.5
|
||||||
|
c2.77,3.08,11.09,4.81,19.59,4.81C52.25,44.27,60.51,42.57,63.34,39.53z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.35,30.56
|
||||||
|
c0.05-0.05,0.1-0.09,0.14-0.14l-0.03,4.21"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.15,34.6v-4.18
|
||||||
|
c0.04,0.05,0.09,0.09,0.14,0.14"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.3,48.54
|
||||||
|
c0.069-0.07,0.13-0.14,0.189-0.21v3.98c0,0.069,0,0.14-0.02,0.21"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.17,52.521
|
||||||
|
c-0.02-0.07-0.02-0.141-0.02-0.21v-3.98c0.04,0.05,0.09,0.11,0.14,0.16"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.15,43.55
|
||||||
|
v-4.18c0.03,0.03,0.05,0.06,0.08,0.09"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.34,39.53
|
||||||
|
c0.06-0.05,0.1-0.11,0.149-0.16l-0.02,4.2"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.23,39.46
|
||||||
|
c-0.03-0.09-0.06-0.19-0.08-0.28v-4.17V34.6c2.69,3.02,11.12,4.69,19.67,4.69c8.521,0,16.92-1.66,19.64-4.66
|
||||||
|
c0.011-0.01,0.021-0.02,0.03-0.03l-0.03,4.54c-0.029,0.13-0.069,0.26-0.119,0.39c-1.23,3.06-9.49,5.43-19.521,5.43
|
||||||
|
C33.67,44.96,25.33,42.53,24.23,39.46z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.47,52.521
|
||||||
|
c0.01-0.011,0.01-0.011,0.02-0.021v3.99c0,3.75-8.8,6.78-19.67,6.78s-19.67-3.03-19.67-6.78V52.5c0.01,0.01,0.01,0.01,0.02,0.021
|
||||||
|
c2.69,3.239,11.07,5.09,19.65,5.09S60.78,55.76,63.47,52.521z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M63.47,43.57
|
||||||
|
c0.01-0.01,0.01-0.01,0.02-0.02l-0.02,4.4c-0.03,0.2-0.09,0.39-0.17,0.59c-1.351,3.15-9.561,5.58-19.48,5.58
|
||||||
|
c-10,0-18.26-2.47-19.53-5.63c-0.07-0.17-0.11-0.34-0.14-0.51V43.8v-0.25c2.69,3.14,11.09,4.9,19.67,4.9
|
||||||
|
C52.38,48.45,60.76,46.7,63.47,43.57z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" d="M24.29,30.56
|
||||||
|
c-0.1-0.23-0.14-0.46-0.14-0.69c0-3.27,8.8-5.92,19.67-5.92s19.67,2.65,19.67,5.92c0,0.23-0.04,0.46-0.14,0.69
|
||||||
|
c-1.12,2.94-9.431,5.23-19.53,5.23C33.72,35.79,25.41,33.5,24.29,30.56z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.4 KiB |
BIN
openstack_dashboard/static/dashboard/img/lb-gray.gif
Normal file
After Width: | Height: | Size: 8.2 KiB |
43
openstack_dashboard/static/dashboard/img/lb-gray.svg
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.67 92 92" enable-background="new -3.1 -2.67 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_3_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.33,1.5c23.11,0,41.839,18.73,41.839,41.83c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#808080" stroke-width="3" stroke-miterlimit="10" d="M85.169,43.33c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5C66.44,1.5,85.169,20.23,85.169,43.33z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_2_">
|
||||||
|
<g>
|
||||||
|
<path fill="#808080" d="M68.8,41.85v12.52H18.83V41.92c0-0.02,0.01-0.04,0.02-0.07H68.79C68.79,41.88,68.8,41.83,68.8,41.85z
|
||||||
|
M55.31,48.36c0-1.11-0.9-2-2-2c-1.11,0-2,0.89-2,2c0,1.109,0.89,2,2,2C54.41,50.36,55.31,49.47,55.31,48.36z M46.31,48.36
|
||||||
|
c0-1.11-0.891-2-1.99-2c-1.11,0-2,0.89-2,2c0,1.109,0.89,2,2,2C45.419,50.36,46.31,49.47,46.31,48.36z M37.32,48.36
|
||||||
|
c0-1.11-0.89-2-2-2c-1.1,0-2,0.89-2,2c0,1.109,0.9,2,2,2C36.43,50.36,37.32,49.47,37.32,48.36z"/>
|
||||||
|
<polygon fill="#636464" points="61.82,32.33 68.79,41.85 18.85,41.85 25.81,32.33 "/>
|
||||||
|
<path fill="#FFFFFF" d="M53.31,46.36c1.1,0,2,0.89,2,2c0,1.109-0.9,2-2,2c-1.11,0-2-0.891-2-2C51.31,47.25,52.2,46.36,53.31,46.36
|
||||||
|
z"/>
|
||||||
|
<path fill="#FFFFFF" d="M44.32,46.36c1.1,0,1.99,0.89,1.99,2c0,1.109-0.891,2-1.99,2c-1.11,0-2-0.891-2-2
|
||||||
|
C42.32,47.25,43.21,46.36,44.32,46.36z"/>
|
||||||
|
<path fill="#FFFFFF" d="M35.32,46.36c1.11,0,2,0.89,2,2c0,1.109-0.89,2-2,2c-1.1,0-2-0.891-2-2
|
||||||
|
C33.32,47.25,34.22,46.36,35.32,46.36z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.79,41.85 61.82,32.33 25.81,32.33 18.85,41.85 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M18.85,41.85
|
||||||
|
c-0.01,0.03-0.02,0.05-0.02,0.07v12.45H68.8V41.85c0-0.02-0.011,0.03-0.011,0H18.85z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
43
openstack_dashboard/static/dashboard/img/lb-green.svg
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.67 92 92" enable-background="new -3.1 -2.67 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_3_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.33,1.5c23.11,0,41.839,18.73,41.839,41.83c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#156734" stroke-width="3" stroke-miterlimit="10" d="M85.169,43.33c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5C66.44,1.5,85.169,20.23,85.169,43.33z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_2_">
|
||||||
|
<g>
|
||||||
|
<path fill="#166734" d="M18.85,41.85H68.79c0,0.03,0.011-0.02,0.011,0v12.52H18.83V41.92C18.83,41.9,18.84,41.88,18.85,41.85z
|
||||||
|
M55.31,48.36c0-1.11-0.9-2-2-2c-1.11,0-2,0.89-2,2c0,1.109,0.89,2,2,2C54.41,50.36,55.31,49.47,55.31,48.36z M46.31,48.36
|
||||||
|
c0-1.11-0.891-2-1.99-2c-1.11,0-2,0.89-2,2c0,1.109,0.89,2,2,2C45.419,50.36,46.31,49.47,46.31,48.36z M37.32,48.36
|
||||||
|
c0-1.11-0.89-2-2-2c-1.1,0-2,0.89-2,2c0,1.109,0.9,2,2,2C36.43,50.36,37.32,49.47,37.32,48.36z"/>
|
||||||
|
<path fill="#FFFFFF" d="M53.31,46.36c1.1,0,2,0.89,2,2c0,1.109-0.9,2-2,2c-1.11,0-2-0.891-2-2C51.31,47.25,52.2,46.36,53.31,46.36
|
||||||
|
z"/>
|
||||||
|
<path fill="#FFFFFF" d="M44.32,46.36c1.1,0,1.99,0.89,1.99,2c0,1.109-0.891,2-1.99,2c-1.11,0-2-0.891-2-2
|
||||||
|
C42.32,47.25,43.21,46.36,44.32,46.36z"/>
|
||||||
|
<path fill="#FFFFFF" d="M35.32,46.36c1.11,0,2,0.89,2,2c0,1.109-0.89,2-2,2c-1.1,0-2-0.891-2-2
|
||||||
|
C33.32,47.25,34.22,46.36,35.32,46.36z"/>
|
||||||
|
<polygon fill="#1F572B" points="18.85,41.85 25.81,32.33 61.82,32.33 68.79,41.85 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.79,41.85 61.82,32.33 25.81,32.33 18.85,41.85 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M18.85,41.85
|
||||||
|
c-0.01,0.03-0.02,0.05-0.02,0.07v12.45H68.8V41.85c0-0.02-0.011,0.03-0.011,0H18.85z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
43
openstack_dashboard/static/dashboard/img/lb-red.svg
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.67 92 92" enable-background="new -3.1 -2.67 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_3_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.33,1.5c23.11,0,41.839,18.73,41.839,41.83c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#C82128" stroke-width="3" stroke-miterlimit="10" d="M85.169,43.33c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5C66.44,1.5,85.169,20.23,85.169,43.33z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_2_">
|
||||||
|
<g>
|
||||||
|
<path fill="#C82027" d="M18.85,41.85H68.79c0,0.03,0.011-0.02,0.011,0v12.52H18.83V41.92C18.83,41.9,18.84,41.88,18.85,41.85z
|
||||||
|
M55.31,48.36c0-1.11-0.9-2-2-2c-1.11,0-2,0.89-2,2c0,1.109,0.89,2,2,2C54.41,50.36,55.31,49.47,55.31,48.36z M46.31,48.36
|
||||||
|
c0-1.11-0.891-2-1.99-2c-1.11,0-2,0.89-2,2c0,1.109,0.89,2,2,2C45.419,50.36,46.31,49.47,46.31,48.36z M37.32,48.36
|
||||||
|
c0-1.11-0.89-2-2-2c-1.1,0-2,0.89-2,2c0,1.109,0.9,2,2,2C36.43,50.36,37.32,49.47,37.32,48.36z"/>
|
||||||
|
<path fill="#FFFFFF" d="M53.31,46.36c1.1,0,2,0.89,2,2c0,1.109-0.9,2-2,2c-1.11,0-2-0.891-2-2C51.31,47.25,52.2,46.36,53.31,46.36
|
||||||
|
z"/>
|
||||||
|
<path fill="#FFFFFF" d="M44.32,46.36c1.1,0,1.99,0.89,1.99,2c0,1.109-0.891,2-1.99,2c-1.11,0-2-0.891-2-2
|
||||||
|
C42.32,47.25,43.21,46.36,44.32,46.36z"/>
|
||||||
|
<path fill="#FFFFFF" d="M35.32,46.36c1.11,0,2,0.89,2,2c0,1.109-0.89,2-2,2c-1.1,0-2-0.891-2-2
|
||||||
|
C33.32,47.25,34.22,46.36,35.32,46.36z"/>
|
||||||
|
<polygon fill="#9F1D20" points="18.85,41.85 25.81,32.33 61.82,32.33 68.79,41.85 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.79,41.85 61.82,32.33 25.81,32.33 18.85,41.85 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M18.85,41.85
|
||||||
|
c-0.01,0.03-0.02,0.05-0.02,0.07v12.45H68.8V41.85c0-0.02-0.011,0.03-0.011,0H18.85z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
BIN
openstack_dashboard/static/dashboard/img/server-gray.gif
Normal file
After Width: | Height: | Size: 7.2 KiB |
50
openstack_dashboard/static/dashboard/img/server-gray.svg
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.7 92 92" enable-background="new -3.1 -2.7 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_3_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.3,1.5c23.1,0,41.8,18.7,41.8,41.8c0,23.1-18.7,41.8-41.8,41.8c-23.1,0-41.8-18.7-41.8-41.8
|
||||||
|
C1.5,20.2,20.2,1.5,43.3,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#808080" stroke-width="3" stroke-miterlimit="10" d="M85.2,43.3c0,23.1-18.7,41.8-41.8,41.8
|
||||||
|
c-23.1,0-41.8-18.7-41.8-41.8c0-23.1,18.7-41.8,41.8-41.8C66.4,1.5,85.2,20.2,85.2,43.3z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<path fill="#808080" d="M68.6,42.4V55H39v-2.8h2V45v-2.6H68.6C68.5,42.5,68.6,42.4,68.6,42.4z M63,48.7c0-1.2-0.9-2.1-2-2.1
|
||||||
|
c-1.1,0-2,0.9-2,2.1c0,1.1,0.9,2.1,2,2.1C62.2,50.8,63,49.8,63,48.7z"/>
|
||||||
|
<polygon fill="#636464" points="61.6,33 68.5,42.4 41,42.4 18.5,42.4 25.5,33 "/>
|
||||||
|
<path fill="#FFFFFF" d="M61,46.6c1.1,0,2,0.9,2,2.1c0,1.1-0.9,2.1-2,2.1c-1.1,0-2-0.9-2-2.1C59,47.5,59.9,46.6,61,46.6z"/>
|
||||||
|
<rect x="39" y="45" fill="#808080" width="2" height="7.3"/>
|
||||||
|
<path fill="#808080" d="M41,42.4V45h-2v7.3V55H18.5V42.5c0,0,0,0,0-0.1H41z M36,52.2V45h-2v7.3H36z M31,52.2V45h-2v7.3H31z
|
||||||
|
M26,52.2V45h-2v7.3H26z"/>
|
||||||
|
<rect x="34" y="45" fill="#808080" width="2" height="7.3"/>
|
||||||
|
<rect x="29" y="45" fill="#808080" width="2" height="7.3"/>
|
||||||
|
<rect x="24" y="45" fill="#808080" width="2" height="7.3"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.5,42.4 61.6,33 25.5,33 18.5,42.4 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M39,55h29.5V42.4
|
||||||
|
c0,0,0,0,0,0H41H18.5c0,0,0,0.1,0,0.1V55H39z"/>
|
||||||
|
|
||||||
|
<rect x="24" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="29" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="34" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="39" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
50
openstack_dashboard/static/dashboard/img/server-green.svg
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.7 92 92" enable-background="new -3.1 -2.7 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_3_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.3,1.5c23.1,0,41.8,18.7,41.8,41.8c0,23.1-18.7,41.8-41.8,41.8c-23.1,0-41.8-18.7-41.8-41.8
|
||||||
|
C1.5,20.2,20.2,1.5,43.3,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#156734" stroke-width="3" stroke-miterlimit="10" d="M85.2,43.3c0,23.1-18.7,41.8-41.8,41.8
|
||||||
|
c-23.1,0-41.8-18.7-41.8-41.8c0-23.1,18.7-41.8,41.8-41.8C66.4,1.5,85.2,20.2,85.2,43.3z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<polygon fill="#0F8140" points="61.6,33 68.5,42.4 41,42.4 18.5,42.4 25.5,33 "/>
|
||||||
|
<path fill="#FFFFFF" d="M61,46.6c1.1,0,2,0.9,2,2.1c0,1.1-0.9,2.1-2,2.1c-1.1,0-2-0.9-2-2.1C59,47.5,59.9,46.6,61,46.6z"/>
|
||||||
|
<path fill="#156734" d="M63,48.7c0-1.2-0.9-2.1-2-2.1c-1.1,0-2,0.9-2,2.1c0,1.1,0.9,2.1,2,2.1C62.2,50.8,63,49.8,63,48.7z
|
||||||
|
M68.6,42.4V55H39v-2.8h2V45v-2.6H68.6C68.5,42.5,68.6,42.4,68.6,42.4z"/>
|
||||||
|
<rect x="39" y="45" fill="#156734" width="2" height="7.3"/>
|
||||||
|
<rect x="34" y="45" fill="#156734" width="2" height="7.3"/>
|
||||||
|
<rect x="29" y="45" fill="#156734" width="2" height="7.3"/>
|
||||||
|
<rect x="24" y="45" fill="#156734" width="2" height="7.3"/>
|
||||||
|
<path fill="#156734" d="M24,52.2h2V45h-2V52.2z M29,52.2h2V45h-2V52.2z M18.5,42.4H41V45h-2v7.3V55H18.5L18.5,42.4
|
||||||
|
C18.5,42.5,18.5,42.5,18.5,42.4z M34,45v7.3h2V45H34z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.5,42.4 61.6,33 25.5,33 18.5,42.4 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M39,55h29.5V42.4
|
||||||
|
c0,0,0,0,0,0H41H18.5c0,0,0,0.1,0,0.1V55H39z"/>
|
||||||
|
|
||||||
|
<rect x="24" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="29" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="34" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="39" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
50
openstack_dashboard/static/dashboard/img/server-red.svg
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.7 92 92" enable-background="new -3.1 -2.7 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_3_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.3,1.5c23.1,0,41.8,18.7,41.8,41.8c0,23.1-18.7,41.8-41.8,41.8c-23.1,0-41.8-18.7-41.8-41.8
|
||||||
|
C1.5,20.2,20.2,1.5,43.3,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#C82027" stroke-width="3" stroke-miterlimit="10" d="M85.2,43.3c0,23.1-18.7,41.8-41.8,41.8
|
||||||
|
c-23.1,0-41.8-18.7-41.8-41.8c0-23.1,18.7-41.8,41.8-41.8C66.4,1.5,85.2,20.2,85.2,43.3z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<path fill="#C82027" d="M68.6,42.4V55H39v-2.8h2V45v-2.6H68.6C68.5,42.5,68.6,42.4,68.6,42.4z M63,48.7c0-1.2-0.9-2.1-2-2.1
|
||||||
|
c-1.1,0-2,0.9-2,2.1c0,1.1,0.9,2.1,2,2.1C62.2,50.8,63,49.8,63,48.7z"/>
|
||||||
|
<polygon fill="#9F1D20" points="61.6,33 68.5,42.4 41,42.4 18.5,42.4 25.5,33 "/>
|
||||||
|
<path fill="#FFFFFF" d="M61,46.6c1.1,0,2,0.9,2,2.1c0,1.1-0.9,2.1-2,2.1c-1.1,0-2-0.9-2-2.1C59,47.5,59.9,46.6,61,46.6z"/>
|
||||||
|
<rect x="39" y="45" fill="#C82027" width="2" height="7.3"/>
|
||||||
|
<path fill="#C82027" d="M41,42.4V45h-2v7.3V55H18.5V42.5c0,0,0,0,0-0.1H41z M36,52.2V45h-2v7.3H36z M31,52.2V45h-2v7.3H31z
|
||||||
|
M26,52.2V45h-2v7.3H26z"/>
|
||||||
|
<rect x="34" y="45" fill="#C82027" width="2" height="7.3"/>
|
||||||
|
<rect x="29" y="45" fill="#C82027" width="2" height="7.3"/>
|
||||||
|
<rect x="24" y="45" fill="#C82027" width="2" height="7.3"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.5,42.4 61.6,33 25.5,33 18.5,42.4 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M39,55h29.5V42.4
|
||||||
|
c0,0,0,0,0,0H41H18.5c0,0,0,0.1,0,0.1V55H39z"/>
|
||||||
|
|
||||||
|
<rect x="24" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="29" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="34" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="39" y="45" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
BIN
openstack_dashboard/static/dashboard/img/stack-gray.gif
Normal file
After Width: | Height: | Size: 14 KiB |
73
openstack_dashboard/static/dashboard/img/stack-gray.svg
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.7 92 92" enable-background="new -3.1 -2.7 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<circle fill="#FFFFFF" stroke="#808080" stroke-width="3" stroke-miterlimit="10" cx="43.3" cy="43.3" r="41.8"/>
|
||||||
|
<g id="XMLID_6_">
|
||||||
|
<g>
|
||||||
|
<path fill="#808080" d="M68.5,51.9v12.6h-50V52c0,0,0,0,0-0.1H68.5C68.5,52,68.5,51.9,68.5,51.9z"/>
|
||||||
|
<polygon fill="#0F8140" points="61.6,42.5 68.5,51.9 18.5,51.9 25.5,42.5 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.5,51.9 61.6,42.5 25.5,42.5 18.5,51.9 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M18.5,51.9
|
||||||
|
C18.5,52,18.5,52,18.5,51.9l0,12.6h50V51.9c0,0,0,0,0,0H18.5z"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="27" y1="55.5" x2="60" y2="55.5"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="27" y1="58.5" x2="60" y2="58.5"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="27" y1="61.5" x2="60" y2="61.5"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_5_">
|
||||||
|
<g>
|
||||||
|
<path fill="#808080" d="M68.5,39.4V52H39v-2.8h2V42v-2.6H68.5C68.5,39.5,68.5,39.4,68.5,39.4z M63,45.7c0-1.2-0.9-2.1-2-2.1
|
||||||
|
c-1.1,0-2,0.9-2,2.1c0,1.1,0.9,2.1,2,2.1C62.1,47.8,63,46.8,63,45.7z"/>
|
||||||
|
<polygon fill="#0F8140" points="61.6,30 68.5,39.4 41,39.4 18.5,39.4 25.5,30 "/>
|
||||||
|
<path fill="#FFFFFF" d="M61,43.6c1.1,0,2,0.9,2,2.1c0,1.1-0.9,2.1-2,2.1c-1.1,0-2-0.9-2-2.1C59,44.5,59.9,43.6,61,43.6z"/>
|
||||||
|
<rect x="39" y="42" fill="#808080" width="2" height="7.3"/>
|
||||||
|
<path fill="#808080" d="M41,39.4V42h-2v7.3V52H18.5V39.5c0,0,0,0,0-0.1H41z M36,49.3V42h-2v7.3H36z M31,49.3V42h-2v7.3H31z
|
||||||
|
M26,49.3V42h-2v7.3H26z"/>
|
||||||
|
<rect x="34" y="42" fill="#808080" width="2" height="7.3"/>
|
||||||
|
<rect x="29" y="42" fill="#808080" width="2" height="7.3"/>
|
||||||
|
<rect x="24" y="42" fill="#808080" width="2" height="7.3"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.5,39.4 61.6,30 25.5,30 18.5,39.4 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M39,52h29.5V39.4
|
||||||
|
c0,0,0,0,0,0H41H18.5c0,0,0,0.1,0,0.1V52H39z"/>
|
||||||
|
|
||||||
|
<rect x="24" y="42" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="29" y="42" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="34" y="42" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="39" y="42" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_4_">
|
||||||
|
<g>
|
||||||
|
<path fill="#808080" d="M68.5,27v12.5h-50V27.1c0,0,0,0,0-0.1H68.5C68.5,27,68.5,27,68.5,27z M55,33.5c0-1.1-0.9-2-2-2
|
||||||
|
c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2C54.1,35.5,55,34.6,55,33.5z M46,33.5c0-1.1-0.9-2-2-2c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2
|
||||||
|
C45.1,35.5,46,34.6,46,33.5z M37,33.5c0-1.1-0.9-2-2-2c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2C36.1,35.5,37,34.6,37,33.5z"/>
|
||||||
|
<polygon fill="#636565" points="61.5,17.5 68.5,27 18.5,27 25.5,17.5 "/>
|
||||||
|
<path fill="#FFFFFF" d="M53,31.5c1.1,0,2,0.9,2,2c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2C51,32.4,51.9,31.5,53,31.5z"/>
|
||||||
|
<path fill="#FFFFFF" d="M44,31.5c1.1,0,2,0.9,2,2c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2C42,32.4,42.9,31.5,44,31.5z"/>
|
||||||
|
<path fill="#FFFFFF" d="M35,31.5c1.1,0,2,0.9,2,2c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2C33,32.4,33.9,31.5,35,31.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="68.5,27
|
||||||
|
61.5,17.5 25.5,17.5 18.5,27 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M18.5,27
|
||||||
|
C18.5,27,18.5,27.1,18.5,27l0,12.5h50V27c0,0,0,0,0,0H18.5z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.5 KiB |
82
openstack_dashboard/static/dashboard/img/stack-green.svg
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.7 92 92" enable-background="new -3.1 -2.7 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_8_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.3,1.5c23.1,0,41.8,18.7,41.8,41.8c0,23.1-18.7,41.8-41.8,41.8c-23.1,0-41.8-18.7-41.8-41.8
|
||||||
|
C1.5,20.2,20.2,1.5,43.3,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#156734" stroke-width="3" stroke-miterlimit="10" d="M85.2,43.3c0,23.1-18.7,41.8-41.8,41.8
|
||||||
|
c-23.1,0-41.8-18.7-41.8-41.8c0-23.1,18.7-41.8,41.8-41.8C66.4,1.5,85.2,20.2,85.2,43.3z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_7_">
|
||||||
|
<g>
|
||||||
|
<polygon fill="#0F8140" points="68.5,51.9 18.5,51.9 25.5,42.5 61.6,42.5 "/>
|
||||||
|
<path fill="#156734" d="M68.6,64.5h-50V52c0,0,0,0,0-0.1h50c0,0,0,0,0,0V64.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.5,51.9 61.6,42.5 25.5,42.5 18.5,51.9 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M18.5,51.9
|
||||||
|
C18.5,52,18.5,52,18.5,51.9l0,12.6h50V51.9c0,0,0,0,0,0H18.5z"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="27" y1="55.5" x2="60" y2="55.5"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="27" y1="58.5" x2="60" y2="58.5"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="27" y1="61.5" x2="60" y2="61.5"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_6_">
|
||||||
|
<g>
|
||||||
|
<polygon fill="#0F8140" points="61.6,30 68.5,39.4 41,39.4 18.5,39.4 25.5,30 "/>
|
||||||
|
<path fill="#FFFFFF" d="M61,43.6c1.1,0,2,0.9,2,2.1c0,1.1-0.9,2.1-2,2.1c-1.1,0-2-0.9-2-2.1C59,44.5,59.9,43.6,61,43.6z"/>
|
||||||
|
<path fill="#156734" d="M63,45.7c0-1.2-0.9-2.1-2-2.1c-1.1,0-2,0.9-2,2.1c0,1.1,0.9,2.1,2,2.1C62.2,47.8,63,46.8,63,45.7z
|
||||||
|
M68.6,39.4V52H39v-2.8h2V42v-2.6H68.6C68.5,39.5,68.6,39.4,68.6,39.4z"/>
|
||||||
|
<rect x="39" y="42" fill="#156734" width="2" height="7.3"/>
|
||||||
|
<rect x="34" y="42" fill="#156734" width="2" height="7.3"/>
|
||||||
|
<rect x="29" y="42" fill="#156734" width="2" height="7.3"/>
|
||||||
|
<rect x="24" y="42" fill="#156734" width="2" height="7.3"/>
|
||||||
|
<path fill="#156734" d="M24,49.2h2V42h-2V49.2z M29,49.2h2V42h-2V49.2z M18.5,39.4H41V42h-2v7.3V52H18.5L18.5,39.4
|
||||||
|
C18.5,39.5,18.5,39.5,18.5,39.4z M34,42v7.3h2V42H34z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
68.5,39.4 61.6,30 25.5,30 18.5,39.4 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M39,52h29.5V39.4
|
||||||
|
c0,0,0,0,0,0H41H18.5c0,0,0,0.1,0,0.1V52H39z"/>
|
||||||
|
|
||||||
|
<rect x="24" y="42" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="29" y="42" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="34" y="42" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
|
||||||
|
<rect x="39" y="42" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.3"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="XMLID_5_">
|
||||||
|
<g>
|
||||||
|
<path fill="#156734" d="M68.5,27v12.5h-50V27.1c0,0,0,0,0-0.1H68.5C68.5,27,68.5,27,68.5,27z M55,33.5c0-1.1-0.9-2-2-2
|
||||||
|
c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2C54.1,35.5,55,34.6,55,33.5z M46,33.5c0-1.1-0.9-2-2-2c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2
|
||||||
|
C45.1,35.5,46,34.6,46,33.5z M37,33.5c0-1.1-0.9-2-2-2c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2C36.1,35.5,37,34.6,37,33.5z"/>
|
||||||
|
<polygon fill="#1E572B" points="61.5,17.5 68.5,27 18.5,27 25.5,17.5 "/>
|
||||||
|
<path fill="#FFFFFF" d="M53,31.5c1.1,0,2,0.9,2,2c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2C51,32.4,51.9,31.5,53,31.5z"/>
|
||||||
|
<path fill="#FFFFFF" d="M44,31.5c1.1,0,2,0.9,2,2c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2C42,32.4,42.9,31.5,44,31.5z"/>
|
||||||
|
<path fill="#FFFFFF" d="M35,31.5c1.1,0,2,0.9,2,2c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2C33,32.4,33.9,31.5,35,31.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="68.5,27
|
||||||
|
61.5,17.5 25.5,17.5 18.5,27 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M18.5,27
|
||||||
|
C18.5,27,18.5,27.1,18.5,27l0,12.5h50V27c0,0,0,0,0,0H18.5z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.8 KiB |
92
openstack_dashboard/static/dashboard/img/stack-red.svg
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="90.5px" height="91px" viewBox="49 -16.5 90.5 91" enable-background="new 49 -16.5 90.5 91" xml:space="preserve">
|
||||||
|
<title>Compute</title>
|
||||||
|
<g>
|
||||||
|
<circle fill="#FFFFFF" stroke="#C90505" stroke-width="3" stroke-miterlimit="10" cx="93.934" cy="29.499" r="41.833"/>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g id="XMLID_3_">
|
||||||
|
<g>
|
||||||
|
<path fill="#C90505" d="M119.15,50.666h-50.04v-12.5c0-0.01,0.01-0.04,0.01-0.08h50.01c0.01,0.04,0.02-0.02,0.02,0V50.666z"/>
|
||||||
|
<polygon fill="#008000" points="112.161,28.666 119.131,38.086 69.121,38.086 76.101,28.666 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
119.131,38.086 112.161,28.666 76.101,28.666 69.121,38.086 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M69.121,38.086
|
||||||
|
c0,0.04-0.01,0.07-0.01,0.08v12.5h50.04v-12.58c0-0.02-0.01,0.04-0.02,0H69.121z"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="77.61" y1="41.666" x2="110.641" y2="41.666"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="77.61" y1="44.666" x2="110.641" y2="44.666"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-miterlimit="10" x1="77.61" y1="47.666" x2="110.641" y2="47.666"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<title>Compute</title>
|
||||||
|
<g>
|
||||||
|
<g id="XMLID_2_">
|
||||||
|
<g>
|
||||||
|
<path fill="#C90505" d="M119.15,25.596v12.57H89.61v-2.75h2v-7.25v-2.57h27.521C119.141,25.626,119.15,25.576,119.15,25.596z
|
||||||
|
M113.641,31.866c0-1.16-0.89-2.101-2-2.101c-1.1,0-2,0.94-2,2.101c0,1.149,0.9,2.09,2,2.09
|
||||||
|
C112.751,33.956,113.641,33.016,113.641,31.866z"/>
|
||||||
|
<polygon fill="#008000" points="112.161,16.166 119.131,25.596 91.61,25.596 69.121,25.596 76.101,16.166 "/>
|
||||||
|
<path fill="#FFFFFF" d="M111.641,29.766c1.11,0,2,0.94,2,2.101c0,1.149-0.89,2.09-2,2.09c-1.1,0-2-0.94-2-2.09
|
||||||
|
C109.641,30.706,110.541,29.766,111.641,29.766z"/>
|
||||||
|
<rect x="89.61" y="28.166" fill="#C90505" width="2" height="7.25"/>
|
||||||
|
<rect x="84.61" y="28.166" fill="#C90505" width="2" height="7.25"/>
|
||||||
|
<rect x="79.61" y="28.166" fill="#C90505" width="2" height="7.25"/>
|
||||||
|
<rect x="74.611" y="28.166" fill="#C90505" width="2" height="7.25"/>
|
||||||
|
<path fill="#C90505" d="M74.611,35.416h2v-7.25h-2V35.416z M79.61,35.416h2v-7.25h-2V35.416z M84.61,35.416h2v-7.25h-2V35.416
|
||||||
|
z M89.61,28.166v7.25v2.75h-20.5v-12.49c0-0.02,0.01-0.05,0.01-0.08h22.49v2.57H89.61z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
119.131,25.596 112.161,16.166 76.101,16.166 69.121,25.596 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M89.61,38.166
|
||||||
|
h29.54v-12.57c0-0.02-0.01,0.03-0.02,0H91.61h-22.49c0,0.03-0.01,0.061-0.01,0.08v12.49H89.61z"/>
|
||||||
|
|
||||||
|
<rect x="74.611" y="28.166" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.25"/>
|
||||||
|
|
||||||
|
<rect x="79.61" y="28.166" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.25"/>
|
||||||
|
|
||||||
|
<rect x="84.61" y="28.166" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.25"/>
|
||||||
|
|
||||||
|
<rect x="89.61" y="28.166" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="2" height="7.25"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<title>Load Balancer</title>
|
||||||
|
<g>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<path fill="#C90505" d="M119.081,13.186v12.52h-49.97v-12.45c0-0.02,0.01-0.04,0.02-0.07h49.939
|
||||||
|
C119.07,13.216,119.081,13.166,119.081,13.186z M105.591,19.696c0-1.11-0.9-2-2-2c-1.11,0-2,0.89-2,2c0,1.11,0.89,2,2,2
|
||||||
|
C104.69,21.696,105.591,20.806,105.591,19.696z M96.591,19.696c0-1.11-0.891-2-1.99-2c-1.11,0-2,0.89-2,2c0,1.11,0.89,2,2,2
|
||||||
|
C95.7,21.696,96.591,20.806,96.591,19.696z M87.601,19.696c0-1.11-0.89-2-2-2c-1.1,0-2,0.89-2,2c0,1.11,0.9,2,2,2
|
||||||
|
C86.711,21.696,87.601,20.806,87.601,19.696z"/>
|
||||||
|
<polygon fill="#A00202" points="112.101,3.666 119.07,13.186 69.131,13.186 76.091,3.666 "/>
|
||||||
|
<path fill="#FFFFFF" d="M103.591,17.696c1.1,0,2,0.89,2,2c0,1.11-0.9,2-2,2c-1.11,0-2-0.89-2-2
|
||||||
|
C101.591,18.586,102.48,17.696,103.591,17.696z"/>
|
||||||
|
<path fill="#FFFFFF" d="M94.601,17.696c1.1,0,1.99,0.89,1.99,2c0,1.11-0.891,2-1.99,2c-1.11,0-2-0.89-2-2
|
||||||
|
C92.601,18.586,93.49,17.696,94.601,17.696z"/>
|
||||||
|
<path fill="#FFFFFF" d="M85.601,17.696c1.11,0,2,0.89,2,2c0,1.11-0.89,2-2,2c-1.1,0-2-0.89-2-2
|
||||||
|
C83.601,18.586,84.501,17.696,85.601,17.696z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polyline fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
|
||||||
|
119.07,13.186 112.101,3.666 76.091,3.666 69.131,13.186 "/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M69.131,13.186
|
||||||
|
c-0.01,0.03-0.02,0.05-0.02,0.07v12.45h49.97v-12.52c0-0.02-0.011,0.03-0.011,0H69.131z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<line fill="none" x1="41" y1="42.25" x2="90.969" y2="42.25"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.7 KiB |
BIN
openstack_dashboard/static/dashboard/img/unknown-gray.gif
Normal file
After Width: | Height: | Size: 11 KiB |
33
openstack_dashboard/static/dashboard/img/unknown-green.svg
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.67 92 92" enable-background="new -3.1 -2.67 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.33,1.5c23.11,0,41.839,18.73,41.839,41.83c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#186735" stroke-width="3" stroke-miterlimit="10" d="M85.169,43.33c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5C66.44,1.5,85.169,20.23,85.169,43.33z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<rect x="26.899" y="28.166" fill="none" stroke="#186735" stroke-miterlimit="10" width="13.333" height="13.333"/>
|
||||||
|
<rect x="40.232" y="40.966" fill="none" stroke="#186735" stroke-miterlimit="10" width="13.334" height="13.333"/>
|
||||||
|
<rect x="26.899" y="40.966" fill="#21572C" stroke="#186735" stroke-miterlimit="10" width="13.334" height="13.333"/>
|
||||||
|
<rect x="40.232" y="28.166" fill="#21572C" stroke="#186735" stroke-miterlimit="10" width="13.334" height="13.333"/>
|
||||||
|
<rect x="46.634" y="35.5" fill="#FFFFFF" stroke="#186735" stroke-miterlimit="10" width="13.332" height="13.334"/>
|
||||||
|
<rect x="33.833" y="48.832" fill="#FFFFFF" stroke="#186735" stroke-miterlimit="10" width="13.334" height="13.334"/>
|
||||||
|
<rect x="33.833" y="35.5" fill="#21572C" stroke="#186735" stroke-miterlimit="10" width="13.334" height="13.334"/>
|
||||||
|
<rect x="46.634" y="48.832" fill="#21572C" stroke="#186735" stroke-miterlimit="10" width="13.332" height="13.334"/>
|
||||||
|
<line fill="none" stroke="#186735" stroke-miterlimit="10" x1="33.833" y1="62.166" x2="26.899" y2="54.299"/>
|
||||||
|
<line fill="none" stroke="#186735" stroke-miterlimit="10" x1="33.833" y1="35.5" x2="26.899" y2="28.166"/>
|
||||||
|
<line fill="none" stroke="#186735" stroke-miterlimit="10" x1="59.966" y1="35.5" x2="53.566" y2="28.166"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
33
openstack_dashboard/static/dashboard/img/unknown-red.svg
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||||
|
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||||
|
]>
|
||||||
|
<svg version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||||
|
x="0px" y="0px" width="92px" height="92px" viewBox="-3.1 -2.67 92 92" enable-background="new -3.1 -2.67 92 92"
|
||||||
|
xml:space="preserve">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g id="XMLID_1_">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M43.33,1.5c23.11,0,41.839,18.73,41.839,41.83c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#C82128" stroke-width="3" stroke-miterlimit="10" d="M85.169,43.33c0,23.1-18.729,41.83-41.839,41.83
|
||||||
|
c-23.1,0-41.83-18.73-41.83-41.83C1.5,20.23,20.23,1.5,43.33,1.5C66.44,1.5,85.169,20.23,85.169,43.33z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<rect x="26.899" y="28.166" fill="none" stroke="#C82128" stroke-miterlimit="10" width="13.333" height="13.333"/>
|
||||||
|
<rect x="40.232" y="40.966" fill="none" stroke="#186735" stroke-miterlimit="10" width="13.334" height="13.333"/>
|
||||||
|
<rect x="26.899" y="40.966" fill="#9F1E22" stroke="#C82128" stroke-miterlimit="10" width="13.334" height="13.333"/>
|
||||||
|
<rect x="40.232" y="28.166" fill="#9F1E22" stroke="#C82128" stroke-miterlimit="10" width="13.334" height="13.333"/>
|
||||||
|
<rect x="46.634" y="35.5" fill="#FFFFFF" stroke="#C82128" stroke-miterlimit="10" width="13.332" height="13.334"/>
|
||||||
|
<rect x="33.833" y="48.832" fill="#FFFFFF" stroke="#C82128" stroke-miterlimit="10" width="13.334" height="13.334"/>
|
||||||
|
<rect x="33.833" y="35.5" fill="#9F1E22" stroke="#C82128" stroke-miterlimit="10" width="13.334" height="13.334"/>
|
||||||
|
<rect x="46.634" y="48.832" fill="#9F1E22" stroke="#C82128" stroke-miterlimit="10" width="13.332" height="13.334"/>
|
||||||
|
<line fill="none" stroke="#C82128" stroke-miterlimit="10" x1="33.833" y1="62.166" x2="26.899" y2="54.299"/>
|
||||||
|
<line fill="none" stroke="#C82128" stroke-miterlimit="10" x1="33.833" y1="35.5" x2="26.899" y2="28.166"/>
|
||||||
|
<line fill="none" stroke="#C82128" stroke-miterlimit="10" x1="59.966" y1="35.5" x2="53.566" y2="28.166"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
@ -2085,5 +2085,21 @@ div.network {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**** Resource Topology CSS ****/
|
||||||
|
.link {stroke: #000;stroke-width: 1.5px;}
|
||||||
|
.node {cursor:pointer;}
|
||||||
|
.node text {font: 12px sans-serif;}
|
||||||
|
|
||||||
|
#resource_container {position:relative;}
|
||||||
|
#stack_box {position:absolute;width:300px;top:10px;left:10px;}
|
||||||
|
#stack_box h3 {font-size:11pt;line-height:20px;}
|
||||||
|
#stack_box p {margin:0;font-size:9pt;line-height:14px;}
|
||||||
|
#stack_box a {margin:0;font-size:9pt;line-height:14px;}
|
||||||
|
#stack_box img {float:left;}
|
||||||
|
#stack_box #stack_info {float:left;white-space:normal;width:200px;}
|
||||||
|
|
||||||
|
#info_box {position:absolute;width:300px;top:100px;left:10px;}
|
||||||
|
#info_box h3 {font-size:9pt;line-height:20px;}
|
||||||
|
#info_box p {margin:0;font-size:9pt;line-height:14px;}
|
||||||
|
#info_box a {margin:0;font-size:9pt;line-height:14px;}
|
||||||
|
#info_box .error {color:darkred;}
|
||||||
|