You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2017/01/05 13:38:35 UTC

[02/15] ambari git commit: AMBARI-19352. Designer should always pick latest version for an action node (Padma Priya via pallavkul)

AMBARI-19352. Designer should always pick latest version for an action node (Padma Priya via pallavkul)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/dcffaeda
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/dcffaeda
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/dcffaeda

Branch: refs/heads/branch-dev-patch-upgrade
Commit: dcffaeda04ff0348bcb1927f4e1de6a045ddf93a
Parents: 7a7bc00
Author: pallavkul <pa...@gmail.com>
Authored: Thu Jan 5 12:08:08 2017 +0530
Committer: pallavkul <pa...@gmail.com>
Committed: Thu Jan 5 12:08:08 2017 +0530

----------------------------------------------------------------------
 .../ui/app/components/bundle-config.js          |  11 +-
 .../app/components/bundle-version-settings.js   |  12 +-
 .../resources/ui/app/components/coord-config.js |  12 +-
 .../ui/app/components/coord-version-settings.js |  12 +-
 .../ui/app/components/flow-designer.js          |   5 +-
 .../ui/app/components/version-settings.js       |  28 +--
 .../ui/app/domain/actionjob_hanlder.js          |   2 +-
 .../ui/app/domain/bundle/bundle-xml-importer.js |  18 +-
 .../coordinator/coordinator-xml-importer.js     |  17 +-
 .../resources/ui/app/domain/schema-versions.js  | 208 ++++++++-----------
 .../ui/app/domain/workflow-importer.js          |  27 ++-
 .../ui/app/domain/workflow-json-importer.js     |   2 +
 .../ui/app/domain/workflow-xml-generator.js     |   2 +-
 .../main/resources/ui/app/domain/workflow.js    |  12 +-
 .../src/main/resources/ui/app/routes/design.js  |  42 ++++
 .../app/templates/components/bundle-config.hbs  |   2 +-
 .../components/bundle-version-settings.hbs      |   4 +-
 .../app/templates/components/coord-config.hbs   |   2 +-
 .../components/coord-version-settings.hbs       |   4 +-
 .../templates/components/designer-errors.hbs    |   2 +-
 .../app/templates/components/flow-designer.hbs  |   2 +-
 .../templates/components/version-settings.hbs   |   4 +-
 .../main/resources/ui/app/templates/design.hbs  |   3 +-
 23 files changed, 235 insertions(+), 198 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/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 4ef0ac3..122b956 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
@@ -111,7 +111,9 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
         type : 'date'
       },
       coordinators : null,
-      schemaVersions : this.get("schemaVersions")
+      schemaVersions : {
+        bundleVersion : this.get('schemaVersions').getDefaultVersion('bundle')
+      }
     });
   },
   importSampleBundle (){
@@ -136,9 +138,10 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
     deferred.promise.then(function(data){
       this.getBundleFromXml(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));
   },
   getFromHdfs(filePath){
@@ -161,8 +164,8 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
     return deferred;
   },
   getBundleFromXml(bundleXml){
-    var bundleXmlImporter = BundleXmlImporter.create({schemaVersions: this.get("schemaVersions")});
-    var bundleObj = bundleXmlImporter.importBundle(bundleXml, this.get("errors"));
+    var bundleXmlImporter = BundleXmlImporter.create();
+    var bundleObj = bundleXmlImporter.importBundle(bundleXml);
     this.set("bundle", bundleObj.bundle);
     this.get("errors").clear();
     this.get("errors").pushObjects(bundleObj.errors);

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-version-settings.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-version-settings.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-version-settings.js
index 3bd6653..7067cb9 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-version-settings.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-version-settings.js
@@ -17,16 +17,14 @@
 
 import Ember from 'ember';
 import Constants from '../utils/constants';
+import SchemaVersions from '../domain/schema-versions';
 
 export default Ember.Component.extend({
+  schemaVersions : SchemaVersions.create({}),
   initialize : function(){
-    this.set('currentBundleVersion', this.get('schemaVersions').getCurrentBundleVersion());
-    this.set('bundleSchemaVersions', this.get('schemaVersions').getBundleVersions());
-    this.get('schemaVersions').createCopy();
+    this.set('bundleSchemaVersions', this.get('schemaVersions').getSupportedVersions('bundle'));
+    this.set('selectedBundleVersion', this.get('bundle').schemaVersions.bundleVersion);
   }.on('init'),
-  BundleVersionObserver : Ember.observer('currentBundleVersion',function(){
-    this.get('schemaVersions').setCurrentBundleVersion(this.get('currentBundleVersion'));
-  }),
   rendered : function(){
     this.$('#version-settings-dialog').modal({
       backdrop: 'static',
@@ -39,10 +37,10 @@ export default Ember.Component.extend({
   }.on('didInsertElement'),
   actions : {
     save (){
+      this.get('bundle').schemaVersions.bundleVersion = this.get('selectedBundleVersion');
       this.$('#version-settings-dialog').modal('hide');
     },
     cancel (){
-      this.get('schemaVersions').rollBack();
       this.$('#version-settings-dialog').modal('hide');
     }
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/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 1d7f435..904901c 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
@@ -208,7 +208,9 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
       },
       controls : Ember.A([]),
       slainfo : SlaInfo.create({}),
-      schemaVersions : this.get("schemaVersions")
+      schemaVersions : {
+        coordinatorVersion : this.get('schemaVersions').getDefaultVersion('coordinator')
+      }
     });
   },
   importSampleCoordinator (){
@@ -219,8 +221,8 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
       dataType: "text",
       cache:false,
       success: function(data) {
-        var coordinatorXmlImporter = CoordinatorXmlImporter.create({schemaVersions: self.schemaVersions});
-        var coordinator = coordinatorXmlImporter.importCoordinator(data, self.errors);
+        var coordinatorXmlImporter = CoordinatorXmlImporter.create({});
+        var coordinator = coordinatorXmlImporter.importCoordinator(data);
         deferred.resolve(coordinator);
       }.bind(this),
       failure : function(data){
@@ -276,8 +278,8 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
     return deferred;
   },
   getCoordinatorFromXml(coordinatorXml){
-    var coordinatorXmlImporter = CoordinatorXmlImporter.create({schemaVersions: this.get("schemaVersions")});
-    var coordinatorObj = coordinatorXmlImporter.importCoordinator(coordinatorXml, this.errors);
+    var coordinatorXmlImporter = CoordinatorXmlImporter.create({});
+    var coordinatorObj = coordinatorXmlImporter.importCoordinator(coordinatorXml);
     var coordinator = coordinatorObj.coordinator;
     this.set("coordinator", coordinator);
     this.get("errors").clear();

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-version-settings.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-version-settings.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-version-settings.js
index 6385a44..ebb1b0b 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-version-settings.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/coord-version-settings.js
@@ -17,16 +17,14 @@
 
 import Ember from 'ember';
 import Constants from '../utils/constants';
+import SchemaVersions from '../domain/schema-versions';
 
 export default Ember.Component.extend({
+  schemaVersions : SchemaVersions.create({}),
   initialize : function(){
-    this.set('currentCoordinatorVersion', this.get('schemaVersions').getCurrentCoordinatorVersion());
-    this.set('coordinatorSchemaVersions', this.get('schemaVersions').getCoordinatorVersions());
-    this.get('schemaVersions').createCopy();
+    this.set('coordinatorSchemaVersions', this.get('schemaVersions').getSupportedVersions('coordinator'));
+    this.set('selectedCoordinatorVersion', this.get('coordinator').schemaVersions.coordinatorVersion);
   }.on('init'),
-  CoordinatorVersionObserver : Ember.observer('currentCoordinatorVersion',function(){
-    this.get('schemaVersions').setCurrentCoordinatorVersion(this.get('currentCoordinatorVersion'));
-  }),
   rendered : function(){
     this.$('#version-settings-dialog').modal({
       backdrop: 'static',
@@ -39,10 +37,10 @@ export default Ember.Component.extend({
   }.on('didInsertElement'),
   actions : {
     save (){
+      this.get('coordinator').schemaVersions.coordinatorVersion = this.get('selectedCoordinatorVersion');
       this.$('#version-settings-dialog').modal('hide');
     },
     cancel (){
-      this.get('schemaVersions').rollBack();
       this.$('#version-settings-dialog').modal('hide');
     }
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/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 c6264ba..b02e021 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
@@ -481,8 +481,11 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
   getWorkflowAsJson(){
     try{
      var json=JSON.stringify(this.get("workflow")), self = this;
+     var actionVersions = JSON.stringify([...this.get("workflow").schemaVersions.actionVersions]);
+     var workflow = JSON.parse(json);
+     workflow.schemaVersions.actionVersions = actionVersions
      //this.get('workspaceManager').saveWorkInProgress(this.get('tabInfo.id'), json);
-     return json;
+     return JSON.stringify(workflow);
    }catch(err){
     console.error(err);
      this.isCyclic(this.get("workflow"));

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/components/version-settings.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/version-settings.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/version-settings.js
index 9103314..966313f 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/version-settings.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/version-settings.js
@@ -17,25 +17,23 @@
 
 import Ember from 'ember';
 import Constants from '../utils/constants';
+import SchemaVersions from '../domain/schema-versions';
 
 export default Ember.Component.extend({
+  schemaVersions : SchemaVersions.create({}),
   initialize : function(){
-    this.set('currentWorkflowVersion', this.get('schemaVersions').getCurrentWorkflowVersion());
-    this.set('workflowSchemaVersions', this.get('schemaVersions').getWorkflowVersions());
-    this.get('schemaVersions').createCopy();
-    this.set('actionSchemaVersions', Constants.actions);
+    this.set('workflowSchemaVersions', this.get('schemaVersions').getSupportedVersions('workflow'));
+    this.set('selectedWorkflowVersion', this.get('workflow').schemaVersions.workflowVersion);
     var actionVersions = Ember.A([]);
-    Object.keys(this.get('actionSchemaVersions')).forEach((key)=>{
-      var action = this.get('actionSchemaVersions')[key];
+    Object.keys(Constants.actions).forEach((key)=>{
+      var action = Constants.actions[key];
       if(action.supportsSchema){
-        actionVersions.push({name:action.name, supporedVersions :this.get('schemaVersions').getActionVersions(action.name),selectedVersion:this.get('schemaVersions').getActionVersion(action.name)});
+        actionVersions.push({name:action.name, supporedVersions :this.get('schemaVersions').getSupportedVersions(action.name),
+        selectedVersion: this.get('workflow').schemaVersions.actionVersions.get(action.name)});
       }
     });
     this.set('actionVersions',actionVersions);
   }.on('init'),
-  WorkflowVersionObserver : Ember.observer('currentWorkflowVersion',function(){
-    this.get('schemaVersions').setCurrentWorkflowVersion(this.get('currentWorkflowVersion'));
-  }),
   rendered : function(){
     this.$('#version-settings-dialog').modal({
       backdrop: 'static',
@@ -48,13 +46,19 @@ export default Ember.Component.extend({
   }.on('didInsertElement'),
   actions : {
     versionChanged : function(actionName, version){
-      this.get('schemaVersions').setActionVersion(actionName, version);
+      var action = this.get('actionVersions').findBy('name', actionName);
+      Ember.set(action, 'selectedVersion', version);
     },
     save (){
+      var actionVersions = new Map();
+      this.get('actionVersions').forEach(versionSetting =>{
+        actionVersions.set(versionSetting.name, versionSetting.selectedVersion);
+      });
+      this.get('workflow').schemaVersions.workflowVersion = this.get('selectedWorkflowVersion');
+      this.get('workflow').schemaVersions.actionVersions = actionVersions;
       this.$('#version-settings-dialog').modal('hide');
     },
     cancel (){
-      this.get('schemaVersions').rollBack();
       this.$('#version-settings-dialog').modal('hide');
     }
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/domain/actionjob_hanlder.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/actionjob_hanlder.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/actionjob_hanlder.js
index b0453e2..99d96ac 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/actionjob_hanlder.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/actionjob_hanlder.js
@@ -33,7 +33,7 @@ var ActionJobHandler=Ember.Object.extend(MappingMixin,{
     var actionObj={};
     nodeObj[this.get("actionType")]=actionObj;
     if (this.get("nameSpace")){
-      var schemaVersion=this.schemaVersions.getActionVersion(this.get("actionType"));
+      var schemaVersion=this.schemaVersions.actionVersions.get(this.get("actionType"));
       if (this.get("nameSpace")){
         var schema=this.get("nameSpace");
         if (schemaVersion){

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/domain/bundle/bundle-xml-importer.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/bundle/bundle-xml-importer.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/bundle/bundle-xml-importer.js
index 2714ca1..a2053c9 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/bundle/bundle-xml-importer.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/bundle/bundle-xml-importer.js
@@ -21,10 +21,10 @@ import CommonUtils from "../../utils/common-utils";
 
 var BundleXmlImporter= Ember.Object.extend({
   x2js : new X2JS(),
-  schemaVersions : null,
-  importBundle (xml, errors){
+  schemaVersions : SchemaVersions.create({}),
+  importBundle (xml){
     var bundleJson = this.get("x2js").xml_str2json(xml);
-    return this.processBundleXML(bundleJson, errors);
+    return this.processBundleXML(bundleJson);
   },
   processBundleXML(bundleJson){
     var errors=Ember.A([]);
@@ -36,16 +36,18 @@ var BundleXmlImporter= Ember.Object.extend({
         type : 'date'
       },
       coordinators : Ember.A([]),
-      schemaVersions : this.get("schemaVersions")
+      schemaVersions : {
+        bundleVersion : this.get("schemaVersions").getDefaultVersion('bundle')
+      }
     });
     var bundleApp=bundleJson["bundle-app"];
     bundle.name = bundleApp._name;
     var bundleVersion=CommonUtils.extractSchemaVersion(bundleApp._xmlns);
-    var maxBundleVersion = Math.max.apply(Math, bundle.schemaVersions.getBundleVersions());
-    if (bundleVersion < maxBundleVersion) {
-      bundle.schemaVersions.setCurrentBundleVersion(bundleVersion);
-    } else {
+    var maxBundleVersion = Math.max.apply(Math, this.get('schemaVersions').getSupportedVersions('bundle'));
+    if (bundleVersion > maxBundleVersion) {
       errors.push({message: "Unsupported bundle version - " + bundleVersion});
+    } else {
+      bundle.schemaVersions.bundleVersion = bundleVersion;
     }
     if(bundleApp.control && bundleApp.control["kick-off-time"]) {
       bundle.kickOffTime = this.extractDateField(bundleApp["control"]["kick-off-time"]);

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/domain/coordinator/coordinator-xml-importer.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/coordinator/coordinator-xml-importer.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/coordinator/coordinator-xml-importer.js
index 76da535..9b54495 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/coordinator/coordinator-xml-importer.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/coordinator/coordinator-xml-importer.js
@@ -21,10 +21,10 @@ import CommonUtils from "../../utils/common-utils";
 
 var CoordinatorXmlImporter= Ember.Object.extend({
   x2js : new X2JS(),
-  schemaVersions: null,
-  importCoordinator (xml, errors){
+  schemaVersions: SchemaVersions.create({}),
+  importCoordinator (xml){
     var coordinatorJson = this.get("x2js").xml_str2json(xml);
-    return this.processCoordinatorXML(coordinatorJson, errors);
+    return this.processCoordinatorXML(coordinatorJson);
   },
   createNewCoordinator(){
     return Coordinator.create({
@@ -59,7 +59,9 @@ var CoordinatorXmlImporter= Ember.Object.extend({
         }
       },
       controls : Ember.A([]),
-      schemaVersions : this.get("schemaVersions")
+      schemaVersions : {
+        coordinatorVersion : this.get('schemaVersions').getDefaultVersion('coordinator')
+      }
     });
   },
   processCoordinatorXML(coordinatorJson){
@@ -68,12 +70,11 @@ var CoordinatorXmlImporter= Ember.Object.extend({
     var coordinator = this.createNewCoordinator();
     coordinator.name = coordinatorApp._name;
     var coordinatorVersion=CommonUtils.extractSchemaVersion(coordinatorApp._xmlns);
-    var maxCoordinatorVersion = Math.max.apply(Math, coordinator.schemaVersions.getCoordinatorVersions());
-    if (coordinatorVersion < maxCoordinatorVersion) {
-      coordinator.schemaVersions.setCurrentCoordinatorVersion(coordinatorVersion);
-    } else {
+    var maxCoordinatorVersion = Math.max.apply(Math, this.get('schemaVersions').getSupportedVersions('coordinator'));
+    if (coordinatorVersion > maxCoordinatorVersion) {
       errors.push({message: "Unsupported coordinator version - " + coordinatorVersion});
     }
+    coordinator.schemaVersions.coordinatorVersion = coordinatorVersion;
     var frequency = coordinatorApp._frequency;
     if(frequency.startsWith('${coord:')){
       coordinator.frequency.type = frequency.substring(frequency.indexOf(':')+1, frequency.indexOf('('));

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/domain/schema-versions.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/schema-versions.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/schema-versions.js
index 0a5083f..67605ae 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/schema-versions.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/schema-versions.js
@@ -16,16 +16,15 @@
 */
 import Ember from 'ember';
 export default Ember.Object.extend({
-  actionVersions: Ember.Map.create(),
-  currentActionVersion:Ember.Map.create(),
-  workflowVersions: [],
-  workflowVersion: null,
-  bundleVersions: [],
-  bundleVersion: null,
-  coordinatorVersions: [],
-  coordinatorVersion: null,
-  clone : {},
-  actionSchemaMap:{
+
+  supportedVersions : new Map(),
+  defaultVersions : new Map(),
+  actionVersions: new Map(),
+  currentActionVersion:new Map(),
+  workflowVersions: ["0.5","0.4.5","0.4","0.3","0.2.5","0.2","0.1"],
+  bundleVersions: ["0.2","0.1"],
+  coordinatorVersions: ["0.5", "0.4","0.3", "0.2","0.1"],
+  actionSchemas:{
     "hive":["0.6","0.5","0.4","0.3","0.2","0.1"],
     "hive2":["0.2","0.1"],
     "sqoop":["0.3","0.2","0.1"],
@@ -34,39 +33,62 @@ export default Ember.Object.extend({
     "distcp":["0.2","0.1"],
     "email":["0.2","0.1"]
   },
-  createCopy(){
-    this.clone.workflowVersion = this.workflowVersion;
-    this.clone.currentActionVersion = this.currentActionVersion.copy();
-    this.clone.coordinatorVersion = this.coordinatorVersion;
-    this.clone.bundleVersion = this.bundleVersion;
+  init(){
+    if(this.supportedVersions.size === 0 && !this.useDefaultSettings){
+      this.parseWorkflowSchemaConfig();
+      this.parseCoordSchemaConfig();
+      this.parseBundleSchemaConfig();
+      this.initializeDefaultVersions();
+    }else if(this.supportedVersions.size === 0 && this.useDefaultSettings){
+      this.loadDefaultSettings()
+      this.initializeDefaultVersions();
+    }
+  },
+  loadDefaultSettings(){
+    this.supportedVersions.set('workflow', []);
+    this.supportedVersions.set('coordinator', []);
+    this.supportedVersions.set('bundle', []);
+    this.workflowVersions.forEach((value)=>{
+      this.supportedVersions.get('workflow').pushObject(value);
+    }, this);
+    this.coordinatorVersions.forEach((value)=>{
+      this.supportedVersions.get('coordinator').pushObject(value);
+    }, this);
+    this.bundleVersions.forEach((value)=>{
+      this.supportedVersions.get('bundle').pushObject(value);
+    }, this);
+    Object.keys(this.actionSchemas).forEach((key)=>{
+      this.supportedVersions.set(key , this.actionSchemas[key]);
+    }, this);
+  },
+  getSupportedVersions(type){
+    return this.supportedVersions.get(type);
   },
-  rollBack(){
-    this.workflowVersion = this.clone.workflowVersion;
-    this.currentActionVersion = this.clone.currentActionVersion.copy();
+
+  getDefaultVersion(type){
+    return this.defaultVersions.get(type);
   },
-  importAdminConfigs(){
-    var url = Ember.ENV.API_URL + "/v1/admin/configuration";
-    var deferred = Ember.RSVP.defer();
-    Ember.$.ajax({
-      url: url,
-      method: "GET",
-      dataType: "text",
-      contentType: "text/plain;charset=utf-8",
-      beforeSend: function(request) {
-        request.setRequestHeader("X-Requested-By", "workflow-designer");
-      },
-      success: function(response) {
-        deferred.resolve(response);
-      }.bind(this),
-      error: function(response) {
-        deferred.reject(response);
-      }.bind(this)
-    });
-    return deferred;
+
+  setDefaultVersion(type, version){
+    this.defaultVersions.set(type, version);
   },
-  setWfSchemaVersions(configSettings) {
+
+  restoreDefaultVersionSettings(){
+    this.initializeDefaultVersions();
+  },
+
+  initializeDefaultVersions(){
+    this.supportedVersions.forEach((value, key) =>{
+      var max = Math.max(...value)
+      if(isNaN(max)){
+        max = value.reduce((a, b) => a > b?a:b);
+      }
+      this.defaultVersions.set(key, String(max));
+    }, this);
+  },
+  parseWorkflowSchemaConfig() {
     this.workflowVersions = [];
-    var wfSchemaVersions = configSettings["oozie.service.SchemaService.wf.schemas"].trim().split(",");
+    var wfSchemaVersions = this.adminConfig["oozie.service.SchemaService.wf.schemas"].trim().split(",");
     wfSchemaVersions = wfSchemaVersions.map(Function.prototype.call, String.prototype.trim).sort();
     wfSchemaVersions.forEach(function(wfSchemaVersion) {
       var wfSchema = wfSchemaVersion.split("-");
@@ -74,67 +96,51 @@ export default Ember.Object.extend({
       var wfSchemaType = wfSchema[1];
       var wfSchemaVersionNumber = wfSchema[2].replace(".xsd", "");
       if (wfSchemaType === "action") {
-        if (this.actionVersions.get(wfSchemaName)) {
-          this.actionVersions.get(wfSchemaName).push(wfSchemaVersionNumber);
-          this.currentActionVersion.set(wfSchemaName, wfSchemaVersionNumber);
-        } else {
-          this.actionVersions.set(wfSchemaName, [wfSchemaVersionNumber]);
-          this.currentActionVersion.set(wfSchemaName, wfSchemaVersionNumber);
+        if(this.supportedVersions.get(wfSchemaName)){
+          this.supportedVersions.get(wfSchemaName).pushObject(wfSchemaVersionNumber);
+        }else{
+          this.supportedVersions.set(wfSchemaName, [wfSchemaVersionNumber]);
         }
       } else if (wfSchemaType === "workflow") {
-        this.workflowVersions.push(wfSchemaVersionNumber);
-        this.workflowVersion = wfSchemaVersionNumber;
+        if(this.supportedVersions.get(wfSchemaType)){
+          this.supportedVersions.get(wfSchemaType).pushObject(wfSchemaVersionNumber);
+        }else{
+          this.supportedVersions.set(wfSchemaType, [wfSchemaVersionNumber]);
+        }
       }
     }.bind(this));
   },
-  setCoordSchemaVersions(configSettings) {
-    this.coordinatorVersions = [];
-    var coordSchemaVersions = configSettings["oozie.service.SchemaService.coord.schemas"].trim().split(",");
+  parseCoordSchemaConfig() {
+    var coordSchemaVersions = this.adminConfig["oozie.service.SchemaService.coord.schemas"].trim().split(",");
     coordSchemaVersions = coordSchemaVersions.map(Function.prototype.call, String.prototype.trim).sort();
     coordSchemaVersions.forEach(function(coordSchemaVersion) {
       var coordSchema = coordSchemaVersion.split("-");
       var coordSchemaType = coordSchema[1];
       var coordSchemaVersionNumber = coordSchema[2].replace(".xsd", "");
       if (coordSchemaType === "coordinator") {
-        this.coordinatorVersions.push(coordSchemaVersionNumber);
-        this.coordinatorVersion = coordSchemaVersionNumber;
+        if(this.supportedVersions.get('coordinator')){
+          this.supportedVersions.get('coordinator').pushObject(coordSchemaVersionNumber);
+        }else{
+          this.supportedVersions.set('coordinator', [coordSchemaVersionNumber]);
+        }
       }
     }.bind(this));
   },
-  setBundleSchemaVersions(configSettings) {
+  parseBundleSchemaConfig() {
     this.bundleVersions = [];
-    var bundleSchemaVersions = configSettings["oozie.service.SchemaService.bundle.schemas"].trim().split(",");
+    var bundleSchemaVersions = this.adminConfig["oozie.service.SchemaService.bundle.schemas"].trim().split(",");
     bundleSchemaVersions = bundleSchemaVersions.map(Function.prototype.call, String.prototype.trim).sort();
     bundleSchemaVersions.forEach(function(bundleSchemaVersion) {
       var bundleSchema = bundleSchemaVersion.split("-");
       var bundleSchemaType = bundleSchema[1];
       var bundleSchemaVersionNumber = bundleSchema[2].replace(".xsd", "");
       if (bundleSchemaType === "bundle") {
-        this.bundleVersions.push(bundleSchemaVersionNumber);
-        this.bundleVersion = bundleSchemaVersionNumber;
-      }
-    }.bind(this));
-  },
-  init(){
-    var importAdminConfigsDefered=this.importAdminConfigs();
-    importAdminConfigsDefered.promise.then(function(data){
-      var configSettings = JSON.parse(data);
-      if (!(configSettings instanceof Object)) {
-        configSettings = JSON.parse(configSettings);
+        if(this.supportedVersions.get('bundle')){
+          this.supportedVersions.get('bundle').pushObject(bundleSchemaVersionNumber);
+        }else{
+          this.supportedVersions.set('bundle', [bundleSchemaVersionNumber]);
+        }
       }
-      this.setWfSchemaVersions(configSettings);
-      this.setCoordSchemaVersions(configSettings);
-      this.setBundleSchemaVersions(configSettings);
-      this.setDefaultActionVersions();
-    }.bind(this)).catch(function(){
-      this.setWorkflowVersions(["0.5","0.4.5","0.4","0.3","0.2.5","0.2","0.1"]);
-      this.setCurrentWorkflowVersion("0.5");
-      this.setCoordinatorVersions(["0.4","0.3", "0.2","0.1"]);
-      this.setCurrentCoordinatorVersion("0.4");
-      this.setBundleVersions(["0.2","0.1"]);
-      this.setCurrentBundleVersion("0.2");
-      this.setDefaultActionVersions();
-      console.error("There is some problem while importing schema versions. defaulting to known versions.");
     }.bind(this));
   },
   setDefaultActionVersions(){
@@ -145,51 +151,5 @@ export default Ember.Object.extend({
         self.currentActionVersion.set(key,self.actionSchemaMap[key][0]);
       }
     });
-  },
-  getActionVersions(type){
-    return this.actionVersions.get(type);
-  },
-  getActionVersion(type){
-    return this.currentActionVersion.get(type);
-  },
-  getCurrentWorkflowVersion(){
-    return this.workflowVersion;
-  },
-  getWorkflowVersions(){
-    return this.workflowVersions;
-  },
-  getCurrentCoordinatorVersion(){
-    return this.coordinatorVersion;
-  },
-  getCoordinatorVersions(){
-    return this.coordinatorVersions;
-  },
-  getCurrentBundleVersion(){
-    return this.bundleVersion;
-  },
-  getBundleVersions(){
-    return this.bundleVersions;
-  },
-  setActionVersion(type, version){
-    this.currentActionVersion.set(type, version);
-  },
-  setCurrentWorkflowVersion(version){
-    this.workflowVersion = version;
-  },
-  setCurrentCoordinatorVersion(version){
-    this.coordinatorVersion = version;
-  },
-  setCurrentBundleVersion(version){
-    this.bundleVersion = version;
-  },
-  setWorkflowVersions(versions){
-    this.workflowVersions = versions;
-  },
-  setCoordinatorVersions(versions){
-    this.coordinatorVersions = versions;
-  },
-  setBundleVersions(versions){
-    this.bundleVersions = versions;
   }
-
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-importer.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-importer.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-importer.js
index d001f38..ff75e7e 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-importer.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-importer.js
@@ -19,9 +19,12 @@ import Ember from 'ember';
 import CommonUtils from "../utils/common-utils";
 import {Workflow} from '../domain/workflow';
 import {WorkflowXmlMapper} from '../domain/workflow_xml_mapper';
+import SchemaVersions from '../domain/schema-versions';
+
 var WorkflowImporter= Ember.Object.extend({
   workflowMapper:null,
   x2js : new X2JS(),
+  schemaVersions : SchemaVersions.create({}),
   importWorkflow(workflowXml){
     var workflow=Workflow.create({});
     var errors=[];
@@ -36,7 +39,12 @@ var WorkflowImporter= Ember.Object.extend({
     }
     var workflowAppJson=workflowJson["workflow-app"];
     var workflowVersion=CommonUtils.extractSchemaVersion(workflowAppJson._xmlns);
-    workflow.schemaVersions.setCurrentWorkflowVersion(workflowVersion);
+    var maxWorkflowVersion = Math.max.apply(Math, this.get('schemaVersions').getSupportedVersions('workflow'));
+    if (workflowVersion > maxWorkflowVersion) {
+      errors.push({message: "Unsupported workflow version - " + workflowVersion});
+    } else {
+      workflow.schemaVersions.workflowVersion = workflowVersion;
+    }
     this.processWorkflowActionVersions(workflowAppJson, workflow, errors);
 
     if (workflowAppJson.info && workflowAppJson.info.__prefix==="sla") {
@@ -69,13 +77,16 @@ var WorkflowImporter= Ember.Object.extend({
     });
 
     importedWfActionVersions._keys.forEach(function(wfActionType){
-      var maxImportedActionVersion = Math.max.apply(Math, importedWfActionVersions.get(wfActionType))
-      if (workflow.schemaVersions.getActionVersion(wfActionType) < maxImportedActionVersion) {
-        errors.push({message: "Unsupported " + wfActionType + " version - " + maxImportedActionVersion});
-      } else {
-        workflow.schemaVersions.setActionVersion(wfActionType, maxImportedActionVersion.toString());
-      }
-    });
+      var maxImportedActionVersion = Math.max(...importedWfActionVersions.get(wfActionType));
+      var supportedVersions = this.get('schemaVersions').getSupportedVersions(wfActionType);
+      importedWfActionVersions.get(wfActionType).forEach((version)=>{
+        if(supportedVersions.indexOf(version) === -1){
+          errors.push({message: "Unsupported " + wfActionType + " version - " + maxImportedActionVersion});
+        }else{
+          workflow.schemaVersions.actionVersions.set(wfActionType, maxImportedActionVersion);
+        }
+      }, this);
+    }, this);
   },
   processActionNode(nodeMap,action){
     var actionMapper=this.get("workflowMapper").getNodeHandler("action");

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-json-importer.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-json-importer.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-json-importer.js
index fa428bb..527badf 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-json-importer.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-json-importer.js
@@ -28,6 +28,8 @@ var WorkflowJsonImporter= Ember.Object.extend({
         var workflow=Workflow.create({});
         workflow.initialize();
         workflow.set("name",workflowJson.name);
+        workflow.schemaVersions.workflowVersion = workflowJson.schemaVersions.workflowVersion;
+        workflow.schemaVersions.actionVersions = new Map(JSON.parse(workflowJson.schemaVersions.actionVersions));
         this.restoreKillNodes(workflowJson.killNodes,workflow);
         var nodeMap= new Map();
         var startNode=this.visitNode(workflowJson.startNode,nodeMap);

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-xml-generator.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-xml-generator.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-xml-generator.js
index 012e7ac..b9e4307 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-xml-generator.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow-xml-generator.js
@@ -51,7 +51,7 @@ var WorkflowGenerator= Ember.Object.extend({
     var targetWorkflowApp=reordered["workflow-app"];
     targetWorkflowApp["_name"]=this.workflow.get("name");
     this.copyProp(srcWorkflowApp,targetWorkflowApp,["parameters","global","credentials","start","decision","fork","join","action","kill","end","info"]);
-    targetWorkflowApp["_xmlns"]="uri:oozie:workflow:"+this.workflow.get("schemaVersions").getCurrentWorkflowVersion();
+    targetWorkflowApp["_xmlns"]="uri:oozie:workflow:"+this.workflow.schemaVersions.workflowVersion;
     if (this.slaInfoExists(targetWorkflowApp)){
       targetWorkflowApp["_xmlns:sla"]="uri:oozie:sla:0.2";
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow.js
index f4fc20d..3c89f5c 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/workflow.js
@@ -31,11 +31,21 @@ var Workflow= Ember.Object.extend(FindNodeMixin,{
   killNodes : null,
   nodeVisitor : null,
   nodeFactory:NodeFactory.create({}),
-  schemaVersions:SchemaVersions.create({}),
   sla : SlaInfo.create({}),
   credentials : Ember.A([]),
   initialize(){
     this.nodeVisitor=NodeVisitor.create({});
+    var schemaVersions=SchemaVersions.create({});
+    this.schemaVersions = {};
+    this.schemaVersions.workflowVersion = schemaVersions.getDefaultVersion('workflow');
+    var actionsMap = new Map();
+    Object.keys(Constants.actions).forEach((key)=>{
+      var action = Constants.actions[key];
+      if(action.supportsSchema){
+        actionsMap.set(action.name, schemaVersions.getDefaultVersion(action.name));
+      }
+    });
+    this.schemaVersions.actionVersions = actionsMap;
     var src =this.nodeFactory.createStartNode();
     var dest =this.nodeFactory.createEndNode("end");
     this.set("startNode", src);

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/routes/design.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/routes/design.js b/contrib/views/wfmanager/src/main/resources/ui/app/routes/design.js
index 10f745a..d557625 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/routes/design.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/routes/design.js
@@ -16,6 +16,7 @@
 */
 
 import Ember from 'ember';
+import SchemaVersions from '../domain/schema-versions';
 
 export default Ember.Route.extend(Ember.Evented, {
 
@@ -23,7 +24,48 @@ export default Ember.Route.extend(Ember.Evented, {
     this.set("xmlAppPath", transition.queryParams.appPath);
     this.controllerFor('design').set("xmlAppPath", transition.queryParams.appPath);
   },
+  model(){
+    if(!this.get('failedSchemaVersions')){
+      return this.importAdminConfigs();
+    }else{
+      return [];
+    }
+  },
+  afterModel(model){
+    if(!this.get('failedSchemaVersions')){
+      SchemaVersions.reopen({
+        adminConfig : JSON.parse(model)
+      });
+    }
+  },
+  importAdminConfigs(){
+    return new Ember.RSVP.Promise((resolve, reject) => {
+      var url = Ember.ENV.API_URL + "/v1/admin/configuration";
+      var deferred = Ember.$.ajax({
+        url: url,
+        method: "GET",
+        dataType: "text",
+        contentType: "text/plain;charset=utf-8",
+        beforeSend: function(request) {
+          request.setRequestHeader("X-Requested-By", "workflow-designer");
+        },
+        success : function(response){
+          resolve(JSON.parse(response));
+        },
+        error : function(response){
+          reject(response);
+        }
+      });
+    });
+  },
   actions : {
+    error(error, transition){
+      SchemaVersions.reopen({
+        useDefaultSettings : true
+      });
+      this.set('failedSchemaVersions', true);
+      transition.retry();
+    },
     editWorkflow(path){
       this.trigger('openNewTab', path);
     },

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/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 93a0541..249877b 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
@@ -130,5 +130,5 @@
   {{#preview-dialog title="Bundle XML Preview" previewXml=previewXml closePreview="closePreview"}}{{/preview-dialog}}
 {{/if}}
 {{#if showVersionSettings}}
-  {{bundle-version-settings schemaVersions=bundle.schemaVersions showVersionSettings="showVersionSettings" }}
+  {{bundle-version-settings bundle=bundle showVersionSettings="showVersionSettings" }}
 {{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs
index 6d6f675..242b89f 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs
@@ -27,9 +27,9 @@
           <div class="form-group">
             <label class="control-label col-xs-3"> Bundle Version</label>
             <div class="col-xs-7">
-              <select onchange={{action (mut currentBundleVersion) value="target.value"}} name="select-version" class="form-control">
+              <select onchange={{action (mut selectedBundleVersion) value="target.value"}} name="select-version" class="form-control">
                 {{#each bundleSchemaVersions as |version index|}}
-                  <option value={{version}} selected={{eq currentBundleVersion version}}>{{version}}</option>
+                  <option value={{version}} selected={{eq selectedBundleVersion version}}>{{version}}</option>
                 {{/each}}
               </select>
             </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/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 fff8c8c..5b5cd68 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
@@ -329,7 +329,7 @@ okBtnText="Continue" cancelBtnText="Cancel" onOk="resetCoordinator"}}{{/confirma
 {{#workflow-parameters type='coord' closeWorkFlowParam="closeWorkFlowParam" saveWorkFlowParam="saveWorkFlowParam" parameters=parameters}}{{/workflow-parameters}}
 {{/if}}
 {{#if showVersionSettings}}
-  {{coord-version-settings schemaVersions=coordinator.schemaVersions showVersionSettings="showVersionSettings" }}
+  {{coord-version-settings coordinator=coordinator showVersionSettings="showVersionSettings" }}
 {{/if}}
 {{#if showControlConfig}}
 <div id="control-dialog" class="modal fade" role="dialog">

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs
index be862ac..b1b192d 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs
@@ -27,9 +27,9 @@
           <div class="form-group">
             <label class="control-label col-xs-3"> Coordinator Version</label>
             <div class="col-xs-7">
-              <select onchange={{action (mut currentCoordinatorVersion) value="target.value"}} name="select-version" class="form-control">
+              <select onchange={{action (mut selectedCoordinatorVersion) value="target.value"}} name="select-version" class="form-control">
                 {{#each coordinatorSchemaVersions as |version index|}}
-                  <option value={{version}} selected={{eq currentCoordinatorVersion version}}>{{version}}</option>
+                  <option value={{version}} selected={{eq selectedCoordinatorVersion version}}>{{version}}</option>
                 {{/each}}
               </select>
             </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-errors.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-errors.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-errors.hbs
index 8438255..8b2911b 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-errors.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-errors.hbs
@@ -15,7 +15,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 }}
-<div id="designer-errors">
+<div id="designer-errors" class="paddingtop10">
   {{#if (or (gt errors.length 0) (gt validationErrors.length 0))}}
     <div id="alert"class="alert alert-danger alert-dismissible fade in workflow-error" role="alert">
       {{#if (gt errors.length 0)}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs
index 7449f27..6e1b054 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs
@@ -402,7 +402,7 @@
   {{#workflow-sla showWorkflowSla="showWorkflowSla" workflowSla=workflow.sla workflowSlaEnabled=workflow.slaEnabled}}{{/workflow-sla}}
 {{/if}}
 {{#if showVersionSettings}}
-  {{version-settings schemaVersions=workflow.schemaVersions showVersionSettings="showVersionSettings" }}
+  {{version-settings showVersionSettings="showVersionSettings" workflow=workflow}}
 {{/if}}
 {{#if showCredentials}}
   {{#workflow-credentials showCredentials="showCredentials" workflowCredentials=workflow.credentials}}{{/workflow-credentials}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs
index 145f81b..4548258 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs
@@ -27,9 +27,9 @@
           <div class="form-group">
             <label class="control-label col-xs-3"> Workflow Version</label>
             <div class="col-xs-7">
-              <select onchange={{action (mut currentWorkflowVersion) value="target.value"}} name="select-version" class="form-control">
+              <select onchange={{action (mut selectedWorkflowVersion) value="target.value"}} name="select-version" class="form-control">
                 {{#each workflowSchemaVersions as |version index|}}
-                  <option value={{version}} selected={{eq currentWorkflowVersion version}}>{{version}}</option>
+                  <option value={{version}} selected={{eq selectedWorkflowVersion version}}>{{version}}</option>
                 {{/each}}
               </select>
             </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/dcffaeda/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs
index d52c893..e39ba8d 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs
@@ -15,4 +15,5 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 }}
-{{designer-workspace xmlAppPath=xmlAppPath showDashboard="showDashboard" hideDashboard="hideDashboard"}}
+{{designer-workspace xmlAppPath=xmlAppPath showDashboard="showDashboard"
+  hideDashboard="hideDashboard" adminConfig=model.adminConfig}}