You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ni...@apache.org on 2016/12/23 09:04:45 UTC
ambari git commit: AMBARI-19254 : Prompting for underlying workflow
job properties in a coordinator and coordinator job properties in bundle
during job submission (Padma Priya via nitirajrathore)
Repository: ambari
Updated Branches:
refs/heads/trunk 2f123f0ae -> e90009310
AMBARI-19254 : Prompting for underlying workflow job properties in a coordinator and coordinator job properties in bundle during job submission (Padma Priya via nitirajrathore)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e9000931
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e9000931
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e9000931
Branch: refs/heads/trunk
Commit: e900093107475b765ac2d02edf1c28e61d6250bd
Parents: 2f123f0
Author: Nitiraj Rathore <ni...@gmail.com>
Authored: Fri Dec 23 14:31:19 2016 +0530
Committer: Nitiraj Rathore <ni...@gmail.com>
Committed: Fri Dec 23 14:31:19 2016 +0530
----------------------------------------------------------------------
.../ui/app/components/bundle-config.js | 51 +++++++++++++++++---
.../resources/ui/app/components/coord-config.js | 40 ++++++++++-----
.../ui/app/components/flow-designer.js | 2 +-
.../ui/app/services/property-extractor.js | 3 +-
.../src/main/resources/ui/app/styles/app.less | 2 +-
.../app/templates/components/bundle-config.hbs | 3 ++
.../app/templates/components/coord-config.hbs | 3 ++
.../main/resources/ui/app/utils/constants.js | 3 ++
8 files changed, 86 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9000931/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-config.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-config.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-config.js
index 4a8ac90..4ef0ac3 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-config.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-config.js
@@ -132,7 +132,7 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
importBundle (filePath){
this.set("bundleFilePath", filePath);
this.set("isImporting", false);
- var deferred = this.getBundleFromHdfs(filePath);
+ var deferred = this.getFromHdfs(filePath);
deferred.promise.then(function(data){
this.getBundleFromXml(data);
this.set("isImporting", false);
@@ -141,7 +141,7 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
this.set("isImportingSuccess", false);
}.bind(this));
},
- getBundleFromHdfs(filePath){
+ getFromHdfs(filePath){
var url = Ember.ENV.API_URL + "/readWorkflowXml?workflowXmlPath="+filePath;
var deferred = Ember.RSVP.defer();
Ember.$.ajax({
@@ -154,7 +154,8 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
}
}).done(function(data){
deferred.resolve(data);
- }).fail(function(){
+ }).fail(function(e){
+ console.error(e);
deferred.reject();
});
return deferred;
@@ -166,6 +167,22 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
this.get("errors").clear();
this.get("errors").pushObjects(bundleObj.errors);
},
+ getJobProperties(coordinatorPath){
+ var deferred = Ember.RSVP.defer();
+ this.getFromHdfs(coordinatorPath).promise.then((coordinatorXml)=>{
+ var x2js = new X2JS();
+ var coordProps = this.get('propertyExtractor').getDynamicProperties(coordinatorXml);
+ var coordinatorJson = x2js.xml_str2json(coordinatorXml);
+ var workflowPath = coordinatorJson['coordinator-app']['action']['workflow']['app-path'];
+ this.getFromHdfs(workflowPath).promise.then((workflowXml)=>{
+ var workflowProps = this.get('propertyExtractor').getDynamicProperties(workflowXml);
+ deferred.resolve(Array.from(coordProps.values()).concat(Array.from(workflowProps.values())));
+ });
+ }.bind(this)).catch((e)=>{
+ deferred.reject({trace :e, path: coordinatorPath});
+ });
+ return deferred;
+ },
actions : {
closeFileBrowser(){
this.set("showingFileBrowser", false);
@@ -238,10 +255,30 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
}
var bundleGenerator = BundleGenerator.create({bundle:this.get("bundle")});
var bundleXml = bundleGenerator.process();
- var dynamicProperties = this.get('propertyExtractor').getDynamicProperties(bundleXml);
- var configForSubmit = {props : dynamicProperties, xml : bundleXml, params : this.get('bundle.parameters')};
- this.set("bundleConfigs", configForSubmit);
- this.set("showingJobConfig", true);
+ var propertyPromises = [];
+ this.$('#loading').show();
+ this.get('bundle.coordinators').forEach((coordinator) =>{
+ var deferred = this.getJobProperties(coordinator.appPath);
+ propertyPromises.push(deferred.promise);
+ }, this);
+ Ember.RSVP.Promise.all(propertyPromises).then(function(props){
+ var combinedProps = [];
+ props.forEach((prop)=>{
+ combinedProps = combinedProps.concat(prop);
+ });
+ var dynamicProperties = this.get('propertyExtractor').getDynamicProperties(bundleXml);
+ combinedProps.forEach((prop)=>{
+ dynamicProperties.set(prop, prop);
+ });
+ this.$('#loading').hide();
+ var configForSubmit = {props : dynamicProperties, xml : bundleXml, params : this.get('bundle.parameters')};
+ this.set("bundleConfigs", configForSubmit);
+ this.set("showingJobConfig", true);
+ }.bind(this)).catch(function(e){
+ this.$('#loading').hide();
+ this.get("errors").pushObject({'message' : 'Could not process coordinator from ' + e.path});
+ throw new Error(e.trace);
+ }.bind(this));
},
preview(){
if(this.get('validations.isInvalid')) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9000931/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-config.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-config.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-config.js
index 15eb1ce..1d7f435 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-config.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-config.js
@@ -251,9 +251,10 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
deferred.promise.then(function(data){
this.getCoordinatorFromXml(data);
this.set("isImporting", false);
- }.bind(this)).catch(function(){
+ }.bind(this)).catch(function(e){
this.set("isImporting", false);
this.set("isImportingSuccess", false);
+ throw new Error(e);
}.bind(this));
},
readFromHdfs(filePath){
@@ -269,8 +270,8 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
}
}).done(function(data){
deferred.resolve(data);
- }).fail(function(){
- deferred.reject();
+ }).fail(function(e){
+ deferred.reject(e);
});
return deferred;
},
@@ -396,12 +397,29 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
this.set('showErrorMessage', true);
return;
}
- var coordGenerator=CoordinatorGenerator.create({coordinator:this.get("coordinator")});
- var coordinatorXml=coordGenerator.process();
- var dynamicProperties = this.get('propertyExtractor').getDynamicProperties(coordinatorXml);
- var configForSubmit={props:dynamicProperties,xml:coordinatorXml,params:this.get('coordinator.parameters')};
- this.set("coordinatorConfigs", configForSubmit);
- this.set("showingJobConfig", true);
+ this.$('#loading').show();
+ var deferred = this.readFromHdfs(this.get('coordinator.workflow.appPath'));
+ deferred.promise.then(function(data){
+ var x2js = new X2JS();
+ var workflowJson = x2js.xml_str2json(data);
+ this.set('workflowName', workflowJson["workflow-app"]._name);
+ var workflowProps = this.get('propertyExtractor').getDynamicProperties(data);
+ var coordGenerator = CoordinatorGenerator.create({coordinator:this.get("coordinator")});
+ var coordinatorXml = coordGenerator.process();
+ var dynamicProperties = this.get('propertyExtractor').getDynamicProperties(coordinatorXml);
+ workflowProps.forEach((prop)=>{
+ dynamicProperties.set(prop, prop);
+ });
+ this.$('#loading').hide();
+ var configForSubmit={props:dynamicProperties,xml:coordinatorXml,params:this.get('coordinator.parameters')};
+ this.set("coordinatorConfigs", configForSubmit);
+ this.set("showingJobConfig", true);
+ }.bind(this)).catch(function(e){
+ this.set('workflowProps',[]);
+ this.$('#loading').hide();
+ this.get("errors").pushObject({'message' : 'Could not process workflow from ' + this.get('coordinator.workflow.appPath')});
+ throw new Error(e);
+ }.bind(this));
},
closeCoordSubmitConfig(){
this.set("showingJobConfig", false);
@@ -473,7 +491,6 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
if(data.coordinator.get('dataInputType') === 'logical'){
this.set('conditionalDataInExists', true);
}
- console.error(this.get('coordinator'));
}.bind(this)).catch(function(e){
throw new Error(e);
});
@@ -527,8 +544,9 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
var x2js = new X2JS();
var workflowJson = x2js.xml_str2json(data);
this.set('workflowName', workflowJson["workflow-app"]._name);
- }.bind(this)).catch(function(){
+ }.bind(this)).catch(function(e){
this.set('workflowName', null);
+ throw new Error(e);
}.bind(this));
},
showVersionSettings(value){
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9000931/contrib/views/wfmanager/src/main/resources/ui/app/components/flow-designer.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/flow-designer.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/flow-designer.js
index 28239fa..50c7592 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/flow-designer.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/flow-designer.js
@@ -203,7 +203,7 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
workflowXmlDownload(workflowXml){
var link = document.createElement("a");
link.download = "workflow.xml";
- link.href = "data:text/xml,"+vkbeautify.xml(workflowXml);
+ link.href = "data:text/xml,"+workflowXml;
link.click();
},
nodeRendered: function(){
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9000931/contrib/views/wfmanager/src/main/resources/ui/app/services/property-extractor.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/services/property-extractor.js b/contrib/views/wfmanager/src/main/resources/ui/app/services/property-extractor.js
index 17ff9aa..0ebd9a7 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/services/property-extractor.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/services/property-extractor.js
@@ -16,6 +16,7 @@
*/
import Ember from 'ember';
+import Constants from '../utils/constants';
export default Ember.Service.extend({
simpleProperty : /^[A-Za-z_][0-9A-Za-z_]+$/,
@@ -31,7 +32,7 @@ export default Ember.Service.extend({
return dynamicProperties;
}
matches.forEach((match)=>{
- if(this.get('dynamicProperty').test(match)){
+ if(this.get('dynamicProperty').test(match) && Constants.elConstants.indexOf(match) < 0){
dynamicProperties.push(match);
}
}.bind(this));
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9000931/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less b/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less
index 036f529..6296a64 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less
@@ -875,7 +875,7 @@ input:invalid {
width: 50vw;
height: 40vh;
overflow: hidden;
- z-index: 1;
+ z-index: 999;
}
.loader img {
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9000931/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs
index 8293dbe..93a0541 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs
@@ -64,6 +64,9 @@
</div>
</nav>
<div class="container-fluid">
+ <div id='loading'>
+ {{spin-spinner lines=13 length=20 width=10}}
+ </div>
{{designer-errors errors=errors}}
<form class="form-horizontal">
<div class="col-sm-12 paddingtop10">
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9000931/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs
index 6b0ea84..fff8c8c 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs
@@ -69,6 +69,9 @@
</div>
</div>
</nav>
+<div id='loading'>
+ {{spin-spinner lines=13 length=20 width=10}}
+</div>
<div class="container-fluid">
{{designer-errors errors=errors}}
<form class="form-horizontal">
http://git-wip-us.apache.org/repos/asf/ambari/blob/e9000931/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js b/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js
index 6e281d3..a508905 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js
@@ -85,4 +85,7 @@ export default Ember.Object.create({
{displayName:'(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka',gmtOffset:-12, value:'GMT+12:00'}
]),
persistWorkInProgressInterval : 30000,
+ elConstants : [
+ '${YEAR}', '${MONTH}', '${DAY}', '${HOUR}', '${MINUTE}'
+ ]
});