Browse Source

AMBARI-6767. Web Client Should Consult Service Check Availability. (Denys Buzhor via akovalenko)

Aleksandr Kovalenko 10 years ago
parent
commit
2e432f3b49

+ 4 - 0
ambari-web/app/app.js

@@ -130,6 +130,10 @@ module.exports = Em.Application.create({
 
     monitoring: function () {
       return App.StackService.find().filterProperty('isMonitoringService').mapProperty('serviceName');
+    }.property('App.router.clusterController.isLoaded'),
+
+    supportsServiceCheck: function() {
+      return App.StackService.find().filterProperty('serviceCheckSupported').mapProperty('serviceName');
     }.property('App.router.clusterController.isLoaded')
   }),
 

+ 3 - 0
ambari-web/app/mappers/stack_service_mapper.js

@@ -31,6 +31,7 @@ App.stackServiceMapper = App.QuickDataMapper.create({
     stack_version: 'stack_version',
     is_selected: 'is_selected',
     is_installed: 'is_installed',
+    service_check_supported: 'service_check_supported',
     service_components_key: 'service_components',
     service_components_type: 'array',
     service_components: {
@@ -42,6 +43,7 @@ App.stackServiceMapper = App.QuickDataMapper.create({
     id: 'component_name',
     component_name: 'component_name',
     cardinality: 'cardinality',
+    custom_commands: 'custom_commands',
     service_name: 'service_name',
     component_category: 'component_category',
     is_master: 'is_master',
@@ -76,6 +78,7 @@ App.stackServiceMapper = App.QuickDataMapper.create({
         item.serviceComponents.forEach(function (serviceComponent) {
           serviceComponent.StackServiceComponents.id = serviceComponent.StackServiceComponents.component_name;
           serviceComponent.StackServiceComponents.dependencies = serviceComponent.dependencies;
+          serviceComponent.StackServiceComponents.custom_commands = serviceComponent.StackServiceComponents.custom_commands;
           serviceComponents.push(serviceComponent.StackServiceComponents);
           stackServiceComponents.push(this.parseIt(serviceComponent.StackServiceComponents, this.get('component_config')));
         }, this);

+ 1 - 0
ambari-web/app/models/stack_service.js

@@ -40,6 +40,7 @@ App.StackService = DS.Model.extend(App.ServiceModelMixin, {
   comments: DS.attr('string'),
   configTypes: DS.attr('object'),
   serviceVersion: DS.attr('string'),
+  serviceCheckSupported: DS.attr('boolean'),
   stackName: DS.attr('string'),
   stackVersion: DS.attr('string'),
   isSelected: DS.attr('boolean', {defaultValue: true}),

+ 1 - 0
ambari-web/app/models/stack_service_component.js

@@ -25,6 +25,7 @@ var numberUtils = require('utils/number_utils');
 App.StackServiceComponent = DS.Model.extend({
   componentName: DS.attr('string'),
   cardinality: DS.attr('string'),
+  customCommands: DS.attr('array'),
   dependencies: DS.attr('array'),
   serviceName: DS.attr('string'),
   componentCategory: DS.attr('string'),

+ 7 - 6
ambari-web/app/views/main/service/item.js

@@ -127,13 +127,13 @@ App.MainServiceItemView = Em.View.extend({
     var allMasters = service.get('hostComponents').filterProperty('isMaster').mapProperty('componentName').uniq();
     var allSlaves = service.get('hostComponents').filterProperty('isSlave').mapProperty('componentName').uniq();
     var actionMap = this.actionMap();
+    var serviceCheckSupported = App.get('services.supportsServiceCheck').contains(service.get('serviceName'));
 
     if (this.get('controller.isClientsOnlyService')) {
-      options.push(actionMap.RUN_SMOKE_TEST);
-      options.push(actionMap.REFRESH_CONFIGS);
-      if (this.get('serviceName') === 'TEZ') {
-        options = options.without(actionMap.RUN_SMOKE_TEST);
+      if (serviceCheckSupported) {
+        options.push(actionMap.RUN_SMOKE_TEST);
       }
+      options.push(actionMap.REFRESH_CONFIGS);
     } else {
       if (this.get('serviceName') === 'FLUME') {
         options.push(actionMap.REFRESH_CONFIGS);
@@ -168,8 +168,9 @@ App.MainServiceItemView = Em.View.extend({
             break;
         }
       }
-
-      options.push(actionMap.RUN_SMOKE_TEST);
+      if (serviceCheckSupported) {
+        options.push(actionMap.RUN_SMOKE_TEST);
+      }
       options.push(actionMap.TOGGLE_PASSIVE);
 
       var serviceName = service.get('serviceName');

+ 2 - 2
ambari-web/test/models/stack_service_component_test.js

@@ -119,8 +119,8 @@ var componentPropertiesValidationTests = [
       maxToInstall: 1,
       isRequired: false,
       isMultipleAllowed: false,
-      isSlave: true,
-      isMaster: false,
+      isSlave: false,
+      isMaster: true,
       isRestartable: true,
       isReassignable: false,
       isDeletable: false,

File diff suppressed because it is too large
+ 162 - 83
ambari-web/test/service_components.js


Some files were not shown because too many files changed in this diff