From 563a2c51877b9cf2a5ae419fc6d4eeb680eed04f Mon Sep 17 00:00:00 2001
From: Ondrej Mular <omular@redhat.com>
Date: Wed, 24 Aug 2016 10:04:01 +0200
Subject: [PATCH] web UI: change way of displaying status of unmanaged
primitive resources
---
pcsd/cluster_entity.rb | 11 +----------
pcsd/public/js/nodes-ember.js | 27 ++++++++++++++++++++++-----
pcsd/public/js/pcsd.js | 10 ++++++----
pcsd/views/manage.erb | 15 ++++++++++-----
4 files changed, 39 insertions(+), 24 deletions(-)
diff --git a/pcsd/cluster_entity.rb b/pcsd/cluster_entity.rb
index 7216626..4ffcd4b 100644
--- a/pcsd/cluster_entity.rb
+++ b/pcsd/cluster_entity.rb
@@ -333,10 +333,6 @@ module ClusterEntity
:val => 6,
:str => 'unknown'
},
- :unmanaged => {
- :val => 7,
- :str => 'unmanaged'
- },
}
def initialize(status=:unknown)
@@ -536,11 +532,8 @@ module ClusterEntity
def get_status
running = 0
failed = 0
- unmanaged = 0
@crm_status.each do |s|
- if !s.managed
- unmanaged += 1
- elsif s.active
+ if s.active
running += 1
elsif s.failed
failed += 1
@@ -549,8 +542,6 @@ module ClusterEntity
if disabled?
status = ClusterEntity::ResourceStatus.new(:disabled)
- elsif unmanaged >0
- status = ClusterEntity::ResourceStatus.new(:unmanaged)
elsif running > 0
status = ClusterEntity::ResourceStatus.new(:running)
elsif failed > 0 or @error_list.length > 0
diff --git a/pcsd/public/js/nodes-ember.js b/pcsd/public/js/nodes-ember.js
index f176c39..c650fe6 100644
--- a/pcsd/public/js/nodes-ember.js
+++ b/pcsd/public/js/nodes-ember.js
@@ -851,7 +851,9 @@ Pcs.ResourceObj = Ember.Object.extend({
}.property("class_type"),
res_type: Ember.computed.alias('resource_type'),
status_icon: function() {
- var icon_class = get_status_icon_class(this.get("status_val"));
+ var icon_class = get_status_icon_class(
+ this.get("status_val"), this.get("is_unmanaged")
+ );
return "<div style=\"float:left;margin-right:6px;height:16px;\" class=\"" + icon_class + " sprites\"></div>";
}.property("status_val"),
status_val: function() {
@@ -867,19 +869,23 @@ Pcs.ResourceObj = Ember.Object.extend({
}
}.property('status', 'error_list.@each.message', 'warning_list.@each.message'),
status_color: function() {
- return get_status_color(this.get("status_val"));
+ return get_status_color(this.get("status_val"), this.get("is_unmanaged"));
}.property("status_val"),
status_style: function() {
- var color = get_status_color(this.get("status_val"));
+ var color = get_status_color(
+ this.get("status_val"), this.get("is_unmanaged")
+ );
return "color: " + color + ((color != "green")? "; font-weight: bold;" : "");
}.property("status_val"),
show_status: function() {
- return '<span style="' + this.get('status_style') + '">' + this.get('status') + '</span>';
+ return '<span style="' + this.get('status_style') + '">'
+ + this.get('status') + (this.get("is_unmanaged") ? " (unmanaged)" : "")
+ + '</span>';
}.property("status_style", "disabled"),
status_class: function() {
if (
this.get("status_val") == get_status_value("ok") ||
- ["disabled", "unmanaged"].indexOf(this.get("status")) != -1
+ this.get("status") == "disabled"
) {
return (
Pcs.clusterController.get("show_all_resources") ? "" : "hidden "
@@ -1003,6 +1009,17 @@ Pcs.PrimitiveObj = Pcs.ResourceObj.extend({
instance_status: [],
operations: [],
utilization: [],
+ is_unmanaged: function() {
+ var instance_status_list = this.get("instance_status");
+ if (!instance_status_list) {
+ return false;
+ }
+ var is_managed = true;
+ $.each(instance_status_list, function(_, instance_status) {
+ is_managed = is_managed && instance_status.get("managed");
+ });
+ return !is_managed;
+ }.property("instance_status.@each.managed"),
resource_type: function() {
var agent = this.get("agentname");
if (agent) {
diff --git a/pcsd/public/js/pcsd.js b/pcsd/public/js/pcsd.js
index 1060bd3..67a0bdb 100644
--- a/pcsd/public/js/pcsd.js
+++ b/pcsd/public/js/pcsd.js
@@ -1977,7 +1977,8 @@ function status_comparator(a,b) {
return valA - valB;
}
-function get_status_icon_class(status_val) {
+function get_status_icon_class(status_val, is_unmanaged) {
+ var is_unmanaged = typeof is_unmanaged !== 'undefined' ? is_unmanaged : false;
switch (status_val) {
case get_status_value("error"):
return "error";
@@ -1985,15 +1986,16 @@ function get_status_icon_class(status_val) {
case get_status_value("warning"):
return "warning";
case get_status_value("ok"):
- return "check";
+ return is_unmanaged ? "warning" : "check";
default:
return "x";
}
}
-function get_status_color(status_val) {
+function get_status_color(status_val, is_unmanaged) {
+ var is_unmanaged = typeof is_unmanaged !== 'undefined' ? is_unmanaged : false;
if (status_val == get_status_value("ok")) {
- return "green";
+ return is_unmanaged? "orange" : "green";
}
else if (status_val == get_status_value("warning") || status_val == get_status_value("unknown") || status_val == get_status_value('disabled')) {
return "orange";
diff --git a/pcsd/views/manage.erb b/pcsd/views/manage.erb
index 885b327..39ab41f 100644
--- a/pcsd/views/manage.erb
+++ b/pcsd/views/manage.erb
@@ -113,13 +113,18 @@
<td>
<table class="datatable">
<tr>
- <th style="width: 150px;">RESOURCE</th>
- <th style="width: 100px;">STATUS</th>
+ <th style="width: 170px;">RESOURCE</th>
+ <th style="width: 150px;">STATUS</th>
</tr>
{{#each r in Pcs.clusterController.cur_cluster.resource_list}}
<tr {{bind-attr title=r.tooltip}} {{bind-attr class=r.status_class}}>
<td><a {{bind-attr href=r.url_link}}>{{r.id}}</a></td>
- <td {{bind-attr style=r.status_style}}>{{{r.status_icon}}}{{r.status}}</td>
+ <td {{bind-attr style=r.status_style}}>
+ {{{r.status_icon}}}{{r.status}}
+ {{#if r.is_unmanaged}}
+ (unmanaged)
+ {{/if}}
+ </td>
</tr>
{{else}}
<tr>
@@ -144,8 +149,8 @@
<td>
<table class="datatable">
<tr>
- <th style="width: 150px;">FENCE-DEVICE</th>
- <th style="width: 100px;">STATUS</th>
+ <th style="width: 170px;">FENCE-DEVICE</th>
+ <th style="width: 150px;">STATUS</th>
</tr>
{{#each f in Pcs.clusterController.cur_cluster.fence_list}}
<tr {{bind-attr title=f.tooltip}} {{bind-attr class=f.status_class_fence}}>
--
1.8.3.1