Skip to content

Commit

Permalink
Merge pull request #1461 from israel-hdez/topology_servers_deployment…
Browse files Browse the repository at this point in the history
…s_status

Rendering status for servers and deployments in middleware topology
  • Loading branch information
martinpovolny committed Jun 13, 2017
2 parents 45f034f + 4108d2e commit c9e5ecb
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 c9e5ecb

Please sign in to comment.