You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2013/03/14 00:50:04 UTC
svn commit: r1456280 - in /incubator/ambari/trunk: ./ ambari-web/app/
ambari-web/app/assets/data/mirroring/ ambari-web/app/controllers/global/
ambari-web/app/mappers/ ambari-web/app/models/
Author: yusaku
Date: Wed Mar 13 23:50:03 2013
New Revision: 1456280
URL: http://svn.apache.org/r1456280
Log:
AMBARI-1618. HDFS Mirroring: Create Mapper, Model, Mock Data for Cluster. (Arun Kandregula via yusaku)
Added:
incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/target_clusters.json
incubator/ambari/trunk/ambari-web/app/mappers/target_cluster_mapper.js
incubator/ambari/trunk/ambari-web/app/models/target_cluster.js
Modified:
incubator/ambari/trunk/CHANGES.txt
incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/all_datasets.json
incubator/ambari/trunk/ambari-web/app/controllers/global/cluster_controller.js
incubator/ambari/trunk/ambari-web/app/initialize.js
incubator/ambari/trunk/ambari-web/app/mappers/dataset_mapper.js
incubator/ambari/trunk/ambari-web/app/models.js
incubator/ambari/trunk/ambari-web/app/models/dataset.js
incubator/ambari/trunk/ambari-web/app/models/dataset_job.js
Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1456280&r1=1456279&r2=1456280&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Wed Mar 13 23:50:03 2013
@@ -12,6 +12,9 @@ Trunk (unreleased changes):
NEW FEATURES
+ AMBARI-1618. HDFS Mirroring: Create Mapper, Model, Mock Data for Cluster.
+ (Arun Kandregula via yusaku)
+
AMBARI-1607. HDFS Mirroring: Create Mapper, Model and Mock Data.
(Arun Kandregula via yusaku)
Modified: incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/all_datasets.json
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/all_datasets.json?rev=1456280&r1=1456279&r2=1456280&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/all_datasets.json (original)
+++ incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/all_datasets.json Wed Mar 13 23:50:03 2013
@@ -80,9 +80,9 @@
"id":"99",
"cluster":"drtarget1",
"sourceCluster":"drsource",
- "status":"RUNNING",
- "start":"2013-03-06T03:17Z",
- "end":"2013-03-06T03:19Z",
+ "status":"FAILED",
+ "start":"2013-01-01T03:17Z",
+ "end":"2013-01-01T03:19Z",
"details":"",
"log":""
}
@@ -93,9 +93,35 @@
"id":"95",
"cluster":"drtarget1",
"sourceCluster":"drsource",
- "status":"RUNNING",
- "start":"2013-03-06T03:17Z",
- "end":"2013-03-06T03:19Z",
+ "status":"FAILED",
+ "start":"2012-03-06T03:17Z",
+ "end":"2012-03-06T03:19Z",
+ "details":"",
+ "log":""
+ }
+ },
+ {
+ "href":"http://ec2...com:8080/api/v1/feeds/feed1/instances/95",
+ "Instances":{
+ "id":"90",
+ "cluster":"drtarget1",
+ "sourceCluster":"drsource",
+ "status":"SUCCESSFUL",
+ "start":"2012-03-06T03:17Z",
+ "end":"2012-03-06T03:19Z",
+ "details":"",
+ "log":""
+ }
+ },
+ {
+ "href":"http://ec2...com:8080/api/v1/feeds/feed1/instances/95",
+ "Instances":{
+ "id":"91",
+ "cluster":"drtarget1",
+ "sourceCluster":"drsource",
+ "status":"SUCCESSFUL",
+ "start":"2013-03-11T03:17Z",
+ "end":"2013-03-11T03:19Z",
"details":"",
"log":""
}
Added: incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/target_clusters.json
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/target_clusters.json?rev=1456280&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/target_clusters.json (added)
+++ incubator/ambari/trunk/ambari-web/app/assets/data/mirroring/target_clusters.json Wed Mar 13 23:50:03 2013
@@ -0,0 +1,194 @@
+{
+ "href": "http://ec2...com:8080/api/v1/targets",
+ "items": [
+ {
+ "href": "http://ec2...com:8080/api/v1/targets/drtarget1",
+ "Clusters": {
+ "colo": "gs1",
+ "name": "drtarget1",
+ "interfaces": {
+ "interface": [
+ {
+ "type": "readonly",
+ "endpoint": "http://ec2...com:50070",
+ "version": "1.1.2.22"
+ },
+ {
+ "type": "write",
+ "endpoint": "hdfs://ec2...com:8020",
+ "version": "1.1.2.22"
+ },
+ {
+ "type": "execute",
+ "endpoint": "ec2...com:8021",
+ "version": "0.20.2"
+ },
+ {
+ "type": "workflow",
+ "endpoint": "http://ec2...com:11000/oozie/",
+ "version": "3.1"
+ },
+ {
+ "type": "messaging",
+ "endpoint": "tcp://ec2...com:61616?daemon=true",
+ "version": "5.1.6"
+ },
+ {
+ "type": "registry",
+ "endpoint": "Hcat",
+ "version": "1"
+ }
+ ]
+ },
+ "locations": {
+ "location": [
+ {
+ "name": "temp",
+ "path": "/tmp"
+ },
+ {
+ "name": "working",
+ "path": "/projects/ivory/working"
+ },
+ {
+ "name": "staging",
+ "path": "/projects/ivory/staging"
+ }
+ ]
+ },
+ "properties": {
+ "property": {
+ "name": "separator",
+ "value": ""
+ }
+ }
+ }
+ },
+ {
+ "href": "http://ec2...com:8080/api/v1/targets/drtarget2",
+ "Clusters": {
+ "colo": "gs2",
+ "name": "drtarget2",
+ "interfaces": {
+ "interface": [
+ {
+ "type": "readonly",
+ "endpoint": "http://ec2...com:50070",
+ "version": "1.1.2.22"
+ },
+ {
+ "type": "write",
+ "endpoint": "hdfs://ec2...com:8020",
+ "version": "1.1.2.22"
+ },
+ {
+ "type": "execute",
+ "endpoint": "ec2...com:8021",
+ "version": "0.20.2"
+ },
+ {
+ "type": "workflow",
+ "endpoint": "http://ec2...com:11000/oozie/",
+ "version": "3.1"
+ },
+ {
+ "type": "messaging",
+ "endpoint": "tcp://ec2...com:61616?daemon=true",
+ "version": "5.1.6"
+ },
+ {
+ "type": "registry",
+ "endpoint": "Hcat",
+ "version": "1"
+ }
+ ]
+ },
+ "locations": {
+ "location": [
+ {
+ "name": "temp",
+ "path": "/tmp"
+ },
+ {
+ "name": "working",
+ "path": "/projects/ivory/working"
+ },
+ {
+ "name": "staging",
+ "path": "/projects/ivory/staging"
+ }
+ ]
+ },
+ "properties": {
+ "property": {
+ "name": "separator",
+ "value": ""
+ }
+ }
+ }
+ },
+ {
+ "href": "http://ec2...com:8080/api/v1/targets/drtarget3",
+ "Clusters": {
+ "colo": "gs3",
+ "name": "drtarget3",
+ "interfaces": {
+ "interface": [
+ {
+ "type": "readonly",
+ "endpoint": "http://ec2...com:50070",
+ "version": "1.1.2.22"
+ },
+ {
+ "type": "write",
+ "endpoint": "hdfs://ec2...com:8020",
+ "version": "1.1.2.22"
+ },
+ {
+ "type": "execute",
+ "endpoint": "ec2...com:8021",
+ "version": "0.20.2"
+ },
+ {
+ "type": "workflow",
+ "endpoint": "http://ec2...com:11000/oozie/",
+ "version": "3.1"
+ },
+ {
+ "type": "messaging",
+ "endpoint": "tcp://ec2...com:61616?daemon=true",
+ "version": "5.1.6"
+ },
+ {
+ "type": "registry",
+ "endpoint": "Hcat",
+ "version": "1"
+ }
+ ]
+ },
+ "locations": {
+ "location": [
+ {
+ "name": "temp",
+ "path": "/tmp"
+ },
+ {
+ "name": "working",
+ "path": "/projects/ivory/working"
+ },
+ {
+ "name": "staging",
+ "path": "/projects/ivory/staging"
+ }
+ ]
+ },
+ "properties": {
+ "property": {
+ "name": "separator",
+ "value": ""
+ }
+ }
+ }
+ }
+ ]
+}
Modified: incubator/ambari/trunk/ambari-web/app/controllers/global/cluster_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/global/cluster_controller.js?rev=1456280&r1=1456279&r2=1456280&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/global/cluster_controller.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/global/cluster_controller.js Wed Mar 13 23:50:03 2013
@@ -42,7 +42,7 @@ App.ClusterController = Em.Controller.ex
}
}
this.set('isLoaded', loaded);
- this.set('clusterDataLoadedPercent', 'width:' + (Math.floor(numLoaded/7*100)).toString() + '%');
+ this.set('clusterDataLoadedPercent', 'width:' + (Math.floor(numLoaded/8*100)).toString() + '%');
},
dataLoadList:Em.Object.create({
@@ -52,7 +52,9 @@ App.ClusterController = Em.Controller.ex
'racks':false,
'alerts':false,
'users':false,
- 'datasets':false
+ 'datasets':false,
+ 'targetclusters':false
+
}),
/**
@@ -289,10 +291,19 @@ App.ClusterController = Em.Controller.ex
var usersUrl = App.testMode ? '/data/users/users.json' : App.apiPrefix + '/users/?fields=*';
var racksUrl = "/data/racks/racks.json";
var dataSetUrl = "/data/mirroring/all_datasets.json";
+ var targetClusterUrl = "/data/mirroring/target_clusters.json";
+
+ App.HttpClient.get(targetClusterUrl, App.targetClusterMapper, {
+ complete: function (jqXHR, textStatus) {
+ self.updateLoadStatus('targetclusters');
+ }
+ }, function (jqXHR, textStatus) {
+ self.updateLoadStatus('targetclusters');
+ });
App.HttpClient.get(dataSetUrl, App.dataSetMapper, {
- complete:function (jqXHR, textStatus) {
+ complete: function (jqXHR, textStatus) {
self.updateLoadStatus('datasets');
}
}, function (jqXHR, textStatus) {
Modified: incubator/ambari/trunk/ambari-web/app/initialize.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/initialize.js?rev=1456280&r1=1456279&r2=1456280&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/initialize.js (original)
+++ incubator/ambari/trunk/ambari-web/app/initialize.js Wed Mar 13 23:50:03 2013
@@ -44,6 +44,7 @@ require('mappers/racks_mapper');
require('mappers/alerts_mapper');
require('mappers/users_mapper');
require('mappers/service_mapper');
+require('mappers/target_cluster_mapper');
require('mappers/dataset_mapper');
require('utils/http_client');
require('utils/host_progress_popup');
Modified: incubator/ambari/trunk/ambari-web/app/mappers/dataset_mapper.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/mappers/dataset_mapper.js?rev=1456280&r1=1456279&r2=1456280&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/mappers/dataset_mapper.js (original)
+++ incubator/ambari/trunk/ambari-web/app/mappers/dataset_mapper.js Wed Mar 13 23:50:03 2013
@@ -17,24 +17,28 @@
*/
App.dataSetMapper = App.QuickDataMapper.create({
- model : App.DataSet,
- Jobs_model : App.DataSetJob,
- config : {
+ model: App.DataSet,
+ Jobs_model: App.DataSetJob,
+ config: {
+ id: 'id', // approach 2 : to be calculated (TBC1)
name: 'Feeds.name', // from json
source_cluster_name: 'Feeds.clusters.cluster[0].name', // approach1 : from json
- target_cluster_name: 'target_cluster_name', // approach 2 : to be calculated (TBC1)
+ target_cluster_name: 'target_cluster_name', // approach 2 : to be calculated (TBC2)
source_dir: 'Feeds.locations.location.path',
schedule: 'Feeds.frequency',
- dataset_jobs: 'dataset_jobs', // TBC2 ( set of ids will be added )
+ dataset_jobs: 'dataset_jobs', // TBC3 ( set of ids will be added )
// all below are unknown at present and may be blank
- last_failed_date: 'last_failed_date',
- avg_data: 'avg_data',
- data_creation_date: 'data_creation_date',
+ last_failed_date: 'last_failed_date', // TBC4
+ last_succeeded_date: 'last_succeeded_date', // TBC5
+ last_duration: 'last_duration', // TBC6
+ avg_data: 'avg_data', // TBC7
+ created_date: 'created_date', // TBC8
target_dir: 'target_dir'
+
},
- jobs_config : {
- // $dataset_id: 'none', // will be loaded outside parser
+ jobs_config: {
+ $dataset_id: 'none', // will be loaded outside parser
id: 'Instances.id',
start_date: 'start_date_str',
end_date: 'end_date_str',
@@ -42,64 +46,112 @@ App.dataSetMapper = App.QuickDataMapper.
//data: 'Instances.details'
},
- map:function(json){
- if(!this.get('model')) {return;}
- if(json && json.items && json.items.length > 0){
+ getDuration: function (startDate, endDate) {
+
+ var milliseconds = endDate - startDate;
+ var date = new Date(milliseconds);
+ var h = Math.floor(milliseconds / 3600000);
+ var m = Math.floor((milliseconds % 3600000) / 60000);
+ var s = Math.floor(((milliseconds % 360000) % 60000) / 1000);
+ return (h == 0 ? '' : h + 'hr ') + (m == 0 ? '' : m + 'mins ') + (s == 0 ? '' : s + 'secs ');
+
+ },
+ map: function (json) {
+ if (!this.get('model')) {
+ return;
+ }
+ if (json && json.items && json.items.length > 0) {
var dataset_results = [];
- json.items.forEach(function(item){
+ json.items.forEach(function (item) {
- try{
+ try {
// TBC1
- item.target_cluster_name = (item.Feeds.clusters.cluster.findProperty("type","target")).name;
+ var re = new RegExp(" ", "g");
+ item.id = item.Feeds.name.replace(re, "_");
// TBC2
+ item.target_cluster_name = (item.Feeds.clusters.cluster.findProperty("type", "target")).name;
+
+ // TBC3
item.dataset_jobs = [];
- item.instances.forEach(function(job){
+ var last_failed_date = null;
+ var last_succeeded_date = null;
+ var last_end_date = null;
+ item.instances.forEach(function (job) {
+ var end_date = new Date(job.Instances.end);
+
+ if (!last_end_date) {
+ last_end_date = end_date;
+ item.last_job = job;
+ }
+ else if (end_date > last_end_date) {
+ last_end_date = end_date;
+ item.last_job = job;
+ }
+ if (job.Instances.status === 'FAILED') {
+ if (last_failed_date == null || last_failed_date < end_date) {
+ item.last_failed_date = end_date;
+ last_failed_date = end_date;
+ }
+ }
+ else if (job.Instances.status === 'SUCCESSFUL') {
+ if (last_succeeded_date == null || last_succeeded_date < end_date) {
+ item.last_succeeded_date = end_date;
+ last_succeeded_date = end_date;
+ }
+ }
+
item.dataset_jobs.push(job.Instances.id);
});
- item.last_failed_date ='';
- item.avg_data ='';
- item.data_creation_date ='';
- item.target_dir ='';
+ // calculate last_duration
+
+ var last_end_date = new Date(item.last_job.Instances.end);
+ var last_start_date = new Date(item.last_job.Instances.start);
+ item.last_duration = this.getDuration(last_start_date, last_end_date);
+
+
+ item.avg_data = '';
+ item.created_date = '';
+ item.target_dir = '';
var newitem = this.parseIt(item, this.config);
dataset_results.push(newitem);
- }catch(ex){
+ } catch (ex) {
console.debug('Exception occured : ' + ex);
}
- },this);
- console.debug('Before load: App.DataSet.find().content : ' + App.DataSet.find().content );
+ }, this);
+ console.debug('Before load: App.DataSet.find().content : ' + App.DataSet.find().content);
App.store.loadMany(this.get('model'), dataset_results);
- console.debug('After load: App.DataSet.find().content : ' + App.DataSet.find().content );
+ console.debug('After load: App.DataSet.find().content : ' + App.DataSet.find().content);
- try{
+ try {
// Child records
var dataset_job_results = [];
- json.items.forEach(function(item){
- item.instances.forEach(function(instance){
+ json.items.forEach(function (item) {
+ item.instances.forEach(function (instance) {
instance.Instances.start = new Date(instance.Instances.start); // neeed to be calulated end -start
instance.Instances.end = new Date(instance.Instances.end); // neeed to be calulated end -start
- var milliseconds = instance.Instances.end - instance.Instances.start;
- var date = new Date(milliseconds);
- var h = Math.floor(milliseconds / 3600000);
- var m = Math.floor((milliseconds % 3600000) / 60000);
- var s = Math.floor(((milliseconds % 360000) % 60000) / 1000);
- instance.duration = (h==0?'':h+'hr ') + (m==0?'':m+'mins ') + (s==0?'':s+'secs ');
+
+ instance.duration = this.getDuration(instance.Instances.start, instance.Instances.end);
+
instance.start_date_str = instance.Instances.start.toString();
instance.end_date_str = instance.Instances.end.toString();
var result = this.parseIt(instance, this.jobs_config);
+ result.dataset_id = item.id;
dataset_job_results.push(result);
+
+
}, this)
}, this);
- console.debug('Before load: App.DataSetJob.find().content : ' + App.DataSetJob.find().content );
+ console.debug('Before load: App.DataSetJob.find().content : ' + App.DataSetJob.find().content);
App.store.loadMany(this.get('Jobs_model'), dataset_job_results);
- console.debug('After load: App.DataSetJob.find().content : ' + App.DataSetJob.find().content );
- }catch(ex){
+ console.debug('After load: App.DataSetJob.find().content : ' + App.DataSetJob.find().content);
+ } catch (ex) {
console.debug('Exception occured : ' + ex);
}
}
Added: incubator/ambari/trunk/ambari-web/app/mappers/target_cluster_mapper.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/mappers/target_cluster_mapper.js?rev=1456280&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/mappers/target_cluster_mapper.js (added)
+++ incubator/ambari/trunk/ambari-web/app/mappers/target_cluster_mapper.js Wed Mar 13 23:50:03 2013
@@ -0,0 +1,55 @@
+/**
+ * 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.
+ */
+
+
+App.targetClusterMapper = App.QuickDataMapper.create({
+ model: App.TargetCluster,
+ config: {
+ id: 'id',
+ cluster_name: 'Clusters.name',
+ name_node_web_url: 'name_node_web_url',
+ name_node_rpc_url: 'name_node_rpc_url',
+ oozie_server_url: 'oozie_server_url'
+ },
+ map: function (json) {
+ if (!this.get('model')) {
+ return;
+ }
+ if (json && json.items && json.items.length > 0) {
+ var target_cluster_results = [];
+ json.items.forEach(function (item) {
+ try {
+ item.name_node_web_url = (item.Clusters.interfaces.interface.findProperty("type", "readonly")).endpoint;
+ item.name_node_rpc_url = (item.Clusters.interfaces.interface.findProperty("type", "write")).endpoint;
+ //item.oozie_server_url = (item.Clusters.interfaces.interface.findProperty("type","workflow")).endpoint;
+ item.id = item.Clusters.name;
+
+ var re = new RegExp(" ", "g");
+ item.id = item.id.replace(re, "_");
+
+
+ item = this.parseIt(item, this.config);
+ target_cluster_results.push(item);
+ } catch (ex) {
+ console.error('Exception occurred: ' + ex);
+ }
+ }, this);
+ App.store.loadMany(this.get('model'), target_cluster_results);
+ }
+ }
+});
Modified: incubator/ambari/trunk/ambari-web/app/models.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/models.js?rev=1456280&r1=1456279&r2=1456280&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/models.js (original)
+++ incubator/ambari/trunk/ambari-web/app/models.js Wed Mar 13 23:50:03 2013
@@ -41,6 +41,7 @@ require('models/run');
require('models/app');
require('models/background_operation');
require('models/host_component');
+require('models/target_cluster');
require('models/dataset');
require('models/dataset_job');
require('classes/run_class');
Modified: incubator/ambari/trunk/ambari-web/app/models/dataset.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/models/dataset.js?rev=1456280&r1=1456279&r2=1456280&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/models/dataset.js (original)
+++ incubator/ambari/trunk/ambari-web/app/models/dataset.js Wed Mar 13 23:50:03 2013
@@ -20,28 +20,30 @@
var App = require('app');
App.DataSet = DS.Model.extend({
+ id: DS.attr('string'),
name: DS.attr('string'),
sourceClusterName: DS.attr('string'),
targetClusterName: DS.attr('string'),
- sourceDir : DS.attr('string'),
- targetDir : DS.attr('string'),
+ sourceDir: DS.attr('string'),
+ targetDir: DS.attr('string'),
schedule: DS.attr('string'),
- lastFailedDate : DS.attr('date'),
- avgData : DS.attr('number'),
- dataCreationDate : DS.attr('string'),
+ lastSucceededDate: DS.attr('string'),
+ lastFailedDate: DS.attr('date'),
+ lastDuration: DS.attr('string'),
+ avgData: DS.attr('string'),
+ createdDate: DS.attr('string'),
datasetJobs: DS.hasMany('App.DataSetJob')
});
-
App.DataSet.FIXTURES = [/*
- {
- id: 1,
- cluster_name: 'cluster1',
- stack_name: 'HDP',
- hosts: [1, 2, 3, 4],
- racks: [1, 2, 3, 4, 5, 6],
- max_hosts_per_rack: 10
- }*/
+ {
+ id: 1,
+ cluster_name: 'cluster1',
+ stack_name: 'HDP',
+ hosts: [1, 2, 3, 4],
+ racks: [1, 2, 3, 4, 5, 6],
+ max_hosts_per_rack: 10
+ }*/
];
\ No newline at end of file
Modified: incubator/ambari/trunk/ambari-web/app/models/dataset_job.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/models/dataset_job.js?rev=1456280&r1=1456279&r2=1456280&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/models/dataset_job.js (original)
+++ incubator/ambari/trunk/ambari-web/app/models/dataset_job.js Wed Mar 13 23:50:03 2013
@@ -20,22 +20,21 @@
var App = require('app');
App.DataSetJob = DS.Model.extend({
- // dataSet: DS.belongsTo('App.DataSet'),
+ dataset: DS.belongsTo('App.DataSet'),
startDate: DS.attr('string'),
endDate: DS.attr('string'),
- duration : DS.attr('string')
+ duration: DS.attr('string')
//data : DS.attr('string')
});
-
App.DataSetJob.FIXTURES = [/*
- {
- id: 1,
- cluster_name: 'cluster1',
- stack_name: 'HDP',
- hosts: [1, 2, 3, 4],
- racks: [1, 2, 3, 4, 5, 6],
- max_hosts_per_rack: 10
- }*/
+ {
+ id: 1,
+ cluster_name: 'cluster1',
+ stack_name: 'HDP',
+ hosts: [1, 2, 3, 4],
+ racks: [1, 2, 3, 4, 5, 6],
+ max_hosts_per_rack: 10
+ }*/
];
\ No newline at end of file
Added: incubator/ambari/trunk/ambari-web/app/models/target_cluster.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/models/target_cluster.js?rev=1456280&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/models/target_cluster.js (added)
+++ incubator/ambari/trunk/ambari-web/app/models/target_cluster.js Wed Mar 13 23:50:03 2013
@@ -0,0 +1,39 @@
+/**
+ * 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.TargetCluster = DS.Model.extend({
+ id: DS.attr('string'),
+ clusterName: DS.attr('string'),
+ nameNodeWebUrl: DS.attr('string'),
+ nameNodeRpcUrl: DS.attr('string'),
+ oozieServerUrl: DS.hasMany('string')
+});
+
+App.TargetCluster.FIXTURES = [/*
+ {
+ id: 1,
+ cluster_name: 'cluster1',
+ stack_name: 'HDP',
+ hosts: [1, 2, 3, 4],
+ racks: [1, 2, 3, 4, 5, 6],
+ max_hosts_per_rack: 10
+ }*/
+];
\ No newline at end of file