Skip to content

Commit

Permalink
Rendering status for servers and deployments in middleware topology
Browse files Browse the repository at this point in the history
Status of middleware servers and deployments are set when building
topology view. This renders the status in tooltips in related
topology nodes and also renders status colors.

Regarding colors:
- For middleware servers, when status is:
  * Down => red
  * Running => green
  * Reload required => amber
  * Starting => blue
- For deployments:
  * Enabled => green
  * Disabled => amber

This is the first step to cover ManageIQ/manageiq-providers-hawkular#5
  • Loading branch information
israel-hdez committed Jun 12, 2017
1 parent d93f3ab commit 4108d2e
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 15 deletions.
6 changes: 6 additions & 0 deletions app/assets/javascripts/services/topology_service.js
Expand Up @@ -177,16 +177,22 @@ ManageIQ.angular.app.service('topologyService', function() {
case "Running":
case "Succeeded":
case "Valid":
case "Enabled":
return "success";
case "NotReady":
case "Failed":
case "Error":
case "Unreachable":
case "Down":
return "error";
case 'Warning':
case 'Waiting':
case 'Pending':
case 'Disabled':
case 'Reload required':
return "warning";
case 'Starting':
return "information"; // defined in middleware_topology.css
case 'Unknown':
case 'Terminated':
return "unknown";
Expand Down
7 changes: 6 additions & 1 deletion app/assets/stylesheets/middleware_topology.css
Expand Up @@ -7,4 +7,9 @@
font-family: FontAwesome;
font-size: 20px;
fill: #555;
}
}

.middleware .kube-topology g circle.information {
stroke: #00c;
}

7 changes: 6 additions & 1 deletion app/services/middleware_topology_service.rb
Expand Up @@ -56,7 +56,12 @@ def build_entity_data(entity)
data[:icon] = ActionController::Base.helpers.image_path(entity.decorate.try(:fileicon))
end

if entity.kind_of?(Vm)
case entity
when MiddlewareServer
data[:status] = entity.properties['Calculated Server State'].underscore.humanize if entity.properties['Calculated Server State']
when MiddlewareDeployment
data[:status] = entity.status.capitalize if entity.status
when Vm
data[:status] = entity.power_state.capitalize
data[:provider] = entity.ext_management_system.name
end
Expand Down
@@ -1,5 +1,5 @@
describe('middlewareTopologyController', function () {
var scope, $controller, $httpBackend;
var scope, $controller, $httpBackend, topologyService;
var mock_data = getJSONFixture('middleware_topology_response.json');

var mw_manager = {
Expand All @@ -18,23 +18,61 @@ describe('middlewareTopologyController', function () {
"name": "Local",
"kind": "MiddlewareServer",
"miq_id": 1,
"status": "Unknown",
"status": "Running",
"display_kind": "MiddlewareServer",
"icon": "vendor-wildfly"
}
};

var mw_server_starting = {
id: "MiddlewareServer1", item: {
"status": "Starting"
}
};

var mw_server_reload = {
id: "MiddlewareServer1", item: {
"status": "Reload required"
}
};

var mw_server_down = {
id: "MiddlewareServer1", item: {
"status": "Down"
}
};

var mw_server_unknown = {
id: "MiddlewareServer1", item: {
"status": "Unknown"
}
};

var mw_deployment = {
id: "MiddlewareDeployment1",
item: {
"name": "hawkular-command-gateway-war.war",
"kind": "MiddlewareDeployment",
"miq_id": 1,
"status": "Unknown",
"status": "Enabled",
"display_kind": "MiddlewareDeploymentWar"
}
};

var mw_deployment_disabled = {
id: "MiddlewareDeployment1",
item: {
"status": "Disabled",
}
};

var mw_deployment_unknown = {
id: "MiddlewareDeployment1",
item: {
"status": "Unknown",
}
};

var mw_datasource = {
id: "MiddlewareDatasource1",
item: {
Expand Down Expand Up @@ -92,14 +130,15 @@ describe('middlewareTopologyController', function () {

beforeEach(module('ManageIQ'));

beforeEach(inject(function (_$httpBackend_, $rootScope, _$controller_, $location) {
beforeEach(inject(function (_$httpBackend_, $rootScope, _$controller_, $location, _topologyService_) {
spyOn($location, 'absUrl').and.returnValue('/middleware_topology/show');
scope = $rootScope.$new();
topologyService = _topologyService_;

$httpBackend = _$httpBackend_;
$httpBackend.when('GET', '/middleware_topology/data').respond(mock_data);
$controller = _$controller_('middlewareTopologyController',
{$scope: scope});
{$scope: scope, topologyService: _topologyService_});
$httpBackend.flush();
}));

Expand Down Expand Up @@ -171,4 +210,18 @@ describe('middlewareTopologyController', function () {
});
});

describe('topologyService renders right colors', function () {
it('for deployments', function() {
expect(topologyService.getItemStatusClass(mw_deployment)).toEqual('success');
expect(topologyService.getItemStatusClass(mw_deployment_disabled)).toEqual('warning');
expect(topologyService.getItemStatusClass(mw_deployment_unknown)).toEqual('unknown');
});
it('for servers', function() {
expect(topologyService.getItemStatusClass(mw_server)).toEqual('success');
expect(topologyService.getItemStatusClass(mw_server_down)).toEqual('error');
expect(topologyService.getItemStatusClass(mw_server_starting)).toEqual('information');
expect(topologyService.getItemStatusClass(mw_server_reload)).toEqual('warning');
expect(topologyService.getItemStatusClass(mw_server_unknown)).toEqual('unknown');
});
});
});
35 changes: 27 additions & 8 deletions spec/services/middleware_topology_service_spec.rb
Expand Up @@ -13,29 +13,34 @@
subject { middleware_topology_service.build_topology }

let(:ems_hawkular) { FactoryGirl.create(:ems_hawkular) }
let(:mw_server) do
let!(:mw_server) do
FactoryGirl.create(:hawkular_middleware_server,
:name => 'Local',
:feed => '70c798a0-6985-4f8a-a525-012d8d28e8a3',
:ems_ref => long_id_0,
:nativeid => 'Local~~',
:ext_management_system => ems_hawkular)
:ext_management_system => ems_hawkular,
:properties => { 'Calculated Server State' => 'running' })
end

it "topology contains the expected structure and content" do
before do
allow(middleware_topology_service).to receive(:retrieve_providers).and_return([ems_hawkular])
end

it "topology contains the expected structure and content" do
mw_deployment1 = MiddlewareDeployment.create(:ext_management_system => ems_hawkular,
:middleware_server => mw_server,
:ems_ref => long_id_2,
:name => "hawkular-wildfly-agent-download.war",
:nativeid => long_id_4)
:nativeid => long_id_4,
:status => 'Enabled')

mw_deployment2 = MiddlewareDeployment.create(:ext_management_system => ems_hawkular,
:middleware_server => mw_server,
:ems_ref => long_id_1,
:name => "hawkular-command-gateway-war.war",
:nativeid => long_id_5)
:nativeid => long_id_5,
:status => 'Disabled')

mw_datasource = MiddlewareDatasource.create(:ext_management_system => ems_hawkular,
:middleware_server => mw_server,
Expand All @@ -60,7 +65,7 @@

expect(subject[:items]).to include(
"MiddlewareServer" + mw_server.compressed_id.to_s => {:name => mw_server.name,
:status => "Unknown",
:status => "Running",
:kind => "MiddlewareServer",
:display_kind => "MiddlewareServer",
:miq_id => mw_server.id,
Expand All @@ -69,15 +74,15 @@

expect(subject[:items]).to include(
"MiddlewareDeployment" + mw_deployment1.compressed_id.to_s => {:name => mw_deployment1.name,
:status => "Unknown",
:status => "Enabled",
:kind => "MiddlewareDeployment",
:display_kind => "MiddlewareDeploymentWar",
:miq_id => mw_deployment1.id}
)

expect(subject[:items]).to include(
"MiddlewareDeployment" + mw_deployment2.compressed_id.to_s => {:name => mw_deployment2.name,
:status => "Unknown",
:status => "Disabled",
:kind => "MiddlewareDeployment",
:display_kind => "MiddlewareDeploymentWar",
:miq_id => mw_deployment2.id}
Expand Down Expand Up @@ -113,5 +118,19 @@
:target => "MiddlewareMessaging" + mw_messaging.compressed_id.to_s}
)
end

it "topology renders unknown status if server state is not set" do
mw_server.properties = nil
mw_server.save!

expect(subject[:items]).to include(
"MiddlewareServer" + mw_server.compressed_id.to_s => {:name => mw_server.name,
:status => "Unknown",
:kind => "MiddlewareServer",
:display_kind => "MiddlewareServer",
:miq_id => mw_server.id,
:icon => match(/vendor-wildfly/)}
)
end
end
end

0 comments on commit 4108d2e

Please sign in to comment.