123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 App = require('app');
- App.stackServiceMapper = App.QuickDataMapper.create({
- model: App.StackService,
- component_model: App.StackServiceComponent,
- config: {
- id: 'service_name',
- stack_id: 'stack_id',
- service_name: 'service_name',
- display_name: 'display_name',
- config_types: 'config_types',
- comments: 'comments',
- service_version: 'service_version',
- stack_name: 'stack_name',
- stack_version: 'stack_version',
- is_selected: 'is_selected',
- is_installed: 'is_installed',
- is_installable: 'is_installable',
- is_service_with_widgets: 'is_service_with_widgets',
- required_services: 'required_services',
- service_check_supported: 'service_check_supported',
- service_components_key: 'service_components',
- service_components_type: 'array',
- service_components: {
- item: 'id'
- }
- },
- component_config: {
- id: 'component_name',
- component_name: 'component_name',
- display_name: 'display_name',
- cardinality: 'cardinality',
- custom_commands: 'custom_commands',
- service_name: 'service_name',
- component_category: 'component_category',
- is_master: 'is_master',
- is_client: 'is_client',
- stack_name: 'stack_name',
- stack_version: 'stack_version',
- stack_service_id: 'service_name',
- dependencies_key: 'dependencies',
- dependencies_type: 'array',
- dependencies: {
- item: 'Dependencies'
- }
- },
- mapStackServices: function(json) {
- App.set('isStackServicesLoaded',false);
- this.clearStackModels();
- App.resetDsStoreTypeMap(App.StackServiceComponent);
- App.resetDsStoreTypeMap(App.StackService);
- this.map(json);
- App.set('isStackServicesLoaded',true);
- },
- map: function (json) {
- var model = this.get('model');
- var result = [];
- var stackServiceComponents = [];
- var nonInstallableServices = ['KERBEROS'];
- var displayOrderLength = App.StackService.displayOrder.length;
- var items = json.items.map(function (item, index) {
- var displayOrderIndex = App.StackService.displayOrder.indexOf(item.StackServices.service_name);
- return $.extend(item, {
- index: displayOrderIndex == -1 ? displayOrderLength + index : displayOrderIndex
- });
- }).sortProperty('index');
- items.forEach(function (item) {
- var stackService = item.StackServices;
- var serviceComponents = [];
- item.components.forEach(function (serviceComponent) {
- var dependencies = serviceComponent.dependencies.map(function (dependecy) {
- return { Dependencies: App.keysUnderscoreToCamelCase(App.permit(dependecy.Dependencies, ['component_name', 'scope'])) };
- });
- serviceComponent.StackServiceComponents.id = serviceComponent.StackServiceComponents.component_name;
- serviceComponent.StackServiceComponents.dependencies = dependencies;
- serviceComponents.push(serviceComponent.StackServiceComponents);
- var parsedResult = this.parseIt(serviceComponent.StackServiceComponents, this.get('component_config'));
- if (parsedResult.id == 'MYSQL_SERVER') {
- parsedResult.custom_commands = parsedResult.custom_commands.without('CLEAN');
- }
- stackServiceComponents.push(parsedResult);
- }, this);
- stackService.stack_id = stackService.stack_name + '-' + stackService.stack_version;
- stackService.service_components = serviceComponents;
- stackService.is_service_with_widgets = item.artifacts.someProperty('Artifacts.artifact_name', 'widgets_descriptor');
- // @todo: replace with server response value after API implementation
- if (nonInstallableServices.contains(stackService.service_name)) {
- stackService.is_installable = false;
- stackService.is_selected = false;
- }
- result.push(this.parseIt(stackService, this.get('config')));
- }, this);
- App.store.loadMany(this.get('component_model'), stackServiceComponents);
- App.store.loadMany(model, result);
- },
- /**
- * Clean store from already loaded data.
- **/
- clearStackModels: function () {
- var models = [App.StackServiceComponent, App.StackService];
- models.forEach(function (model) {
- var records = App.get('store').findAll(model).filterProperty('id');
- records.forEach(function (rec) {
- Ember.run(this, function () {
- rec.deleteRecord();
- App.store.commit();
- });
- }, this);
- }, this);
- }
- });
|