blob: 7612674a4bb4365c8bdde7ad5428a62b16885bca [file] [log] [blame]
/**
* 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');
var stringUtils = require('utils/string_utils');
App.stackVersionMapper = App.QuickDataMapper.create({
modelStackVerion: App.StackVersion,
modelStack: {
"id": "id",
"cluster_name": "cluster_name",
"stack": "stack",
"version": "version",
"repository_version_id": "repository_version_id",
"state": "state",
"not_installed_hosts": "host_states.NOT_INSTALLED",
"installing_hosts": "host_states.INSTALLING",
"installed_hosts": "host_states.INSTALLED",
"install_failed_hosts": "host_states.INSTALL_FAILED",
"out_of_sync_hosts": "host_states.OUT_OF_SYNC",
"upgrading_hosts": "host_states.UPGRADING",
"upgraded_hosts": "host_states.UPGRADED",
"upgrade_failed_hosts": "host_states.UPGRADE_FAILED",
"current_hosts": "host_states.CURRENT",
"supports_revert": "supports_revert",
"revert_upgrade_id": "revert_upgrade_id"
},
map: function (json) {
var modelStackVerion = this.get('modelStackVerion');
var resultStack = [];
if (json && json.items) {
json.items.sort(function (a, b) {
return stringUtils.compareVersions(a.repository_versions[0].RepositoryVersions.repository_version, b.repository_versions[0].RepositoryVersions.repository_version);
});
json.items.forEach(function (item) {
var stack = item.ClusterStackVersions;
stack.repository_version_id = item.ClusterStackVersions.repository_version;
/**
* this property contains array of hosts on which repoversion wasn't installed
* possible states:
* <code>INSTALLING<code>
* <code>INSTALL_FAILED<code>
* <code>OUT_OF_SYNC<code>
*/
stack.host_states.NOT_INSTALLED = item.ClusterStackVersions.host_states.INSTALLING
.concat(item.ClusterStackVersions.host_states.INSTALL_FAILED || [])
.concat(item.ClusterStackVersions.host_states.OUT_OF_SYNC || []);
/**
* this property contains array of hosts on which repoversion was installed
* but state of repoveriosn for this hosts can be any postinstalled state
* possible states:
* <code>INSTALLED<code>
* <code>UPGRADING<code>
* <code>UPGRADED<code>
* <code>UPGRADE_FAILED<code>
*/
stack.host_states.INSTALLED = item.ClusterStackVersions.host_states.INSTALLED
.concat(item.ClusterStackVersions.host_states.UPGRADING || [])
.concat(item.ClusterStackVersions.host_states.UPGRADED || [])
.concat(item.ClusterStackVersions.host_states.UPGRADE_FAILED || []);
if (item.repository_versions && item.repository_versions[0]) {
item.repository_versions[0].RepositoryVersions.stackVersionId = item.ClusterStackVersions.id;
App.repoVersionMapper.map({
"items": item.repository_versions,
"stackServices": item.ClusterStackVersions.repository_summary && item.ClusterStackVersions.repository_summary.services
}, true, true);
}
resultStack.push(this.parseIt(stack, this.get('modelStack')));
}, this);
}
App.store.safeLoadMany(modelStackVerion, resultStack);
}
});