You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ol...@apache.org on 2017/03/09 16:39:30 UTC
[01/50] [abbrv] ambari git commit: Revert "AMBARI-20275. Credential
Store should be enabled by default on fresh installs (Madhuvanthi
Radhakrishnan via smohanty)" [Forced Update!]
Repository: ambari
Updated Branches:
refs/heads/branch-dev-logsearch 80094e91b -> 245fd5cf3 (forced update)
Revert "AMBARI-20275. Credential Store should be enabled by default on fresh installs (Madhuvanthi Radhakrishnan via smohanty)"
This reverts commit 9ce7d709e26b3d598c1d21b5bf84e345eaf50d98.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/34eafc34
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/34eafc34
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/34eafc34
Branch: refs/heads/branch-dev-logsearch
Commit: 34eafc341782ecf8795eaa0b8f78477db2db9e38
Parents: 23a2715
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Sat Mar 4 08:36:57 2017 -0800
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Sat Mar 4 08:36:57 2017 -0800
----------------------------------------------------------------------
.../main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml | 1 -
.../src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml | 2 +-
.../src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml | 2 +-
3 files changed, 2 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/34eafc34/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml
index fa9548b..245a94d 100644
--- a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml
+++ b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml
@@ -28,7 +28,6 @@
<credential-store>
<supported>true</supported>
<enabled>true</enabled>
- <required>true</required>
</credential-store>
<components>
http://git-wip-us.apache.org/repos/asf/ambari/blob/34eafc34/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
index f2a1161..4230dd4 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
@@ -23,7 +23,7 @@
<version>1.2.1.2.5</version>
<credential-store>
<supported>true</supported>
- <enabled>true</enabled>
+ <enabled>false</enabled>
</credential-store>
<components>
<component>
http://git-wip-us.apache.org/repos/asf/ambari/blob/34eafc34/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml
index 05b1543..75aa9d9 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml
@@ -22,7 +22,7 @@
<name>OOZIE</name>
<credential-store>
<supported>true</supported>
- <enabled>true</enabled>
+ <enabled>false</enabled>
</credential-store>
<extends>common-services/OOZIE/4.2.0.2.5</extends>
</service>
[05/50] [abbrv] ambari git commit: AMBARI-20200: hive-site.xml,
hbase-site.xml,
etc. are not found in class path for Zeppelin (Prabhjyot Singh via r-kamath)
Posted by ol...@apache.org.
AMBARI-20200: hive-site.xml, hbase-site.xml, etc. are not found in class path for Zeppelin (Prabhjyot Singh via r-kamath)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b2f560ad
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b2f560ad
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b2f560ad
Branch: refs/heads/branch-dev-logsearch
Commit: b2f560adff7bf8c70e24c75e8e5c36da24ad97cc
Parents: 0bbd545
Author: Renjith Kamath <re...@gmail.com>
Authored: Mon Mar 6 15:49:12 2017 +0530
Committer: Renjith Kamath <re...@gmail.com>
Committed: Mon Mar 6 15:49:12 2017 +0530
----------------------------------------------------------------------
.../0.6.0.2.5/configuration/zeppelin-env.xml | 2 +-
.../0.6.0.2.5/package/scripts/master.py | 36 +++++++++++++++-----
.../0.6.0.2.5/package/scripts/params.py | 8 +++++
3 files changed, 37 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b2f560ad/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-env.xml b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-env.xml
index 677158c..bdef319 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-env.xml
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-env.xml
@@ -89,7 +89,7 @@ export ZEPPELIN_PID_DIR={{zeppelin_pid_dir}}
# export ZEPPELIN_NOTEBOOK_STORAGE # Refers to pluggable notebook storage class, can have two classes simultaneously with a sync between them (e.g. local and remote).
# export ZEPPELIN_NOTEBOOK_ONE_WAY_SYNC # If there are multiple notebook storages, should we treat the first one as the only source of truth?
# export ZEPPELIN_NOTEBOOK_PUBLIC # Make notebook public by default when created, private otherwise
-
+export ZEPPELIN_INTP_CLASSPATH_OVERRIDES="{{external_dependency_conf}}"
#### Spark interpreter configuration ####
## Use provided spark installation ##
http://git-wip-us.apache.org/repos/asf/ambari/blob/b2f560ad/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py
index 8a1fad6..fc24918 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py
@@ -106,6 +106,17 @@ class Master(Script):
mode=0755
)
+ def create_zeppelin_hdfs_conf_dir(self, env):
+ import params
+ env.set_params(params)
+ Directory([params.external_dependency_conf],
+ owner=params.zeppelin_user,
+ group=params.zeppelin_group,
+ cd_access="a",
+ create_parents=True,
+ mode=0755
+ )
+
def chown_zeppelin_pid_dir(self, env):
import params
env.set_params(params)
@@ -150,17 +161,26 @@ class Master(Script):
File(format("{params.conf_dir}/log4j.properties"), content=params.log4j_properties_content,
owner=params.zeppelin_user, group=params.zeppelin_group)
+ self.create_zeppelin_hdfs_conf_dir(env)
# copy hive-site.xml only if Spark 1.x is installed
- if 'spark-defaults' in params.config['configurations'] and \
- os.path.exists("/etc/spark/conf/hive-site.xml"):
- File(format("{params.conf_dir}/hive-site.xml"), content=StaticFile("/etc/spark/conf/hive-site.xml"),
- owner=params.zeppelin_user, group=params.zeppelin_group)
+ if 'spark-defaults' in params.config['configurations'] and params.is_hive_installed:
+ XmlConfig("hive-site.xml",
+ conf_dir=params.external_dependency_conf,
+ configurations=params.spark_hive_properties,
+ owner=params.zeppelin_user,
+ group=params.zeppelin_group,
+ mode=0644)
- if len(params.hbase_master_hosts) > 0 and \
- os.path.exists("/etc/hbase/conf/hbase-site.xml"):
+ if len(params.hbase_master_hosts) > 0 and params.is_hbase_installed:
# copy hbase-site.xml
- File(format("{params.conf_dir}/hbase-site.xml"), content=StaticFile("/etc/hbase/conf/hbase-site.xml"),
- owner=params.zeppelin_user, group=params.zeppelin_group)
+ XmlConfig("hbase-site.xml",
+ conf_dir=params.external_dependency_conf,
+ configurations=params.config['configurations']['hbase-site'],
+ configuration_attributes=params.config['configuration_attributes']['hbase-site'],
+ owner=params.zeppelin_user,
+ group=params.zeppelin_group,
+ mode=0644
+ )
def stop(self, env, upgrade_type=None):
import params
http://git-wip-us.apache.org/repos/asf/ambari/blob/b2f560ad/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py
index 16a2782..9fd105b 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py
@@ -95,6 +95,7 @@ zeppelin_hdfs_user_dir = format("/user/{zeppelin_user}")
zeppelin_dir = os.path.join(*[install_dir, zeppelin_dirname])
conf_dir = "/etc/zeppelin/conf"
+external_dependency_conf = "/etc/zeppelin/conf/external-dependency-conf"
notebook_dir = os.path.join(*[install_dir, zeppelin_dirname, 'notebook'])
# zeppelin-env.sh
@@ -121,7 +122,12 @@ hive_metastore_port = None
hive_server_port = None
hive_zookeeper_quorum = None
hive_server2_support_dynamic_service_discovery = None
+is_hive_installed = False
if 'hive_server_host' in master_configs and len(master_configs['hive_server_host']) != 0:
+ is_hive_installed = True
+ spark_hive_properties = {
+ 'hive.metastore.uris': config['configurations']['hive-site']['hive.metastore.uris']
+ }
hive_server_host = str(master_configs['hive_server_host'][0])
hive_metastore_host = str(master_configs['hive_metastore_host'][0])
hive_metastore_port = str(
@@ -133,7 +139,9 @@ if 'hive_server_host' in master_configs and len(master_configs['hive_server_host
# detect hbase details if installed
zookeeper_znode_parent = None
hbase_zookeeper_quorum = None
+is_hbase_installed = False
if 'hbase_master_hosts' in master_configs and 'hbase-site' in config['configurations']:
+ is_hbase_installed = True
zookeeper_znode_parent = config['configurations']['hbase-site']['zookeeper.znode.parent']
hbase_zookeeper_quorum = config['configurations']['hbase-site']['hbase.zookeeper.quorum']
[29/50] [abbrv] ambari git commit: AMBARI-20342. WFM:Performance
improvement for adding node on a decision node in large workflow.(Padma Priya
N via gauravn7)
Posted by ol...@apache.org.
AMBARI-20342. WFM:Performance improvement for adding node on a decision node in large workflow.(Padma Priya N via gauravn7)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3fd1c244
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3fd1c244
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3fd1c244
Branch: refs/heads/branch-dev-logsearch
Commit: 3fd1c24442f4c90becff35c004290e829f136318
Parents: 267c98f
Author: Gaurav Nagar <gr...@gmail.com>
Authored: Wed Mar 8 16:57:21 2017 +0530
Committer: Gaurav Nagar <gr...@gmail.com>
Committed: Wed Mar 8 16:57:21 2017 +0530
----------------------------------------------------------------------
.../ui/app/components/flow-designer.js | 73 ++++++++++++--------
.../ui/app/domain/cytoscape-flow-renderer.js | 8 ++-
.../src/main/resources/ui/app/styles/app.less | 4 ++
.../app/templates/components/flow-designer.hbs | 5 ++
4 files changed, 59 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/3fd1c244/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 01f8fe6..37992be 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
@@ -275,15 +275,23 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
this.doValidation();
this.renderTransitions();
},
- rerender(){
- this.flowRenderer.cleanup();
- this.renderWorkflow(this.get("workflow"));
+ rerender(callback){
+ this.set('showStatus', true);
+ Ember.run.later(() => {
+ this.flowRenderer.cleanup();
+ this.renderWorkflow(this.get("workflow"));
+ this.set('showStatus', false);
+ if(callback){
+ callback();
+ }
+ }.bind(this));
},
setCurrentTransition(transitionInfo){
this.set("currentTransition", {
transition : transitionInfo.transition,
source : transitionInfo.source,
- target : transitionInfo.target
+ target : transitionInfo.target,
+ originalSource : transitionInfo.originalSource
});
},
actionInfo(node){
@@ -292,8 +300,9 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
deleteTransition(transition,sourceNode){
this.createSnapshot();
this.get("workflow").deleteTransition(transition);
- this.showUndo('transition');
- this.rerender();
+ this.rerender(function(){
+ this.showUndo('transition');
+ }.bind(this));
},
showWorkflowActionSelect(element){
var self=this;
@@ -422,12 +431,9 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
var x2js = new X2JS();
var actionNodeXml = x2js.xml_str2json(actionNodeXmlString);
var actionNodeType = Object.keys(actionNodeXml)[0];
- var currentTransition = this.get("currentTransition.transition");
this.createSnapshot();
- var transition = this.get("currentTransition").source.transitions.findBy('targetNode.id',currentTransition.targetNode.id);
- transition.source=this.get("currentTransition").source;
this.generateUniqueNodeId(actionNodeType);
- var actionNode = this.get("workflow").addNode(transition,actionNodeType, {}, "");
+ var actionNode = this.get("workflow").addNode(this.getTransitionInfo(),actionNodeType, {}, "");
this.rerender();
this.doValidation();
this.scrollToNewPosition();
@@ -635,9 +641,10 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
} else {
this.get("workflow").deleteNode(node,transitionslist);
}
- this.rerender();
- this.doValidation();
- this.showUndo('nodeDeleted');
+ this.rerender(function(){
+ this.doValidation();
+ this.showUndo('nodeDeleted');
+ }.bind(this));
},
addWorkflowBranch(node){
this.createSnapshot();
@@ -749,6 +756,18 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
return 1;
}
},
+ getTransitionInfo(){
+ var currentTransition=this.get("currentTransition.transition");
+ var transition = {};
+ if(this.get("currentTransition").source.type === 'placeholder'){
+ transition = this.get("currentTransition").originalSource.transitions.findBy('targetNode.id',this.get("currentTransition").source.id);
+ transition.source=this.get("currentTransition").originalSource;
+ }else{
+ transition = this.get("currentTransition").source.transitions.findBy('targetNode.id',currentTransition.targetNode.id);
+ transition.source=this.get("currentTransition").source;
+ }
+ return transition;
+ },
actions:{
importWorkflowStream(dataStr){
this.importWorkflowFromFile(dataStr);
@@ -838,24 +857,18 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
}
this.get("workflow").createKillNode(this.get('killNode.name'),this.get('killNode.killMessage'));
this.set('killNode',{});
- this.rerender();
- this.layout();
- this.doValidation();
this.$("#kill-node-dialog").modal("hide");
this.set('showCreateKillNode', false);
},
addAction(type){
this.createSnapshot();
- var currentTransition=this.get("currentTransition.transition");
- var transition = this.get("currentTransition").source.transitions.findBy('targetNode.id',currentTransition.targetNode.id);
- transition.source=this.get("currentTransition").source;
-
let temp = this.generateUniqueNodeId(type);
- this.get("workflow").addNode(transition, type, {}, temp);
- this.rerender();
- this.doValidation();
- this.scrollToNewPosition();
- this.showUndo('nodeAdded');
+ this.get("workflow").addNode(this.getTransitionInfo(), type, {}, temp);
+ this.rerender(function(){
+ this.doValidation();
+ this.scrollToNewPosition();
+ this.showUndo('nodeAdded');
+ }.bind(this));
},
nameChanged(){
this.doValidation();
@@ -865,8 +878,7 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
},
pasteNode(){
var clipboardContent = this.get('clipboardService').getContent();
- var currentTransition = this.get("currentTransition.transition");
- var node = this.get("workflow").addNode(currentTransition, clipboardContent.actionType);
+ var node = this.get("workflow").addNode(this.getTransitionInfo(), clipboardContent.actionType);
if(clipboardContent.operation === 'cut'){
node.name = clipboardContent.name;
}else{
@@ -874,9 +886,10 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
}
node.domain = clipboardContent.domain;
node.actionType = clipboardContent.actionType;
- this.rerender();
- this.doValidation();
- this.scrollToNewPosition();
+ this.rerender(function () {
+ this.doValidation();
+ this.scrollToNewPosition();
+ }.bind(this));
},
deleteNode(node){
this.deleteWorkflowNode(node);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3fd1c244/contrib/views/wfmanager/src/main/resources/ui/app/domain/cytoscape-flow-renderer.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/domain/cytoscape-flow-renderer.js b/contrib/views/wfmanager/src/main/resources/ui/app/domain/cytoscape-flow-renderer.js
index f8796ae..bfe59e2 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/domain/cytoscape-flow-renderer.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/domain/cytoscape-flow-renderer.js
@@ -250,7 +250,12 @@ var CytoscapeRenderer= Ember.Object.extend({
}else{
this.get("context").$(".overlay-trash-transition-icon").hide();
}
- this.get("context").$(".overlay-transition-content").data("sourceNode",event.cyTarget.source().data("node"));
+ let srcNode = event.cyTarget.source().data("node");
+ if(srcNode.type === 'placeholder'){
+ let originalSource = event.cyTarget.source().incomers("node").jsons()[0].data.node;
+ this.get("context").$(".overlay-transition-content").data("originalSource", originalSource);
+ }
+ this.get("context").$(".overlay-transition-content").data("sourceNode", srcNode);
this.get("context").$(".overlay-transition-content").data("targetNode",event.cyTarget.target().data("node"));
this.get("context").$(".overlay-transition-content").data("transition",event.cyTarget.data().transition);
@@ -271,6 +276,7 @@ var CytoscapeRenderer= Ember.Object.extend({
this.get("context").setCurrentTransition({
transition : this.get("context").$(".overlay-transition-content").data("transition"),
source : this.get("context").$(".overlay-transition-content").data("sourceNode"),
+ originalSource : this.get("context").$(".overlay-transition-content").data("originalSource"),
target : this.get("context").$(".overlay-transition-content").data("targetNode")
});
Ember.run.later(this, function() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3fd1c244/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 a424049..a30833c 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
@@ -1756,3 +1756,7 @@ input:invalid {
pre {
background-color : white;
}
+
+.processing-message {
+ padding-left: 48%;
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3fd1c244/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 f4d3876..0da9f71 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
@@ -150,6 +150,11 @@
{{/if}}
</div>
{{/if}}
+ {{#if showStatus}}
+ <div id="status-message" class="processing-message">
+ <span class="label label-info">Processing...</span>
+ </div>
+ {{/if}}
{{#if isWorkflowImporting}}
<div id="loader">
<div id="alert"class="alert alert-info alert-dismissible workflow-error" role="alert">
[15/50] [abbrv] ambari git commit: AMBARI-20255 Sometimes the Hosts
page shows a different page for page 1. (atkach)
Posted by ol...@apache.org.
AMBARI-20255 Sometimes the Hosts page shows a different page for page 1. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7f9a5123
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7f9a5123
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7f9a5123
Branch: refs/heads/branch-dev-logsearch
Commit: 7f9a5123eedb9043ce7102df9ae3cb3f2ebc8f76
Parents: 1b8b91d
Author: Andrii Tkach <at...@apache.org>
Authored: Mon Mar 6 21:10:03 2017 +0200
Committer: Andrii Tkach <at...@apache.org>
Committed: Mon Mar 6 22:26:11 2017 +0200
----------------------------------------------------------------------
.../app/controllers/global/update_controller.js | 3 +-
ambari-web/app/controllers/main/host.js | 25 ++++++------
.../app/mixins/common/table_server_mixin.js | 2 +-
.../mixins/common/table_server_view_mixin.js | 4 +-
ambari-web/app/views/common/table_view.js | 8 ++++
ambari-web/app/views/main/host.js | 8 +++-
.../common/table_server_view_mixin_test.js | 41 ++++++++------------
ambari-web/test/views/common/table_view_test.js | 26 ++++++++++++-
ambari-web/test/views/main/host_test.js | 6 +++
9 files changed, 81 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/app/controllers/global/update_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/update_controller.js b/ambari-web/app/controllers/global/update_controller.js
index 7b8a80e..e53f79d 100644
--- a/ambari-web/app/controllers/global/update_controller.js
+++ b/ambari-web/app/controllers/global/update_controller.js
@@ -244,7 +244,8 @@ App.UpdateController = Em.Controller.extend({
{
key: 'Hosts/host_name',
value: [hostDetailsFilter],
- type: 'MULTIPLE'
+ type: 'MULTIPLE',
+ isHostDetails: true
}
]);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/app/controllers/main/host.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host.js b/ambari-web/app/controllers/main/host.js
index 336bd25..05551af 100644
--- a/ambari-web/app/controllers/main/host.js
+++ b/ambari-web/app/controllers/main/host.js
@@ -312,17 +312,20 @@ App.MainHostController = Em.ArrayController.extend(App.TableServerMixin, {
}
}, this);
- if (queryParams.filterProperty('isFilter').length !== oldProperties.filterProperty('isFilter').length) {
- queryParams.findProperty('key', 'from').value = 0;
- this.set('resetStartIndex', true);
- } else {
- queryParams.filterProperty('isFilter').forEach(function (queryParam) {
- var oldProperty = oldProperties.filterProperty('isFilter').findProperty('key', queryParam.key);
- if (!oldProperty || JSON.stringify(oldProperty.value) !== JSON.stringify(queryParam.value)) {
- queryParams.findProperty('key', 'from').value = 0;
- this.set('resetStartIndex', true);
- }
- }, this);
+ if (!oldProperties.findProperty('isHostDetails')) {
+ // shouldn't reset start index after coming back from Host Details page
+ if (queryParams.filterProperty('isFilter').length !== oldProperties.filterProperty('isFilter').length) {
+ queryParams.findProperty('key', 'from').value = 0;
+ this.set('resetStartIndex', true);
+ } else {
+ queryParams.filterProperty('isFilter').forEach(function (queryParam) {
+ var oldProperty = oldProperties.filterProperty('isFilter').findProperty('key', queryParam.key);
+ if (!oldProperty || JSON.stringify(oldProperty.value) !== JSON.stringify(queryParam.value)) {
+ queryParams.findProperty('key', 'from').value = 0;
+ this.set('resetStartIndex', true);
+ }
+ }, this);
+ }
}
if (!skipNonFilterProperties) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/app/mixins/common/table_server_mixin.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/table_server_mixin.js b/ambari-web/app/mixins/common/table_server_mixin.js
index 5162a02..c9f0bba 100644
--- a/ambari-web/app/mixins/common/table_server_mixin.js
+++ b/ambari-web/app/mixins/common/table_server_mixin.js
@@ -69,7 +69,7 @@ App.TableServerMixin = Em.Mixin.create({
startIndex = (startIndex > 0) ? startIndex - 1 : startIndex;
this.get('paginationProps').findProperty('name', 'startIndex').value = startIndex;
}
- return this.get('paginationProps');
+ return this.get('paginationProps').slice(0);
},
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/app/mixins/common/table_server_view_mixin.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/table_server_view_mixin.js b/ambari-web/app/mixins/common/table_server_view_mixin.js
index 4e982d7..d44a09e 100644
--- a/ambari-web/app/mixins/common/table_server_view_mixin.js
+++ b/ambari-web/app/mixins/common/table_server_view_mixin.js
@@ -140,11 +140,9 @@ App.TableServerViewMixin = Em.Mixin.create({
updatePagination: function (key) {
if (!Em.isNone(this.get('displayLength'))) {
App.db.setDisplayLength(this.get('controller.name'), this.get('displayLength'));
- this.get('controller.paginationProps').findProperty('name', 'displayLength').value = this.get('displayLength');
}
if (!Em.isNone(this.get('startIndex'))) {
App.db.setStartIndex(this.get('controller.name'), this.get('startIndex'));
- this.get('controller.paginationProps').findProperty('name', 'startIndex').value = this.get('startIndex');
}
if (key !== 'SKIP_REFRESH') {
@@ -157,6 +155,8 @@ App.TableServerViewMixin = Em.Mixin.create({
resetStartIndex: function () {
if (this.get('controller.resetStartIndex') && this.get('filteredCount') > 0) {
this.set('startIndex', 1);
+ this.saveStartIndex();
+ this.updatePagination('SKIP_REFRESH');
}
}.observes('controller.resetStartIndex')
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/app/views/common/table_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/table_view.js b/ambari-web/app/views/common/table_view.js
index b8d4380..4cc266d 100644
--- a/ambari-web/app/views/common/table_view.js
+++ b/ambari-web/app/views/common/table_view.js
@@ -414,6 +414,14 @@ App.TableView = Em.View.extend(App.UserPref, {
return result;
},
+ clearStartIndex: function() {
+ if (this.get('controller.startIndex') !== 1) {
+ this.set('controller.resetStartIndex', true);
+ return true;
+ }
+ return false;
+ },
+
/**
* Contain filter conditions for each column
* @type {Array}
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/app/views/main/host.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host.js b/ambari-web/app/views/main/host.js
index a7cdb29..52692cc 100644
--- a/ambari-web/app/views/main/host.js
+++ b/ambari-web/app/views/main/host.js
@@ -170,8 +170,10 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, {
*/
willInsertElement: function () {
if (!this.get('controller.showFilterConditionsFirstLoad')) {
- var didClearedSomething = this.clearFilterConditionsFromLocalStorage();
- this.set('controller.filterChangeHappened', didClearedSomething);
+ // filters and start index should be cleared when we enter Hosts page
+ var didClearedFilters = this.clearFilterConditionsFromLocalStorage();
+ var didClearStartIndex = this.clearStartIndex();
+ this.set('controller.filterChangeHappened', didClearedFilters || didClearStartIndex);
}
this._super();
this.set('startIndex', this.get('controller.startIndex'));
@@ -194,6 +196,8 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, {
this.addObserver('startIndex', this, 'updatePagination');
this.addObserver('displayLength', this, 'updatePagination');
this.addObserver('filteredCount', this, this.updatePaging);
+ // should show overlay even when filtering has begun before observer was added
+ this.overlayObserver();
},
willDestroyElement: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/test/mixins/common/table_server_view_mixin_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mixins/common/table_server_view_mixin_test.js b/ambari-web/test/mixins/common/table_server_view_mixin_test.js
index 2a9c409..ae750de 100644
--- a/ambari-web/test/mixins/common/table_server_view_mixin_test.js
+++ b/ambari-web/test/mixins/common/table_server_view_mixin_test.js
@@ -28,6 +28,7 @@ describe('App.MainConfigHistoryView', function() {
filteredContent: [],
refresh: Em.K,
saveFilterConditions: Em.K,
+ saveStartIndex: sinon.spy(),
controller: Em.Object.create({
name: 'mainConfigHistoryController',
paginationProps: [
@@ -99,12 +100,6 @@ describe('App.MainConfigHistoryView', function() {
it('setDisplayLength is called with correct arguments', function () {
expect(App.db.setDisplayLength.calledWith('mainConfigHistoryController', '50')).to.be.true;
});
- it('paginationProps.startIndex = 0', function () {
- expect(view.get('controller.paginationProps').findProperty('name', 'startIndex').value).to.equal(0);
- });
- it('paginationProps.displayLength = 50', function () {
- expect(view.get('controller.paginationProps').findProperty('name', 'displayLength').value).to.equal('50');
- });
});
describe('startIndex is correct', function() {
@@ -123,12 +118,6 @@ describe('App.MainConfigHistoryView', function() {
it('setDisplayLength is not called', function () {
expect(App.db.setDisplayLength.called).to.be.false;
});
- it('paginationProps.startIndex = 10', function () {
- expect(view.get('controller.paginationProps').findProperty('name', 'startIndex').value).to.equal(10);
- });
- it('paginationProps.displayLength = 50', function () {
- expect(view.get('controller.paginationProps').findProperty('name', 'displayLength').value).to.equal('50');
- });
});
describe('displayLength and startIndex are correct', function() {
@@ -147,12 +136,6 @@ describe('App.MainConfigHistoryView', function() {
it('setDisplayLength is called with valid arguments', function () {
expect(App.db.setDisplayLength.calledWith('mainConfigHistoryController', '100')).to.be.true;
});
- it('paginationProps.startIndex = 20', function () {
- expect(view.get('controller.paginationProps').findProperty('name', 'startIndex').value).to.equal(20);
- });
- it('paginationProps.displayLength = 100', function () {
- expect(view.get('controller.paginationProps').findProperty('name', 'displayLength').value).to.equal('100');
- });
});
describe('displayLength and startIndex are null', function() {
@@ -170,12 +153,6 @@ describe('App.MainConfigHistoryView', function() {
it('setDisplayLength is not called', function () {
expect(App.db.setDisplayLength.called).to.be.false;
});
- it('paginationProps.startIndex = 20', function () {
- expect(view.get('controller.paginationProps').findProperty('name', 'startIndex').value).to.equal(20);
- });
- it('paginationProps.displayLength = 100', function () {
- expect(view.get('controller.paginationProps').findProperty('name', 'displayLength').value).to.equal('100');
- });
});
});
@@ -183,12 +160,14 @@ describe('App.MainConfigHistoryView', function() {
beforeEach(function () {
sinon.stub(view, 'saveFilterConditions', Em.K);
sinon.stub(view, 'refresh', Em.K);
+ sinon.stub(view, 'resetStartIndex');
sinon.spy(view, 'updateFilter');
this.clock = sinon.useFakeTimers();
});
afterEach(function () {
view.saveFilterConditions.restore();
view.updateFilter.restore();
+ view.resetStartIndex.restore();
view.refresh.restore();
this.clock.restore();
});
@@ -231,12 +210,20 @@ describe('App.MainConfigHistoryView', function() {
});
describe('#resetStartIndex()', function() {
+ beforeEach(function () {
+ sinon.stub(view, 'updatePagination');
+ });
+ afterEach(function () {
+ view.updatePagination.restore();
+ });
it('resetStartIndex is false and filteredCount is 0', function() {
view.set('filteredCount', 0);
view.set('controller.resetStartIndex', false);
view.set('startIndex', 0);
view.resetStartIndex();
expect(view.get('startIndex')).to.equal(0);
+ expect(view.saveStartIndex.called).to.be.false;
+ expect(view.updatePagination.called).to.be.false;
});
it('resetStartIndex is true and filteredCount is 0', function() {
view.set('filteredCount', 0);
@@ -244,6 +231,8 @@ describe('App.MainConfigHistoryView', function() {
view.set('startIndex', 0);
view.resetStartIndex();
expect(view.get('startIndex')).to.equal(0);
+ expect(view.saveStartIndex.called).to.be.false;
+ expect(view.updatePagination.called).to.be.false;
});
it('resetStartIndex is false and filteredCount is 5', function() {
view.set('filteredCount', 5);
@@ -251,6 +240,8 @@ describe('App.MainConfigHistoryView', function() {
view.set('startIndex', 0);
view.resetStartIndex();
expect(view.get('startIndex')).to.equal(0);
+ expect(view.saveStartIndex.called).to.be.false;
+ expect(view.updatePagination.called).to.be.false;
});
it('resetStartIndex is true and filteredCount is 5', function() {
view.set('controller.resetStartIndex', true);
@@ -258,6 +249,8 @@ describe('App.MainConfigHistoryView', function() {
view.set('startIndex', 0);
view.resetStartIndex();
expect(view.get('startIndex')).to.equal(1);
+ expect(view.saveStartIndex.called).to.be.true;
+ expect(view.updatePagination.called).to.be.true;
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/test/views/common/table_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/table_view_test.js b/ambari-web/test/views/common/table_view_test.js
index 37dd911..dd289b0 100644
--- a/ambari-web/test/views/common/table_view_test.js
+++ b/ambari-web/test/views/common/table_view_test.js
@@ -25,7 +25,9 @@ require('mixins/common/userPref');
require('views/common/table_view');
function getView() {
- return App.TableView.create();
+ return App.TableView.create({
+ controller: Em.Object.create()
+ });
}
describe('App.TableView', function () {
@@ -393,4 +395,26 @@ describe('App.TableView', function () {
});
+ describe('#clearStartIndex', function() {
+ var view;
+
+ beforeEach(function() {
+ view = getView();
+ });
+
+ it('should reset start index', function() {
+ view.set('controller.resetStartIndex', false);
+ view.set('controller.startIndex', 11);
+ expect(view.clearStartIndex()).to.be.true;
+ expect(view.get('controller.resetStartIndex')).to.be.true;
+ });
+
+ it('should not reset start index', function() {
+ view.set('controller.resetStartIndex', false);
+ view.set('controller.startIndex', 1);
+ expect(view.clearStartIndex()).to.be.false;
+ expect(view.get('controller.resetStartIndex')).to.be.false;
+ });
+ });
+
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/7f9a5123/ambari-web/test/views/main/host_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/host_test.js b/ambari-web/test/views/main/host_test.js
index 6bb3462..7978fea 100644
--- a/ambari-web/test/views/main/host_test.js
+++ b/ambari-web/test/views/main/host_test.js
@@ -66,12 +66,14 @@ describe('App.MainHostView', function () {
cases.forEach(function (item) {
sinon.stub(view, item.methodName, Em.K);
});
+ sinon.stub(view, 'overlayObserver');
});
afterEach(function () {
cases.forEach(function (item) {
view[item.methodName].restore();
});
+ view.overlayObserver.restore();
});
cases.forEach(function (item) {
@@ -82,6 +84,10 @@ describe('App.MainHostView', function () {
});
});
+ it('overlayObserver should be called', function () {
+ view.didInsertElement();
+ expect(view.overlayObserver.calledOnce).to.be.true;
+ });
});
describe('#HostView', function () {
[32/50] [abbrv] ambari git commit: AMBARI-20358. NPE during Ambari
server schema upgrade while updating hbase_master_cpu alert definition
(rlevas)
Posted by ol...@apache.org.
AMBARI-20358. NPE during Ambari server schema upgrade while updating hbase_master_cpu alert definition (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8eaaf808
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8eaaf808
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8eaaf808
Branch: refs/heads/branch-dev-logsearch
Commit: 8eaaf8086502890ef5d1c3ad88ca5fee8311f599
Parents: 934f3f1
Author: Robert Levas <rl...@hortonworks.com>
Authored: Wed Mar 8 07:50:13 2017 -0500
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Wed Mar 8 07:50:13 2017 -0500
----------------------------------------------------------------------
.../server/upgrade/UpgradeCatalog250.java | 64 +++++++++++---------
.../server/upgrade/UpgradeCatalog250Test.java | 33 ++++++++++
2 files changed, 70 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/8eaaf808/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
index e244925..36160ca 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
@@ -216,36 +216,46 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
if(source != null) {
JsonObject sourceJson = new JsonParser().parse(source).getAsJsonObject();
- LOG.debug("Source before update : {}", sourceJson);
-
- JsonObject uriJson = sourceJson.get("uri").getAsJsonObject();
- JsonPrimitive primitive;
-
- // Replace
- // "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}"
- // With
- // "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
- primitive = uriJson.getAsJsonPrimitive("kerberos_keytab");
- if(primitive.isString() && "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}".equals(primitive.getAsString())) {
- uriJson.remove("kerberos_keytab");
- uriJson.addProperty("kerberos_keytab", "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}");
- }
- // Replace
- // "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
- // With
- // "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}"
- primitive = uriJson.getAsJsonPrimitive("kerberos_principal");
- if(primitive.isString() && "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}".equals(primitive.getAsString())) {
- uriJson.remove("kerberos_principal");
- uriJson.addProperty("kerberos_principal", "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}");
- }
+ if(sourceJson != null) {
+ boolean changesExist = false;
+ LOG.debug("Source before update : {}", sourceJson);
+
+ JsonObject uriJson = sourceJson.get("uri").getAsJsonObject();
+ JsonPrimitive primitive;
+
+ if (uriJson != null) {
+ // Replace
+ // "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}"
+ // With
+ // "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+ primitive = uriJson.getAsJsonPrimitive("kerberos_keytab");
+ if ((primitive != null) && primitive.isString() && "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}".equals(primitive.getAsString())) {
+ uriJson.remove("kerberos_keytab");
+ uriJson.addProperty("kerberos_keytab", "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}");
+ changesExist = true;
+ }
+
+ // Replace
+ // "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+ // With
+ // "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}"
+ primitive = uriJson.getAsJsonPrimitive("kerberos_principal");
+ if ((primitive != null) && primitive.isString() && "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}".equals(primitive.getAsString())) {
+ uriJson.remove("kerberos_principal");
+ uriJson.addProperty("kerberos_principal", "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}");
+ changesExist = true;
+ }
+ }
- LOG.debug("Source after update : {}", sourceJson);
- alertDefinition.setSource(sourceJson.toString());
- alertDefinition.setHash(UUID.randomUUID().toString());
+ LOG.debug("Source after update : {}", sourceJson);
+ if(changesExist) {
+ alertDefinition.setSource(sourceJson.toString());
+ alertDefinition.setHash(UUID.randomUUID().toString());
- alertDefinitionDAO.merge(alertDefinition);
+ alertDefinitionDAO.merge(alertDefinition);
+ }
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/8eaaf808/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
index 3dfc32f..cb2e5f6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
@@ -508,6 +508,39 @@ public class UpgradeCatalog250Test {
}
@Test
+ public void testFixHBaseMasterCPUUtilizationAlertDefinitionMissingKerberosInfo() {
+ EasyMockSupport easyMockSupport = new EasyMockSupport();
+ final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
+ final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
+ final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
+ final AlertDefinitionDAO mockAlertDefinitionDAO = easyMockSupport.createNiceMock(AlertDefinitionDAO.class);
+ final AlertDefinitionEntity hbaseMasterCPUAlertMock = easyMockSupport.createNiceMock(AlertDefinitionEntity.class);
+
+ String brokenSource = "{\"uri\":{\"http\":\"{{hbase-site/hbase.master.info.port}}\",\"default_port\":60010,\"connection_timeout\":5.0},\"jmx\":{\"property_list\":[\"java.lang:type\\u003dOperatingSystem/SystemCpuLoad\",\"java.lang:type\\u003dOperatingSystem/AvailableProcessors\"],\"value\":\"{0} * 100\"},\"type\":\"METRIC\",\"reporting\":{\"ok\":{\"text\":\"{1} CPU, load {0:.1%}\"},\"warning\":{\"text\":\"{1} CPU, load {0:.1%}\",\"value\":200.0},\"critical\":{\"text\":\"{1} CPU, load {0:.1%}\",\"value\":250.0},\"units\":\"%\",\"type\":\"PERCENT\"}}";
+
+ Capture<String> capturedFixedSource = newCapture();
+
+ final Injector mockInjector = createInjector(mockAmbariManagementController, mockClusters, mockAlertDefinitionDAO);
+ long clusterId = 1;
+
+ expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
+ expect(mockClusters.getClusters()).andReturn(Collections.singletonMap("normal", mockClusterExpected)).atLeastOnce();
+ expect(mockClusterExpected.getClusterId()).andReturn(clusterId).anyTimes();
+ expect(mockAlertDefinitionDAO.findByName(eq(clusterId), eq("hbase_master_cpu"))).andReturn(hbaseMasterCPUAlertMock).atLeastOnce();
+ expect(hbaseMasterCPUAlertMock.getDefinitionName()).andReturn("hbase_master_cpu").once();
+ expect(hbaseMasterCPUAlertMock.getSource()).andReturn(brokenSource).once();
+
+ expect(mockAlertDefinitionDAO.merge(hbaseMasterCPUAlertMock)).andReturn(hbaseMasterCPUAlertMock).anyTimes();
+
+ easyMockSupport.replayAll();
+
+ mockInjector.getInstance(UpgradeCatalog250.class).fixHBaseMasterCPUUtilizationAlertDefinition();
+ easyMockSupport.verifyAll();
+
+ Assert.assertFalse(capturedFixedSource.hasCaptured());
+ }
+
+ @Test
public void testUpdateYarnSite() throws Exception {
EasyMockSupport easyMockSupport = new EasyMockSupport();
[37/50] [abbrv] ambari git commit: AMBARI-20357. [Hive2] JS error in
udf delete (pallavkul)
Posted by ol...@apache.org.
AMBARI-20357. [Hive2] JS error in udf delete (pallavkul)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6631ad53
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6631ad53
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6631ad53
Branch: refs/heads/branch-dev-logsearch
Commit: 6631ad53609da987e716bc08c04ded44986a7b77
Parents: a307ba7
Author: pallavkul <pa...@gmail.com>
Authored: Wed Mar 8 22:57:02 2017 +0530
Committer: pallavkul <pa...@gmail.com>
Committed: Wed Mar 8 23:00:44 2017 +0530
----------------------------------------------------------------------
.../resources/ui/app/components/udf-item.js | 150 +++++++++++++------
.../resources/ui/app/routes/queries/query.js | 4 +-
.../src/main/resources/ui/app/routes/udfs.js | 4 +-
.../main/resources/ui/app/routes/udfs/new.js | 141 ++++++++++-------
.../resources/ui/app/services/auto-refresh.js | 2 +-
.../ui/app/templates/components/udf-item.hbs | 26 ++--
6 files changed, 207 insertions(+), 120 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6631ad53/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
index 44f56e5..6005444 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
@@ -17,8 +17,9 @@
*/
import Ember from 'ember';
+import UILoggerMixin from '../mixins/ui-logger';
-export default Ember.Component.extend({
+export default Ember.Component.extend(UILoggerMixin, {
store: Ember.inject.service(),
@@ -30,10 +31,43 @@ export default Ember.Component.extend({
showDeleteUdfModal: false,
expandedValue: null,
udfId: null,
+ editUdfId: Ember.computed('udf', function () {
+ return this.get('udf.id');
+ }),
+ editUdfName: Ember.computed('udf', function () {
+ return this.get('udf.name');
+ }),
+ editUdfClassName: Ember.computed('udf', function () {
+ return this.get('udf.classname');
+ }),
+ editOwner: Ember.computed('udf', function () {
+ return this.get('udf.owner');
+ }),
+ editFileResource: Ember.computed('udf', function () {
+ return this.get('udf.fileResource');
+ }),
fileResourceList:[],
selectedFileResource: null,
isAddingNewFileResource: false,
+ validate(udfName, udfClassName, resourceName, resourcePath){
+ if (Ember.isEmpty(udfName)) {
+ this.get('logger').danger('UDF Name can not be empty.');
+ return false;
+ }
+
+ if (Ember.isEmpty(udfClassName)) {
+ this.get('logger').danger('UDF Class Name can not be empty.');
+ return false;
+ }
+
+ if (Ember.isEmpty(resourceName) || Ember.isEmpty(resourcePath)) {
+ this.get('logger').danger('File Resource can not be empty.');
+ return false;
+ }
+ return true;
+ },
+
actions: {
toggleExpandUdf(fileResourceId) {
@@ -59,14 +93,30 @@ export default Ember.Component.extend({
this.set('expandedEdit', true);
this.set('valueLoading', true);
- this.get('store').find('fileResource', fileResourceId).then((data) => {
- this.set('udfFileResourceName', data.get('name'));
- this.set('udfFileResourcePath', data.get('path'));
- });
+ this.get('store').findAll('file-resource').then((data) => {
+ let fileResourceList = [];
+ data.forEach(x => {
+ let localFileResource = {'id': x.get('id'),
+ 'name': x.get('name'),
+ 'path': x.get('path'),
+ 'owner': x.get('owner')
+ };
+ fileResourceList.push(localFileResource);
+ });
+ fileResourceList.filterBy('id', fileResourceId).map((data) => {
+ this.set('udfFileResourceName', data.name);
+ this.set('udfFileResourcePath', data.path);
+ this.get('store').find('udf', udfId).then((data) => {
+ this.set('editUdfId', udfId);
+ this.set('editUdfName', data.get('name'));
+ this.set('editUdfClassName', data.get('classname'));
+ this.set('editOwner', data.get('owner'));
+ });
+ });
+ });
this.send('setFileResource', fileResourceId);
-
}
},
@@ -75,39 +125,38 @@ export default Ember.Component.extend({
},
saveUDf(name, classname, udfid, udfFileResourceName, udfFileResourcePath){
-
let self = this;
-
- if(!Ember.isEmpty(this.get('selectedFileResource'))){
- this.get('store').findRecord('udf', udfid).then(function(resultUdf) {
- resultUdf.set('name', name);
- resultUdf.set('classname', classname);
- resultUdf.set('fileResource', self.get('selectedFileResource').id);
- resultUdf.save();
- self.set('expandedEdit', false);
- });
- } else {
-
- let resourcePayload = {"name":udfFileResourceName,"path":udfFileResourcePath};
-
- this.get('udfService').savefileResource(resourcePayload)
- .then((data) => {
- console.log('fileResource is', data.fileResource.id);
- self.get('store').findRecord('udf', udfid).then(function(resultUdf) {
-
- resultUdf.set('name', name);
- resultUdf.set('classname', classname);
- resultUdf.set('fileResource', data.fileResource.id);
- resultUdf.save();
- self.set('expandedEdit', false);
- });
- }, (error) => {
- console.log("Error encountered", error);
+ if (this.validate(name, classname, udfFileResourceName, udfFileResourcePath)) {
+ if (!Ember.isEmpty(this.get('selectedFileResource'))) {
+ this.get('store').findRecord('udf', udfid).then(function (resultUdf) {
+ resultUdf.set('name', name);
+ resultUdf.set('classname', classname);
+ resultUdf.set('fileResource', self.get('selectedFileResource').id);
+ resultUdf.save();
+ self.set('expandedEdit', false);
});
+ }
+ else {
+
+ let resourcePayload = {"name": udfFileResourceName, "path": udfFileResourcePath};
+
+ this.get('udfService').savefileResource(resourcePayload)
+ .then((data) => {
+ console.log('fileResource is', data.fileResource.id);
+ self.get('store').findRecord('udf', udfid).then(function (resultUdf) {
+
+ resultUdf.set('name', name);
+ resultUdf.set('classname', classname);
+ resultUdf.set('fileResource', data.fileResource.id);
+ resultUdf.save();
+ self.set('expandedEdit', false);
+ });
+ }, (error) => {
+ console.log("Error encountered", error);
+ });
+ }
}
-
this.set('isAddingNewFileResource', false);
-
},
showRemoveUdfModal(udfId){
@@ -117,16 +166,13 @@ export default Ember.Component.extend({
},
removeUdf(){
- let self = this;
- this.get('store').find('udf', this.get('udfId')).then(function(resultUdf) {
- resultUdf.destroyRecord().then(function() {
+ var self = this;
+ let record = this.get('store').peekRecord('udf', this.get('udfId') );
+ if(record){
+ record.destroyRecord().then(function(){
self.send('cancelUdf');
self.sendAction('refreshUdfList');
- }, function(response) {
- console.log('UDF NOT deleted', response);
- });
- return false;
- });
+ })}
},
cancelUdf(){
@@ -144,10 +190,22 @@ export default Ember.Component.extend({
},
setFileResource(fileResourceId){
- let localSelectedFileResource = this.get('fileResourceList').filterBy('id', fileResourceId);
- this.set('selectedFileResource',localSelectedFileResource[0]);
- }
+ this.get('store').findAll('file-resource').then((data) => {
+ let fileResourceList = [];
+ data.forEach(x => {
+ let localFileResource = {'id': x.get('id'),
+ 'name': x.get('name'),
+ 'path': x.get('path'),
+ 'owner': x.get('owner')
+ };
+ fileResourceList.push(localFileResource);
+ });
+
+ let localSelectedFileResource = fileResourceList.filterBy('id', fileResourceId);
+ this.set('selectedFileResource',localSelectedFileResource.get('firstObject'));
+ });
+ }
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/6631ad53/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
index 80116da..6b395ac 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
@@ -522,7 +522,7 @@ export default Ember.Route.extend(UILoggerMixin, {
Ember.run.later(() => {
if(this.get('controller.model').get('isQueryDirty')) {
- this.get('controller.model').set('tabDataToClose', {index:index, id:id})
+ this.get('controller.model').set('tabDataToClose', {index:index, id:id});
this.send('openWorksheetModal');
} else {
this.send('closeWorksheet', index, id);
@@ -627,7 +627,7 @@ export default Ember.Route.extend(UILoggerMixin, {
closeWorksheetModal(){
this.get('controller').set('showWorksheetModal', false);
this.closeWorksheetAfterSave();
- this.get('controller.model').set('tabDataToClose', null)
+ this.get('controller.model').set('tabDataToClose', null);
},
expandQueryEdidorPanel(){
http://git-wip-us.apache.org/repos/asf/ambari/blob/6631ad53/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
index 138e85f..68e06a9 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
@@ -19,6 +19,7 @@
import Ember from 'ember';
export default Ember.Route.extend({
+
model() {
return this.store.findAll('udf').then(udfs => udfs.toArray());
},
@@ -48,7 +49,6 @@ export default Ember.Route.extend({
actions:{
refreshUdfList(){
-
this.get('store').findAll('udf').then((data) => {
let udfList = [];
data.forEach(x => {
@@ -65,8 +65,6 @@ export default Ember.Route.extend({
this.controllerFor('udfs').set('udflist',udfList);
this.transitionTo('udfs');
});
-
}
-
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/6631ad53/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
index 84733e8..348887b 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
@@ -25,6 +25,26 @@ export default Ember.Route.extend(UILoggerMixin, {
},
+ validateUDF(udfName, udfClassName){
+ if (Ember.isEmpty(udfName)) {
+ this.get('logger').danger('UDF Name can not be empty.');
+ return false;
+ }
+ if (Ember.isEmpty(udfClassName)) {
+ this.get('logger').danger('UDF Class Name can not be empty.');
+ return false;
+ }
+ return true;
+ },
+
+ validateFileResource(resourceName, resourcePath){
+ if (Ember.isEmpty(resourceName) || Ember.isEmpty(resourcePath)) {
+ this.get('logger').danger('File Resource can not be empty.');
+ return false;
+ }
+ return true;
+ },
+
udf: Ember.inject.service(),
store: Ember.inject.service(),
@@ -41,13 +61,13 @@ export default Ember.Route.extend(UILoggerMixin, {
};
fileResourceList.push(localFileResource);
});
- fileResourceList.push({'name':'Add New File Resource', 'action':'addNewFileResource'})
+ fileResourceList.push({'name':'Add New File Resource', 'action':'addNewFileResource'});
controller.set('fileResourceList', fileResourceList);
-
});
controller.set('isAddingNewFileResource', false);
controller.set('selectedFileResource',null);
+ controller.set('resourceId', null);
},
@@ -62,50 +82,14 @@ export default Ember.Route.extend(UILoggerMixin, {
if(!Ember.isEmpty( this.get('controller').get('resourceId'))){
- let newUDF = this.get('store').createRecord('udf',
- {name:udfName,
- classname:udfClassName,
- fileResource: this.get('controller').get('resourceId')
- });
-
+ if (this.validateUDF(udfName, udfClassName)) {
- newUDF.save().then((data) => {
- console.log('udf saved');
-
- this.get('store').findAll('udf').then((data) => {
- let udfList = [];
- data.forEach(x => {
- let localUdf = {
- 'id': x.get('id'),
- 'name': x.get('name'),
- 'classname': x.get('classname'),
- 'fileResource': x.get('fileResource'),
- 'owner': x.get('owner')
- };
- udfList.pushObject(localUdf);
- });
-
- this.controllerFor('udfs').set('udflist',udfList);
- this.transitionTo('udfs');
- })
-
- });
-
- } else {
-
- let resourcePayload = {"name":resourceName,"path":resourcePath};
-
- var newFileResource = this.get('store').createRecord('file-resource',
- {name:resourceName,
- path:resourcePath
- });
- newFileResource.save().then((data) => {
- console.log('fileResource is', data.get('id'));
let newUDF = this.get('store').createRecord('udf',
- {name:udfName,
- classname:udfClassName,
- fileResource: data.get('id')
+ {
+ name: udfName,
+ classname: udfClassName,
+ fileResource: this.get('controller').get('resourceId')
});
newUDF.save().then((data) => {
@@ -124,20 +108,66 @@ export default Ember.Route.extend(UILoggerMixin, {
udfList.pushObject(localUdf);
});
- this.controllerFor('udfs').set('udflist',udfList);
+ this.controllerFor('udfs').set('udflist', udfList);
this.transitionTo('udfs');
- })
- })
- .catch((error) => {
- this.get('logger').danger('Failed to create UDF.', this.extractError(error));
- this.transitionTo('udfs');
+ });
+
+ });
+
+ }
+
+ } else {
+
+ let resourcePayload = {"name":resourceName,"path":resourcePath};
+ var newFileResource = this.get('store').createRecord('file-resource',
+ {name:resourceName,
+ path:resourcePath
});
- })
- .catch((error) => {
- this.get('logger').danger('Failed to create File Resource.', this.extractError(error));
- this.transitionTo('udfs');
- });
+
+
+ if (this.validateFileResource(resourceName, resourcePath) && this.validateUDF(udfName, udfClassName)) {
+
+ newFileResource.save().then((data) => {
+ console.log('fileResource is', data.get('id'));
+ let newUDF = this.get('store').createRecord('udf',
+ {name:udfName,
+ classname:udfClassName,
+ fileResource: data.get('id')
+ });
+
+ newUDF.save().then((data) => {
+ console.log('udf saved');
+
+ this.get('store').findAll('udf').then((data) => {
+ let udfList = [];
+ data.forEach(x => {
+ let localUdf = {
+ 'id': x.get('id'),
+ 'name': x.get('name'),
+ 'classname': x.get('classname'),
+ 'fileResource': x.get('fileResource'),
+ 'owner': x.get('owner')
+ };
+ udfList.pushObject(localUdf);
+ });
+
+ this.controllerFor('udfs').set('udflist',udfList);
+ this.transitionTo('udfs');
+ });
+ })
+ .catch((error) => {
+ this.get('logger').danger('Failed to create UDF.', this.extractError(error));
+ this.transitionTo('udfs');
+
+ });
+ })
+ .catch((error) => {
+ this.get('logger').danger('Failed to create File Resource.', this.extractError(error));
+ this.transitionTo('udfs');
+ });
+
+ }
}
},
@@ -153,10 +183,11 @@ export default Ember.Route.extend(UILoggerMixin, {
handleFileResourceChange(filter){
console.log('filter', filter);
- if(filter.action == "addNewFileResource"){
+ if(filter.action === "addNewFileResource"){
this.get('controller').set('isAddingNewFileResource', true);
this.get('controller').set('resourceName','');
this.get('controller').set('resourcePath','');
+ this.get('controller').set('resourceId', null);
this.get('controller').set('selectedFileResource',null);
}else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6631ad53/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
index 2e8ec62..b3276e7 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
@@ -50,7 +50,7 @@ export default Ember.Service.extend({
databaseRefreshStartingCallback();
let oldDatabases = this.get('store').peekAll('database').mapBy('name');
this.get('store').query('database', {}).then((data) => {
- let deletedDbCount = 0
+ let deletedDbCount = 0;
let newDatabases = data.mapBy('name');
oldDatabases.forEach((oldDB) => {
if (!newDatabases.contains(oldDB)) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6631ad53/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
index fec48fb..929b91a 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
@@ -39,19 +39,19 @@
{{#if expandedEdit}}
{{udf-edit
- udfid=udf.id
- name=udf.name
- classname=udf.classname
- owner=udf.owner
- fileResource=udf.fileResource
- udfFileResourceName=udfFileResourceName
- udfFileResourcePath=udfFileResourcePath
- fileResourceList=fileResourceList
- selectedFileResource=selectedFileResource
- isAddingNewFileResource=isAddingNewFileResource
- handleResourceChange='handleResourceChange'
- cancelEditUdf='cancelEditUdf'
- saveUDf='saveUDf'
+ udfid=editUdfId
+ name=editUdfName
+ classname=editUdfClassName
+ owner=editOwner
+ fileResource=editFileResource
+ udfFileResourceName=udfFileResourceName
+ udfFileResourcePath=udfFileResourcePath
+ fileResourceList=fileResourceList
+ selectedFileResource=selectedFileResource
+ isAddingNewFileResource=isAddingNewFileResource
+ handleResourceChange='handleResourceChange'
+ cancelEditUdf='cancelEditUdf'
+ saveUDf='saveUDf'
}}
{{/if}}
[09/50] [abbrv] ambari git commit: AMBARI-20309. HBase Master CPU
Utilization Alert is in unknown state due to kinit error (rlevas)
Posted by ol...@apache.org.
AMBARI-20309. HBase Master CPU Utilization Alert is in unknown state due to kinit error (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e8956590
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e8956590
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e8956590
Branch: refs/heads/branch-dev-logsearch
Commit: e8956590389cf1c8e6a3942747710223ff3a5d34
Parents: 84e767b
Author: Robert Levas <rl...@hortonworks.com>
Authored: Mon Mar 6 12:30:26 2017 -0500
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Mon Mar 6 12:30:26 2017 -0500
----------------------------------------------------------------------
.../server/upgrade/UpgradeCatalog250.java | 57 +
.../HBASE/0.96.0.2.0/alerts.json | 4 +-
.../server/upgrade/UpgradeCatalog250Test.java | 1014 ++++++++++--------
3 files changed, 596 insertions(+), 479 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e8956590/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
index c67e80d..0246229 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
@@ -19,6 +19,7 @@ package org.apache.ambari.server.upgrade;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
import com.google.inject.Inject;
import com.google.inject.Injector;
@@ -66,6 +67,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.atomic.AtomicLong;
/**
@@ -192,6 +194,61 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
addManageServiceAutoStartPermissions();
addManageAlertNotificationsPermissions();
updateKerberosDescriptorArtifacts();
+ fixHBaseMasterCPUUtilizationAlertDefinition();
+ }
+
+ /**
+ * Fix the HBase Master CPU Utilization alert definition by swapping the values for <code>kerberos_keytab</code>
+ * and <code>kerberos_principal</code>.
+ */
+ protected void fixHBaseMasterCPUUtilizationAlertDefinition() {
+ AlertDefinitionDAO alertDefinitionDAO = injector.getInstance(AlertDefinitionDAO.class);
+ AmbariManagementController ambariManagementController = injector.getInstance(AmbariManagementController.class);
+ Clusters clusters = ambariManagementController.getClusters();
+
+ Map<String, Cluster> clusterMap = getCheckedClusterMap(clusters);
+ for (final Cluster cluster : clusterMap.values()) {
+ long clusterID = cluster.getClusterId();
+ AlertDefinitionEntity alertDefinition = alertDefinitionDAO.findByName(clusterID, "hbase_master_cpu");
+ if(alertDefinition != null) {
+ LOG.info("Updating alert definition {} in cluster {}", alertDefinition.getDefinitionName(), clusterID);
+ String source = alertDefinition.getSource();
+
+ if(source != null) {
+ JsonObject sourceJson = new JsonParser().parse(source).getAsJsonObject();
+ LOG.debug("Source before update : {}", sourceJson);
+
+ JsonObject uriJson = sourceJson.get("uri").getAsJsonObject();
+ JsonPrimitive primitive;
+
+ // Replace
+ // "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}"
+ // With
+ // "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+ primitive = uriJson.getAsJsonPrimitive("kerberos_keytab");
+ if(primitive.isString() && "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}".equals(primitive.getAsString())) {
+ uriJson.remove("kerberos_keytab");
+ uriJson.addProperty("kerberos_keytab", "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}");
+ }
+
+ // Replace
+ // "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+ // With
+ // "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}"
+ primitive = uriJson.getAsJsonPrimitive("kerberos_principal");
+ if(primitive.isString() && "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}".equals(primitive.getAsString())) {
+ uriJson.remove("kerberos_principal");
+ uriJson.addProperty("kerberos_principal", "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}");
+ }
+
+ LOG.debug("Source after update : {}", sourceJson);
+ alertDefinition.setSource(sourceJson.toString());
+ alertDefinition.setHash(UUID.randomUUID().toString());
+
+ alertDefinitionDAO.merge(alertDefinition);
+ }
+ }
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/e8956590/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json
index 1b3ae25..6fcb4dc 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json
@@ -68,8 +68,8 @@
"http": "{{hbase-site/hbase.master.info.port}}",
"default_port": 60010,
"connection_timeout": 5.0,
- "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}",
- "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+ "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}",
+ "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
},
"reporting": {
"ok": {
[25/50] [abbrv] ambari git commit: AMBARI-20348 Discard/Save buttons
for service configs are always enabled if custom property is overridden with
empty value. (ababiichuk)
Posted by ol...@apache.org.
AMBARI-20348 Discard/Save buttons for service configs are always enabled if custom property is overridden with empty value. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ee6c5d86
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ee6c5d86
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ee6c5d86
Branch: refs/heads/branch-dev-logsearch
Commit: ee6c5d8640c208f0fdec3f7ea59a777f35729e01
Parents: 07a30a1
Author: ababiichuk <ab...@hortonworks.com>
Authored: Tue Mar 7 19:30:52 2017 +0200
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Wed Mar 8 00:14:59 2017 +0200
----------------------------------------------------------------------
ambari-web/app/utils/config.js | 4 +++-
ambari-web/test/utils/config_test.js | 30 ++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ee6c5d86/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index a7f4edf..88e2cf4 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -1214,7 +1214,9 @@ App.config = Em.Object.create({
serviceConfigProperty.get('overrides').pushObject(newOverride);
- var savedOverrides = serviceConfigProperty.get('overrides').filterProperty('savedValue');
+ var savedOverrides = serviceConfigProperty.get('overrides').filter(function (override) {
+ return !Em.isNone(Em.get(override, 'savedValue'));
+ });
serviceConfigProperty.set('overrideValues', savedOverrides.mapProperty('savedValue'));
serviceConfigProperty.set('overrideIsFinalValues', savedOverrides.mapProperty('savedIsFinal'));
http://git-wip-us.apache.org/repos/asf/ambari/blob/ee6c5d86/ambari-web/test/utils/config_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/utils/config_test.js b/ambari-web/test/utils/config_test.js
index c7bd5c7..ffedc23 100644
--- a/ambari-web/test/utils/config_test.js
+++ b/ambari-web/test/utils/config_test.js
@@ -534,6 +534,36 @@ describe('App.config', function () {
});
});
+
+ describe('overrides with empty string values', function () {
+
+ beforeEach(function () {
+ configProperty.set('overrides', [
+ {
+ savedValue: null,
+ savedIsFinal: true
+ },
+ {
+ savedValue: '',
+ savedIsFinal: false
+ },
+ {
+ savedValue: '1',
+ savedIsFinal: false
+ }
+ ]);
+ App.config.createOverride(configProperty, null, group);
+ });
+
+ it('values', function () {
+ expect(configProperty.get('overrideValues')).to.eql(['', '1']);
+ });
+
+ it('isFinal', function () {
+ expect(configProperty.get('overrideIsFinalValues')).to.eql([false, false]);
+ });
+
+ });
});
describe('#getIsSecure', function() {
[36/50] [abbrv] ambari git commit: Revert "AMBARI-20357. [Hive2] JS
error in udf delete (pallavkul)"
Posted by ol...@apache.org.
Revert "AMBARI-20357. [Hive2] JS error in udf delete (pallavkul)"
This reverts commit 63dad097a730d6403f052e0083fa0e665de26f25.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a307ba7b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a307ba7b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a307ba7b
Branch: refs/heads/branch-dev-logsearch
Commit: a307ba7bc86444151c59284f45bce351f16f49f6
Parents: 546225f
Author: pallavkul <pa...@gmail.com>
Authored: Wed Mar 8 22:14:57 2017 +0530
Committer: pallavkul <pa...@gmail.com>
Committed: Wed Mar 8 22:14:57 2017 +0530
----------------------------------------------------------------------
.../resources/ui/app/components/udf-item.js | 148 ++++++-------------
.../resources/ui/app/routes/queries/query.js | 4 +-
.../src/main/resources/ui/app/routes/udfs.js | 18 +--
.../main/resources/ui/app/routes/udfs/new.js | 138 +++++++----------
.../resources/ui/app/services/auto-refresh.js | 2 +-
.../ui/app/templates/components/udf-item.hbs | 26 ++--
.../main/resources/ui/app/templates/udfs.hbs | 3 -
7 files changed, 118 insertions(+), 221 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a307ba7b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
index 3e6e623..44f56e5 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
@@ -17,9 +17,8 @@
*/
import Ember from 'ember';
-import UILoggerMixin from '../mixins/ui-logger';
-export default Ember.Component.extend(UILoggerMixin, {
+export default Ember.Component.extend({
store: Ember.inject.service(),
@@ -31,43 +30,10 @@ export default Ember.Component.extend(UILoggerMixin, {
showDeleteUdfModal: false,
expandedValue: null,
udfId: null,
- editUdfId: Ember.computed('udf', function () {
- return this.get('udf.id');
- }),
- editUdfName: Ember.computed('udf', function () {
- return this.get('udf.name');
- }),
- editUdfClassName: Ember.computed('udf', function () {
- return this.get('udf.classname');
- }),
- editOwner: Ember.computed('udf', function () {
- return this.get('udf.owner');
- }),
- editFileResource: Ember.computed('udf', function () {
- return this.get('udf.fileResource');
- }),
fileResourceList:[],
selectedFileResource: null,
isAddingNewFileResource: false,
- validate(udfName, udfClassName, resourceName, resourcePath){
- if (Ember.isEmpty(udfName)) {
- this.get('logger').danger('UDF Name can not be empty.');
- return false;
- }
-
- if (Ember.isEmpty(udfClassName)) {
- this.get('logger').danger('UDF Class Name can not be empty.');
- return false;
- }
-
- if (Ember.isEmpty(resourceName) || Ember.isEmpty(resourcePath)) {
- this.get('logger').danger('File Resource can not be empty.');
- return false;
- }
- return true;
- },
-
actions: {
toggleExpandUdf(fileResourceId) {
@@ -93,30 +59,14 @@ export default Ember.Component.extend(UILoggerMixin, {
this.set('expandedEdit', true);
this.set('valueLoading', true);
- this.get('store').findAll('file-resource').then((data) => {
- let fileResourceList = [];
- data.forEach(x => {
- let localFileResource = {'id': x.get('id'),
- 'name': x.get('name'),
- 'path': x.get('path'),
- 'owner': x.get('owner')
- };
- fileResourceList.push(localFileResource);
- });
+ this.get('store').find('fileResource', fileResourceId).then((data) => {
+ this.set('udfFileResourceName', data.get('name'));
+ this.set('udfFileResourcePath', data.get('path'));
+ });
- fileResourceList.filterBy('id', fileResourceId).map((data) => {
- this.set('udfFileResourceName', data.name);
- this.set('udfFileResourcePath', data.path);
- this.get('store').find('udf', udfId).then((data) => {
- this.set('editUdfId', udfId);
- this.set('editUdfName', data.get('name'));
- this.set('editUdfClassName', data.get('classname'));
- this.set('editOwner', data.get('owner'));
- });
- });
- });
this.send('setFileResource', fileResourceId);
+
}
},
@@ -125,38 +75,39 @@ export default Ember.Component.extend(UILoggerMixin, {
},
saveUDf(name, classname, udfid, udfFileResourceName, udfFileResourcePath){
+
let self = this;
- if (this.validate(name, classname, udfFileResourceName, udfFileResourcePath)) {
- if (!Ember.isEmpty(this.get('selectedFileResource'))) {
- this.get('store').findRecord('udf', udfid).then(function (resultUdf) {
- resultUdf.set('name', name);
- resultUdf.set('classname', classname);
- resultUdf.set('fileResource', self.get('selectedFileResource').id);
- resultUdf.save();
- self.set('expandedEdit', false);
- });
- }
- else {
-
- let resourcePayload = {"name": udfFileResourceName, "path": udfFileResourcePath};
-
- this.get('udfService').savefileResource(resourcePayload)
- .then((data) => {
- console.log('fileResource is', data.fileResource.id);
- self.get('store').findRecord('udf', udfid).then(function (resultUdf) {
-
- resultUdf.set('name', name);
- resultUdf.set('classname', classname);
- resultUdf.set('fileResource', data.fileResource.id);
- resultUdf.save();
- self.set('expandedEdit', false);
- });
- }, (error) => {
- console.log("Error encountered", error);
+
+ if(!Ember.isEmpty(this.get('selectedFileResource'))){
+ this.get('store').findRecord('udf', udfid).then(function(resultUdf) {
+ resultUdf.set('name', name);
+ resultUdf.set('classname', classname);
+ resultUdf.set('fileResource', self.get('selectedFileResource').id);
+ resultUdf.save();
+ self.set('expandedEdit', false);
+ });
+ } else {
+
+ let resourcePayload = {"name":udfFileResourceName,"path":udfFileResourcePath};
+
+ this.get('udfService').savefileResource(resourcePayload)
+ .then((data) => {
+ console.log('fileResource is', data.fileResource.id);
+ self.get('store').findRecord('udf', udfid).then(function(resultUdf) {
+
+ resultUdf.set('name', name);
+ resultUdf.set('classname', classname);
+ resultUdf.set('fileResource', data.fileResource.id);
+ resultUdf.save();
+ self.set('expandedEdit', false);
});
- }
+ }, (error) => {
+ console.log("Error encountered", error);
+ });
}
+
this.set('isAddingNewFileResource', false);
+
},
showRemoveUdfModal(udfId){
@@ -166,7 +117,16 @@ export default Ember.Component.extend(UILoggerMixin, {
},
removeUdf(){
- this.sendAction('removeUdf', this.get('udfId') );
+ let self = this;
+ this.get('store').find('udf', this.get('udfId')).then(function(resultUdf) {
+ resultUdf.destroyRecord().then(function() {
+ self.send('cancelUdf');
+ self.sendAction('refreshUdfList');
+ }, function(response) {
+ console.log('UDF NOT deleted', response);
+ });
+ return false;
+ });
},
cancelUdf(){
@@ -184,22 +144,10 @@ export default Ember.Component.extend(UILoggerMixin, {
},
setFileResource(fileResourceId){
- this.get('store').findAll('file-resource').then((data) => {
- let fileResourceList = [];
- data.forEach(x => {
- let localFileResource = {'id': x.get('id'),
- 'name': x.get('name'),
- 'path': x.get('path'),
- 'owner': x.get('owner')
- };
- fileResourceList.push(localFileResource);
- });
-
- let localSelectedFileResource = fileResourceList.filterBy('id', fileResourceId);
- this.set('selectedFileResource',localSelectedFileResource.get('firstObject'));
- });
-
+ let localSelectedFileResource = this.get('fileResourceList').filterBy('id', fileResourceId);
+ this.set('selectedFileResource',localSelectedFileResource[0]);
}
+
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/a307ba7b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
index 6b395ac..80116da 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
@@ -522,7 +522,7 @@ export default Ember.Route.extend(UILoggerMixin, {
Ember.run.later(() => {
if(this.get('controller.model').get('isQueryDirty')) {
- this.get('controller.model').set('tabDataToClose', {index:index, id:id});
+ this.get('controller.model').set('tabDataToClose', {index:index, id:id})
this.send('openWorksheetModal');
} else {
this.send('closeWorksheet', index, id);
@@ -627,7 +627,7 @@ export default Ember.Route.extend(UILoggerMixin, {
closeWorksheetModal(){
this.get('controller').set('showWorksheetModal', false);
this.closeWorksheetAfterSave();
- this.get('controller.model').set('tabDataToClose', null);
+ this.get('controller.model').set('tabDataToClose', null)
},
expandQueryEdidorPanel(){
http://git-wip-us.apache.org/repos/asf/ambari/blob/a307ba7b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
index 5733d5c..138e85f 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
@@ -19,9 +19,6 @@
import Ember from 'ember';
export default Ember.Route.extend({
-
- showDeleteUdfModal: false,
-
model() {
return this.store.findAll('udf').then(udfs => udfs.toArray());
},
@@ -51,6 +48,7 @@ export default Ember.Route.extend({
actions:{
refreshUdfList(){
+
this.get('store').findAll('udf').then((data) => {
let udfList = [];
data.forEach(x => {
@@ -67,20 +65,8 @@ export default Ember.Route.extend({
this.controllerFor('udfs').set('udflist',udfList);
this.transitionTo('udfs');
});
- },
- removeUdf(udfId){
- var self = this;
- let record = this.get('store').peekRecord('udf', udfId );
- if(record){
- record.destroyRecord().then(function(){
- self.send('cancelUdf');
- self.send('refreshUdfList');
- })}
- },
-
- cancelUdf(){
- this.set('showDeleteUdfModal', false);
}
+
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/a307ba7b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
index 6207b77..84733e8 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
@@ -25,26 +25,6 @@ export default Ember.Route.extend(UILoggerMixin, {
},
- validateUDF(udfName, udfClassName){
- if (Ember.isEmpty(udfName)) {
- this.get('logger').danger('UDF Name can not be empty.');
- return false;
- }
- if (Ember.isEmpty(udfClassName)) {
- this.get('logger').danger('UDF Class Name can not be empty.');
- return false;
- }
- return true;
- },
-
- validateFileResource(resourceName, resourcePath){
- if (Ember.isEmpty(resourceName) || Ember.isEmpty(resourcePath)) {
- this.get('logger').danger('File Resource can not be empty.');
- return false;
- }
- return true;
- },
-
udf: Ember.inject.service(),
store: Ember.inject.service(),
@@ -61,7 +41,7 @@ export default Ember.Route.extend(UILoggerMixin, {
};
fileResourceList.push(localFileResource);
});
- fileResourceList.push({'name':'Add New File Resource', 'action':'addNewFileResource'});
+ fileResourceList.push({'name':'Add New File Resource', 'action':'addNewFileResource'})
controller.set('fileResourceList', fileResourceList);
});
@@ -80,19 +60,52 @@ export default Ember.Route.extend(UILoggerMixin, {
this.get('controller').set('udfName', udfName);
this.get('controller').set('udfClassName', udfClassName);
+ if(!Ember.isEmpty( this.get('controller').get('resourceId'))){
+ let newUDF = this.get('store').createRecord('udf',
+ {name:udfName,
+ classname:udfClassName,
+ fileResource: this.get('controller').get('resourceId')
+ });
- if(!Ember.isEmpty( this.get('controller').get('resourceId'))){
+ newUDF.save().then((data) => {
+ console.log('udf saved');
+
+ this.get('store').findAll('udf').then((data) => {
+ let udfList = [];
+ data.forEach(x => {
+ let localUdf = {
+ 'id': x.get('id'),
+ 'name': x.get('name'),
+ 'classname': x.get('classname'),
+ 'fileResource': x.get('fileResource'),
+ 'owner': x.get('owner')
+ };
+ udfList.pushObject(localUdf);
+ });
+
+ this.controllerFor('udfs').set('udflist',udfList);
+ this.transitionTo('udfs');
+ })
- if (this.validateUDF(udfName, udfClassName)) {
+ });
+ } else {
+
+ let resourcePayload = {"name":resourceName,"path":resourcePath};
+
+ var newFileResource = this.get('store').createRecord('file-resource',
+ {name:resourceName,
+ path:resourcePath
+ });
+ newFileResource.save().then((data) => {
+ console.log('fileResource is', data.get('id'));
let newUDF = this.get('store').createRecord('udf',
- {
- name: udfName,
- classname: udfClassName,
- fileResource: this.get('controller').get('resourceId')
+ {name:udfName,
+ classname:udfClassName,
+ fileResource: data.get('id')
});
newUDF.save().then((data) => {
@@ -111,66 +124,20 @@ export default Ember.Route.extend(UILoggerMixin, {
udfList.pushObject(localUdf);
});
- this.controllerFor('udfs').set('udflist', udfList);
+ this.controllerFor('udfs').set('udflist',udfList);
this.transitionTo('udfs');
- });
-
- });
-
- }
-
- } else {
-
- let resourcePayload = {"name":resourceName,"path":resourcePath};
-
- var newFileResource = this.get('store').createRecord('file-resource',
- {name:resourceName,
- path:resourcePath
- });
-
-
- if (this.validateFileResource(resourceName, resourcePath) && this.validateUDF(udfName, udfClassName)) {
-
- newFileResource.save().then((data) => {
- console.log('fileResource is', data.get('id'));
- let newUDF = this.get('store').createRecord('udf',
- {name:udfName,
- classname:udfClassName,
- fileResource: data.get('id')
- });
-
- newUDF.save().then((data) => {
- console.log('udf saved');
-
- this.get('store').findAll('udf').then((data) => {
- let udfList = [];
- data.forEach(x => {
- let localUdf = {
- 'id': x.get('id'),
- 'name': x.get('name'),
- 'classname': x.get('classname'),
- 'fileResource': x.get('fileResource'),
- 'owner': x.get('owner')
- };
- udfList.pushObject(localUdf);
- });
-
- this.controllerFor('udfs').set('udflist',udfList);
- this.transitionTo('udfs');
- });
- })
- .catch((error) => {
- this.get('logger').danger('Failed to create UDF.', this.extractError(error));
- this.transitionTo('udfs');
-
- });
})
- .catch((error) => {
- this.get('logger').danger('Failed to create File Resource.', this.extractError(error));
- this.transitionTo('udfs');
- });
+ })
+ .catch((error) => {
+ this.get('logger').danger('Failed to create UDF.', this.extractError(error));
+ this.transitionTo('udfs');
- }
+ });
+ })
+ .catch((error) => {
+ this.get('logger').danger('Failed to create File Resource.', this.extractError(error));
+ this.transitionTo('udfs');
+ });
}
},
@@ -186,11 +153,10 @@ export default Ember.Route.extend(UILoggerMixin, {
handleFileResourceChange(filter){
console.log('filter', filter);
- if(filter.action === "addNewFileResource"){
+ if(filter.action == "addNewFileResource"){
this.get('controller').set('isAddingNewFileResource', true);
this.get('controller').set('resourceName','');
this.get('controller').set('resourcePath','');
- this.get('controller').set('resourceId', null);
this.get('controller').set('selectedFileResource',null);
}else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/a307ba7b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
index b3276e7..2e8ec62 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
@@ -50,7 +50,7 @@ export default Ember.Service.extend({
databaseRefreshStartingCallback();
let oldDatabases = this.get('store').peekAll('database').mapBy('name');
this.get('store').query('database', {}).then((data) => {
- let deletedDbCount = 0;
+ let deletedDbCount = 0
let newDatabases = data.mapBy('name');
oldDatabases.forEach((oldDB) => {
if (!newDatabases.contains(oldDB)) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/a307ba7b/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
index 929b91a..fec48fb 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
@@ -39,19 +39,19 @@
{{#if expandedEdit}}
{{udf-edit
- udfid=editUdfId
- name=editUdfName
- classname=editUdfClassName
- owner=editOwner
- fileResource=editFileResource
- udfFileResourceName=udfFileResourceName
- udfFileResourcePath=udfFileResourcePath
- fileResourceList=fileResourceList
- selectedFileResource=selectedFileResource
- isAddingNewFileResource=isAddingNewFileResource
- handleResourceChange='handleResourceChange'
- cancelEditUdf='cancelEditUdf'
- saveUDf='saveUDf'
+ udfid=udf.id
+ name=udf.name
+ classname=udf.classname
+ owner=udf.owner
+ fileResource=udf.fileResource
+ udfFileResourceName=udfFileResourceName
+ udfFileResourcePath=udfFileResourcePath
+ fileResourceList=fileResourceList
+ selectedFileResource=selectedFileResource
+ isAddingNewFileResource=isAddingNewFileResource
+ handleResourceChange='handleResourceChange'
+ cancelEditUdf='cancelEditUdf'
+ saveUDf='saveUDf'
}}
{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a307ba7b/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs
index ffb824e..ef6a01c 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs
@@ -35,10 +35,7 @@
{{udf-item
udf=udf
fileResourceList=fileResourceList
- showDeleteUdfModal=showDeleteUdfModal
refreshUdfList='refreshUdfList'
- removeUdf='removeUdf'
- cancelUdf='cancelUdf'
}}
{{/each}}
</tbody>
[18/50] [abbrv] ambari git commit: AMBARI-20319 Server startup script
keeps waiting even if DB consistency has failed
Posted by ol...@apache.org.
AMBARI-20319 Server startup script keeps waiting even if DB consistency has failed
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4df38c35
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4df38c35
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4df38c35
Branch: refs/heads/branch-dev-logsearch
Commit: 4df38c35f42a632dd822c6c59e4e520f6caad8fd
Parents: b9451a4
Author: Balazs Bence Sari <bs...@hortonworks.com>
Authored: Tue Mar 7 11:30:12 2017 +0100
Committer: lpuskas <lp...@apache.org>
Committed: Tue Mar 7 13:32:28 2017 +0100
----------------------------------------------------------------------
.../ambari/server/controller/AmbariServer.java | 4 +++
.../src/main/python/ambari_server/utils.py | 14 +++++++---
.../src/main/python/ambari_server_main.py | 28 +++++++++++++-------
3 files changed, 32 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/4df38c35/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
index b5acdce..17d9695 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
@@ -1004,6 +1004,10 @@ public class AmbariServer {
ComponentSSLConfiguration.instance().init(server.configs);
server.run();
} catch (Throwable t) {
+ // Writing to system console is needed because loggers may not get flushed on exit and diagnostic information
+ // may get lost.
+ System.err.println("An unexpected error occured during starting Ambari Server.");
+ t.printStackTrace();
LOG.error("Failed to run the Ambari Server", t);
if (server != null) {
server.stop();
http://git-wip-us.apache.org/repos/asf/ambari/blob/4df38c35/ambari-server/src/main/python/ambari_server/utils.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/utils.py b/ambari-server/src/main/python/ambari_server/utils.py
index 6408285..b51e37e 100644
--- a/ambari-server/src/main/python/ambari_server/utils.py
+++ b/ambari-server/src/main/python/ambari_server/utils.py
@@ -122,7 +122,10 @@ def save_pid(pid, pidfile):
def save_main_pid_ex(pids, pidfile, exclude_list=[], skip_daemonize=False):
"""
- Save pid which is not included to exclude_list to pidfile.
+ Saves and returns the first (and supposingly only) pid from the list of pids
+ which is not included in the exclude_list.
+
+ pidfile is the name of the file to save the pid to
exclude_list contains list of full executable paths which should be excluded
"""
@@ -133,7 +136,7 @@ def save_main_pid_ex(pids, pidfile, exclude_list=[], skip_daemonize=False):
for item in pids:
if pid_exists(item["pid"]) and (item["exe"] not in exclude_list):
pfile.write("%s\n" % item["pid"])
- pid_saved = True
+ pid_saved = item["pid"]
logger.info("Ambari server started with PID " + str(item["pid"]))
if pid_exists(item["pid"]) and (item["exe"] in exclude_list) and not skip_daemonize:
try:
@@ -157,7 +160,7 @@ def get_live_pids_count(pids):
"""
return len([pid for pid in pids if pid_exists(pid)])
-def wait_for_ui_start(ambari_server_ui_port, timeout=1):
+def wait_for_ui_start(ambari_server_ui_port, pid, timeout=1):
tstart = time.time()
while int(time.time()-tstart) <= timeout:
@@ -173,7 +176,10 @@ def wait_for_ui_start(ambari_server_ui_port, timeout=1):
sys.stdout.write('.')
sys.stdout.flush()
- time.sleep(1)
+ if pid_exists(pid):
+ time.sleep(1)
+ else:
+ break
return False
http://git-wip-us.apache.org/repos/asf/ambari/blob/4df38c35/ambari-server/src/main/python/ambari_server_main.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server_main.py b/ambari-server/src/main/python/ambari_server_main.py
index 0cd19cc..0eb4243 100644
--- a/ambari-server/src/main/python/ambari_server_main.py
+++ b/ambari-server/src/main/python/ambari_server_main.py
@@ -21,6 +21,7 @@ import os
import subprocess
import sys
import logging
+import time
from ambari_commons.exceptions import FatalException
from ambari_commons.logging_utils import get_debug_mode, print_warning_msg, print_info_msg, set_debug_mode_from_options
@@ -115,6 +116,8 @@ CHECK_DATABASE_SKIPPED_PROPERTY = "check_database_skipped"
AMBARI_SERVER_DIE_MSG = "Ambari Server java process died with exitcode {0}. Check {1} for more information."
AMBARI_SERVER_NOT_STARTED_MSG = "Ambari Server java process hasn't been started or can't be determined."
+AMBARI_SERVER_STOPPED = "Ambari Server java process has stopped. Please check the logs for more information."
+AMBARI_SERVER_UI_TIMEOUT = "Server not yet listening on http port {0} after {1} seconds. Exiting."
AMBARI_SERVER_STARTED_SUCCESS_MSG = "Ambari Server has started successfully"
# linux open-file limit
@@ -211,27 +214,32 @@ def wait_for_server_start(pidFile, scmStatus):
sys.stdout.write('Waiting for server start...')
sys.stdout.flush()
pids = []
- server_started = False
+ pid = None
# looking_for_pid() might return partrial pid list on slow hardware
for i in range(1, SERVER_START_RETRIES):
pids = looking_for_pid(SERVER_SEARCH_PATTERN, SERVER_START_TIMEOUT)
- if save_main_pid_ex(pids, pidFile, locate_all_file_paths('sh', '/bin') +
- locate_all_file_paths('bash', '/bin') +
- locate_all_file_paths('dash', '/bin'), IS_FOREGROUND):
- server_started = True
+ pid = save_main_pid_ex(pids, pidFile, locate_all_file_paths('sh', '/bin') +
+ locate_all_file_paths('bash', '/bin') +
+ locate_all_file_paths('dash', '/bin'), IS_FOREGROUND)
+ if pid:
break
else:
sys.stdout.write("Unable to determine server PID. Retrying...\n")
sys.stdout.flush()
exception = None
- if server_started:
+ if pid:
ambari_server_ui_port = get_ambari_server_ui_port(properties)
web_server_startup_timeout = get_web_server_startup_timeout(properties)
-
- if not wait_for_ui_start(int(ambari_server_ui_port), web_server_startup_timeout):
- exception = FatalException(1, "Server not yet listening on http port " + ambari_server_ui_port + \
- " after " + str(web_server_startup_timeout) + " seconds. Exiting.")
+ waitStart = time.time()
+ if not wait_for_ui_start(int(ambari_server_ui_port), pid, web_server_startup_timeout):
+ waitTime = int(time.time()-waitStart)
+ # Java process stopped, due to a DB check or other startup issue
+ if waitTime < web_server_startup_timeout:
+ exception = FatalException(-1, AMBARI_SERVER_STOPPED)
+ # UI didn't come up on time
+ else:
+ exception = FatalException(1, AMBARI_SERVER_UI_TIMEOUT.format(ambari_server_ui_port, web_server_startup_timeout))
elif get_live_pids_count(pids) <= 0:
exitcode = check_exitcode(os.path.join(configDefaults.PID_DIR, EXITCODE_NAME))
exception = FatalException(-1, AMBARI_SERVER_DIE_MSG.format(exitcode, configDefaults.SERVER_OUT_FILE))
[28/50] [abbrv] ambari git commit: AMBARI-20340.Issue with toggling
of Execute/Stop button in query page while successful and failure execution
of query.(Venkata Sairam)
Posted by ol...@apache.org.
AMBARI-20340.Issue with toggling of Execute/Stop button in query page while successful and failure execution of query.(Venkata Sairam)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/267c98fb
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/267c98fb
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/267c98fb
Branch: refs/heads/branch-dev-logsearch
Commit: 267c98fb8afdb32dae3ae192f12324b040e55880
Parents: f66a663
Author: Gaurav Nagar <gr...@gmail.com>
Authored: Wed Mar 8 16:26:45 2017 +0530
Committer: Gaurav Nagar <gr...@gmail.com>
Committed: Wed Mar 8 16:27:46 2017 +0530
----------------------------------------------------------------------
.../resources/ui/app/routes/queries/query.js | 73 +++++++++++---------
.../src/main/resources/ui/app/styles/app.scss | 4 +-
2 files changed, 45 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/267c98fb/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
index 08af7d4..80116da 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
@@ -133,9 +133,9 @@ export default Ember.Route.extend(UILoggerMixin, {
controller.set('currentQuery', model.get('query'));
controller.set('currentJobId', null);
controller.set('queryResult', model.get('queryResult'));
- controller.set('isJobSuccess', false);
- controller.set('isJobCancelled', false);
- controller.set('isJobCreated', false);
+ controller.set('isJobSuccess', model.get('isJobSuccess'));
+ controller.set('isJobCancelled', model.get('isJobCancelled'));
+ controller.set('isJobCreated', model.get('isJobCreated'));
controller.set('isExportResultSuccessMessege', false);
controller.set('isExportResultFailureMessege', false);
@@ -181,19 +181,22 @@ export default Ember.Route.extend(UILoggerMixin, {
},
actions: {
- resetDefaultWorksheet(){
- this.get('controller.model').set('queryResult',{'schema' :[], 'rows' :[]});
- this.get('controller.model').set('currentPage',0);
- this.get('controller.model').set('previousPage',-1);
- this.get('controller.model').set('nextPage',1);
+ resetDefaultWorksheet(currModel){
+ if(!currModel) {
+ currModel = this.get('controller.model');
+ }
+ currModel.set('queryResult',{'schema' :[], 'rows' :[]});
+ currModel.set('currentPage',0);
+ currModel.set('previousPage',-1);
+ currModel.set('nextPage',1);
//this.get('controller.model').set('selected',false);
- this.get('controller.model').set('jobData',[]);
- this.get('controller.model').set('currentJobData',null);
- this.get('controller.model').set('queryFile',"");
- this.get('controller.model').set('logFile',"");
- this.get('controller.model').set('logResults',"");
- this.get('controller.model').set('isQueryRunning',false);
- this.get('controller.model').set('isQueryResultContainer',false);
+ currModel.set('jobData',[]);
+ currModel.set('currentJobData',null);
+ currModel.set('queryFile',"");
+ currModel.set('logFile',"");
+ currModel.set('logResults',"");
+ currModel.set('isQueryRunning',false);
+ currModel.set('isQueryResultContainer',false);
},
changeDbHandler(selectedDBs){
@@ -244,9 +247,8 @@ export default Ember.Route.extend(UILoggerMixin, {
executeQuery(isVisualExplainQuery){
- let self = this;
+ let self = this, ctrlr = self.get('controller'), ctrlrModel = self.get('controller.model');
this.get('controller').set('currentJobId', null);
-
if(!Ember.isEmpty(isVisualExplainQuery)){
isVisualExplainQuery = true;
this.get('controller').set('isVisualExplainQuery', true);
@@ -258,7 +260,7 @@ export default Ember.Route.extend(UILoggerMixin, {
let originalQuery = this.get('controller').get('currentQuery');
if(Ember.isBlank(originalQuery)) {
this.get('logger').danger('Query cannot be empty.');
- this.send('resetDefaultWorksheet');
+ this.send('resetDefaultWorksheet', ctrlrModel);
return;
}
let queryInput = originalQuery;
@@ -299,7 +301,8 @@ export default Ember.Route.extend(UILoggerMixin, {
this.get('controller.model').set('isQueryRunning', true);
- this.get('controller.model').set('isJobCreated',false);
+ ctrlrModel.set('isJobCreated',false);
+ ctrlr.set('isJobCreated',false);
//this.get('controller').set('queryResult', self.get('controller').get('queryResult'));
//this.get('controller.model').set('queryResult', self.get('controller').get('queryResult'));
@@ -323,31 +326,38 @@ export default Ember.Route.extend(UILoggerMixin, {
self.get('controller.model').set('queryFile', data.job.queryFile);
self.get('controller.model').set('logFile', data.job.logFile);
self.get('controller').set('currentJobId', data.job.id);
- self.get('controller').set('isJobCreated',true);
+ ctrlrModel.set('isJobCreated',true);
+ ctrlr.set('isJobCreated',true);
self.get('jobs').waitForJobToComplete(data.job.id, 2 * 1000, false)
.then((status) => {
- self.get('controller').set('isJobSuccess', true);
- self.get('controller').set('isJobCancelled', false);
- self.get('controller').set('isJobCreated', false);
+ ctrlrModel.set('isJobSuccess', true);
+ ctrlrModel.set('isJobCancelled', false);
+ ctrlrModel.set('isJobCreated', false);
+ ctrlr.set('isJobSuccess', true);
+ ctrlr.set('isJobCancelled', false);
+ ctrlr.set('isJobCreated', false);
let jobDetails = self.store.peekRecord('job', data.job.id);
console.log(jobDetails);
- self.send('getJobResult', data, payload.id, jobDetails);
+ self.send('getJobResult', data, payload.id, jobDetails, ctrlrModel);
self.get('logger').success('Query has been submitted.');
}, (error) => {
console.log('error', error);
- self.get('controller').set('isJobSuccess', false);
- self.get('controller').set('isJobCancelled', false);
- self.get('controller').set('isJobCreated', false);
+ ctrlrModel.set('isJobSuccess', false);
+ ctrlrModel.set('isJobCancelled', false);
+ ctrlrModel.set('isJobCreated', false);
+ ctrlr.set('isJobSuccess', false);
+ ctrlr.set('isJobCancelled', false);
+ ctrlr.set('isJobCreated', false);
self.get('logger').danger('Failed to execute query.', self.extractError(error));
- self.send('resetDefaultWorksheet');
+ self.send('resetDefaultWorksheet', ctrlrModel);
});
}, function(error) {
console.log(error);
self.get('logger').danger('Failed to execute query.', self.extractError(error));
- self.send('resetDefaultWorksheet');
+ self.send('resetDefaultWorksheet', ctrlrModel);
});
},
@@ -357,7 +367,7 @@ export default Ember.Route.extend(UILoggerMixin, {
.then( data => this.get('controller').set('isJobCancelled', true));
},
- getJobResult(data, payloadTitle, jobDetails){
+ getJobResult(data, payloadTitle, jobDetails, ctrlrModel){
let self = this;
let isVisualExplainQuery = this.get('controller').get('isVisualExplainQuery');
@@ -411,6 +421,7 @@ export default Ember.Route.extend(UILoggerMixin, {
}, function(error) {
console.log('error' , error);
self.get('logger').danger('Failed to execute query.', self.extractError(error));
+ self.send('resetDefaultWorksheet', ctrlrModel);
});
},
@@ -563,7 +574,7 @@ export default Ember.Route.extend(UILoggerMixin, {
let originalQuery = this.get('controller').get('currentQuery');
if(Ember.isBlank(originalQuery)) {
this.get('logger').danger('Query cannot be empty.');
- this.send('resetDefaultWorksheet');
+ this.send('resetDefaultWorksheet', this.get('controller.model'));
return;
}
let wf = this.store.peekAll('worksheet').filterBy('id', this.paramsFor('queries.query').worksheetId.toLowerCase()).get('firstObject');
http://git-wip-us.apache.org/repos/asf/ambari/blob/267c98fb/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss b/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss
index 1b18955..e083922 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss
+++ b/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss
@@ -956,5 +956,7 @@ rect.operator__box {
.closeTab {
cursor: pointer;
- padding-left:10px;
+ position:relative;
+ bottom:10px;
+ right:-15px;
}
\ No newline at end of file
[13/50] [abbrv] ambari git commit: AMBARI-19433. Increase default
timeout and threadpool size for the external script to work on slower
machines. (jaimin)
Posted by ol...@apache.org.
AMBARI-19433. Increase default timeout and threadpool size for the external script to work on slower machines. (jaimin)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/23bd4187
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/23bd4187
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/23bd4187
Branch: refs/heads/branch-dev-logsearch
Commit: 23bd4187cb8442bcc06fd20469e9f8b77158a4cf
Parents: 8e68824
Author: Jaimin Jetly <ja...@hortonworks.com>
Authored: Mon Mar 6 11:41:27 2017 -0800
Committer: Jaimin Jetly <ja...@hortonworks.com>
Committed: Mon Mar 6 11:42:18 2017 -0800
----------------------------------------------------------------------
.../org/apache/ambari/server/configuration/Configuration.java | 4 ++--
.../server/controller/internal/ClientConfigResourceProvider.java | 3 ++-
2 files changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/23bd4187/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index 27ac82c..cfb4d3d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -1754,7 +1754,7 @@ public class Configuration {
*/
@Markdown(description = "The time, in milliseconds, until an external script is killed.")
public static final ConfigurationProperty<Integer> EXTERNAL_SCRIPT_TIMEOUT = new ConfigurationProperty<>(
- "server.script.timeout", 5000);
+ "server.script.timeout", 10000);
/**
* The time, in {@link TimeUnit#MILLISECONDS}, until an external script is killed.
@@ -1762,7 +1762,7 @@ public class Configuration {
*/
@Markdown(description = "The number of threads that should be allocated to run external script.")
public static final ConfigurationProperty<Integer> THREAD_POOL_SIZE_FOR_EXTERNAL_SCRIPT = new ConfigurationProperty<>(
- "server.script.threads", 4);
+ "server.script.threads", 20);
public static final String DEF_ARCHIVE_EXTENSION;
public static final String DEF_ARCHIVE_CONTENT_TYPE;
http://git-wip-us.apache.org/repos/asf/ambari/blob/23bd4187/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
index 42e9b34..b690e3a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
@@ -479,7 +479,8 @@ public class ClientConfigResourceProvider extends AbstractControllerResourceProv
throw new SystemException("No configuration files defined for any component" );
}
- Integer threadPoolSize = configs.getExternalScriptThreadPoolSize();
+ Integer totalCommands = pythonCompressFilesCmds.size() * 2;
+ Integer threadPoolSize = Math.min(totalCommands,configs.getExternalScriptThreadPoolSize());
ExecutorService processExecutor = Executors.newFixedThreadPool(threadPoolSize);
// put all threads that starts process to compress each component config files in the executor
[43/50] [abbrv] ambari git commit: AMBARI-20344. RU: MR2 service
check failed during rolling upgrade. Remove clutter from slider service check
(dlysnichenko)
Posted by ol...@apache.org.
AMBARI-20344. RU: MR2 service check failed during rolling upgrade. Remove clutter from slider service check (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c52027c8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c52027c8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c52027c8
Branch: refs/heads/branch-dev-logsearch
Commit: c52027c849038c11e58e1c0b4eecb740bc9d0a1a
Parents: c9f7056
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Thu Mar 9 16:18:15 2017 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Thu Mar 9 16:19:15 2017 +0200
----------------------------------------------------------------------
.../SLIDER/0.60.0.2.2/package/scripts/service_check.py | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c52027c8/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py
index 3b2c4ab..f8e213c 100644
--- a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py
+++ b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py
@@ -39,7 +39,6 @@ class SliderServiceCheck(Script):
def service_check(self, env):
import params
env.set_params(params)
- environment={'HADOOP_CONF_DIR': '/usr/hdp/2.4.3.0-227/hadoop/conf'}
if params.stack_version_formatted and check_stack_feature(StackFeature.COPY_TARBALL_TO_HDFS, params.stack_version_formatted):
copy_to_hdfs("slider", params.user_group, params.hdfs_user, skip=params.sysprep_skip_copy_tarballs_hdfs)
@@ -54,7 +53,6 @@ class SliderServiceCheck(Script):
try_sleep=5,
user=params.smokeuser,
logoutput=True,
- environment=environment
)
[47/50] [abbrv] ambari git commit: AMBARI-20359. Not able to import
workflow with fs action node (Madhan Mohan Reddy via pallavkul)
Posted by ol...@apache.org.
AMBARI-20359. Not able to import workflow with fs action node (Madhan Mohan Reddy via pallavkul)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c4766293
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c4766293
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c4766293
Branch: refs/heads/branch-dev-logsearch
Commit: c476629345c05896a445f005e94f2ab605510362
Parents: 9583386
Author: pallavkul <pa...@gmail.com>
Authored: Thu Mar 9 20:25:50 2017 +0530
Committer: pallavkul <pa...@gmail.com>
Committed: Thu Mar 9 20:28:13 2017 +0530
----------------------------------------------------------------------
.../src/main/resources/ui/app/domain/workflow-importer.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c4766293/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 ccf8209..a076e3e 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
@@ -106,7 +106,7 @@ var WorkflowImporter= Ember.Object.extend({
if (nodeHandler){
if (Ember.isArray(workflowAppJson[key])){
workflowAppJson[key].forEach(function(jsonObj){
- var node=nodeHandler.handleImportNode(key,jsonObj,workflow);
+ var node=nodeHandler.handleImportNode(key,jsonObj,workflow,xmlDoc);
nodeMap.set(jsonObj._name,{json:jsonObj,node:node});
});
}else{
[48/50] [abbrv] ambari git commit: AMBARI-20362: Enable
Authentication in Zeppelin out of Box (Prabhjyot Singh via r-kamath)
Posted by ol...@apache.org.
AMBARI-20362: Enable Authentication in Zeppelin out of Box (Prabhjyot Singh via r-kamath)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/47f92433
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/47f92433
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/47f92433
Branch: refs/heads/branch-dev-logsearch
Commit: 47f924334b850e572298fbd8700a993cdb19065c
Parents: c476629
Author: Renjith Kamath <re...@gmail.com>
Authored: Thu Mar 9 20:40:19 2017 +0530
Committer: Renjith Kamath <re...@gmail.com>
Committed: Thu Mar 9 20:40:19 2017 +0530
----------------------------------------------------------------------
.../configuration/zeppelin-shiro-ini.xml | 71 ++++++++++++++------
1 file changed, 49 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/47f92433/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-shiro-ini.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-shiro-ini.xml b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-shiro-ini.xml
index 3e2da1e..971e4af 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-shiro-ini.xml
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/configuration/zeppelin-shiro-ini.xml
@@ -24,39 +24,66 @@
[users]
# List of users with their password allowed to access Zeppelin.
# To use a different strategy (LDAP / Database / ...) check the shiro doc at http://shiro.apache.org/configuration.html#Configuration-INISections
-#admin = password1
-#user1 = password2, role1, role2
-#user2 = password3, role3
-#user3 = password4, role2
+admin = admin, admin
+user1 = user1, role1, role2
+user2 = user2, role3
+user3 = user3, role2
# Sample LDAP configuration, for user Authentication, currently tested for single Realm
[main]
-#activeDirectoryRealm = org.apache.zeppelin.server.ActiveDirectoryGroupRealm
-#activeDirectoryRealm.systemUsername = CN=Administrator,CN=Users,DC=HW,DC=EXAMPLE,DC=COM
-#activeDirectoryRealm.systemPassword = Password1!
-#activeDirectoryRealm.hadoopSecurityCredentialPath = jceks://user/zeppelin/zeppelin.jceks
-#activeDirectoryRealm.searchBase = CN=Users,DC=HW,DC=TEST,DC=COM
-#activeDirectoryRealm.url = ldap://ad-nano.test.example.com:389
-#activeDirectoryRealm.groupRolesMap = ""
-#activeDirectoryRealm.authorizationCachingEnabled = true
-
-#ldapRealm = org.apache.shiro.realm.ldap.JndiLdapRealm
-#ldapRealm.userDnTemplate = uid={0},cn=users,cn=accounts,dc=example,dc=com
-#ldapRealm.contextFactory.url = ldap://ldaphost:389
+### A sample for configuring Active Directory Realm
+#activeDirectoryRealm = org.apache.zeppelin.realm.ActiveDirectoryGroupRealm
+#activeDirectoryRealm.systemUsername = userNameA
+
+#use either systemPassword or hadoopSecurityCredentialPath, more details in http://zeppelin.apache.org/docs/latest/security/shiroauthentication.html
+#activeDirectoryRealm.systemPassword = passwordA
+#activeDirectoryRealm.hadoopSecurityCredentialPath = jceks://file/user/zeppelin/zeppelin.jceks
+#activeDirectoryRealm.searchBase = CN=Users,DC=SOME_GROUP,DC=COMPANY,DC=COM
+#activeDirectoryRealm.url = ldap://ldap.test.com:389
+#activeDirectoryRealm.groupRolesMap = "CN=admin,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"admin","CN=finance,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"finance","CN=hr,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"hr"
+#activeDirectoryRealm.authorizationCachingEnabled = false
+
+### A sample for configuring LDAP Directory Realm
+#ldapRealm = org.apache.zeppelin.realm.LdapGroupRealm
+## search base for ldap groups (only relevant for LdapGroupRealm):
+#ldapRealm.contextFactory.environment[ldap.searchBase] = dc=COMPANY,dc=COM
+#ldapRealm.contextFactory.url = ldap://ldap.test.com:389
+#ldapRealm.userDnTemplate = uid={0},ou=Users,dc=COMPANY,dc=COM
#ldapRealm.contextFactory.authenticationMechanism = SIMPLE
-#sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
-#securityManager.sessionManager = $sessionManager
+
+### A sample PAM configuration
+#pamRealm=org.apache.zeppelin.realm.PamRealm
+#pamRealm.service=sshd
+
+
+sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
+### If caching of user is required then uncomment below lines
+cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
+securityManager.cacheManager = $cacheManager
+
+securityManager.sessionManager = $sessionManager
# 86,400,000 milliseconds = 24 hour
-#securityManager.sessionManager.globalSessionTimeout = 86400000
+securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login
+[roles]
+role1 = *
+role2 = *
+role3 = *
+admin = *
+
[urls]
+# This section is used for url-based security.
+# You can secure interpreter, configuration and credential information by urls. Comment or uncomment the below urls that you want to hide.
# anon means the access is anonymous.
-# authcBasic means Basic Auth Security
+# authc means Form based Auth Security
# To enfore security, comment the line below and uncomment the next one
/api/version = anon
-/** = anon
-#/** = authc
+#/api/interpreter/** = authc, roles[admin]
+#/api/configurations/** = authc, roles[admin]
+#/api/credential/** = authc, roles[admin]
+#/** = anon
+/** = authc
</value>
<on-ambari-upgrade add="true"/>
</property>
[41/50] [abbrv] ambari git commit: AMBARI-20343 Zeppelin: Configure
both Hive and Hive interactive interpreters whenever required (r-kamath)
Posted by ol...@apache.org.
AMBARI-20343 Zeppelin: Configure both Hive and Hive interactive interpreters whenever required (r-kamath)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c7086b11
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c7086b11
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c7086b11
Branch: refs/heads/branch-dev-logsearch
Commit: c7086b11b7e5536e0c8b56130774e728aa3363f6
Parents: ec33f22
Author: Renjith Kamath <re...@gmail.com>
Authored: Thu Mar 9 12:44:31 2017 +0530
Committer: Renjith Kamath <re...@gmail.com>
Committed: Thu Mar 9 12:44:31 2017 +0530
----------------------------------------------------------------------
.../0.6.0.2.5/package/scripts/master.py | 29 +++++++++++++++++---
.../0.6.0.2.5/package/scripts/params.py | 10 +++++++
2 files changed, 35 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c7086b11/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py
index fc24918..a460aec 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/master.py
@@ -319,10 +319,15 @@ class Master(Script):
config_id = livy2_config["id"]
interpreter_settings[config_id] = livy2_config
+ hive_interactive_properties_key = 'hive_interactive'
for setting_key in interpreter_settings.keys():
interpreter = interpreter_settings[setting_key]
if interpreter['group'] == 'jdbc':
interpreter['dependencies'] = []
+
+ if not params.hive_server_host and params.hive_server_interactive_hosts:
+ hive_interactive_properties_key = 'hive'
+
if params.hive_server_host:
interpreter['properties']['hive.driver'] = 'org.apache.hive.jdbc.HiveDriver'
interpreter['properties']['hive.user'] = 'hive'
@@ -330,17 +335,33 @@ class Master(Script):
if params.hive_server2_support_dynamic_service_discovery:
interpreter['properties']['hive.url'] = 'jdbc:hive2://' + \
params.hive_zookeeper_quorum + \
- '/;' + 'serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'
+ '/;' + 'serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=' + \
+ params.hive_zookeeper_namespace
else:
interpreter['properties']['hive.url'] = 'jdbc:hive2://' + \
params.hive_server_host + \
':' + params.hive_server_port
+ if params.hive_server_interactive_hosts:
+ interpreter['properties'][hive_interactive_properties_key + '.driver'] = 'org.apache.hive.jdbc.HiveDriver'
+ interpreter['properties'][hive_interactive_properties_key + '.user'] = 'hive'
+ interpreter['properties'][hive_interactive_properties_key + '.password'] = ''
+ if params.hive_server2_support_dynamic_service_discovery:
+ interpreter['properties'][hive_interactive_properties_key + '.url'] = 'jdbc:hive2://' + \
+ params.hive_zookeeper_quorum + \
+ '/;' + 'serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=' + \
+ params.hive_interactive_zookeeper_namespace
+ else:
+ interpreter['properties'][hive_interactive_properties_key + '.url'] = 'jdbc:hive2://' + \
+ params.hive_server_interactive_hosts + \
+ ':' + params.hive_server_port
+
+ if params.hive_server_host or params.hive_server_interactive_hosts:
interpreter['dependencies'].append(
- {"groupArtifactVersion": "org.apache.hive:hive-jdbc:2.0.1", "local": "false"})
+ {"groupArtifactVersion": "org.apache.hive:hive-jdbc:2.0.1", "local": "false"})
interpreter['dependencies'].append(
- {"groupArtifactVersion": "org.apache.hadoop:hadoop-common:2.7.2", "local": "false"})
+ {"groupArtifactVersion": "org.apache.hadoop:hadoop-common:2.7.2", "local": "false"})
interpreter['dependencies'].append(
- {"groupArtifactVersion": "org.apache.hive.shims:hive-shims-0.23:2.1.0", "local": "false"})
+ {"groupArtifactVersion": "org.apache.hive.shims:hive-shims-0.23:2.1.0", "local": "false"})
if params.zookeeper_znode_parent \
and params.hbase_zookeeper_quorum:
http://git-wip-us.apache.org/repos/asf/ambari/blob/c7086b11/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py
index 9fd105b..fdc96db 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0.2.5/package/scripts/params.py
@@ -123,6 +123,9 @@ hive_server_port = None
hive_zookeeper_quorum = None
hive_server2_support_dynamic_service_discovery = None
is_hive_installed = False
+hive_zookeeper_namespace = None
+hive_interactive_zookeeper_namespace = None
+
if 'hive_server_host' in master_configs and len(master_configs['hive_server_host']) != 0:
is_hive_installed = True
spark_hive_properties = {
@@ -134,8 +137,15 @@ if 'hive_server_host' in master_configs and len(master_configs['hive_server_host
get_port_from_url(config['configurations']['hive-site']['hive.metastore.uris']))
hive_server_port = str(config['configurations']['hive-site']['hive.server2.thrift.http.port'])
hive_zookeeper_quorum = config['configurations']['hive-site']['hive.zookeeper.quorum']
+ hive_zookeeper_namespace = config['configurations']['hive-site']['hive.server2.zookeeper.namespace']
hive_server2_support_dynamic_service_discovery = config['configurations']['hive-site']['hive.server2.support.dynamic.service.discovery']
+hive_server_interactive_hosts = None
+if 'hive_server_interactive_hosts' in master_configs and len(master_configs['hive_server_interactive_hosts']) != 0:
+ hive_server_interactive_hosts = str(master_configs['hive_server_interactive_hosts'][0])
+ hive_interactive_zookeeper_namespace = config['configurations']['hive-interactive-site']['hive.server2.zookeeper.namespace']
+ hive_server_port = str(config['configurations']['hive-site']['hive.server2.thrift.http.port'])
+
# detect hbase details if installed
zookeeper_znode_parent = None
hbase_zookeeper_quorum = None
[03/50] [abbrv] ambari git commit: AMBARI-20275. Credential Store
should be enabled by default on fresh installs (Madhuvanthi Radhakrishnan via
smohanty)
Posted by ol...@apache.org.
AMBARI-20275. Credential Store should be enabled by default on fresh installs (Madhuvanthi Radhakrishnan via smohanty)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/df3b028d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/df3b028d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/df3b028d
Branch: refs/heads/branch-dev-logsearch
Commit: df3b028db23418d788361d54c0924354af783867
Parents: 0ba42cf
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Sun Mar 5 10:42:40 2017 -0800
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Sun Mar 5 10:42:40 2017 -0800
----------------------------------------------------------------------
.../0.12.0.2.0/package/scripts/hive_interactive.py | 7 +++++++
.../common-services/LOGSEARCH/0.5.0/metainfo.xml | 1 +
.../stacks/HDP/2.5/services/HIVE/metainfo.xml | 2 +-
.../stacks/HDP/2.5/services/OOZIE/metainfo.xml | 2 +-
.../python/stacks/2.5/HIVE/test_hive_server_int.py | 15 ++++++++++++---
.../stacks/2.5/configs/hsi_default_for_restart.json | 1 +
6 files changed, 23 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/df3b028d/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_interactive.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_interactive.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_interactive.py
index 1ca65fe..eba3f3a 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_interactive.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_interactive.py
@@ -43,6 +43,7 @@ from resource_management.core.shell import quote_bash_args
from resource_management.core.logger import Logger
from resource_management.core import utils
from resource_management.libraries.functions.setup_atlas_hook import has_atlas_in_cluster, setup_atlas_hook
+from resource_management.libraries.functions.security_commons import update_credential_provider_path
from ambari_commons.constants import SERVICE
from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
@@ -200,6 +201,12 @@ def hive_interactive(name=None):
group=params.user_group,
mode=0644)
else:
+ merged_hive_interactive_site = update_credential_provider_path(merged_hive_interactive_site,
+ 'hive-site',
+ os.path.join(conf_dir, 'hive-site.jceks'),
+ params.hive_user,
+ params.user_group
+ )
XmlConfig("hive-site.xml",
conf_dir=conf_dir,
configurations=merged_hive_interactive_site,
http://git-wip-us.apache.org/repos/asf/ambari/blob/df3b028d/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml
index 245a94d..fa9548b 100644
--- a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml
+++ b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/metainfo.xml
@@ -28,6 +28,7 @@
<credential-store>
<supported>true</supported>
<enabled>true</enabled>
+ <required>true</required>
</credential-store>
<components>
http://git-wip-us.apache.org/repos/asf/ambari/blob/df3b028d/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
index 4230dd4..f2a1161 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
@@ -23,7 +23,7 @@
<version>1.2.1.2.5</version>
<credential-store>
<supported>true</supported>
- <enabled>false</enabled>
+ <enabled>true</enabled>
</credential-store>
<components>
<component>
http://git-wip-us.apache.org/repos/asf/ambari/blob/df3b028d/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml
index 75aa9d9..05b1543 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/OOZIE/metainfo.xml
@@ -22,7 +22,7 @@
<name>OOZIE</name>
<credential-store>
<supported>true</supported>
- <enabled>false</enabled>
+ <enabled>true</enabled>
</credential-store>
<extends>common-services/OOZIE/4.2.0.2.5</extends>
</service>
http://git-wip-us.apache.org/repos/asf/ambari/blob/df3b028d/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py b/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py
index 6f017bc..d76ffaa 100644
--- a/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py
+++ b/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py
@@ -292,7 +292,7 @@ class TestHiveServerInteractive(RMFTestCase):
action=['delete'],
)
- self.assert_configure_default()
+ self.assert_configure_default(with_cs_enabled=True)
self.assertResourceCalled('Execute',
'/home/hive/llap-slider-05Apr2016/run.sh',
@@ -416,7 +416,7 @@ class TestHiveServerInteractive(RMFTestCase):
self.assertNoMoreResources()
- def assert_configure_default(self, no_tmp=False, default_fs_default=u'hdfs://c6401.ambari.apache.org:8020'):
+ def assert_configure_default(self, no_tmp=False, default_fs_default=u'hdfs://c6401.ambari.apache.org:8020', with_cs_enabled=False):
self.assertResourceCalled('HdfsResource', '/user/hive',
immutable_paths = self.DEFAULT_IMMUTABLE_PATHS,
@@ -533,6 +533,15 @@ class TestHiveServerInteractive(RMFTestCase):
configurations=hive_site_conf_for_client,
)
else:
+ if with_cs_enabled:
+ self.assertResourceCalled('File', '/usr/hdp/current/hive-server2-hive2/conf/conf.server/hive-site.jceks',
+ content=StaticFile('/var/lib/ambari-agent/data/abc.jceks'),
+ owner='hive',
+ group='hadoop',
+ mode = 0640,
+ )
+ self.assertTrue('hadoop.security.credential.provider.path' in hive_site_conf)
+ hive_site_conf['hadoop.security.credential.provider.path'] = 'jceks://file/usr/hdp/current/hive-server2-hive2/conf/conf.server/hive-site.jceks'
self.assertResourceCalled('XmlConfig', 'hive-site.xml',
group='hadoop',
conf_dir=conf_dir,
@@ -542,7 +551,7 @@ class TestHiveServerInteractive(RMFTestCase):
u'javax.jdo.option.ConnectionPassword': u'true'}},
owner='hive',
configurations=hive_site_conf,
- )
+ )
if conf_dir == '/usr/hdp/current/hive-server2-hive2/conf/conf.server':
self.assertResourceCalled('XmlConfig', 'hiveserver2-site.xml',
http://git-wip-us.apache.org/repos/asf/ambari/blob/df3b028d/ambari-server/src/test/python/stacks/2.5/configs/hsi_default_for_restart.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.5/configs/hsi_default_for_restart.json b/ambari-server/src/test/python/stacks/2.5/configs/hsi_default_for_restart.json
index 52b3983..f6de1c4 100644
--- a/ambari-server/src/test/python/stacks/2.5/configs/hsi_default_for_restart.json
+++ b/ambari-server/src/test/python/stacks/2.5/configs/hsi_default_for_restart.json
@@ -372,6 +372,7 @@
"a" : "e"
},
"hive-site": {
+ "hadoop.security.credential.provider.path": "jceks://file/var/lib/ambari-agent/data/abc.jceks",
"hive.enforce.sorting": "true",
"javax.jdo.option.ConnectionPassword": "!`\"' 1",
"javax.jdo.option.ConnectionDriverName": "com.mysql.jdbc.Driver",
[23/50] [abbrv] ambari git commit: AMBARI-20253. HiveView2.0: Auto
refresh not working.(dipayanb)
Posted by ol...@apache.org.
AMBARI-20253. HiveView2.0: Auto refresh not working.(dipayanb)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/dff7754b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/dff7754b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/dff7754b
Branch: refs/heads/branch-dev-logsearch
Commit: dff7754b7cb718de7e3bcfaac7afa0a4ce936afe
Parents: a92b7c8
Author: Dipayan Bhowmick <di...@gmail.com>
Authored: Wed Mar 8 01:02:16 2017 +0530
Committer: Dipayan Bhowmick <di...@gmail.com>
Committed: Wed Mar 8 01:02:16 2017 +0530
----------------------------------------------------------------------
.../main/resources/ui/app/routes/databases.js | 23 +++
.../ui/app/routes/databases/database/tables.js | 57 ++++++-
.../app/routes/databases/database/tables/new.js | 18 ++-
.../resources/ui/app/services/auto-refresh.js | 148 +++++++++++++++++++
.../app/templates/databases/database/tables.hbs | 1 +
.../main/resources/ui/app/transforms/date.js | 50 +++++++
.../src/main/resources/ui/config/environment.js | 6 +-
7 files changed, 289 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/dff7754b/contrib/views/hive20/src/main/resources/ui/app/routes/databases.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/databases.js b/contrib/views/hive20/src/main/resources/ui/app/routes/databases.js
index e5efbe9..02dbcac 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/databases.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/databases.js
@@ -18,9 +18,32 @@
import Ember from 'ember';
import UILoggerMixin from '../mixins/ui-logger';
+import ENV from 'ui/config/environment';
export default Ember.Route.extend(UILoggerMixin, {
tableOperations: Ember.inject.service(),
+ autoRefresh: Ember.inject.service(),
+
+ activate() {
+ if(ENV.APP.SHOULD_AUTO_REFRESH_DATABASES) {
+ this.get('autoRefresh').startDatabasesAutoRefresh(() => {
+ console.log("Databases AutoRefresh started");
+ }, this._databasesRefreshed.bind(this));
+ }
+
+ },
+
+ deactivate() {
+ this.get('autoRefresh').stopDatabasesAutoRefresh();
+ },
+
+ _databasesRefreshed() {
+ let model = this.store.peekAll('database');
+ if(this.controller) {
+ console.log(model.get('length'));
+ this.setupController(this.controller, model);
+ }
+ },
model() {
return this.store.findAll('database', {reload: true});
http://git-wip-us.apache.org/repos/asf/ambari/blob/dff7754b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables.js b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables.js
index d4a39cb..f5940e3 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables.js
@@ -17,8 +17,46 @@
*/
import Ember from 'ember';
+import ENV from 'ui/config/environment';
+import UILoggerMixin from '../../../mixins/ui-logger';
+
+export default Ember.Route.extend(UILoggerMixin, {
+ autoRefresh: Ember.inject.service(),
+
+ activate() {
+ if(ENV.APP.SHOULD_AUTO_REFRESH_TABLES) {
+ let selectedDatabase = this.modelFor('databases.database');
+ this.get('autoRefresh').startTablesAutoRefresh(selectedDatabase.get('name'),
+ this.tableRefreshStarting.bind(this), this.tableRefreshed.bind(this));
+ }
+ },
+
+ deactivate() {
+ this.get('autoRefresh').stopTablesAutoRefresh(this.controller.get('database.name'));
+ },
+
+ tableRefreshStarting(databaseName) {
+ this.controller.set('tableRefreshing', true);
+ },
+
+ tableRefreshed(databaseName, deletedTablesCount) {
+ this.controller.set('tableRefreshing', false);
+ let currentTablesForDatabase = this.store.peekAll('table').filterBy('database.name', databaseName);
+ let paramsForTable = this.paramsFor('databases.database.tables.table');
+ let currentTableNamesForDatabase = currentTablesForDatabase.mapBy('name');
+ if (currentTableNamesForDatabase.length <= 0 || !currentTableNamesForDatabase.contains(paramsForTable.name)) {
+ if(deletedTablesCount !== 0) {
+ this.get('logger').info(`Current selected table '${paramsForTable.name}' has been deleted from Hive Server. Transitioning out.`);
+ this.transitionTo('databases.database', databaseName);
+ return;
+ }
+ }
+ if(currentTablesForDatabase.get('length') > 0) {
+ this.selectTable(currentTablesForDatabase);
+ this.controller.set('model', currentTablesForDatabase);
+ }
+ },
-export default Ember.Route.extend({
model() {
let selectedDatabase = this.modelFor('databases.database');
return this.store.query('table', {databaseId: selectedDatabase.get('name')});
@@ -44,6 +82,13 @@ export default Ember.Route.extend({
toSelect.set('selected', true);
}
},
+
+ setupController(controller, model) {
+ this._super(...arguments);
+ let selectedDatabase = this.modelFor('databases.database');
+ controller.set('database', selectedDatabase);
+ },
+
actions: {
tableSelected(table) {
let tables = this.controllerFor('databases.database.tables').get('model');
@@ -52,11 +97,11 @@ export default Ember.Route.extend({
});
table.set('selected', true);
this.transitionTo('databases.database.tables.table', table.get('name'));
+ },
+
+ refreshTable() {
+ let databaseName = this.controller.get('database.name');
+ this.get('autoRefresh').refreshTables(databaseName, this.tableRefreshStarting.bind(this), this.tableRefreshed.bind(this), true);
}
}
-
-
-
-
-
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/dff7754b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js
index 533dd61..b61008f 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js
@@ -95,13 +95,17 @@ export default Ember.Route.extend(UILoggerMixin, {
},
_addTableToStoreLocally(database, table) {
- this.store.createRecord('table', {
- id: `${database.get('name')}/${table}`,
- name: `${table}`,
- type: 'TABLE',
- selected: true,
- database: database
- });
+ // Add only if it has not been added by the auto refresh
+ let existingRecord = this.store.peekRecord('table', `${database.get('name')}/${table}`);
+ if(Ember.isEmpty(existingRecord)) {
+ this.store.createRecord('table', {
+ id: `${database.get('name')}/${table}`,
+ name: `${table}`,
+ type: 'TABLE',
+ selected: true,
+ database: database
+ });
+ }
},
_resetModelInTablesController(tables) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/dff7754b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
new file mode 100644
index 0000000..2e8ec62
--- /dev/null
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
@@ -0,0 +1,148 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Service.extend({
+ store: Ember.inject.service(),
+ isDatabaseRefresherRunning: false,
+ tablesRefresherRunningStatus: {},
+
+
+ startDatabasesAutoRefresh(databaseRefreshStartingCallback, databaseRefreshedCallback, startAfter = 30 * 1000, interval = 30 * 1000) {
+ if (this.get('isDatabaseRefresherRunning')) {
+ return;
+ }
+
+ console.log("Starting database auto refresh");
+
+ this.set('isDatabaseRefresherRunning', true);
+ Ember.run.later(() => {
+ this._refreshDatabases(databaseRefreshStartingCallback, databaseRefreshedCallback, interval);
+ }, startAfter);
+
+
+ },
+
+ _refreshDatabases(databaseRefreshStartingCallback, databaseRefreshedCallback, interval) {
+ let reRun = () => {
+ Ember.run.later(() => {
+ this._refreshDatabases(databaseRefreshStartingCallback, databaseRefreshedCallback, interval);
+ }, interval);
+ };
+
+ if (this.get('isDatabaseRefresherRunning')) {
+ databaseRefreshStartingCallback();
+ let oldDatabases = this.get('store').peekAll('database').mapBy('name');
+ this.get('store').query('database', {}).then((data) => {
+ let deletedDbCount = 0
+ let newDatabases = data.mapBy('name');
+ oldDatabases.forEach((oldDB) => {
+ if (!newDatabases.contains(oldDB)) {
+ deletedDbCount++;
+ let oldRecord = this.get('store').peekRecord('database', oldDB);
+ this.get('store').unloadRecord(oldRecord);
+ }
+ });
+
+ // Hack: Had to wrap the refreshed call inside run later because, unloadRecord is not synchronously unloading
+ // records from store.
+ Ember.run.later(() => databaseRefreshedCallback(deletedDbCount));
+ reRun();
+ }).catch((err) => {
+ reRun();
+ });
+ }
+ },
+
+ stopDatabasesAutoRefresh() {
+ console.log("Stopping database auto refresh");
+ this.set('isDatabaseRefresherRunning', false);
+ },
+
+ startTablesAutoRefresh(databaseName, tablesRefreshStartingCallback, tablesRefreshedCallback, startAfter = 15 * 1000, interval = 15 * 1000) {
+ if(!Ember.isEmpty(this.get('tablesRefresherRunningStatus')[databaseName])) {
+ if (this.get('tablesRefresherRunningStatus')[databaseName]["started"]) {
+ return;
+ }
+ }
+
+
+ console.log("Starting tables auto refresh for " + databaseName);
+
+ this.get('tablesRefresherRunningStatus')[databaseName] = {};
+ this.get('tablesRefresherRunningStatus')[databaseName]["started"] = true;
+ Ember.run.later(() => {
+ this.refreshTables(databaseName, tablesRefreshStartingCallback, tablesRefreshedCallback, false, interval);
+ }, startAfter);
+ },
+
+ refreshTables(databaseName, tablesRefreshStartingCallback, tablesRefreshedCallback, runOnce = false, interval) {
+ let reRun = () => {
+ let intervalRef = Ember.run.later(() => {
+ this.refreshTables(databaseName, tablesRefreshStartingCallback, tablesRefreshedCallback, false, interval);
+ }, interval);
+ this.get('tablesRefresherRunningStatus')[databaseName]["intervalRef"] = intervalRef;
+ };
+
+ if (this.get('tablesRefresherRunningStatus')[databaseName]) {
+ tablesRefreshStartingCallback(databaseName);
+ let oldTableNames = this.get('store').peekAll('table').filterBy('database.name', databaseName).mapBy('name');
+ this.get('store').query('table', {databaseId: databaseName}).then((data) => {
+ let deletedTablesCount = 0;
+ let newTableNames = data.mapBy('name');
+ oldTableNames.forEach((oldTable) => {
+ if (!newTableNames.contains(oldTable)) {
+ deletedTablesCount++;
+ let oldRecord = this.get('store').peekRecord('table', `${databaseName}/${oldTable}`);
+ this.get('store').unloadRecord(oldRecord);
+ }
+ });
+
+ newTableNames.forEach((newTable) => {
+ if(!oldTableNames.contains(newTable)) {
+ //table has been added
+ let tableRecord = this.get('store').peekRecord('table', `${databaseName}/${newTable}`);
+ let dbRecord = this.get('store').peekRecord('database', databaseName);
+ dbRecord.get('tables').pushObject(tableRecord);
+ }
+ });
+
+ // Hack: Had to wrap the refreshed call inside run later because, unloadRecord is not synchronously unloading
+ // records from store.
+ Ember.run.later(() => tablesRefreshedCallback(databaseName, deletedTablesCount));
+ if(!runOnce) {
+ reRun();
+ }
+ }).catch((err) => {
+ if(!runOnce) {
+ reRun();
+ }
+ });
+ }
+ },
+
+ stopTablesAutoRefresh(databaseName) {
+ console.log("Stopping tables auto refresh for " + databaseName);
+ this.get('tablesRefresherRunningStatus')[databaseName]["started"] = false;
+ let intervalRef = this.get('tablesRefresherRunningStatus')[databaseName]["intervalRef"];
+ if (intervalRef) {
+ Ember.run.cancel(intervalRef);
+ }
+ }
+});
http://git-wip-us.apache.org/repos/asf/ambari/blob/dff7754b/contrib/views/hive20/src/main/resources/ui/app/templates/databases/database/tables.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/databases/database/tables.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/databases/database/tables.hbs
index c2d845b..954725b 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/databases/database/tables.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/databases/database/tables.hbs
@@ -20,6 +20,7 @@
<div class="col-md-3">
<div class="row">
<div class="hv-dropdown tables-dropdown">
+ <a href="#" {{action "refreshTable"}} class="btn btn-default">{{fa-icon "refresh" spin=tableRefreshing}}</a>
{{#link-to "databases.database.tables.new" class="btn btn-success"}}{{fa-icon "plus"}}{{/link-to}}
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/dff7754b/contrib/views/hive20/src/main/resources/ui/app/transforms/date.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/transforms/date.js b/contrib/views/hive20/src/main/resources/ui/app/transforms/date.js
new file mode 100644
index 0000000..40804d5
--- /dev/null
+++ b/contrib/views/hive20/src/main/resources/ui/app/transforms/date.js
@@ -0,0 +1,50 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import DS from 'ember-data';
+
+export default DS.Transform.extend({
+
+ deserialize: function (serialized) {
+ var type = typeof serialized;
+
+ if (type === "string") {
+ return new Date(Ember.Date.parse(serialized));
+ } else if (type === "number") {
+ return new Date(serialized);
+ } else if (serialized === null || serialized === undefined) {
+ // if the value is not present in the data,
+ // return undefined, not null.
+ return serialized;
+ } else {
+ return null;
+ }
+ },
+
+ serialize: function (date) {
+ console.log("Coming here to serialize");
+ if (date instanceof Date) {
+ // Serialize it as a number to maintain millisecond precision
+ return Number(date);
+ } else {
+ return null;
+ }
+ }
+
+});
http://git-wip-us.apache.org/repos/asf/ambari/blob/dff7754b/contrib/views/hive20/src/main/resources/ui/config/environment.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/config/environment.js b/contrib/views/hive20/src/main/resources/ui/config/environment.js
index 411ee99..c5370d7 100644
--- a/contrib/views/hive20/src/main/resources/ui/config/environment.js
+++ b/contrib/views/hive20/src/main/resources/ui/config/environment.js
@@ -34,7 +34,9 @@ module.exports = function(environment) {
APP: {
// Here you can pass flags/options to your application instance
// when it is created
- SHOULD_PERFORM_SERVICE_CHECK: true
+ SHOULD_PERFORM_SERVICE_CHECK: true,
+ SHOULD_AUTO_REFRESH_TABLES: true,
+ SHOULD_AUTO_REFRESH_DATABASES: true
}
};
@@ -49,6 +51,8 @@ module.exports = function(environment) {
// Change the value to false to prevent the service checks. This is required in development mode
// as service checks take up time and hence increase the overall development time.
ENV.APP.SHOULD_PERFORM_SERVICE_CHECK = false;
+ ENV.APP.SHOULD_AUTO_REFRESH_TABLES = false;
+ ENV.APP.SHOULD_AUTO_REFRESH_DATABASES = false;
}
if (environment === 'test') {
[38/50] [abbrv] ambari git commit: AMBARI-20361 - Stack Upgrade tests
fail during Hive Metastore restart due to missing hive-site.jceks file
(jonathanhurley)
Posted by ol...@apache.org.
AMBARI-20361 - Stack Upgrade tests fail during Hive Metastore restart due to missing hive-site.jceks file (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c5d2d5b0
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c5d2d5b0
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c5d2d5b0
Branch: refs/heads/branch-dev-logsearch
Commit: c5d2d5b03073215667a3a70989600c5a99bf1e9a
Parents: 6631ad5
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Wed Mar 8 11:00:44 2017 -0500
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Wed Mar 8 13:32:48 2017 -0500
----------------------------------------------------------------------
.../src/main/python/resource_management/core/source.py | 5 +++--
ambari-server/src/test/python/stacks/utils/RMFTestCase.py | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c5d2d5b0/ambari-common/src/main/python/resource_management/core/source.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/core/source.py b/ambari-common/src/main/python/resource_management/core/source.py
index cee6f57..e31f7d6 100644
--- a/ambari-common/src/main/python/resource_management/core/source.py
+++ b/ambari-common/src/main/python/resource_management/core/source.py
@@ -72,16 +72,17 @@ class StaticFile(Source):
basedir = self.env.config.basedir
path = os.path.join(basedir, "files", self.name)
- if not os.path.isfile(path) and not os.path.islink(path):
+ if not sudo.path_isfile(path) and not sudo.path_lexists(path):
raise Fail("{0} Source file {1} is not found".format(repr(self), path))
return self.read_file(path)
+
@OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
def read_file(self, path):
- from resource_management.core import sudo
return sudo.read_file(path)
+
@OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
def read_file(self, path):
with open(path, "rb") as fp:
http://git-wip-us.apache.org/repos/asf/ambari/blob/c5d2d5b0/ambari-server/src/test/python/stacks/utils/RMFTestCase.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/utils/RMFTestCase.py b/ambari-server/src/test/python/stacks/utils/RMFTestCase.py
index 9240d38..7dd3990 100644
--- a/ambari-server/src/test/python/stacks/utils/RMFTestCase.py
+++ b/ambari-server/src/test/python/stacks/utils/RMFTestCase.py
@@ -325,6 +325,7 @@ def StaticFile(name, **kwargs):
with RMFTestCase.env:
from resource_management.core.source import StaticFile
from resource_management.core import sudo
+ sudo.path_isfile = lambda path: True
sudo.read_file = lambda path: 'dummy_output'
return StaticFile(name, **kwargs)
[20/50] [abbrv] ambari git commit: AMBARI-20339. JS Lint warning
removal (pallavkul)
Posted by ol...@apache.org.
AMBARI-20339. JS Lint warning removal (pallavkul)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3bc3d686
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3bc3d686
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3bc3d686
Branch: refs/heads/branch-dev-logsearch
Commit: 3bc3d6861a634c775a87881ab4eda67d06b676bc
Parents: 225edb9
Author: pallavkul <pa...@gmail.com>
Authored: Tue Mar 7 20:36:25 2017 +0530
Committer: pallavkul <pa...@gmail.com>
Committed: Tue Mar 7 20:37:49 2017 +0530
----------------------------------------------------------------------
.../hive20/src/main/resources/ui/.jshintrc | 2 +
.../resources/ui/app/adapters/file-resource.js | 1 -
.../resources/ui/app/adapters/hdfs-viewer.js | 1 +
.../src/main/resources/ui/app/adapters/job.js | 5 +-
.../src/main/resources/ui/app/adapters/query.js | 5 +-
.../resources/ui/app/adapters/saved-query.js | 1 -
.../resources/ui/app/adapters/table-info.js | 2 +-
.../src/main/resources/ui/app/adapters/table.js | 2 +-
.../src/main/resources/ui/app/adapters/udf.js | 8 ---
.../resources/ui/app/adapters/upload-table.js | 4 +-
.../resources/ui/app/components/create-table.js | 2 +-
.../resources/ui/app/components/edit-table.js | 6 +-
.../ui/app/components/export-result.js | 2 +-
.../ui/app/components/fileresource-item.js | 5 +-
.../resources/ui/app/components/job-item.js | 1 +
.../resources/ui/app/components/list-filter.js | 2 +-
.../ui/app/components/notification-message.js | 4 +-
.../resources/ui/app/components/query-editor.js | 2 +-
.../ui/app/components/query-result-table.js | 9 ++-
.../app/components/table-advanced-settings.js | 4 +-
.../resources/ui/app/components/udf-item.js | 7 +--
.../main/resources/ui/app/components/udf-new.js | 2 +-
.../ui/app/components/validated-text-field.js | 2 +-
.../ui/app/components/visual-explain.js | 2 +-
.../main/resources/ui/app/configs/datatypes.js | 2 +-
.../ui/app/controllers/service-check.js | 8 +--
.../resources/ui/app/helpers/extract-value.js | 2 +-
.../ui/app/helpers/format-column-size.js | 2 +-
.../resources/ui/app/models/table-property.js | 2 +-
.../hive20/src/main/resources/ui/app/router.js | 2 +-
.../app/routes/databases/database/tables/new.js | 2 +-
.../databases/database/tables/table/edit.js | 1 +
.../databases/database/tables/upload-table.js | 58 +++++++++++++-------
.../src/main/resources/ui/app/routes/jobs.js | 6 +-
.../resources/ui/app/routes/queries/query.js | 17 +++---
.../ui/app/routes/queries/query/log.js | 4 +-
.../resources/ui/app/routes/savedqueries.js | 4 +-
.../main/resources/ui/app/routes/settings.js | 6 +-
.../src/main/resources/ui/app/routes/udfs.js | 2 +-
.../src/main/resources/ui/app/services/jobs.js | 6 +-
.../src/main/resources/ui/app/services/query.js | 12 ++--
.../resources/ui/app/services/saved-queries.js | 14 ++---
.../resources/ui/app/services/service-check.js | 2 +-
.../resources/ui/app/services/stats-service.js | 6 +-
.../ui/app/services/table-operations.js | 22 ++++----
.../src/main/resources/ui/app/services/udf.js | 25 +++------
.../components/table-advanced-settings.hbs | 8 ---
.../ui/app/utils/hive-explainer/enhancer.js | 2 +-
.../app/utils/hive-explainer/renderer-force.js | 21 +++----
.../ui/app/utils/hive-explainer/renderer.js | 34 +++++++-----
.../ui/app/utils/hive-explainer/transformer.js | 10 ++--
51 files changed, 176 insertions(+), 185 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/.jshintrc
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/.jshintrc b/contrib/views/hive20/src/main/resources/ui/.jshintrc
index d421faa..8cedd57 100644
--- a/contrib/views/hive20/src/main/resources/ui/.jshintrc
+++ b/contrib/views/hive20/src/main/resources/ui/.jshintrc
@@ -2,6 +2,8 @@
"predef": [
"document",
"window",
+ "d3",
+ "CodeMirror",
"-Promise"
],
"browser": true,
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/file-resource.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/file-resource.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/file-resource.js
index a25adc7..7f6ab80 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/file-resource.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/file-resource.js
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import Ember from 'ember';
import ApplicationAdapter from './application';
export default ApplicationAdapter.extend({
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/hdfs-viewer.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/hdfs-viewer.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/hdfs-viewer.js
index dcd52b8..2e727d1 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/hdfs-viewer.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/hdfs-viewer.js
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import Ember from 'ember';
import ApplicationAdapter from './application';
export default ApplicationAdapter.extend({
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/job.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/job.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/job.js
index 7559e9c..e40c0ba 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/job.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/job.js
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import Ember from 'ember';
import ApplicationAdapter from './application';
export default ApplicationAdapter.extend({
@@ -45,7 +46,7 @@ export default ApplicationAdapter.extend({
}, (error) => {
reject(error);
});
- })
+ });
},
@@ -58,7 +59,7 @@ export default ApplicationAdapter.extend({
if (response.status.toLowerCase() !== "TERMINATED".toLowerCase()) {
Ember.run.later( () => {
this.pollSaveToHDFS(response)
- .then((data) => { resolve(data)}, (error) => {
+ .then((data) => { resolve(data); }, (error) => {
reject(error);
});
}, 2000);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/query.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/query.js
index 4913fe2..6640f82 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/query.js
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import Ember from 'ember';
import ApplicationAdapter from './application';
export default ApplicationAdapter.extend({
@@ -38,7 +37,7 @@ export default ApplicationAdapter.extend({
url = this.buildURL() + jobId + '/results';
}
- return this.ajax(url, 'GET')
+ return this.ajax(url, 'GET');
},
getVisualExplainJson(jobId){
@@ -49,7 +48,7 @@ export default ApplicationAdapter.extend({
retrieveQueryLog(logFile){
let url = '';
url = this.buildURL().replace('/jobs','') + 'files' + logFile;
- return this.ajax(url, 'GET')
+ return this.ajax(url, 'GET');
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/saved-query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/saved-query.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/saved-query.js
index a25adc7..7f6ab80 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/saved-query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/saved-query.js
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import Ember from 'ember';
import ApplicationAdapter from './application';
export default ApplicationAdapter.extend({
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/table-info.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/table-info.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/table-info.js
index 46e7591..66bab88 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/table-info.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/table-info.js
@@ -23,7 +23,7 @@ export default DDLAdapter.extend({
buildURL(modelName, id, snapshot, requestType, query) {
// Check if the query is to find all tables for a particular database
- if(Ember.isEmpty(id) && (requestType === 'query' || requestType == 'queryRecord')) {
+ if(Ember.isEmpty(id) && (requestType === 'query' || requestType === 'queryRecord')) {
let dbId = query.databaseId;
let tableName = query.tableName;
let origFindAllUrl = this._super(...arguments);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/table.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/table.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/table.js
index e133419..85e34b4 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/table.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/table.js
@@ -22,7 +22,7 @@ import DDLAdapter from './ddl';
export default DDLAdapter.extend({
buildURL(modelName, id, snapshot, requestType, query) {
// Check if the query is to find all tables for a particular database
- if (Ember.isEmpty(id) && (requestType === 'query' || requestType == 'queryRecord')) {
+ if (Ember.isEmpty(id) && (requestType === 'query' || requestType === 'queryRecord')) {
let dbId = query.databaseId;
let tableName = query.tableName;
let origFindAllUrl = this._super(...arguments);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/udf.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/udf.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/udf.js
index c929de7..af8f46f 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/udf.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/udf.js
@@ -26,14 +26,6 @@ export default ApplicationAdapter.extend({
buildURL(){
return this._super(...arguments).replace('/resources','');
- },
-
- fileResourceURL(){
- this.buildURL()+ '/fileResources';
- },
-
- udfURL(){
- this.buildURL()+ '/udfs';
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/adapters/upload-table.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/adapters/upload-table.js b/contrib/views/hive20/src/main/resources/ui/app/adapters/upload-table.js
index 3bfe15b..eea9f59 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/adapters/upload-table.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/adapters/upload-table.js
@@ -83,11 +83,11 @@ export default ApplicationAdapter.extend({
previewFromHDFS : function(previewFromHdfsData){
console.log("preview from hdfs with info : ", previewFromHdfsData);
- return this.doPost("previewFromHdfs",previewFromHdfsData)
+ return this.doPost("previewFromHdfs",previewFromHdfsData);
},
uploadFromHDFS : function(uploadFromHdfsData){
console.log("upload from hdfs with info : ", uploadFromHdfsData);
- return this.doPost("uploadFromHDFS",uploadFromHdfsData)
+ return this.doPost("uploadFromHDFS",uploadFromHdfsData);
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/create-table.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/create-table.js b/contrib/views/hive20/src/main/resources/ui/app/components/create-table.js
index 670ebd7..322aab5 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/create-table.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/create-table.js
@@ -35,7 +35,7 @@ export default Ember.Component.extend({
didReceiveAttrs() {
this.get('tabs').setEach('active', false);
- let firstTab = this.get('tabs.firstObject')
+ let firstTab = this.get('tabs.firstObject');
firstTab.set('active', true);
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/edit-table.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/edit-table.js b/contrib/views/hive20/src/main/resources/ui/app/components/edit-table.js
index 439dbcf..b42f6fb 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/edit-table.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/edit-table.js
@@ -63,7 +63,7 @@ export default Ember.Component.extend({
_transformColumns() {
let columns = [];
columns.pushObjects(this.get('table.columns').map((item) => {
- return this._getColumnEntry(item, false, this._isClustered(this.get('table'), item.name))
+ return this._getColumnEntry(item, false, this._isClustered(this.get('table'), item.name));
}));
if (!Ember.isEmpty(this.get('table.partitionInfo'))) {
@@ -113,7 +113,7 @@ export default Ember.Component.extend({
editing: false,
newProperty: false
});
- })
+ });
} else {
return [];
}
@@ -135,7 +135,7 @@ export default Ember.Component.extend({
// Find if already clustered, then set number of buckets
if (!Ember.isEmpty(tableInfo.get('storageInfo.bucketCols'))) {
- settings.numBuckets = parseInt(tableInfo.get('storageInfo.numBuckets'))
+ settings.numBuckets = parseInt(tableInfo.get('storageInfo.numBuckets'));
this.set('shouldAddBuckets', true);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/export-result.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/export-result.js b/contrib/views/hive20/src/main/resources/ui/app/components/export-result.js
index 517da1e..f84e2b5 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/export-result.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/export-result.js
@@ -43,7 +43,7 @@ export default Ember.Component.extend({
actions: {
confirm() {
- let pathName = $("input.path-name").val();
+ let pathName = Ember.$("input.path-name").val();
this.sendAction('confirm', this.get('jobId'), pathName);
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/fileresource-item.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/fileresource-item.js b/contrib/views/hive20/src/main/resources/ui/app/components/fileresource-item.js
index 12cfb5b..27f5e07 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/fileresource-item.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/fileresource-item.js
@@ -34,13 +34,12 @@ export default Ember.Component.extend({
this.set('fileResourceId', fileResourceId);
- var self = this;
if(this.get('expanded')) {
this.set('expanded', false);
} else {
this.set('expanded', true);
- let allUdfs = this.get('store').findAll('udf').then((data) => {
+ this.get('store').findAll('udf').then((data) => {
let selectedUdfList = [];
data.forEach(x => {
let localFileResource = {
@@ -59,8 +58,6 @@ export default Ember.Component.extend({
});
}
-
-
},
createQuery(udfName, udfClassname, fileResourceName, fileResourcePath){
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/job-item.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/job-item.js b/contrib/views/hive20/src/main/resources/ui/app/components/job-item.js
index 8a6d318..42a3411 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/job-item.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/job-item.js
@@ -34,6 +34,7 @@ export default Ember.Component.extend({
this.set('queryFile', queryFile);
this.set('valueLoading', false);
}).catch((err) => {
+ console.log('err', err);
this.set('valueLoading', false);
});
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/list-filter.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/list-filter.js b/contrib/views/hive20/src/main/resources/ui/app/components/list-filter.js
index db0b5c0..dd51e78 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/list-filter.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/list-filter.js
@@ -31,7 +31,7 @@ export default Ember.Component.extend({
filteredItems: Ember.computed('filterText', 'items.@each', function() {
return this.get('items').filter((item) => {
let filterText = this.get('caseInsensitive') ? this.get('filterText').toLowerCase() : this.get('filterText');
- let itemName = this.get('caseInsensitive') ? item.get('name').toLowerCase() : item.get('name')
+ let itemName = this.get('caseInsensitive') ? item.get('name').toLowerCase() : item.get('name');
return itemName.indexOf(filterText) !== -1;
});
}),
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/notification-message.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/notification-message.js b/contrib/views/hive20/src/main/resources/ui/app/components/notification-message.js
index 339e095..ea5b5ef 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/notification-message.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/notification-message.js
@@ -24,7 +24,7 @@ export default Ember.Component.extend({
}),
displayBody: Ember.computed('notification', function() {
- return !(Ember.isBlank(this.get('notification.responseMessage'))
- && Ember.isBlank(this.get('notification.trace')));
+ return !(Ember.isBlank(this.get('notification.responseMessage')) &&
+ Ember.isBlank(this.get('notification.trace')));
})
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/query-editor.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/query-editor.js b/contrib/views/hive20/src/main/resources/ui/app/components/query-editor.js
index c033e42..b582351 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/query-editor.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/query-editor.js
@@ -94,7 +94,7 @@ export default Ember.Component.extend({
if (editor.getValue() !== query) {
if(isFinalExplainQuery){
- editor.setValue(editorQuery || '')
+ editor.setValue(editorQuery || '');
}else {
editor.setValue(query || '');
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/query-result-table.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/query-result-table.js b/contrib/views/hive20/src/main/resources/ui/app/components/query-result-table.js
index a2eb349..be5c43a 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/query-result-table.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/query-result-table.js
@@ -31,12 +31,11 @@ export default Ember.Component.extend({
columnFilterDebounced: Ember.observer('columnFilterText', function() {
Ember.run.debounce(this, () => {
- this.set('columnFilter', this.get('columnFilterText'))
+ this.set('columnFilter', this.get('columnFilterText'));
}, 500);
}),
columns: Ember.computed('queryResult', function() {
- let queryResult = this.get('queryResult');
let columnArr =[];
this.get('queryResult').schema.forEach(function(column){
@@ -56,11 +55,11 @@ export default Ember.Component.extend({
let rowArr = [], self = this;
if(self.get('columns').length > 0) {
- self.get('queryResult').rows.forEach(function(row, rowindex){
+ self.get('queryResult').rows.forEach(function(row){
var mylocalObject = {};
self.get('columns').forEach(function(column, index){
mylocalObject[self.get('columns')[index].valuePath] = row[index];
- })
+ });
rowArr.push(mylocalObject);
});
return rowArr;
@@ -90,7 +89,7 @@ export default Ember.Component.extend({
},
onColumnClick(column) {
- //console.log('I am in onColumnClick');
+ console.log('column',column);
},
goNextPage(payloadTitle){
this.sendAction('goNextPage', payloadTitle);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/table-advanced-settings.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/table-advanced-settings.js b/contrib/views/hive20/src/main/resources/ui/app/components/table-advanced-settings.js
index 5e58cd8..a7b8e3b 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/table-advanced-settings.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/table-advanced-settings.js
@@ -125,11 +125,11 @@ export default Ember.Component.extend({
},
toggleFileFormat() {
- this.toggleProperty('showFileFormatInput')
+ this.toggleProperty('showFileFormatInput');
},
toggleRowFormat() {
- this.toggleProperty('showRowFormatInput')
+ this.toggleProperty('showRowFormatInput');
},
fileFormatSelected(format) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
index 9e11550..44f56e5 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
@@ -37,7 +37,6 @@ export default Ember.Component.extend({
actions: {
toggleExpandUdf(fileResourceId) {
- var self = this;
if(this.get('expanded')) {
this.set('expanded', false);
} else {
@@ -120,11 +119,11 @@ export default Ember.Component.extend({
removeUdf(){
let self = this;
this.get('store').find('udf', this.get('udfId')).then(function(resultUdf) {
- resultUdf.destroyRecord().then(function(data) {
+ resultUdf.destroyRecord().then(function() {
self.send('cancelUdf');
self.sendAction('refreshUdfList');
}, function(response) {
- console.log('UDF NOT deleted');
+ console.log('UDF NOT deleted', response);
});
return false;
});
@@ -135,7 +134,7 @@ export default Ember.Component.extend({
},
handleResourceChange(filter){
- if(filter.action == "addNewFileResource"){
+ if(filter.action === "addNewFileResource"){
this.get('controller').set('isAddingNewFileResource', true);
this.set('selectedFileResource',null);
}else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/udf-new.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/udf-new.js b/contrib/views/hive20/src/main/resources/ui/app/components/udf-new.js
index 285ef07..26658ad 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/udf-new.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/udf-new.js
@@ -25,7 +25,7 @@ export default Ember.Component.extend({
actions:{
handleFileResourceChange(filter){
- this.sendAction('handleFileResourceChange', filter)
+ this.sendAction('handleFileResourceChange', filter);
},
cancelSaveUDf(){
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/validated-text-field.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/validated-text-field.js b/contrib/views/hive20/src/main/resources/ui/app/components/validated-text-field.js
index 2379a15..0cbe0f6 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/validated-text-field.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/validated-text-field.js
@@ -45,7 +45,7 @@ export default Ember.Component.extend({
var regExp = new RegExp(regStr, "g");
if (this.get("inputValue")) {
var arr = this.get("inputValue").match(regExp);
- if (arr != null && arr.length == 1) {
+ if (arr != null && arr.length === 1) {
this.setValid();
}
else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/components/visual-explain.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/visual-explain.js b/contrib/views/hive20/src/main/resources/ui/app/components/visual-explain.js
index 8f216d1..fd450cc 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/visual-explain.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/visual-explain.js
@@ -47,7 +47,7 @@ export default Ember.Component.extend({
},
- click(event){
+ click(){
if(this.get('explainDetailData') === '' || this.get('draggable').get('zoom') ){
return;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/configs/datatypes.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/configs/datatypes.js b/contrib/views/hive20/src/main/resources/ui/app/configs/datatypes.js
index 0d07ce2..0ae9616 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/configs/datatypes.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/configs/datatypes.js
@@ -31,4 +31,4 @@ export default [
{label: "DECIMAL", hasPrecision: true, hasScale: true},
{label: "VARCHAR", hasPrecision: true, hasScale: false},
{label: "CHAR", hasPrecision: true, hasScale: false},
-]
+];
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/controllers/service-check.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/controllers/service-check.js b/contrib/views/hive20/src/main/resources/ui/app/controllers/service-check.js
index 8a621db..10552ea 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/controllers/service-check.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/controllers/service-check.js
@@ -31,10 +31,10 @@ export default Ember.Controller.extend({
}),
hasError: Ember.computed('hdfsError', 'userHomeError', 'atsError', 'hiveError', function() {
- return !(Ember.isEmpty(this.get('hdfsError'))
- && Ember.isEmpty(this.get('userHomeError'))
- && Ember.isEmpty(this.get('atsError'))
- && Ember.isEmpty(this.get('hiveError')));
+ return !(Ember.isEmpty(this.get('hdfsError')) &&
+ Ember.isEmpty(this.get('userHomeError')) &&
+ Ember.isEmpty(this.get('atsError')) &&
+ Ember.isEmpty(this.get('hiveError')));
}),
transitioner: Ember.observer('serviceCheck.transitionToApplication', function() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/helpers/extract-value.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/helpers/extract-value.js b/contrib/views/hive20/src/main/resources/ui/app/helpers/extract-value.js
index 76b3dee..1fa4cb9 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/helpers/extract-value.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/helpers/extract-value.js
@@ -18,7 +18,7 @@
import Ember from 'ember';
-export function extractValue(params,/*, hash*/) {
+export function extractValue(params /*, hash*/) {
let map = params[0];
let key = params[1];
return map[key];
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/helpers/format-column-size.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/helpers/format-column-size.js b/contrib/views/hive20/src/main/resources/ui/app/helpers/format-column-size.js
index a24f797..511a917 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/helpers/format-column-size.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/helpers/format-column-size.js
@@ -26,7 +26,7 @@ export function formatColumnSize(params/*, hash*/) {
}
let sizeString = '( ';
if (precision) {
- sizeString = `${sizeString}${precision}`
+ sizeString = `${sizeString}${precision}`;
}
if (scale) {
sizeString = `${sizeString}, ${scale}`;
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/models/table-property.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/models/table-property.js b/contrib/views/hive20/src/main/resources/ui/app/models/table-property.js
index 751f55c..f79023a 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/models/table-property.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/models/table-property.js
@@ -51,4 +51,4 @@ export default Ember.Object.extend({
return this.get('errors.length') === 0;
}
-})
+});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/router.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/router.js b/contrib/views/hive20/src/main/resources/ui/app/router.js
index 250f945..d5d876d 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/router.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/router.js
@@ -55,7 +55,7 @@ Router.map(function() {
this.route('ddl');
this.route('stats');
this.route('auth');
- })
+ });
});
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js
index b29d863..533dd61 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/new.js
@@ -81,7 +81,7 @@ export default Ember.Route.extend(UILoggerMixin, {
},
toggleCSVFormat: function() {
console.log("inside new route toggleCSVFormat");
- this.toggleProperty('showCSVFormatInput')
+ this.toggleProperty('showCSVFormatInput');
},
create(settings) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/table/edit.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/table/edit.js b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/table/edit.js
index 2fa61b4..085c326 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/table/edit.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/table/edit.js
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import Ember from 'ember';
import TableMetaRouter from './table-meta-router';
import tabs from '../../../../../configs/edit-table-tabs';
import UILoggerMixin from '../../../../../mixins/ui-logger';
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/upload-table.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/upload-table.js b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/upload-table.js
index e4c543b..e6b71fe 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/upload-table.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/databases/database/tables/upload-table.js
@@ -51,8 +51,9 @@ export default NewTable.extend(UILoggerMixin, {
showCSVFormatInput: false,
uploadProgressInfo : Ember.computed("uploadProgressInfos.[]",function(){
var info = "";
- for( var i = 0 ; i < this.get('uploadProgressInfos').length ; i++)
+ for( var i = 0 ; i < this.get('uploadProgressInfos').length ; i++) {
info += this.get('uploadProgressInfos').objectAt(i);
+ }
return new Ember.Handlebars.SafeString(info);
}),
@@ -87,8 +88,9 @@ export default NewTable.extend(UILoggerMixin, {
var text = "";
var possible = "abcdefghijklmnopqrstuvwxyz";
- for (var i = 0; i < 30; i++)
+ for (var i = 0; i < 30; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
+ }
return text;
},
@@ -100,10 +102,10 @@ export default NewTable.extend(UILoggerMixin, {
fetchJobPromise.then(function (data) {
var job = JSON.parse(JSON.stringify(data));
var status = job.status;
- if (status == constants.statuses.succeeded ) {
+ if (status === constants.statuses.succeeded ) {
console.log("resolving waitForJobStatus with : " , status);
resolve(job);
- } else if (status == constants.statuses.canceled || status == constants.statuses.closed || status == constants.statuses.error) {
+ } else if (status === constants.statuses.canceled || status === constants.statuses.closed || status === constants.statuses.error) {
console.log("rejecting waitForJobStatus with : " + status);
reject(new Error(job.statusMessage));
} else {
@@ -115,7 +117,7 @@ export default NewTable.extend(UILoggerMixin, {
}, function (error) {
console.log("rejecting waitForJobStatus with : " + error);
reject(error);
- })
+ });
},
uploadForPreview: function (sourceObject) {
@@ -184,7 +186,7 @@ export default NewTable.extend(UILoggerMixin, {
waitForGeneratingPreview: function () {
console.log("waitForGeneratingPreview");
this.showUploadModal();
- this.pushUploadProgressInfos(this.formatMessage('hive.messages.generatingPreview'))
+ this.pushUploadProgressInfos(this.formatMessage('hive.messages.generatingPreview'));
},
previewTable: function (data) {
@@ -211,7 +213,7 @@ export default NewTable.extend(UILoggerMixin, {
name: column.name,
type: datatypes.findBy("label", column.type),
editing: true
- })
+ });
},
onGeneratePreviewSuccess: function (data) {
console.log("onGeneratePreviewSuccess");
@@ -396,7 +398,7 @@ export default NewTable.extend(UILoggerMixin, {
return self.rollBackActualTableCreation();
},function(err){
return self.rollBackActualTableCreation();
- })
+ });
},
onUploadingFileFailure: function (error) {
@@ -490,10 +492,14 @@ export default NewTable.extend(UILoggerMixin, {
this.setError(this.formatMessage('hive.messages.manuallyDeleteTable',{databaseName:this.get('databaseName'), tableName: this.get("tempTableName")}));
},
validateHDFSPath: function (hdfsPath) {
- if (null == hdfsPath || hdfsPath == "") throw new Error(this.translate('hive.errors.emptyHdfsPath'));
+ if (null === hdfsPath || hdfsPath === "") {
+ throw new Error(this.translate('hive.errors.emptyHdfsPath'));
+ }
var hdfsRegex = new RegExp(this.get("HDFS_PATH_REGEX"), "g");
var mArr = hdfsPath.match(hdfsRegex);
- if (mArr == null || mArr.length != 1) throw new Error(this.translate('hive.errors.illegalHdfPath', {"hdfsPath": hdfsPath} ));
+ if (mArr === null || mArr.length !== 1) {
+ throw new Error(this.translate('hive.errors.illegalHdfPath', {"hdfsPath": hdfsPath} ));
+ }
},
createTableAndUploadFile: function (tableData) {
let databaseModel = this.controllerFor('databases.database').get('model');
@@ -606,24 +612,36 @@ export default NewTable.extend(UILoggerMixin, {
},
validateInput: function (headers,tableName,databaseName,isFirstRowHeader) {
// throw exception if invalid.
- if(!headers || headers.length == 0) throw new Error(this.translate('hive.errors.emptyHeaders'));
+ if(!headers || headers.length === 0) {
+ throw new Error(this.translate('hive.errors.emptyHeaders'));
+ }
var regex = new RegExp(this.get("COLUMN_NAME_REGEX"),"g");
headers.forEach(function(column,index){
- if( !column ) throw new Error(this.translate('hive.errors.emptyColumnName'));
+ if( !column ) {
+ throw new Error(this.translate('hive.errors.emptyColumnName'));
+ }
var matchArr = column.name.match(regex);
- if(matchArr == null || matchArr.length != 1 ) throw new Error(this.translate('hive.errors.illegalColumnName',{ columnName : column.name, index : (index + 1)}));
+ if(matchArr === null || matchArr.length !== 1 ) {
+ throw new Error(this.translate('hive.errors.illegalColumnName',{ columnName : column.name, index : (index + 1)}));
+ }
},this);
- if(!tableName) throw new Error(this.translate('hive.errors.emptyTableName', {tableNameField : this.translate('hive.ui.tableName')}));
+ if(!tableName) {
+ throw new Error(this.translate('hive.errors.emptyTableName', {tableNameField : this.translate('hive.ui.tableName')}));
+ }
var tableRegex = new RegExp(this.get("TABLE_NAME_REGEX"),"g");
var mArr = tableName.match(tableRegex);
- if(mArr == null || mArr.length != 1 ) throw new Error(this.translate('hive.errors.illegalTableName', {tableNameField:this.translate('hive.ui.tableName'),tableName:tableName}) );
+ if(mArr === null || mArr.length !== 1 ) {
+ throw new Error(this.translate('hive.errors.illegalTableName', {tableNameField:this.translate('hive.ui.tableName'),tableName:tableName}) );
+ }
- if(!databaseName) throw new Error(this.translate('hive.errors.emptyDatabase', {database:this.translate('hive.words.database')}));
+ if(!databaseName) {
+ throw new Error(this.translate('hive.errors.emptyDatabase', {database:this.translate('hive.words.database')}));
+ }
- if (null == isFirstRowHeader || typeof isFirstRowHeader === 'undefined') { //this can be true or false. so explicitly checking for null/ undefined.
+ if (null === isFirstRowHeader || typeof isFirstRowHeader === 'undefined') { //this can be true or false. so explicitly checking for null/ undefined.
throw new Error(this.translate('hive.errors.emptyIsFirstRow', {isFirstRowHeaderField:this.translate('hive.ui.isFirstRowHeader')}));
}
},
@@ -689,8 +707,8 @@ export default NewTable.extend(UILoggerMixin, {
validateInputs: function(tableData){
let tableMeta = tableData.get("tableMeta");
let containsEndlines = tableData.get("fileFormatInfo.containsEndlines");
- if(containsEndlines == true && tableMeta.settings && tableMeta.settings.fileFormat
- && tableMeta.settings.fileFormat.type && tableMeta.settings.fileFormat.type === "TEXTFILE"){
+ if(containsEndlines === true && tableMeta.settings && tableMeta.settings.fileFormat &&
+ tableMeta.settings.fileFormat.type && tableMeta.settings.fileFormat.type === "TEXTFILE"){
throw new Error(`Cannot support endlines in fields when the File Format is TEXTFILE. Please uncheck '${this.translate('hive.ui.csvFormatParams.containsEndlines')}'`);
}
},
@@ -701,7 +719,7 @@ export default NewTable.extend(UILoggerMixin, {
this.clearFields();
this.set('previewObject', previewObject);
- return this.generatePreview(previewObject)
+ return this.generatePreview(previewObject);
},
uploadTable: function (tableData) {
console.log("tableData", tableData);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/jobs.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/jobs.js b/contrib/views/hive20/src/main/resources/ui/app/routes/jobs.js
index c27c74d..3e88ac6 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/jobs.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/jobs.js
@@ -44,7 +44,7 @@ export default Ember.Route.extend({
return this.store.query('job', params);
},
- setupController(controller, model) {
+ setupController(controller) {
if(!(Ember.isEmpty(this.get('startInitTo')) || Ember.isEmpty(this.get('endInitTo')))) {
controller.set('endTime', this.get('endInitTo'));
@@ -60,8 +60,8 @@ export default Ember.Route.extend({
actions: {
dateFilterChanged(startTime, endTime) {
- this.controller.set('startTime', this.get('moment').moment(startTime, 'YYYY-MM-DD').startOf('day').valueOf())
- this.controller.set('endTime', this.get('moment').moment(endTime, 'YYYY-MM-DD').endOf('day').valueOf())
+ this.controller.set('startTime', this.get('moment').moment(startTime, 'YYYY-MM-DD').startOf('day').valueOf());
+ this.controller.set('endTime', this.get('moment').moment(endTime, 'YYYY-MM-DD').endOf('day').valueOf());
this.refresh();
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
index e1ab620..08af7d4 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
@@ -93,7 +93,7 @@ export default Ember.Route.extend(UILoggerMixin, {
'dbname': selectedDb ,
'tables': this.store.query('table', {databaseId: selectedDb}),
'isSelected': true
- })
+ });
selectedMultiDb.pushObject(selectedDb);
}
@@ -208,7 +208,7 @@ export default Ember.Route.extend(UILoggerMixin, {
'tables':self.store.query('table', {databaseId: db}),
'isSelected': (index === 0) ? true :false
}
- )
+ );
selectedMultiDb.pushObject(db);
});
@@ -224,7 +224,6 @@ export default Ember.Route.extend(UILoggerMixin, {
},
showTables(db){
- let self = this;
Ember.$('#' + db).toggle();
this.get('controller.model').set('selectedDb', db);
},
@@ -267,11 +266,13 @@ export default Ember.Route.extend(UILoggerMixin, {
if (isVisualExplainQuery) {
queryInput = "";
let queries = this.get('controller').get('currentQuery').split(";").filter(function (query) {
- if (query && query.trim()) return true;
+ if (query && query.trim()) {
+ return true;
+ }
});
for (let i = 0; i < queries.length; i++) {
- if (i == queries.length - 1) {
+ if (i === queries.length - 1) {
if(queries[i].toLowerCase().startsWith("explain formatted ")){
queryInput += queries[i] + ";";
} else{
@@ -398,7 +399,7 @@ export default Ember.Route.extend(UILoggerMixin, {
} else {
self.get('controller.model').set('visualExplainJson', null);
- if( self.paramsFor('queries.query').worksheetId && (self.paramsFor('queries.query').worksheetId.toLowerCase() == payloadTitle)){
+ if( self.paramsFor('queries.query').worksheetId && (self.paramsFor('queries.query').worksheetId.toLowerCase() === payloadTitle)){
self.transitionTo('queries.query.loading');
Ember.run.later(() => {
@@ -572,7 +573,7 @@ export default Ember.Route.extend(UILoggerMixin, {
saveWorksheetModal(){
console.log('I am in saveWorksheetModal');
- let newTitle = $('#worksheet-title').val();
+ let newTitle = Ember.$('#worksheet-title').val();
let currentQuery = this.get('controller.model').get('query');
let selectedDb = this.get('controller.model').get('selectedDb');
@@ -652,7 +653,7 @@ export default Ember.Route.extend(UILoggerMixin, {
},
adjustPanelSize(){
- let isFullHeight = ($(window).height() ==(parseInt(Ember.$('.ember-light-table').css('height'), 10)) ) || false;
+ let isFullHeight = (Ember.$(window).height() ===(parseInt(Ember.$('.ember-light-table').css('height'), 10)) ) || false;
if(!isFullHeight){
Ember.$('.ember-light-table').css('height', '100vh');
}else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query/log.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query/log.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query/log.js
index 52f8dcc..2226680 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query/log.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query/log.js
@@ -60,7 +60,7 @@ export default Ember.Route.extend({
fetchLogs(model){
let logFile = model.get('logFile');
- return new Promise( (resolve, reject) => {
+ return new Ember.RSVP.Promise( (resolve, reject) => {
this.get('query').retrieveQueryLog(logFile).then(function(data) {
resolve(data.file.fileContent);
}, function(error){
@@ -70,7 +70,7 @@ export default Ember.Route.extend({
},
jobStatus(jobId){
- return new Promise( (resolve, reject) => {
+ return new Ember.RSVP.Promise( (resolve, reject) => {
this.get('jobs').waitForJobStatus(jobId).then(function(status) {
resolve(status);
}, function(error){
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js b/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js
index f3b27c8..e896348 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js
@@ -48,7 +48,7 @@ export default Ember.Route.extend(UILoggerMixin, {
record.destroyRecord().then(function(data) {
self.send('deleteSavedQueryDeclined');
self.send('refreshSavedQueryList');
- })
+ });
}, (error) => {
console.log('error', error);
});
@@ -70,7 +70,7 @@ export default Ember.Route.extend(UILoggerMixin, {
});
this.get('controller').set('savedQuerylist',savedQueryList);
- })
+ });
},
deleteSavedQueryDeclined(){
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/settings.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/settings.js b/contrib/views/hive20/src/main/resources/ui/app/routes/settings.js
index f45881b..5cd92c4 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/settings.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/settings.js
@@ -70,15 +70,15 @@ export default Ember.Route.extend(UILoggerMixin, {
}
}, err => {
this.get('logger').danger(`Failed to delete setting with key: '${setting.get('key')}`, this.extractError(err));
- })
+ });
},
updateAction(newSetting) {
newSetting.save().then(data => {
data.set('editMode', false);
}, error => {
- this.get('logger').danger(`Failed to update setting with key: '${setting.get('key')}`, this.extractError(error));
- })
+ this.get('logger').danger(`Failed to update setting with key: '${newSetting.get('key')}`, this.extractError(error));
+ });
},
cancelAction(newSetting) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
index fdb2cad..138e85f 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
@@ -64,7 +64,7 @@ export default Ember.Route.extend({
this.controllerFor('udfs').set('udflist',udfList);
this.transitionTo('udfs');
- })
+ });
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js b/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js
index fe1b596..36abf49 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/jobs.js
@@ -40,7 +40,7 @@ export default Ember.Service.extend({
}
resolve(status);
} else if (status === 'error') {
- reject(status)
+ reject(status);
} else {
resolve(this.waitForJobToComplete(jobId, after, fetchDummyResult));
}
@@ -65,7 +65,7 @@ export default Ember.Service.extend({
stopJob : function(jobId) {
return this.get('store').findRecord('job', jobId)
- .then(job => job.destroyRecord())
+ .then(job => job.destroyRecord());
},
_fetchDummyResult(jobId) {
@@ -73,6 +73,6 @@ export default Ember.Service.extend({
},
getJob: function (jobId) {
- return this.get('store').findRecord('job', jobId, {reload: true})
+ return this.get('store').findRecord('job', jobId, {reload: true});
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/services/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/query.js b/contrib/views/hive20/src/main/resources/ui/app/services/query.js
index 6860f4d..3c76d35 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/query.js
@@ -23,7 +23,7 @@ export default Ember.Service.extend({
store: Ember.inject.service(),
createJob(payload){
- return new Promise( (resolve, reject) => {
+ return new Ember.RSVP.Promise( (resolve, reject) => {
this.get('store').adapterFor('query').createJob(payload).then(function(data) {
resolve(data);
}, function(err) {
@@ -32,8 +32,7 @@ export default Ember.Service.extend({
});
},
getJob(jobId, firstCall){
- let self = this;
- return new Promise( (resolve, reject) => {
+ return new Ember.RSVP.Promise( (resolve, reject) => {
this.get('store').adapterFor('query').getJob(jobId, firstCall).then(function(data) {
resolve(data);
}, function(err) {
@@ -47,13 +46,11 @@ export default Ember.Service.extend({
},
downloadAsCsv(jobId, path){
- let self = this;
return this.get('store').adapterFor('job').downloadAsCsv(jobId, path);
},
retrieveQueryLog(logFile){
- let self = this;
- return new Promise( (resolve, reject) => {
+ return new Ember.RSVP.Promise( (resolve, reject) => {
this.get('store').adapterFor('query').retrieveQueryLog(logFile).then(function(data) {
resolve(data);
}, function(err) {
@@ -63,8 +60,7 @@ export default Ember.Service.extend({
},
getVisualExplainJson(jobId){
- let self = this;
- return new Promise( (resolve, reject) => {
+ return new Ember.RSVP.Promise( (resolve, reject) => {
this.get('store').adapterFor('query').getVisualExplainJson(jobId).then(function(data) {
resolve(data);
}, function(err) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js b/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js
index 2752375..4b4b29e 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js
@@ -24,40 +24,40 @@ export default Ember.Service.extend({
getAllQueries(){
let url = this.get('store').adapterFor('saved-query').buildURL();
- return $.ajax(url, 'GET')
+ return Ember.$.ajax(url, 'GET');
},
saveQuery(payload){
- return $.ajax({
+ return Ember.$.ajax({
type: "POST",
url: this.get('store').adapterFor('saved-query').buildURL() + '/savedQueries/',
data: JSON.stringify({savedQuery: payload}) ,
contentType:"application/json; charset=utf-8",
dataType:"json",
headers: {'X-Requested-By': 'ambari'}
- })
+ });
},
deleteSaveQuery(id){
let deletURL = this.get('store').adapterFor('saved-query').buildURL()+ '/savedQueries/' + id;
- return $.ajax({
+ return Ember.$.ajax({
type: "DELETE",
url: deletURL,
contentType:"application/json; charset=utf-8",
dataType:"json",
headers: {'X-Requested-By': 'ambari'}
- })
+ });
},
fetchSavedQuery(path) {
let url = this.get('store').adapterFor('application').buildURL()+ '/files/' + encodeURIComponent(path);
- return $.ajax({
+ return Ember.$.ajax({
type: "GET",
url: url,
headers: {'X-Requested-By': 'ambari'}
- })
+ });
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/services/service-check.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/service-check.js b/contrib/views/hive20/src/main/resources/ui/app/services/service-check.js
index 608cafe..a5a4755 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/service-check.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/service-check.js
@@ -104,7 +104,7 @@ export default Ember.Service.extend({
this.set(statusVar, STATUS.errored);
let finalData = (typeof errorFn === 'function') ? errorFn(err) : err;
reject(finalData);
- })
+ });
});
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/services/stats-service.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/stats-service.js b/contrib/views/hive20/src/main/resources/ui/app/services/stats-service.js
index bb3ed3e..620bf9b 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/stats-service.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/stats-service.js
@@ -34,7 +34,7 @@ export default Ember.Service.extend({
store: Ember.inject.service(),
generateStatistics(databaseName, tableName, withColumns = false) {
- return new Promise((resolve, reject) => {
+ return new Ember.RSVP.Promise((resolve, reject) => {
this.get('store').adapterFor('table').analyseTable(databaseName, tableName, withColumns).then((data) => {
this.get('store').pushPayload(data);
resolve(this.get('store').peekRecord('job', data.job.id));
@@ -45,7 +45,7 @@ export default Ember.Service.extend({
},
generateColumnStatistics(databaseName, tableName, columnName) {
- return new Promise((resolve, reject) => {
+ return new Ember.RSVP.Promise((resolve, reject) => {
this.get('store').adapterFor('table').generateColumnStats(databaseName, tableName, columnName).then((data) => {
this.get('store').pushPayload(data);
resolve(this.get('store').peekRecord('job', data.job.id));
@@ -56,7 +56,7 @@ export default Ember.Service.extend({
},
waitForStatsGenerationToComplete(job, fetchDummyResult = true) {
- return new Promise((resolve, reject) => {
+ return new Ember.RSVP.Promise((resolve, reject) => {
this.get('jobs').waitForJobToComplete(job.get('id'), 5 * 1000, fetchDummyResult).then((data) => {
resolve(job);
}, (err) => {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/services/table-operations.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/table-operations.js b/contrib/views/hive20/src/main/resources/ui/app/services/table-operations.js
index 2071317..c8de356 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/table-operations.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/table-operations.js
@@ -59,7 +59,7 @@ export default Ember.Service.extend({
detailedInfo: detailedInfo,
storageInfo: storageInfo
});
- return new Promise((resolve, reject) => {
+ return new Ember.RSVP.Promise((resolve, reject) => {
this.get('store').adapterFor('table').editTable(tableInfo).then((data) => {
this.get('store').pushPayload(data);
resolve(this.get('store').peekRecord('job', data.job.id));
@@ -77,40 +77,40 @@ export default Ember.Service.extend({
}, (err) => {
reject(err);
});
- })
+ });
},
renameTable(databaseName, newTableName, oldTableName ) {
- return new Promise((resolve, reject) => {
+ return new Ember.RSVP.Promise((resolve, reject) => {
this.get('store').adapterFor('table').renameTable(databaseName, newTableName, oldTableName).then((data) => {
this.get('store').pushPayload(data);
resolve(this.get('store').peekRecord('job', data.job.id));
}, (err) => {
reject(err);
});
- })
+ });
},
deleteDatabase(database) {
- return new Promise((resolve, reject) => {
+ return new Ember.RSVP.Promise((resolve, reject) => {
this.get('store').adapterFor('database').deleteDatabase(database.get('name')).then((data) => {
this.get('store').pushPayload(data);
resolve(this.get('store').peekRecord('job', data.job.id));
}, (err) => {
reject(err);
});
- })
+ });
},
createDatabase(database) {
- return new Promise((resolve, reject) => {
+ return new Ember.RSVP.Promise((resolve, reject) => {
this.get('store').adapterFor('database').createDatabase(database).then((data) => {
this.get('store').pushPayload(data);
resolve(this.get('store').peekRecord('job', data.job.id));
}, (err) => {
reject(err);
});
- })
+ });
},
waitForJobToComplete(jobId, after) {
@@ -123,7 +123,7 @@ export default Ember.Service.extend({
this._fetchDummyResult(jobId);
resolve();
} else if (status === 'error') {
- reject()
+ reject();
} else {
resolve(this.waitForJobToComplete(jobId, after));
}
@@ -215,7 +215,7 @@ export default Ember.Service.extend({
comment: column.get('comment'),
precision: column.get('precision'),
scale: column.get('scale')
- }
+ };
});
},
@@ -227,7 +227,7 @@ export default Ember.Service.extend({
comment: column.get('comment'),
precision: column.get('precision'),
scale: column.get('scale')
- }
+ };
});
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/services/udf.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/udf.js b/contrib/views/hive20/src/main/resources/ui/app/services/udf.js
index 915e3d0..bc9b349 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/udf.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/udf.js
@@ -23,54 +23,43 @@ export default Ember.Service.extend({
store: Ember.inject.service(),
getAllUdfs(){
- return $.ajax('/udfs', 'GET');
+ return Ember.$.ajax('/udfs', 'GET');
},
getFileResource(fileResourceId){
-
-
-
return this.get('store').findRecord('file-resource',fileResourceId);
- //return this.get('store').queryRecord('file-resource', { 'fileResource': fileResourceId })
-
- //let url = '/fileResources/' + fileResourceId;
- //return $.ajax( url , 'GET');
-
-
},
savefileResource(payload){
- return $.ajax({
+ return Ember.$.ajax({
type: "POST",
- //url: this.get('store').adapterFor('udf').fileResourceURL(),
url: '/fileResources',
data: JSON.stringify({fileResource: payload}) ,
contentType:"application/json; charset=utf-8",
headers: {'X-Requested-By': 'ambari'}
- })
+ });
},
saveUdf(payload){
- return $.ajax({
+ return Ember.$.ajax({
type: "POST",
- //url: this.get('store').adapterFor('udf').udfURL(),
url: '/udfs',
data: JSON.stringify({udf: payload}) ,
contentType:"application/json; charset=utf-8",
headers: {'X-Requested-By': 'ambari'}
- })
+ });
},
deleteUdf(udfId){
let deletURL = '/udfs/' + udfId;
- return $.ajax({
+ return Ember.$.ajax({
type: "DELETE",
url: deletURL,
contentType:"application/json; charset=utf-8",
dataType:"json",
headers: {'X-Requested-By': 'ambari'}
- })
+ });
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/templates/components/table-advanced-settings.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/table-advanced-settings.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/table-advanced-settings.hbs
index da1c0b4..7bcb939 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/components/table-advanced-settings.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/table-advanced-settings.hbs
@@ -68,15 +68,7 @@
<div class="col-md-6">
{{input type="text" class="form-control" value=settings.location}}
</div>
- <button class="btn btn-success" {{action "toggleDirectoryViewer"}}>Select HDFS Directory</button>
</div>
- {{#if showDirectoryViewer}}
- {{hdfs-viewer-modal
- showSelectedPath=true
- close="closeHdfsModal"
- selected="hdfsPathSelected"
- }}
- {{/if}}
</div>
{{/if}}
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/enhancer.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/enhancer.js b/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/enhancer.js
index a99b82e..b5cc2d4 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/enhancer.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/enhancer.js
@@ -31,7 +31,7 @@ function doEnhanceNode(node) {
function uuid() {
return 'operator-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
- const r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
+ const r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer-force.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer-force.js b/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer-force.js
index a73d1b2..1e4b9ee 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer-force.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer-force.js
@@ -70,7 +70,7 @@ export default function doRender(data, selector, onRequestDetail) {
.attr('data-operator', d => d._operator)
.attr('class', d => `operator__box operator__box--${d._operator.toString().replace(/[ ]/g, '_')}`)
.attr('height', d => d._operator === 'Fetch Operator' ? 150 : 55)
- .attr('width', 140)
+ .attr('width', 140);
nodes
.append('foreignObject')
@@ -202,9 +202,9 @@ function getOperatorIcon(operator) {
case 'Filter Operator':
return 'fa-filter';
case 'Dynamic Partitioning Event Operator':
- return 'fa-columns'
+ return 'fa-columns';
case 'Map Join Operator':
- return 'fa-code-fork'
+ return 'fa-code-fork';
case 'Limit':
case 'Group By Operator':
case 'Select Operator':
@@ -218,7 +218,7 @@ function getOperatorIcon(operator) {
function getIcon (type, subtype) {
switch(type) {
case 'join':
- return 'fa-code-fork'
+ return 'fa-code-fork';
case 'vectorization':
case 'job':
return;
@@ -231,7 +231,8 @@ function getIcon (type, subtype) {
case 'select':
return 'fa-table';
}
-};
+}
+
function abbreviate(value) {
let newValue = value;
if (value >= 1000) {
@@ -239,11 +240,11 @@ function abbreviate(value) {
const suffixNum = Math.floor(("" + value).length / 3);
let shortValue = '';
for (var precision = 2; precision >= 1; precision--) {
- shortValue = parseFloat( (suffixNum != 0 ? (value / Math.pow(1000,suffixNum) ) : value).toPrecision(precision));
+ shortValue = parseFloat( (suffixNum !== 0 ? (value / Math.pow(1000,suffixNum) ) : value).toPrecision(precision));
const dotLessShortValue = (shortValue + '').replace(/[^a-zA-Z 0-9]+/g,'');
if (dotLessShortValue.length <= 2) { break; }
}
- if (shortValue % 1 != 0) {
+ if (shortValue % 1 !== 0) {
const shortNum = shortValue.toFixed(1);
}
newValue = shortValue+suffixes[suffixNum];
@@ -269,7 +270,7 @@ function reset(zoom, svg, container) {
const height = Math.max(...bounds.map(cBound => cBound.bottom)) - top;
const midX = left + width / 2;
const midY = top + height / 2;
- if (width == 0 || height == 0){
+ if (width === 0 || height === 0){
// nothing to fit
return;
}
@@ -302,9 +303,9 @@ function getConnectionPath(pSource, pTarget) {
const offsetY = 0;
return path.reduce((accumulator, cPoint, index) => {
if(index === 0) {
- return accumulator + `M ${cPoint.x}, ${cPoint.y - offsetY}\n`
+ return accumulator + `M ${cPoint.x}, ${cPoint.y - offsetY}\n`;
} else {
- return accumulator + `L ${cPoint.x}, ${cPoint.y - offsetY}\n`
+ return accumulator + `L ${cPoint.x}, ${cPoint.y - offsetY}\n`;
}
}, '');
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer.js b/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer.js
index 1f6ba3c..b36d7b4 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/renderer.js
@@ -16,6 +16,9 @@
* limitations under the License.
*/
+
+import Ember from 'ember';
+
export default function doRender(data, selector, onRequestDetail, draggable) {
const width = '1570', height = '800';
@@ -117,7 +120,7 @@ function recurseC(children, onRequestDetail) {
.attr('data-operator', d => d._operator)
.attr('class', d => `operator__box operator__box--${d._operator.toString().replace(/[ ]/g, '_')}`)
.attr('height', d => d._operator === 'Fetch Operator' ? 150 : 55)
- .attr('width', 140)
+ .attr('width', 140);
children
.append('foreignObject')
@@ -204,9 +207,9 @@ function getOperatorIcon(operator) {
case 'Filter Operator':
return 'fa-filter';
case 'Dynamic Partitioning Event Operator':
- return 'fa-columns'
+ return 'fa-columns';
case 'Map Join Operator':
- return 'fa-code-fork'
+ return 'fa-code-fork';
case 'Limit':
case 'Group By Operator':
case 'Select Operator':
@@ -220,7 +223,7 @@ function getOperatorIcon(operator) {
function getIcon (type, subtype) {
switch(type) {
case 'join':
- return 'fa-code-fork'
+ return 'fa-code-fork';
case 'vectorization':
case 'job':
return;
@@ -233,7 +236,8 @@ function getIcon (type, subtype) {
case 'select':
return 'fa-table';
}
-};
+}
+
function abbreviate(value) {
let newValue = value;
if (value >= 1000) {
@@ -241,11 +245,11 @@ function abbreviate(value) {
const suffixNum = Math.floor(("" + value).length / 3);
let shortValue = '';
for (var precision = 2; precision >= 1; precision--) {
- shortValue = parseFloat( (suffixNum != 0 ? (value / Math.pow(1000,suffixNum) ) : value).toPrecision(precision));
+ shortValue = parseFloat( (suffixNum !== 0 ? (value / Math.pow(1000,suffixNum) ) : value).toPrecision(precision));
const dotLessShortValue = (shortValue + '').replace(/[^a-zA-Z 0-9]+/g,'');
if (dotLessShortValue.length <= 2) { break; }
}
- if (shortValue % 1 != 0) {
+ if (shortValue % 1 !== 0) {
const shortNum = shortValue.toFixed(1);
}
newValue = shortValue+suffixes[suffixNum];
@@ -271,7 +275,7 @@ function reset(zoom, svg, container) {
const height = Math.max(...bounds.map(cBound => cBound.bottom)) - top;
const midX = left + width / 2;
const midY = top + height / 2;
- if (width == 0 || height == 0){
+ if (width === 0 || height === 0){
// nothing to fit
return;
}
@@ -291,10 +295,10 @@ function getConnectionPathFF(connector, svg, container) {
const target = container.select(`#${connector._target._uuid}`).node();
const rSource = d3.select(source).data()[0];
const rTarget = d3.select(target).data()[0];
- const rSourceVertex = d3.select($(source).closest('.vertex').get(0)).data()[0];
- const rTargetVertex = d3.select($(target).closest('.vertex').get(0)).data()[0];
+ const rSourceVertex = d3.select(Ember.$(source).closest('.vertex').get(0)).data()[0];
+ const rTargetVertex = d3.select(Ember.$(target).closest('.vertex').get(0)).data()[0];
- const offsetBox = $(container.node()).children('.vertex').get(0).getBoundingClientRect();
+ const offsetBox = Ember.$(container.node()).children('.vertex').get(0).getBoundingClientRect();
const pSource = {
@@ -322,9 +326,9 @@ function getConnectionPathFF(connector, svg, container) {
const offsetY = svg.node().getBoundingClientRect().top;
return path.reduce((accumulator, cPoint, index) => {
if(index === 0) {
- return accumulator + `M ${cPoint.x}, ${cPoint.y - offsetY}\n`
+ return accumulator + `M ${cPoint.x}, ${cPoint.y - offsetY}\n`;
} else {
- return accumulator + `L ${cPoint.x}, ${cPoint.y - offsetY}\n`
+ return accumulator + `L ${cPoint.x}, ${cPoint.y - offsetY}\n`;
}
}, '');
}
@@ -361,9 +365,9 @@ function getConnectionPath(connector, svg, container){
const offsetY = svg.node().getBoundingClientRect().top;
return path.reduce((accumulator, cPoint, index) => {
if(index === 0) {
- return accumulator + `M ${cPoint.x}, ${cPoint.y - offsetY}\n`
+ return accumulator + `M ${cPoint.x}, ${cPoint.y - offsetY}\n`;
} else {
- return accumulator + `L ${cPoint.x}, ${cPoint.y - offsetY}\n`
+ return accumulator + `L ${cPoint.x}, ${cPoint.y - offsetY}\n`;
}
}, '');
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3bc3d686/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/transformer.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/transformer.js b/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/transformer.js
index 4a7df10..d88de98 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/transformer.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/utils/hive-explainer/transformer.js
@@ -79,14 +79,14 @@ function doGetChildrenWithIndexX(children, cIndex) {
return children.map(cChild => Object.assign({}, cChild, {
_indexX: cIndex,
_children: doGetChildrenWithIndexX(cChild._children, cIndex + 1)
- }))
+ }));
}
function doGetChildrenWithIndexY(children, cIndex) {
return children.map((cChild, index) => Object.assign({}, cChild, {
_indexY: cIndex + index,
_children: doGetChildrenWithIndexY(cChild._children, cIndex + index)
- }))
+ }));
}
function getTezPlan(data) {
@@ -133,7 +133,7 @@ function getEdgesWithFetch(tezEdges, vertices) {
.filter(cEdge => tezEdges.every(tcEdge => cEdge._target !== tcEdge._source))
.map(cRootEdge => cRootEdge._target);
- const uniqueRootKeys = [...new Set(rootKeys)]
+ const uniqueRootKeys = [...new Set(rootKeys)];
const fetchVertex = vertices.find(cVertex => cVertex._vertex === 'Fetch');
@@ -180,7 +180,7 @@ function getFetchVertex(plan) {
_operator: 'Fetch Operator',
_children: []
})
- ]
+ ];
}
return vertex;
@@ -436,7 +436,7 @@ function getConnections(vertices, edges) {
_source: cOperator,
_target: targetOperator,
});
- })
+ });
});
return connections;
[11/50] [abbrv] ambari git commit: Revert "AMBARI-20308 - Atlas
service check fails during EU on wire encrypted cluster (jonathanhurley)"
Posted by ol...@apache.org.
Revert "AMBARI-20308 - Atlas service check fails during EU on wire encrypted cluster (jonathanhurley)"
This reverts commit d8901e26c3f5cf45011d700cb44d73ea67c86d20.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e19f57e8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e19f57e8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e19f57e8
Branch: refs/heads/branch-dev-logsearch
Commit: e19f57e83c387c21109dfe4bda0e0e146db2e60e
Parents: d8901e2
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Mon Mar 6 14:19:44 2017 -0500
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Mon Mar 6 14:19:44 2017 -0500
----------------------------------------------------------------------
.../configuration/application-properties.xml | 42 --------------------
.../stacks/HDP/2.5/upgrades/config-upgrade.xml | 12 ------
.../HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml | 16 +++-----
.../HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml | 6 ---
.../stacks/HDP/2.5/upgrades/upgrade-2.5.xml | 6 ---
.../stacks/HDP/2.5/upgrades/upgrade-2.6.xml | 1 -
.../configuration/application-properties.xml | 3 +-
7 files changed, 7 insertions(+), 79 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e19f57e8/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
deleted file mode 100644
index 366ecf6..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-/**
- * 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.
- */
--->
-<configuration supports_final="false">
-
- <!-- Supported in HDP 2.5.4 -->
- <property>
- <name>atlas.ssl.exclude.protocols</name>
- <display-name>Excluded Wire Encryption Protocols</display-name>
- <value>TLSv1.2</value>
- <value-attributes>
- <empty-value-valid>true</empty-value-valid>
- </value-attributes>
- <description>A comma-separate list of the wire encryption protocols to exclude when TLS is enabled. Some versions of cURL do not work with TLSv1.2.</description>
- <used-by>
- <property>
- <type>application-properties</type>
- <name>atlas.enableTLS</name>
- </property>
- </used-by>
- <on-ambari-upgrade add="false"/>
- </property>
-
-</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e19f57e8/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
index 37f2a82..93e0149 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
@@ -136,18 +136,6 @@
</changes>
</component>
</service>
-
- <service name="ATLAS">
- <component name="ATLAS_SERVER">
- <changes>
- <definition xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol" summary="Excluding TLS v1.2 Protocol">
- <type>application-properties</type>
- <set key="atlas.ssl.exclude.protocols" value="TLSv1.2" if-type="application-properties" if-key="atlas.ssl.exclude.protocols" if-key-state="absent"/>
- </definition>
- </changes>
- </component>
- </service>
-
<service name="OOZIE">
<component name="OOZIE_SERVER">
<changes>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e19f57e8/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
index e7ada04..5b37375 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
@@ -75,7 +75,7 @@
<service name="FLUME">
<component>FLUME_HANDLER</component>
</service>
-
+
<service name="ACCUMULO">
<component>ACCUMULO_TRACER</component>
<component>ACCUMULO_GC</component>
@@ -300,12 +300,6 @@
<execute-stage service="STORM" component="NIMBUS" title="Apply config changes for Nimbus">
<task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/>
</execute-stage>
-
- <execute-stage service="ATLAS" component="ATLAS_SERVER" title="Updating Atlas TLS Exclude Protocols">
- <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol">
- <summary>Updating Atlas TLS Exclude Protocols to exclude TLS v1.2</summary>
- </task>
- </execute-stage>
</group>
<!--
@@ -335,7 +329,7 @@
</task>
</execute-stage>
</group>
-
+
<!-- Now, restart all of the services. -->
<group xsi:type="restart" name="ZOOKEEPER" title="ZooKeeper">
<service-check>false</service-check>
@@ -677,7 +671,7 @@
<component>FLUME_HANDLER</component>
</service>
</group>
-
+
<group xsi:type="restart" name="ACCUMULO" title="Accumulo">
<service-check>false</service-check>
<skippable>true</skippable>
@@ -706,7 +700,7 @@
<group xsi:type="cluster" name="FINALIZE_PRE_CHECK" title="Finalize {{direction.text.proper}} Pre-Check">
<direction>UPGRADE</direction>
-
+
<execute-stage title="Check Component Versions">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.ComponentVersionCheckAction" />
</execute-stage>
@@ -776,7 +770,7 @@
<function>setup_ranger_java_patches</function>
</task>
</pre-upgrade>
-
+
<pre-downgrade copy-upgrade="true" />
<upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e19f57e8/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
index fe297c3..55e8924 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
@@ -431,12 +431,6 @@
<summary>Updating the Atlas Log4J properties to include parameterizations</summary>
</task>
</execute-stage>
-
- <execute-stage service="ATLAS" component="ATLAS_SERVER" title="Updating Atlas TLS Exclude Protocols">
- <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol">
- <summary>Updating Atlas TLS Exclude Protocols to exclude TLS v1.2</summary>
- </task>
- </execute-stage>
<!--KAFKA-->
<execute-stage service="KAFKA" component="KAFKA_BROKER" title="Parameterizing Kafka Log4J Properties">
http://git-wip-us.apache.org/repos/asf/ambari/blob/e19f57e8/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
index a030adb..15e5536 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
@@ -934,12 +934,6 @@
<service name="ATLAS">
<component name="ATLAS_SERVER">
- <pre-upgrade>
- <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol"/>
- </pre-upgrade>
-
- <pre-downgrade/>
-
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e19f57e8/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
index 97313b5..0c0b08e 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
@@ -1066,7 +1066,6 @@
<component name="ATLAS_SERVER">
<pre-upgrade>
<task xsi:type="configure" id="atlas_log4j_parameterize" />
- <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol"/>
</pre-upgrade>
<pre-downgrade />
<upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/e19f57e8/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
index 91de1b0..47e1fb5 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
@@ -60,7 +60,7 @@
<on-ambari-upgrade add="true"/>
</property>
- <property>
+ <property>
<name>atlas.sso.knox.browser.useragent</name>
<value/>
<description/>
@@ -92,4 +92,5 @@
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
+
</configuration>
[06/50] [abbrv] ambari git commit: AMBARI-20318. ulimit config
missing for storm service (aonishuk)
Posted by ol...@apache.org.
AMBARI-20318. ulimit config missing for storm service (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b9d19962
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b9d19962
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b9d19962
Branch: refs/heads/branch-dev-logsearch
Commit: b9d199620a2691eff72497b3c02459d31e05eb08
Parents: b2f560a
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Mar 6 16:13:55 2017 +0200
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Mar 6 16:13:55 2017 +0200
----------------------------------------------------------------------
.../STORM/0.9.1/package/scripts/params_linux.py | 2 ++
.../STORM/0.9.1/package/scripts/storm.py | 7 +++++++
.../src/test/python/stacks/2.1/STORM/test_storm_base.py | 12 ++++++++++++
3 files changed, 21 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9d19962/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py
index a176456..5d8a5f3 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py
@@ -49,6 +49,8 @@ tmp_dir = Script.get_tmp_dir()
stack_root = status_params.stack_root
sudo = AMBARI_SUDO_BINARY
+limits_conf_dir = "/etc/security/limits.d"
+
# Needed since this is an Atlas Hook service.
cluster_name = config['clusterName']
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9d19962/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/storm.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/storm.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/storm.py
index f02ced4..99579d2 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/storm.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/storm.py
@@ -79,6 +79,13 @@ def storm(name=None):
cd_access="a",
)
+ File(format("{limits_conf_dir}/storm.conf"),
+ owner='root',
+ group='root',
+ mode=0644,
+ content=Template("storm.conf.j2")
+ )
+
File(format("{conf_dir}/config.yaml"),
content=Template("config.yaml.j2"),
owner=params.storm_user,
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9d19962/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py b/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
index f3cac14..f2e05be 100644
--- a/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
+++ b/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_base.py
@@ -56,6 +56,12 @@ class TestStormBase(RMFTestCase):
create_parents = True,
cd_access='a'
)
+ self.assertResourceCalled('File', '/etc/security/limits.d/storm.conf',
+ content = Template('storm.conf.j2'),
+ owner = 'root',
+ group = 'root',
+ mode = 0644,
+ )
self.assertResourceCalled('File', confDir + '/config.yaml',
owner = 'storm',
content = Template('config.yaml.j2'),
@@ -100,6 +106,12 @@ class TestStormBase(RMFTestCase):
create_parents = True,
cd_access='a'
)
+ self.assertResourceCalled('File', '/etc/security/limits.d/storm.conf',
+ content = Template('storm.conf.j2'),
+ owner = 'root',
+ group = 'root',
+ mode = 0644,
+ )
self.assertResourceCalled('File', confDir + '/config.yaml',
owner = 'storm',
content = Template('config.yaml.j2'),
[24/50] [abbrv] ambari git commit: AMBARI-20345 - Alert Event
Publisher Executor Doesn't Scale Threads (jonathanhurley)
Posted by ol...@apache.org.
AMBARI-20345 - Alert Event Publisher Executor Doesn't Scale Threads (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/07a30a12
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/07a30a12
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/07a30a12
Branch: refs/heads/branch-dev-logsearch
Commit: 07a30a12b6b7b091e735f9688ebc6934d4b9cf23
Parents: dff7754
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Tue Mar 7 11:59:13 2017 -0500
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Tue Mar 7 14:43:11 2017 -0500
----------------------------------------------------------------------
ambari-server/docs/configuration/index.md | 12 +-
.../server/configuration/Configuration.java | 134 +++++++++++++------
.../events/publishers/AlertEventPublisher.java | 21 +--
.../internal/AlertResourceProviderTest.java | 4 +-
.../server/orm/dao/AlertsDAOCachedTest.java | 6 +-
.../services/CachedAlertFlushServiceTest.java | 7 +-
6 files changed, 126 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/07a30a12/ambari-server/docs/configuration/index.md
----------------------------------------------------------------------
diff --git a/ambari-server/docs/configuration/index.md b/ambari-server/docs/configuration/index.md
index 58eb7c7..f836fc9 100644
--- a/ambari-server/docs/configuration/index.md
+++ b/ambari-server/docs/configuration/index.md
@@ -54,7 +54,9 @@ The following are the properties which can be used to configure Ambari.
| alerts.cache.enabled | Determines whether current alerts should be cached. Enabling this can increase performance on large cluster, but can also result in lost alert data if the cache is not flushed frequently. |`false` |
| alerts.cache.flush.interval | The time, in minutes, after which cached alert information is flushed to the database<br/><br/> This property is related to `alerts.cache.enabled`. |`10` |
| alerts.cache.size | The size of the alert cache.<br/><br/> This property is related to `alerts.cache.enabled`. |`50000` |
-| alerts.execution.scheduler.maxThreads | The number of threads used to handle alerts received from the Ambari Agents. The value should be increased as the size of the cluster increases. |`2` |
+| alerts.execution.scheduler.threadpool.size.core | The core number of threads used to process incoming alert events. The value should be increased as the size of the cluster increases. |`2` |
+| alerts.execution.scheduler.threadpool.size.max | The number of threads used to handle alerts received from the Ambari Agents. The value should be increased as the size of the cluster increases. |`2` |
+| alerts.execution.scheduler.threadpool.worker.size | The number of queued alerts allowed before discarding old alerts which have not been handled. The value should be increased as the size of the cluster increases. |`2000` |
| alerts.snmp.dispatcher.udp.port | The UDP port to use when binding the SNMP dispatcher on Ambari Server startup. If no port is specified, then a random port will be used. | |
| alerts.template.file | The full path to the XML file that describes the different alert templates. | |
| ambari.display.url | The URL to use when creating messages which should include the Ambari Server URL.<br/><br/>The following are examples of valid values:<ul><li>`http://ambari.apache.org:8080`</ul> | |
@@ -244,8 +246,8 @@ The following are the properties which can be used to configure Ambari.
| server.property-provider.threadpool.size.core | The core number of threads that will be used to retrieve data from federated datasources, such as remote JMX endpoints. |`16` |
| server.property-provider.threadpool.size.max | The maximum number of threads that will be used to retrieve data from federated datasources, such as remote JMX endpoints. |`32` |
| server.property-provider.threadpool.worker.size | The maximum size of pending federated datasource requests, such as those to JMX endpoints, which can be queued before rejecting new requests. |`2147483647` |
-| server.script.threads | The number of threads that should be allocated to run external script. |`4` |
-| server.script.timeout | The time, in milliseconds, until an external script is killed. |`5000` |
+| server.script.threads | The number of threads that should be allocated to run external script. |`20` |
+| server.script.timeout | The time, in milliseconds, until an external script is killed. |`10000` |
| server.stage.command.execution_type | How to execute commands in one stage |`STAGE` |
| server.stages.parallel | Determines whether operations in different execution requests can be run concurrently. |`true` |
| server.startup.web.timeout | The time, in seconds, that the ambari-server Python script will wait for Jetty to startup before returning an error code. |`50` |
@@ -303,7 +305,9 @@ As the size of a cluster grows, some of the default property values may no longe
####Alerts & Notifications
| Property Name | 10 Hosts | ~50 Hosts | ~100 Hosts | 500+ Hosts |
| --- | --- | --- | --- | --- |
-| alerts.execution.scheduler.maxThreads | 2 | 2 | 4 | 4 |
+| alerts.execution.scheduler.threadpool.size.core | 2 | 2 | 4 | 4 |
+| alerts.execution.scheduler.threadpool.size.max | 2 | 2 | 8 | 8 |
+| alerts.execution.scheduler.threadpool.worker.size | 400 | 2000 | 4000 | 20000 |
| alerts.cache.enabled | false | false | false | true |
| alerts.cache.flush.interval | 10 | 10 | 10 | 10 |
| alerts.cache.size | 50000 | 50000 | 100000 | 100000 |
http://git-wip-us.apache.org/repos/asf/ambari/blob/07a30a12/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index cfb4d3d..405251e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -17,16 +17,36 @@
*/
package org.apache.ambari.server.configuration;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import com.google.gson.JsonPrimitive;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Writer;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.reflect.Field;
+import java.security.cert.CertificateException;
+import java.security.interfaces.RSAPublicKey;
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
import org.apache.ambari.annotations.Experimental;
import org.apache.ambari.annotations.ExperimentalFeature;
import org.apache.ambari.annotations.Markdown;
@@ -35,6 +55,7 @@ import org.apache.ambari.server.actionmanager.CommandExecutionType;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.actionmanager.Stage;
import org.apache.ambari.server.controller.spi.PropertyProvider;
+import org.apache.ambari.server.controller.utilities.ScalingThreadPoolExecutor;
import org.apache.ambari.server.events.listeners.alerts.AlertReceivedListener;
import org.apache.ambari.server.orm.JPATableGenerationStrategy;
import org.apache.ambari.server.orm.PersistenceType;
@@ -70,34 +91,16 @@ import org.apache.commons.lang.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Writer;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.lang.reflect.Field;
-import java.security.cert.CertificateException;
-import java.security.interfaces.RSAPublicKey;
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Sets;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
/**
* The {@link Configuration} class is used to read from the
@@ -2206,7 +2209,7 @@ public class Configuration {
"alerts.template.file", null);
/**
- * The maximum number of threads which will handle published alert events.
+ * The core number of threads which will handle published alert events.
*/
@ConfigurationMarkdown(
group = ConfigurationGrouping.ALERTS,
@@ -2216,9 +2219,40 @@ public class Configuration {
@ClusterScale(clusterSize = ClusterSizeType.HOSTS_100, value = "4"),
@ClusterScale(clusterSize = ClusterSizeType.HOSTS_500, value = "4") },
markdown = @Markdown(
+ description = "The core number of threads used to process incoming alert events. The value should be increased as the size of the cluster increases."))
+ public static final ConfigurationProperty<Integer> ALERTS_EXECUTION_SCHEDULER_THREADS_CORE_SIZE = new ConfigurationProperty<>(
+ "alerts.execution.scheduler.threadpool.size.core", 2);
+
+ /**
+ * The maximum number of threads which will handle published alert events.
+ */
+ @ConfigurationMarkdown(
+ group = ConfigurationGrouping.ALERTS,
+ scaleValues = {
+ @ClusterScale(clusterSize = ClusterSizeType.HOSTS_10, value = "2"),
+ @ClusterScale(clusterSize = ClusterSizeType.HOSTS_50, value = "2"),
+ @ClusterScale(clusterSize = ClusterSizeType.HOSTS_100, value = "8"),
+ @ClusterScale(clusterSize = ClusterSizeType.HOSTS_500, value = "8") },
+ markdown = @Markdown(
description = "The number of threads used to handle alerts received from the Ambari Agents. The value should be increased as the size of the cluster increases."))
- public static final ConfigurationProperty<Integer> ALERTS_EXECUTION_SCHEDULER_THREADS = new ConfigurationProperty<>(
- "alerts.execution.scheduler.maxThreads", 2);
+ public static final ConfigurationProperty<Integer> ALERTS_EXECUTION_SCHEDULER_THREADS_MAX_SIZE = new ConfigurationProperty<>(
+ "alerts.execution.scheduler.threadpool.size.max", 2);
+
+ /**
+ * The size of the {@link BlockingQueue} used to control the
+ * {@link ScalingThreadPoolExecutor} when handling incoming alert events.
+ */
+ @ConfigurationMarkdown(
+ group = ConfigurationGrouping.ALERTS,
+ scaleValues = {
+ @ClusterScale(clusterSize = ClusterSizeType.HOSTS_10, value = "400"),
+ @ClusterScale(clusterSize = ClusterSizeType.HOSTS_50, value = "2000"),
+ @ClusterScale(clusterSize = ClusterSizeType.HOSTS_100, value = "4000"),
+ @ClusterScale(clusterSize = ClusterSizeType.HOSTS_500, value = "20000") },
+ markdown = @Markdown(
+ description = "The number of queued alerts allowed before discarding old alerts which have not been handled. The value should be increased as the size of the cluster increases."))
+ public static final ConfigurationProperty<Integer> ALERTS_EXECUTION_SCHEDULER_WORKER_QUEUE_SIZE = new ConfigurationProperty<>(
+ "alerts.execution.scheduler.threadpool.worker.size", 2000);
/**
* If {@code true} then alert information is cached and not immediately
@@ -4511,10 +4545,24 @@ public class Configuration {
}
/**
+ * @return core thread pool size for AlertEventPublisher, default 2
+ */
+ public int getAlertEventPublisherCorePoolSize() {
+ return Integer.parseInt(getProperty(ALERTS_EXECUTION_SCHEDULER_THREADS_CORE_SIZE));
+ }
+
+ /**
* @return max thread pool size for AlertEventPublisher, default 2
*/
- public int getAlertEventPublisherPoolSize() {
- return Integer.parseInt(getProperty(ALERTS_EXECUTION_SCHEDULER_THREADS));
+ public int getAlertEventPublisherMaxPoolSize() {
+ return Integer.parseInt(getProperty(ALERTS_EXECUTION_SCHEDULER_THREADS_MAX_SIZE));
+ }
+
+ /**
+ * @return the size of the queue for unhandled alert events
+ */
+ public int getAlertEventPublisherWorkerQueueSize() {
+ return Integer.parseInt(getProperty(ALERTS_EXECUTION_SCHEDULER_WORKER_QUEUE_SIZE));
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/07a30a12/ambari-server/src/main/java/org/apache/ambari/server/events/publishers/AlertEventPublisher.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/publishers/AlertEventPublisher.java b/ambari-server/src/main/java/org/apache/ambari/server/events/publishers/AlertEventPublisher.java
index 5427a7b..78d5df6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/publishers/AlertEventPublisher.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/publishers/AlertEventPublisher.java
@@ -17,7 +17,6 @@
*/
package org.apache.ambari.server.events.publishers;
-import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -25,6 +24,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import com.google.inject.Inject;
import org.apache.ambari.server.configuration.Configuration;
+import org.apache.ambari.server.controller.utilities.ScalingThreadPoolExecutor;
import org.apache.ambari.server.events.AlertEvent;
import com.google.common.eventbus.AsyncEventBus;
@@ -53,13 +53,18 @@ public final class AlertEventPublisher {
*/
@Inject
public AlertEventPublisher(Configuration config) {
- // create a fixed executor that is unbounded for now and will run rejected
- // requests in the calling thread to prevent loss of alert handling
- int poolsize = config.getAlertEventPublisherPoolSize();
- ThreadPoolExecutor executor = new ThreadPoolExecutor(2, poolsize, 0L,
- TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(),
- new AlertEventBusThreadFactory(),
- new ThreadPoolExecutor.CallerRunsPolicy());
+ // create an executor which will scale with the number of queued work items
+ // when handling incoming alerts
+ int corePoolSize = config.getAlertEventPublisherCorePoolSize();
+ int maxPoolSize = config.getAlertEventPublisherMaxPoolSize();
+ int workerQueueSize = config.getAlertEventPublisherWorkerQueueSize();
+
+ ThreadPoolExecutor executor = new ScalingThreadPoolExecutor(corePoolSize, maxPoolSize, 0L,
+ TimeUnit.SECONDS, workerQueueSize);
+
+ executor.allowCoreThreadTimeOut(false);
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
+ executor.setThreadFactory(new AlertEventBusThreadFactory());
m_eventBus = new AsyncEventBus(executor);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/07a30a12/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java
index 25b9821..f1c5c35 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java
@@ -737,7 +737,9 @@ public class AlertResourceProviderTest {
expect(configuration.getDatabaseDriver()).andReturn(JDBC_IN_MEMORY_DRIVER).anyTimes();
expect(configuration.getDatabaseUser()).andReturn("sa").anyTimes();
expect(configuration.getDatabasePassword()).andReturn("").anyTimes();
- expect(configuration.getAlertEventPublisherPoolSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_THREADS.getDefaultValue())).anyTimes();
+ expect(configuration.getAlertEventPublisherCorePoolSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_THREADS_CORE_SIZE.getDefaultValue())).anyTimes();
+ expect(configuration.getAlertEventPublisherMaxPoolSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_THREADS_MAX_SIZE.getDefaultValue())).anyTimes();
+ expect(configuration.getAlertEventPublisherWorkerQueueSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_WORKER_QUEUE_SIZE.getDefaultValue())).anyTimes();
expect(configuration.getMasterKeyLocation()).andReturn(new File("/test")).anyTimes();
expect(configuration.getTemporaryKeyStoreRetentionMinutes()).andReturn(2l).anyTimes();
expect(configuration.isActivelyPurgeTemporaryKeyStore()).andReturn(true).anyTimes();
http://git-wip-us.apache.org/repos/asf/ambari/blob/07a30a12/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java
index 02d942a..f47a997 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java
@@ -17,6 +17,8 @@
*/
package org.apache.ambari.server.orm.dao;
+import static org.easymock.EasyMock.expect;
+
import java.util.List;
import javax.persistence.EntityManager;
@@ -274,7 +276,9 @@ public class AlertsDAOCachedTest {
// required for since the configuration is being mocked
Configuration configuration = EasyMock.createNiceMock(Configuration.class);
- EasyMock.expect(configuration.getAlertEventPublisherPoolSize()).andReturn(2).anyTimes();
+ EasyMock.expect(configuration.getAlertEventPublisherCorePoolSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_THREADS_CORE_SIZE.getDefaultValue())).anyTimes();
+ EasyMock.expect(configuration.getAlertEventPublisherMaxPoolSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_THREADS_MAX_SIZE.getDefaultValue())).anyTimes();
+ EasyMock.expect(configuration.getAlertEventPublisherWorkerQueueSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_WORKER_QUEUE_SIZE.getDefaultValue())).anyTimes();
EasyMock.expect(configuration.isAlertCacheEnabled()).andReturn(Boolean.TRUE).anyTimes();
EasyMock.expect(configuration.getAlertCacheSize()).andReturn(100).anyTimes();
EasyMock.replay(configuration);
http://git-wip-us.apache.org/repos/asf/ambari/blob/07a30a12/ambari-server/src/test/java/org/apache/ambari/server/state/services/CachedAlertFlushServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/services/CachedAlertFlushServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/services/CachedAlertFlushServiceTest.java
index 0ad67d0..992c7c4 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/services/CachedAlertFlushServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/services/CachedAlertFlushServiceTest.java
@@ -17,6 +17,8 @@
*/
package org.apache.ambari.server.state.services;
+import static org.easymock.EasyMock.expect;
+
import javax.persistence.EntityManager;
import org.apache.ambari.server.configuration.Configuration;
@@ -123,7 +125,10 @@ public class CachedAlertFlushServiceTest extends EasyMockSupport {
// required for since the configuration is being mocked
Configuration configuration = createNiceMock(Configuration.class);
- EasyMock.expect(configuration.getAlertEventPublisherPoolSize()).andReturn(2).anyTimes();
+ expect(configuration.getAlertEventPublisherCorePoolSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_THREADS_CORE_SIZE.getDefaultValue())).anyTimes();
+ expect(configuration.getAlertEventPublisherMaxPoolSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_THREADS_MAX_SIZE.getDefaultValue())).anyTimes();
+ expect(configuration.getAlertEventPublisherWorkerQueueSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_WORKER_QUEUE_SIZE.getDefaultValue())).anyTimes();
+
EasyMock.replay(configuration);
[44/50] [abbrv] ambari git commit: AMBARI-20373. Complete button
after move masters is grayed out even after move has completed (akovalenko)
Posted by ol...@apache.org.
AMBARI-20373. Complete button after move masters is grayed out even after move has completed (akovalenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4534e0a5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4534e0a5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4534e0a5
Branch: refs/heads/branch-dev-logsearch
Commit: 4534e0a5aa91f34b44ac32e492cc960d91c07046
Parents: c52027c
Author: Aleksandr Kovalenko <ak...@hortonworks.com>
Authored: Thu Mar 9 13:14:53 2017 +0200
Committer: Aleksandr Kovalenko <ak...@hortonworks.com>
Committed: Thu Mar 9 16:25:57 2017 +0200
----------------------------------------------------------------------
ambari-web/app/routes/reassign_master_routes.js | 33 ++++++++------------
1 file changed, 13 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/4534e0a5/ambari-web/app/routes/reassign_master_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/reassign_master_routes.js b/ambari-web/app/routes/reassign_master_routes.js
index d5cbadb..9bc7d06 100644
--- a/ambari-web/app/routes/reassign_master_routes.js
+++ b/ambari-web/app/routes/reassign_master_routes.js
@@ -292,22 +292,21 @@ module.exports = App.WizardRoute.extend({
next: function (router) {
var controller = router.get('reassignMasterController');
- var reassignMasterWizardStep6 = router.get('reassignMasterWizardStep6Controller');
- if (!reassignMasterWizardStep6.get('isSubmitDisabled')) {
- controller.finish();
- controller.get('popup').hide();
- App.clusterStatus.setClusterStatus({
- clusterName: router.get('reassignMasterController.content.cluster.name'),
- clusterState: 'DEFAULT',
- localdb: App.db.data
- }, {alwaysCallback: function () {
+ controller.finish();
+ controller.get('popup').hide();
+ App.clusterStatus.setClusterStatus({
+ clusterName: router.get('reassignMasterController.content.cluster.name'),
+ clusterState: 'DEFAULT',
+ localdb: App.db.data
+ }, {
+ alwaysCallback: function () {
controller.get('popup').hide();
router.transitionTo('main.index');
- Em.run.next(function() {
+ Em.run.next(function () {
location.reload();
});
- }});
- }
+ }
+ });
},
unroutePath: function () {
@@ -331,18 +330,12 @@ module.exports = App.WizardRoute.extend({
next: function (router) {
var controller = router.get('reassignMasterController');
- var reassignMasterWizardStep7 = router.get('reassignMasterWizardStep7Controller');
- if (!reassignMasterWizardStep7.get('isSubmitDisabled')) {
- controller.resetOnClose(controller, 'main.index');
- }
+ controller.resetOnClose(controller, 'main.index');
},
complete: function (router) {
var controller = router.get('reassignMasterController');
- var reassignMasterWizardStep7 = router.get('reassignMasterWizardStep7Controller');
- if (!reassignMasterWizardStep7.get('isSubmitDisabled')) {
- controller.resetOnClose(controller, 'main.index');
- }
+ controller.resetOnClose(controller, 'main.index');
},
unroutePath: function () {
[14/50] [abbrv] ambari git commit: AMBARI-20317. Update stack advisor
logic for getting enable atlas hook flag value (Mugdha Varadkar via smohanty)
Posted by ol...@apache.org.
AMBARI-20317. Update stack advisor logic for getting enable atlas hook flag value (Mugdha Varadkar via smohanty)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1b8b91dc
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1b8b91dc
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1b8b91dc
Branch: refs/heads/branch-dev-logsearch
Commit: 1b8b91dc87a0694cb7b3aa3a55829a90b202bb35
Parents: 23bd418
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Mon Mar 6 11:30:05 2017 -0800
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Mon Mar 6 11:53:04 2017 -0800
----------------------------------------------------------------------
.../1.4.4.2.0/configuration/sqoop-site.xml | 4 +++
.../stacks/HDP/2.3/services/stack_advisor.py | 31 ++++++++++----------
2 files changed, 19 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/1b8b91dc/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-site.xml b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-site.xml
index 5d87c4d..5c9804b 100644
--- a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-site.xml
+++ b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-site.xml
@@ -40,6 +40,10 @@
<type>sqoop-env</type>
<name>sqoop.atlas.hook</name>
</property>
+ <property>
+ <type>application-properties</type>
+ <name>atlas.rest.address</name>
+ </property>
</depends-on>
</property>
</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/1b8b91dc/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
index f18bfe9..6d0ce38 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
@@ -257,7 +257,6 @@ class HDP23StackAdvisor(HDP22StackAdvisor):
else:
hooks_value = ""
-
hive_hooks = [x.strip() for x in hooks_value.split(",")]
hive_hooks = [x for x in hive_hooks if x != ""]
is_atlas_present_in_cluster = "ATLAS" in servicesList
@@ -268,11 +267,10 @@ class HDP23StackAdvisor(HDP22StackAdvisor):
else:
putHiveEnvProperty("hive.atlas.hook", "false")
- if ('hive-env' in services['configurations']) and ('hive.atlas.hook' in services['configurations']['hive-env']['properties']):
- if 'hive-env' in configurations and 'hive.atlas.hook' in configurations['hive-env']['properties']:
- enable_atlas_hook = configurations['hive-env']['properties']['hive.atlas.hook'] == "true"
- elif 'hive-env' in services['configurations'] and 'hive.atlas.hook' in services['configurations']['hive-env']['properties']:
- enable_atlas_hook = services['configurations']['hive-env']['properties']['hive.atlas.hook'] == "true"
+ if 'hive-env' in configurations and 'hive.atlas.hook' in configurations['hive-env']['properties']:
+ enable_atlas_hook = configurations['hive-env']['properties']['hive.atlas.hook'] == "true"
+ elif 'hive-env' in services['configurations'] and 'hive.atlas.hook' in services['configurations']['hive-env']['properties']:
+ enable_atlas_hook = services['configurations']['hive-env']['properties']['hive.atlas.hook'] == "true"
if enable_atlas_hook:
# Append atlas hook if not already present.
@@ -852,14 +850,16 @@ class HDP23StackAdvisor(HDP22StackAdvisor):
else:
putSqoopEnvProperty("sqoop.atlas.hook", "false")
- if ('sqoop-env' in services['configurations']) and ('sqoop.atlas.hook' in services['configurations']['sqoop-env']['properties']):
- if 'sqoop-env' in configurations and 'sqoop.atlas.hook' in configurations['sqoop-env']['properties']:
- enable_atlas_hook = configurations['sqoop-env']['properties']['sqoop.atlas.hook'] == "true"
- elif 'sqoop-env' in services['configurations'] and 'sqoop.atlas.hook' in services['configurations']['sqoop-env']['properties']:
- enable_atlas_hook = services['configurations']['sqoop-env']['properties']['sqoop.atlas.hook'] == "true"
+ if 'sqoop-env' in configurations and 'sqoop.atlas.hook' in configurations['sqoop-env']['properties']:
+ enable_atlas_hook = configurations['sqoop-env']['properties']['sqoop.atlas.hook'] == "true"
+ elif 'sqoop-env' in services['configurations'] and 'sqoop.atlas.hook' in services['configurations']['sqoop-env']['properties']:
+ enable_atlas_hook = services['configurations']['sqoop-env']['properties']['sqoop.atlas.hook'] == "true"
if enable_atlas_hook:
putSqoopSiteProperty('sqoop.job.data.publish.class', 'org.apache.atlas.sqoop.hook.SqoopHook')
+ else:
+ putSqoopSitePropertyAttribute = self.putPropertyAttribute(configurations, "sqoop-site")
+ putSqoopSitePropertyAttribute('sqoop.job.data.publish.class', 'delete', 'true')
def recommendStormConfigurations(self, configurations, clusterData, services, hosts):
super(HDP23StackAdvisor, self).recommendStormConfigurations(configurations, clusterData, services, hosts)
@@ -887,11 +887,10 @@ class HDP23StackAdvisor(HDP22StackAdvisor):
else:
putStormEnvProperty("storm.atlas.hook", "false")
- if ('storm-env' in services['configurations']) and ('storm.atlas.hook' in services['configurations']['storm-env']['properties']):
- if 'storm-env' in configurations and 'storm.atlas.hook' in configurations['storm-env']['properties']:
- enable_atlas_hook = configurations['storm-env']['properties']['storm.atlas.hook'] == "true"
- elif 'storm-env' in services['configurations'] and 'storm.atlas.hook' in services['configurations']['storm-env']['properties']:
- enable_atlas_hook = services['configurations']['storm-env']['properties']['storm.atlas.hook'] == "true"
+ if 'storm-env' in configurations and 'storm.atlas.hook' in configurations['storm-env']['properties']:
+ enable_atlas_hook = configurations['storm-env']['properties']['storm.atlas.hook'] == "true"
+ elif 'storm-env' in services['configurations'] and 'storm.atlas.hook' in services['configurations']['storm-env']['properties']:
+ enable_atlas_hook = services['configurations']['storm-env']['properties']['storm.atlas.hook'] == "true"
if enable_atlas_hook and not atlas_hook_is_set:
notifier_plugin_value = atlas_hook_class if notifier_plugin_value == " " else ",".join([notifier_plugin_value, atlas_hook_class])
[50/50] [abbrv] ambari git commit: AMBARI-20349. When SPNEGO
authentication is enabled for Hadoop in a cluster with NN HA,
PXF Process alert fails (rlevas)
Posted by ol...@apache.org.
AMBARI-20349. When SPNEGO authentication is enabled for Hadoop in a cluster with NN HA, PXF Process alert fails (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/245fd5cf
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/245fd5cf
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/245fd5cf
Branch: refs/heads/branch-dev-logsearch
Commit: 245fd5cf3689097fdcdde6a75c39de9d38e0bde8
Parents: 221ad28
Author: Robert Levas <rl...@hortonworks.com>
Authored: Thu Mar 9 10:25:53 2017 -0500
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Thu Mar 9 10:25:53 2017 -0500
----------------------------------------------------------------------
.../PXF/3.0.0/package/alerts/api_status.py | 36 ++++++++++++++------
1 file changed, 25 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/245fd5cf/ambari-server/src/main/resources/common-services/PXF/3.0.0/package/alerts/api_status.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/PXF/3.0.0/package/alerts/api_status.py b/ambari-server/src/main/resources/common-services/PXF/3.0.0/package/alerts/api_status.py
index d0ed0a4..dcdb372 100644
--- a/ambari-server/src/main/resources/common-services/PXF/3.0.0/package/alerts/api_status.py
+++ b/ambari-server/src/main/resources/common-services/PXF/3.0.0/package/alerts/api_status.py
@@ -24,15 +24,17 @@ import socket
import urllib2
import urllib
+from resource_management.core import shell
from resource_management.libraries.functions.curl_krb_request import curl_krb_request
+from resource_management.libraries.functions.get_kinit_path import get_kinit_path
from resource_management.libraries.functions.namenode_ha_utils import get_active_namenode
from resource_management.libraries.script.config_dictionary import ConfigDictionary
from resource_management.core.environment import Environment
CLUSTER_ENV_SECURITY = '{{cluster-env/security_enabled}}'
-HADOOP_ENV_HDFS_USER = '{{hadoop-env/hdfs_user}}'
-HADOOP_ENV_HDFS_USER_KEYTAB = '{{hadoop-env/hdfs_user_keytab}}'
-HADOOP_ENV_HDFS_PRINCIPAL_NAME = '{{hadoop-env/hdfs_principal_name}}'
+ACTING_USER = 'pxf'
+KEYTAB_FILE = '{{pxf-site/pxf.service.kerberos.keytab}}'
+PRINCIPAL_NAME = '{{pxf-site/pxf.service.kerberos.principal}}'
HDFS_SITE = '{{hdfs-site}}'
@@ -58,9 +60,9 @@ commonPXFHeaders = {
def get_tokens():
return (CLUSTER_ENV_SECURITY,
- HADOOP_ENV_HDFS_USER,
- HADOOP_ENV_HDFS_USER_KEYTAB,
- HADOOP_ENV_HDFS_PRINCIPAL_NAME,
+ ACTING_USER,
+ KEYTAB_FILE,
+ PRINCIPAL_NAME,
HDFS_SITE)
def _get_delegation_token(namenode_address, user, keytab, principal, kinit_path):
@@ -130,21 +132,33 @@ def _get_pxf_protocol_version(base_url):
raise Exception("version could not be found in response " + response)
+
+def _ensure_kerberos_authentication(user, principal, keytab_file, kinit_path):
+ kinit_path_local = get_kinit_path(kinit_path)
+ shell.checked_call("{0} -kt {1} {2} > /dev/null".format(kinit_path_local, keytab_file, principal),
+ user=user)
+
def execute(configurations={}, parameters={}, host_name=None):
BASE_URL = "http://{0}:{1}/pxf/".format(host_name, PXF_PORT)
try:
# Get delegation token if security is enabled
if CLUSTER_ENV_SECURITY in configurations and configurations[CLUSTER_ENV_SECURITY].lower() == "true":
+ resolved_principal = configurations[PRINCIPAL_NAME]
+ if resolved_principal is not None:
+ resolved_principal = resolved_principal.replace('_HOST', host_name)
+
if 'dfs.nameservices' in configurations[HDFS_SITE]:
- namenode_address = get_active_namenode(ConfigDictionary(configurations[HDFS_SITE]), configurations[CLUSTER_ENV_SECURITY], configurations[HADOOP_ENV_HDFS_USER])[1]
+ if configurations[CLUSTER_ENV_SECURITY]:
+ _ensure_kerberos_authentication(configurations[ACTING_USER], resolved_principal, configurations[KEYTAB_FILE], None)
+ namenode_address = get_active_namenode(ConfigDictionary(configurations[HDFS_SITE]), configurations[CLUSTER_ENV_SECURITY], configurations[ACTING_USER])[1]
else:
namenode_address = configurations[HDFS_SITE]['dfs.namenode.http-address']
token = _get_delegation_token(namenode_address,
- configurations[HADOOP_ENV_HDFS_USER],
- configurations[HADOOP_ENV_HDFS_USER_KEYTAB],
- configurations[HADOOP_ENV_HDFS_PRINCIPAL_NAME],
- None)
+ configurations[ACTING_USER],
+ configurations[KEYTAB_FILE],
+ resolved_principal,
+ None)
commonPXFHeaders.update({"X-GP-TOKEN": token})
if _get_pxf_protocol_version(BASE_URL).startswith("v"):
[30/50] [abbrv] ambari git commit: AMBARI-20353. Log error while
importing the workflow from encrypted path. (Madhan Mohan Reddy via gauravn7)
Posted by ol...@apache.org.
AMBARI-20353. Log error while importing the workflow from encrypted path. (Madhan Mohan Reddy via gauravn7)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ba04d221
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ba04d221
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ba04d221
Branch: refs/heads/branch-dev-logsearch
Commit: ba04d2211c1db5f6f7ca2feeede1b5667410344d
Parents: 3fd1c24
Author: Gaurav Nagar <gr...@gmail.com>
Authored: Wed Mar 8 17:00:23 2017 +0530
Committer: Gaurav Nagar <gr...@gmail.com>
Committed: Wed Mar 8 17:01:00 2017 +0530
----------------------------------------------------------------------
.../ambari/view/OozieProxyImpersonator.java | 42 ++------------------
.../org/apache/oozie/ambari/view/Utils.java | 30 ++++++++++++++
2 files changed, 34 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ba04d221/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/OozieProxyImpersonator.java
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/OozieProxyImpersonator.java b/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/OozieProxyImpersonator.java
index 9bf2f90..d82f928 100644
--- a/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/OozieProxyImpersonator.java
+++ b/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/OozieProxyImpersonator.java
@@ -23,7 +23,6 @@ import static org.apache.oozie.ambari.view.Constants.STATUS_OK;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
@@ -37,7 +36,6 @@ import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
-import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
@@ -335,15 +333,7 @@ public class OozieProxyImpersonator {
}
try {
final InputStream is = workflowFilesService.readAssset(assetPath);
- StreamingOutput streamer = new StreamingOutput() {
- @Override
- public void write(OutputStream os) throws IOException,
- WebApplicationException {
- IOUtils.copy(is, os);
- is.close();
- os.close();
- }
- };
+ StreamingOutput streamer = utils.streamResponse(is);
return Response.ok(streamer).status(200).build();
} catch (IOException ex) {
LOGGER.error(ex.getMessage(),ex);
@@ -359,15 +349,7 @@ public class OozieProxyImpersonator {
}
try {
final InputStream is = workflowFilesService.readDraft(workflowPath);
- StreamingOutput streamer = new StreamingOutput() {
- @Override
- public void write(OutputStream os) throws IOException,
- WebApplicationException {
- IOUtils.copy(is, os);
- is.close();
- os.close();
- }
- };
+ StreamingOutput streamer = utils.streamResponse(is);
return Response.ok(streamer).status(200).build();
} catch (IOException ex) {
LOGGER.error(ex.getMessage(),ex);
@@ -426,15 +408,7 @@ public class OozieProxyImpersonator {
private Response getWorkflowResponse(String filePath, String responseType,
boolean olderFormatDraftIngored) throws IOException {
final InputStream is = workflowFilesService.readWorkflowXml(filePath);
- StreamingOutput streamer = new StreamingOutput() {
- @Override
- public void write(OutputStream os) throws IOException,
- WebApplicationException {
- IOUtils.copy(is, os);
- is.close();
- os.close();
- }
- };
+ StreamingOutput streamer = utils.streamResponse(is);
Response.ResponseBuilder responseBuilder = Response.ok(streamer).header(RESPONSE_TYPE, responseType);
if (olderFormatDraftIngored) {
responseBuilder.header(OLDER_FORMAT_DRAFT_INGORED, Boolean.TRUE.toString());
@@ -455,15 +429,7 @@ public class OozieProxyImpersonator {
throw new WfmWebException(ErrorCode.WORKFLOW_XML_DOES_NOT_EXIST);
}
final InputStream is = workflowFilesService.readWorkflowXml(workflowPath);
- StreamingOutput streamer = new StreamingOutput() {
- @Override
- public void write(OutputStream os) throws IOException,
- WebApplicationException {
- IOUtils.copy(is, os);
- is.close();
- os.close();
- }
- };
+ StreamingOutput streamer = utils.streamResponse(is);
return Response.ok(streamer).status(200).build();
} catch (WfmWebException ex) {
LOGGER.error(ex.getMessage(),ex);
http://git-wip-us.apache.org/repos/asf/ambari/blob/ba04d221/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/Utils.java
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/Utils.java b/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/Utils.java
index 0b9adda..8f427bd 100644
--- a/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/Utils.java
+++ b/contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view/Utils.java
@@ -18,6 +18,10 @@
package org.apache.oozie.ambari.view;
import java.io.IOException;
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedInputStream;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.HashMap;
@@ -26,9 +30,11 @@ import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
+import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.StreamingOutput;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
@@ -163,4 +169,28 @@ public class Utils {
return false;
}
}
+ public StreamingOutput streamResponse(final InputStream is) {
+ return new StreamingOutput() {
+ @Override
+ public void write(OutputStream os) throws IOException,
+ WebApplicationException {
+ BufferedInputStream bis=new BufferedInputStream(is);
+ BufferedOutputStream bos=new BufferedOutputStream(os);
+ try {
+ int data;
+ while ((data = bis.read()) != -1) {
+ bos.write(data);
+ }
+ is.close();
+ os.close();
+ }catch (IOException e){
+ LOGGER.error(e.getMessage(),e);
+ throw e;
+ }catch (Exception e){
+ LOGGER.error(e.getMessage(),e);
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
}
[04/50] [abbrv] ambari git commit: AMBARI-20314. Revert AMBARI-20227
as it is causing wokflow id to be not shown after submission (Venkat
Ranganathan via smohanty)
Posted by ol...@apache.org.
AMBARI-20314. Revert AMBARI-20227 as it is causing wokflow id to be not shown after submission (Venkat Ranganathan via smohanty)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0bbd5455
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0bbd5455
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0bbd5455
Branch: refs/heads/branch-dev-logsearch
Commit: 0bbd5455aa61eadd5f9ec7dbfee3a6ae79ed2953
Parents: df3b028
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Sun Mar 5 13:38:24 2017 -0800
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Sun Mar 5 13:38:24 2017 -0800
----------------------------------------------------------------------
.../resources/ui/app/components/bundle-config.js | 17 -----------------
.../resources/ui/app/components/coord-config.js | 17 -----------------
.../resources/ui/app/components/flow-designer.js | 13 -------------
.../main/resources/ui/app/components/job-config.js | 2 --
.../main/resources/ui/app/components/save-wf.js | 2 --
.../ui/app/templates/components/bundle-config.hbs | 11 ++---------
.../ui/app/templates/components/coord-config.hbs | 11 ++---------
.../ui/app/templates/components/flow-designer.hbs | 15 ++++-----------
8 files changed, 8 insertions(+), 80 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0bbd5455/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 59ffbb8..e94d51a 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
@@ -146,7 +146,6 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
importBundle (filePath){
this.set("bundleFilePath", filePath);
this.set("isImporting", true);
- this.hideSuccessMsg();
filePath = this.appendFileName(filePath, 'bundle');
var deferred = this.getBundleFromHdfs(filePath);
deferred.promise.then(function(response){
@@ -250,22 +249,7 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
return filePath;
}
},
- hideSuccessMsg(){
- this.set('successMessage', '');
- this.set('isWFSaveSuccess', false);
- },
actions : {
- showSuccessMessage(msg, isHideSuccessMsg) {
- if(isHideSuccessMsg){
- this.set("isWFSaveSuccess", false);
- } else {
- this.set("isWFSaveSuccess", true);
- }
- Ember.run.later(()=>{
- this.$('#successMsg').fadeOut();
- }, 3000);
- this.set("successMessage", msg);
- },
closeFileBrowser(){
this.set("showingFileBrowser", false);
this.get('fileBrowser').getContext().trigger('fileSelected', this.get('filePath'));
@@ -324,7 +308,6 @@ export default Ember.Component.extend(Ember.Evented, Validations, {
this.set('showingResetConfirmation', true);
},
resetBundle(){
- this.hideSuccessMsg();
this.get('errors').clear();
this.set('showingResetConfirmation', false);
if(this.get('bundleFilePath')){
http://git-wip-us.apache.org/repos/asf/ambari/blob/0bbd5455/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 2d0a23c..c87ea99 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
@@ -262,7 +262,6 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
return deferred;
},
importCoordinator (filePath){
- this.hideSuccessMsg();
filePath = this.appendFileName(filePath, 'coord');
this.set("coordinatorFilePath", filePath);
this.set("isImporting", false);
@@ -368,22 +367,7 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
}.bind(this));
return isChildComponentsValid;
},
- hideSuccessMsg(){
- this.set('successMessage', '');
- this.set('isWFSaveSuccess', false);
- },
actions : {
- showSuccessMessage(msg, isHideSuccessMsg) {
- if(isHideSuccessMsg){
- this.set("isWFSaveSuccess", false);
- } else {
- this.set("isWFSaveSuccess", true);
- }
- Ember.run.later(()=>{
- this.$('#successMsg').fadeOut();
- }, 3000);
- this.set("successMessage", msg);
- },
registerChild(key, context){
this.get('childComponents').set(key, context);
},
@@ -587,7 +571,6 @@ export default Ember.Component.extend(Validations, Ember.Evented, {
},
resetCoordinator(){
this.get("errors").clear();
- this.hideSuccessMsg();
this.set('showingResetConfirmation', false);
if(this.get('coordinatorFilePath')){
this.importCoordinator(this.get('coordinatorFilePath'));
http://git-wip-us.apache.org/repos/asf/ambari/blob/0bbd5455/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 6af82ba..01f8fe6 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
@@ -484,8 +484,6 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
this.set('counterMap', {});
this.set("undoAvailable", false);
this.set("showingConfirmationNewWorkflow", false);
- this.set("successMessage", "");
- this.set("isWFSaveSuccess", false);
if(this.get('workflow.parameters') !== null){
this.set('workflow.parameters', {});
}
@@ -752,17 +750,6 @@ export default Ember.Component.extend(FindNodeMixin, Validations, {
}
},
actions:{
- showSuccessMessage(msg, isHideSuccessMsg) {
- if(isHideSuccessMsg){
- this.set("isWFSaveSuccess", false);
- } else {
- this.set("isWFSaveSuccess", true);
- }
- Ember.run.later(()=>{
- this.$('#successMsg').fadeOut();
- }, 3000);
- this.set("successMessage", msg);
- },
importWorkflowStream(dataStr){
this.importWorkflowFromFile(dataStr);
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/0bbd5455/contrib/views/wfmanager/src/main/resources/ui/app/components/job-config.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/job-config.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/job-config.js
index fe6f34c..15c1fbf 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/job-config.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/job-config.js
@@ -227,8 +227,6 @@ export default Ember.Component.extend(Validations, {
});
}
this.set("savingInProgress",false);
- this.$("#configureJob").modal("hide");
- this.sendAction("showSuccessMessage", this.get("displayName")+" have been submitted successfully.");
}.bind(this),
error: function(response) {
console.error(response);
http://git-wip-us.apache.org/repos/asf/ambari/blob/0bbd5455/contrib/views/wfmanager/src/main/resources/ui/app/components/save-wf.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/save-wf.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/save-wf.js
index cd9424a..017bc61 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/save-wf.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/save-wf.js
@@ -101,8 +101,6 @@ export default Ember.Component.extend(Validations, {
});
self.set("savingInProgress",false);
this.set('jobFilePath', this.get('filePath'));
- self.$("#configureJob").modal("hide");
- self.sendAction("showSuccessMessage", this.get("displayName")+" have been saved successfully.");
}.bind(this)).catch(function(response){
self.set("savingInProgress",false);
self.showNotification({
http://git-wip-us.apache.org/repos/asf/ambari/blob/0bbd5455/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 d17a857..2d374a5 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
@@ -72,13 +72,6 @@
<div id='loading'>
{{spin-spinner lines=13 length=20 width=10}}
</div>
- {{#if isWFSaveSuccess}}
- <div id="successMsg">
- <div id="alert" class="alert alert-info alert-dismissible workflow-error" role="alert">
- {{successMessage}}
- </div>
- </div>
- {{/if}}
{{designer-errors errors=errors validationErrors=validationErrors errorMsg=errorMsg data=data}}
<form class="form-horizontal">
<div class="col-sm-12 paddingtop10">
@@ -131,7 +124,7 @@
{{hdfs-browser closeFileBrowser="closeFileBrowser" selectFileCallback=selectFileCallback filePath=filePath}}
{{/if}}
{{#if showingJobConfig}}
- {{job-config type='bundle' closeJobConfigs="closeBundleSubmitConfig" showSuccessMessage="showSuccessMessage" jobFilePath=bundleFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=bundleConfigs}}
+ {{job-config type='bundle' closeJobConfigs="closeBundleSubmitConfig" jobFilePath=bundleFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=bundleConfigs containsParameteriedPaths=containsParameteriedPaths}}
{{/if}}
{{#if showingResetConfirmation}}
{{#confirmation-dialog title="Confirm Bundle Reset"
@@ -145,5 +138,5 @@
{{bundle-version-settings bundle=bundle showVersionSettings="showVersionSettings" }}
{{/if}}
{{#if showingSaveWorkflow}}
- {{save-wf type='bundle' close="closeSave" showSuccessMessage="showSuccessMessage" jobFilePath=bundleFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=configForSave}}
+ {{save-wf type='bundle' close="closeSave" jobFilePath=bundleFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=configForSave}}
{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/0bbd5455/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 71d0080..0e35d0e 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
@@ -92,13 +92,6 @@
<div id='loading'>
{{spin-spinner lines=13 length=20 width=10}}
</div>
-{{#if isWFSaveSuccess}}
- <div id="successMsg">
- <div id="alert" class="alert alert-info alert-dismissible workflow-error" role="alert">
- {{successMessage}}
- </div>
- </div>
-{{/if}}
<div class="container-fluid">
{{designer-errors errors=errors validationErrors=validationErrors errorMsg=errorMsg data=data}}
<form class="form-horizontal">
@@ -346,7 +339,7 @@
parameterizedWorkflowPath=parameterizedWorkflowPath
extractProperties="extractProperties" containsParameteriedPaths=containsParameteriedPaths
jobFilePath=coordinatorFilePath openFileBrowser="openFileBrowser"
- closeFileBrowser="closeFileBrowser" jobConfigs=coordinatorConfigs showSuccessMessage="showSuccessMessage" isDryrun=dryrun}}
+ closeFileBrowser="closeFileBrowser" jobConfigs=coordinatorConfigs isDryrun=dryrun}}
{{/if}}
{{#if showingResetConfirmation}}
{{#confirmation-dialog title="Confirm Coordinator Reset"
@@ -388,5 +381,5 @@ okBtnText="Continue" cancelBtnText="Cancel" onOk="resetCoordinator"}}{{/confirma
</div>
{{/if}}
{{#if showingSaveWorkflow}}
- {{save-wf type='coord' close="closeSave" showSuccessMessage="showSuccessMessage" jobFilePath=coordinatorFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=configForSave}}
+ {{save-wf type='coord' close="closeSave" jobFilePath=coordinatorFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=configForSave}}
{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/0bbd5455/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 2c85985..b5c3807 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
@@ -159,25 +159,18 @@
{{/if}}
{{#if isAssetPublishing}}
<div id="loader">
- <div id="alert" class="alert alert-info alert-dismissible workflow-error" role="alert">
+ <div id="alert"class="alert alert-info alert-dismissible workflow-error" role="alert">
Publishing asset. Please wait...
</div>
</div>
{{/if}}
{{#if isAssetImporting}}
<div id="loader">
- <div id="alert" class="alert alert-info alert-dismissible workflow-error" role="alert">
+ <div id="alert"class="alert alert-info alert-dismissible workflow-error" role="alert">
Importing asset. Please wait...
</div>
</div>
{{/if}}
- {{#if isWFSaveSuccess}}
- <div id="successMsg">
- <div id="alert" class="alert alert-info alert-dismissible workflow-error" role="alert">
- {{successMessage}}
- </div>
- </div>
- {{/if}}
<div id="flow-designer">
{{#each flattenedNodes as |node|}}
<div class="node-wrapper">
@@ -272,10 +265,10 @@
{{workflow-action-editor actionType=currentAction closeActionEditor="closeActionEditor" setNodeTransitions="setNodeTransitions" actionModel=currentNode.domain nodeType=currentNode.type currentNode=currentNode killNodes=workflow.killNodes credentials=workflow.credentials validateWorkflow="validateWorkflow"}}
{{/if}}
{{#if showingSaveWorkflow}}
- {{save-wf type='wf' close="closeSaveWorkflow" showSuccessMessage="showSuccessMessage" jobFilePath=workflowFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=configForSave}}
+ {{save-wf type='wf' close="closeSaveWorkflow" jobFilePath=workflowFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=configForSave}}
{{/if}}
{{#if showingWorkflowConfigProps}}
- {{job-config type='wf' closeJobConfigs="closeWorkflowSubmitConfigs" showSuccessMessage="showSuccessMessage" jobFilePath=workflowFilePath tabInfo=tabInfo openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=workflowSubmitConfigs isDryrun=dryrun}}
+ {{job-config type='wf' closeJobConfigs="closeWorkflowSubmitConfigs" jobFilePath=workflowFilePath tabInfo=tabInfo openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=workflowSubmitConfigs isDryrun=dryrun}}
{{/if}}
{{#if showGlobalConfig}}
{{#global-config closeGlobalConfig="closeWorkflowGlobalProps" saveGlobalConfig="saveGlobalConfig" actionModel=globalConfig}}{{/global-config}}
[40/50] [abbrv] ambari git commit: AMBARI-20330 : Unit test failures
- testThreadPoolEnabledPropertyProviderDefaults &
testMetricsRetrieveServiceDefaults. (avijayan)
Posted by ol...@apache.org.
AMBARI-20330 : Unit test failures - testThreadPoolEnabledPropertyProviderDefaults & testMetricsRetrieveServiceDefaults. (avijayan)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ec33f228
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ec33f228
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ec33f228
Branch: refs/heads/branch-dev-logsearch
Commit: ec33f228a8213a0820af25290219fa13cabb974a
Parents: 6910263
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Wed Mar 8 12:41:13 2017 -0800
Committer: Aravindan Vijayan <av...@hortonworks.com>
Committed: Wed Mar 8 12:41:23 2017 -0800
----------------------------------------------------------------------
.../apache/ambari/server/configuration/ConfigurationTest.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ec33f228/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
index 5f6dd72..b9288d2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
@@ -866,7 +866,7 @@ public class ConfigurationTest {
Assert.assertTrue(completionServiceTimeout >= SMALLEST_COMPLETION_SERIVCE_TIMEOUT_MS);
Assert.assertTrue(completionServiceTimeout <= LARGEST_COMPLETION_SERIVCE_TIMEOUT_MS);
Assert.assertTrue(corePoolSize <= maxPoolSize);
- Assert.assertTrue(corePoolSize > 2 && corePoolSize <= 32);
+ Assert.assertTrue(corePoolSize > 2 && corePoolSize <= 128);
Assert.assertTrue(maxPoolSize > 2 && maxPoolSize <= processorCount * 4);
Assert.assertTrue(workerQueueSize > processorCount * 10);
}
@@ -902,7 +902,7 @@ public class ConfigurationTest {
Assert.assertTrue(priority > Thread.MIN_PRIORITY);
Assert.assertTrue(cacheTimeout >= LOWEST_CACHE_TIMEOUT_MINUTES);
- Assert.assertTrue(corePoolSize > 2 && corePoolSize <= 32);
+ Assert.assertTrue(corePoolSize > 2 && corePoolSize <= 128);
Assert.assertTrue(maxPoolSize > 2 && maxPoolSize <= processorCount * 4);
Assert.assertTrue(workerQueueSize >= processorCount * 10);
}
[31/50] [abbrv] ambari git commit: AMBARI-20337.Need to show timer
while loading coordinator name while bundle creation.(Madhan Mohan Reddy via
gauravn7)
Posted by ol...@apache.org.
AMBARI-20337.Need to show timer while loading coordinator name while bundle creation.(Madhan Mohan Reddy via gauravn7)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/934f3f18
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/934f3f18
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/934f3f18
Branch: refs/heads/branch-dev-logsearch
Commit: 934f3f18277b3cb48e1e8c9a16836aebdec1d1b0
Parents: ba04d22
Author: Gaurav Nagar <gr...@gmail.com>
Authored: Wed Mar 8 17:24:45 2017 +0530
Committer: Gaurav Nagar <gr...@gmail.com>
Committed: Wed Mar 8 17:24:45 2017 +0530
----------------------------------------------------------------------
.../ui/app/components/bundle-coord-config.js | 28 +++++++++++++++++---
.../app/templates/components/bundle-config.hbs | 4 +--
.../components/bundle-coord-config.hbs | 5 +++-
3 files changed, 30 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/934f3f18/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-coord-config.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-coord-config.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-coord-config.js
index 2280f82..c2ac96b 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-coord-config.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/bundle-coord-config.js
@@ -26,6 +26,7 @@ const Validations = buildValidations({
})
});
export default Ember.Component.extend(Validations, {
+ propertyExtractor : Ember.inject.service('property-extractor'),
initialize : function(){
this.on('fileSelected',function(fileName){
this.set(this.get('filePathModel'), fileName);
@@ -52,8 +53,8 @@ export default Ember.Component.extend(Validations, {
}
}).done(function(data){
deferred.resolve(data);
- }).fail(function(){
- deferred.reject();
+ }).fail(function(data){
+ deferred.reject(data);
});
return deferred;
},
@@ -95,13 +96,32 @@ export default Ember.Component.extend(Validations, {
},
showCoordinatorName(){
this.set('coordinatorName', null);
- var deferred = this.readFromHdfs(this.get('coordinator.appPath'));
+ this.set('errorMsg', '');
+ if (this.get('coordinator.appPath') === '') {
+ return;
+ }
+ var path = this.get('appendFileName')(this.get('coordinator.appPath'), 'coord');
+ if (this.get('propertyExtractor').containsParameters(path)) {
+ this.set('containsParameteriedPaths', true);
+ this.set('parameterizedPathWarning', 'Coordinator path contains variables');
+ return;
+ } else {
+ this.set('containsParameteriedPaths', false);
+ this.set('parameterizedPathWarning', '');
+ }
+ this.set('coordNameFetchingInProgress', true);
+ var deferred = this.readFromHdfs(path);
deferred.promise.then(function(data){
var x2js = new X2JS();
var coordJson = x2js.xml_str2json(data);
this.set('coordinator.name', coordJson["coordinator-app"]._name);
- }.bind(this)).catch(function(){
+ this.set('coordNameFetchingInProgress', false);
+ }.bind(this)).catch(function(data){
+ console.error(data);
this.set('coordinatorName', null);
+ this.set('errorMsg', 'There is some problem while fetching coordinator name.');
+ this.set('data', data);
+ this.set('coordNameFetchingInProgress', false);
}.bind(this));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/934f3f18/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 2d374a5..39ab06d 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
@@ -103,10 +103,10 @@
{{#field-error model=this field='bundle.coordinators' showErrorMessage=showErrorMessage}}{{/field-error}}
{{#if coordinatorCreateMode}}
- {{#bundle-coord-config coordinator=currentCoordinator openTab="openTab" openFileBrowser="openFileBrowser" add="addCoordinator" cancel="cancelCoordinatorOperation" createMode=coordinatorCreateMode}}{{/bundle-coord-config}}
+ {{#bundle-coord-config coordinator=currentCoordinator openTab="openTab" openFileBrowser="openFileBrowser" add="addCoordinator" cancel="cancelCoordinatorOperation" createMode=coordinatorCreateMode errorMsg=errorMsg data=data appendFileName=appendFileName}}{{/bundle-coord-config}}
{{/if}}
{{#if coordinatorEditMode}}
- {{#bundle-coord-config coordinator=currentCoordinator openTab="openTab" openFileBrowser="openFileBrowser" update="updateCoordinator" cancel="cancelCoordinatorOperation" editMode=coordinatorEditMode}}{{/bundle-coord-config}}
+ {{#bundle-coord-config coordinator=currentCoordinator openTab="openTab" openFileBrowser="openFileBrowser" update="updateCoordinator" cancel="cancelCoordinatorOperation" editMode=coordinatorEditMode errorMsg=errorMsg data=data appendFileName=appendFileName}}{{/bundle-coord-config}}
{{/if}}
</div>
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/934f3f18/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs
index 56cacd6..1ac1414 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs
@@ -23,9 +23,12 @@
{{input type="text" class="form-control" name="appPath" focus-out="showCoordinatorName" value=coordinator.appPath placeholder="Path of the coordinator file"}}
<span class="input-group-btn">
<button class="btn btn-secondary" type="button" {{action "openFileBrowser" "coordinator.appPath"}}>Browse</button>
- <button class="btn btn-default" type="button" {{action "openTab" 'coord' coordinator.appPath}} name="button"><i class="fa fa-external-link"></i></button>
+ <button class="btn btn-default" type="button" disabled={{containsParameteriedPaths}} title={{parameterizedPathWarning}} {{action "openTab" 'coord' coordinator.appPath}} name="button"><i class="fa fa-external-link"></i></button>
</span>
</div>
+ {{#if coordNameFetchingInProgress}}
+ {{spin-spinner lines=8 length=5 width=3 radius=5 top=16 left=440}}
+ {{/if}}
{{#field-error model=this field='coordinator.appPath' showErrorMessage=showErrorMessage}}{{/field-error}}
</div>
</div>
[42/50] [abbrv] ambari git commit: AMBARI-20371. WFM: Delete option
in Manage recent list. (Venkata Sairam via pallavkul)
Posted by ol...@apache.org.
AMBARI-20371. WFM: Delete option in Manage recent list. (Venkata Sairam via pallavkul)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c9f70565
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c9f70565
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c9f70565
Branch: refs/heads/branch-dev-logsearch
Commit: c9f70565538ea7710b2824c95c6190417711ff1b
Parents: c7086b1
Author: pallavkul <pa...@gmail.com>
Authored: Thu Mar 9 19:28:52 2017 +0530
Committer: pallavkul <pa...@gmail.com>
Committed: Thu Mar 9 19:29:57 2017 +0530
----------------------------------------------------------------------
.../ui/app/components/designer-workspace.js | 1 +
.../resources/ui/app/components/drafts-wf.js | 84 +++++++--
.../ui/app/components/recent-projects.js | 32 +---
.../src/main/resources/ui/app/styles/app.less | 14 +-
.../templates/components/designer-workspace.hbs | 2 +-
.../ui/app/templates/components/drafts-wf.hbs | 175 ++++++++++++-------
.../templates/components/recent-projects.hbs | 17 +-
7 files changed, 195 insertions(+), 130 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c9f70565/contrib/views/wfmanager/src/main/resources/ui/app/components/designer-workspace.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/designer-workspace.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/designer-workspace.js
index 0e49d70..980904f 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/designer-workspace.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/designer-workspace.js
@@ -213,6 +213,7 @@ export default Ember.Component.extend({
},
editWorkflow(path, type){
this.sendAction('editWorkflow', path, type);
+ this.send('hideProjectManagerList');
},
showProjectManagerList(){
var deferred = Ember.RSVP.defer();
http://git-wip-us.apache.org/repos/asf/ambari/blob/c9f70565/contrib/views/wfmanager/src/main/resources/ui/app/components/drafts-wf.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/drafts-wf.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/drafts-wf.js
index 1d01e9b..ed448d9 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/drafts-wf.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/drafts-wf.js
@@ -24,9 +24,10 @@ export default Ember.Component.extend({
"isCoordinator": true,
"isWorkflow": true,
"sortProp": ['updatedAt:desc'],
- "filteredModels": Ember.computed("model", "search", "isBundle", "isCoordinator", "isWorkflow", function(){
+ "filteredModels": Ember.computed("recentFiles", "search", "isBundle", "isCoordinator", "isWorkflow", {
+ get(key) {
var score = 0, condition = true, searchTxt = this.get("search").toLowerCase(), isWorkflow = this.get("isWorkflow"), isCoordinator = this.get("isCoordinator"), isBundle = this.get("isBundle");
- return this.get("model").filter( (role) => {
+ return this.get("recentFiles").filter( (role) => {
score = 0
if(searchTxt && searchTxt.length) {
condition = role.get('name') && role.get('name').toLowerCase().indexOf(searchTxt)>-1;
@@ -42,22 +43,42 @@ export default Ember.Component.extend({
}
return condition && score > 0;
});
+ },
+ set(key, value) {
+ this.set('recentFiles', value);
+
+ var score = 0, condition = true, searchTxt = this.get("search").toLowerCase(), isWorkflow = this.get("isWorkflow"), isCoordinator = this.get("isCoordinator"), isBundle = this.get("isBundle");
+ return this.get("recentFiles").filter( (role) => {
+ score = 0
+ if(searchTxt && searchTxt.length) {
+ condition = role.get('name') && role.get('name').toLowerCase().indexOf(searchTxt)>-1;
+ }
+ if(isWorkflow && role.get('type') === 'WORKFLOW') {
+ score++;
+ }
+ if(isCoordinator && role.get('type') === 'COORDINATOR') {
+ score++;
+ }
+ if(isBundle && role.get('type') === 'BUNDLE') {
+ score++;
+ }
+ return condition && score > 0;
+ });
+ //return value;
+ }
}),
+ resetDetails() {
+ this.set("deleteMsg", null);
+ this.set("deleteInProgress", false);
+ },
modelSorted : Ember.computed.sort("filteredModels", "sortProp"),
"isDeleteDraftConformation": false,
"currentDraft": undefined,
"deleteInProgress": false,
"deleteMsg": undefined,
"currentJobService" : Ember.inject.service('current-job'),
- elementsInserted: function () {
- this.$('.actions').hide();
- }.on("didInsertElement"),
rendered : function(){
var self = this;
- this.$("#projectsList").on("hidden.bs.modal", function () {
- this.sendAction("close");
- history.back();
- }.bind(this));
this.$("#projectDeleteModal").on('hidden.bs.modal', function () {
self.set("isDeleteDraftConformation", true);
self.set("deleteMsg", null);
@@ -73,15 +94,11 @@ export default Ember.Component.extend({
this.sendAction('editWorkflow', path, type);
},
confirmDelete (job ){
- this.set("showingConfirmation", true);
- this.set("currentDraft", job);
- },
- deleteDraft () {
- this.sendAction("deleteWorkflow", this.get('currentDraft'));
+ this.send("showDeleteConfirmation", job);
},
- closeProjects () {
- //this.$('.modal-backdrop').remove();
- this.$("#projectsList").modal("hide");
+ close () {
+ this.$("#projectsList").modal("hide");
+ this.sendAction('close');
},
showActions (job) {
this.$('.'+job.get("updatedAt")+'Actions').show();
@@ -90,6 +107,39 @@ export default Ember.Component.extend({
hideActions (job) {
this.$('.'+job.get("updatedAt")+'Actions').hide();
this.$('.Actions'+job.get("updatedAt")).show();
+ },
+ showDeleteConfirmation(job) {
+ this.resetDetails();
+ this.set('currentDraft', job);
+ this.set('showingDeleteConfirmation', true);
+ Ember.run.later(()=>{
+ this.$("#projectsDeleteConfirmation").modal("show");
+ }, 100);
+ },
+ deleteWorkflow () {
+ let job = this.get("currentDraft");
+ this.set("deleteInProgress", true);
+ var self= this;
+ var rec = this.get("store").peekRecord('wfproject', job.id);
+ if(rec){
+ rec.destroyRecord().then(function () {
+ self.get('recentFiles', self.get('store').peekAll("wfproject"));
+ self.set("deleteInProgress", false);
+ self.set("deleteMsg", "Workflow successfully deleted.");
+ self.get('store').unloadRecord(rec);
+ self.set('filteredModels', self.get('store').peekAll("wfproject"));
+ Ember.run.later(()=>{
+ self.set('showingDeleteConfirmation', false);
+ self.$("#projectsDeleteConfirmation").modal("hide");
+ }, 1000);
+ }).catch(function (response) {
+ self.get('store').unloadRecord(rec);
+ self.get('filteredModels', self.get('store').peekAll("wfproject"));
+ self.sendAction("showProjectManagerList");
+ self.set("deleteInProgress", false);
+ self.set("deleteMsg", "There is some problem while deletion.Please try again.");
+ });
+ }
}
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/c9f70565/contrib/views/wfmanager/src/main/resources/ui/app/components/recent-projects.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/components/recent-projects.js b/contrib/views/wfmanager/src/main/resources/ui/app/components/recent-projects.js
index 18a57f6..bbc51cc 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/components/recent-projects.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/components/recent-projects.js
@@ -18,40 +18,12 @@
import Ember from 'ember';
export default Ember.Component.extend({
- store: Ember.inject.service(),
- rendered : function(){
- var self = this;
- this.$("#projectDeleteModal").on('hidden.bs.modal', function () {
- self.set("isDeleteDraftConformation", true);
- self.set("deleteMsg", null);
- self.set("deleteInProgress", false);
- }.bind(this));
- this.$("#projectsList").on("hidden.bs.modal", function () {
- this.sendAction("close");
- }.bind(this));
- this.$("#projectsList").modal("show");
- }.on('didInsertElement'),
actions: {
close(){
- this.sendAction("close");
+ this.sendAction('close');
},
- deleteWorkflow (job) {
- this.set("deleteInProgress", true);
- var self= this;
- var rec = this.get("store").peekRecord('wfproject', job.id);
- if(rec){
- rec.destroyRecord().then(function () {
- self.set("deleteInProgress", false);
- self.set("deleteMsg", "Workflow successfully deleted.");
- }).catch(function (response) {
- self.set("deleteInProgress", false);
- self.set("deleteMsg", "There is some problem while deletion.Please try again.");
- });
- }
- },
editWorkflow ( path, type ) {
this.sendAction('editWorkflow', path, type);
- this.$("#projectsList").modal("hide");
- },
+ }
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/c9f70565/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 a30833c..5577239 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
@@ -1597,7 +1597,7 @@ input:invalid {
.inlineBlock{
display:inline-block;
}
-.asset-list .fa-trash-o {
+.asset-list .fa-trash-o, #projectsList .fa-trash-o{
color: @defaultRed;
cursor: pointer;
}
@@ -1713,9 +1713,6 @@ input:invalid {
.displayBlock {
display : block;
}
-.tab-pane #draftsTable, #projectsList #dashboard, .tab-pane .searchWorkflows {
- display : none;
- }
.projects-list {
white-space: nowrap;
width: 100%;
@@ -1760,3 +1757,12 @@ input:invalid {
.processing-message {
padding-left: 48%;
}
+#projectsList .modal-body {
+ max-height: 70vh;
+ overflow-y: scroll;
+ overflow-x: auto;
+ }
+#projectsDeleteConfirmation .modal-body {
+ max-height: 70vh;
+ overflow: auto;
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c9f70565/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs
index c8d8dc3..c190511 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs
@@ -160,7 +160,7 @@
{{#asset-manager showAssetManager="showAssetManager"}}{{/asset-manager}}
{{/if}}
{{#if isProjManagerVisible}}
- {{recent-projects recentFiles=recentFiles routeToDesigner="routeToDesigner" editWorkflow="editWorkflow" deleteWorkflow="deleteWorkflow" close="hideProjectManagerList" deleteWorkflowJob="deleteWorkflowJob" currentDraft=currentDraft}}
+ {{recent-projects recentFiles=recentFiles routeToDesigner="routeToDesigner" editWorkflow="editWorkflow" deleteWorkflow="deleteWorkflow" close="hideProjectManagerList" deleteWorkflowJob="deleteWorkflowJob" currentDraft=currentDraft showProjectManagerList="showProjectManagerList"}}
{{/if}}
{{#if showingWarning}}
{{#confirmation-dialog title="Confirm workflow reset"
http://git-wip-us.apache.org/repos/asf/ambari/blob/c9f70565/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/drafts-wf.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/drafts-wf.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/drafts-wf.hbs
index 632d6bd..ac28de3 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/drafts-wf.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/drafts-wf.hbs
@@ -15,68 +15,119 @@
* See the License for the specific language governing permissions and
* limitations under the License.
}}
-<div id="loading" class="displayBlock">
- {{spin-spinner lines=13 length=20 width=10}}
-</div>
-<div class="searchWorkflows">
- {{input type="checkbox" class="marginright5" name="isWorkflow" checked=isWorkflow}}Workflow
- {{input type="checkbox" class="marginright5" name="isCoordinator" checked=isCoordinator}}Coordinator
- {{input type="checkbox" class="marginright5" name="isBundle" checked=isBundle}}Bundle
- {{input type="text" class="l-input" value=search placeholder="Type Workflow name or path"}}
-</div>
-{{#if modelSorted}}
- <div id="draftsTable">
- <table id="search-table" class="table search-table listing table-striped table-hover table-bordered"
- cellspacing="0" width="100%">
- <thead>
- <tr>
- <!--th>Draft Name</th-->
- <th></th>
- <th>Name</th>
- <th>Path</th>
- <th>Updated at</th>
- </tr>
- </thead>
- <tbody>
- {{#if modelSorted}}
- {{#each modelSorted as |job idx|}}
- {{#if true}}
- <tr>
- <!--td title={{job.workflowDefinitionPath}}> <div class="width300">{{job.workflowDefinitionPath}}</div></td-->
- <td class="{{job.type}} cyScrollMsg">
- {{#if (eq job.type "WORKFLOW")}}
- <i class="fa fa-sitemap marginright5"></i>
- {{else if (eq job.type "COORDINATOR")}}
- <i class="fa fa-history marginright5"></i>
- {{else}}
- <i class="fa fa-cubes marginright5"></i>
- {{/if}}
- </td>
- <td title={{job.name}} class="pointer action-link">
- <div class="width100" {{action "importActionToEditor" job.workflowDefinitionPath job.type}}>
- {{job.name}}
- </div>
- </td>
- <td title={{job.workflowDefinitionPath}}>
- <div class="width300">
- {{job.workflowDefinitionPath}}
- </div>
- </td>
- <td>
- <div class="width50">
- {{format-unicode-date job.updatedAt}}
- </div>
- </td>
- </tr>
+
+
+<div class="modal" id="projectsList" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" {{action "close"}}>×</button>
+ <h4 class="modal-title">My Workflows</h4>
+ </div>
+ <div class="modal-body">
+
+
+
+ <div class="searchWorkflows">
+ {{input type="checkbox" class="marginright5" name="isWorkflow" checked=isWorkflow}}Workflow
+ {{input type="checkbox" class="marginright5" name="isCoordinator" checked=isCoordinator}}Coordinator
+ {{input type="checkbox" class="marginright5" name="isBundle" checked=isBundle}}Bundle
+ {{input type="text" class="l-input" value=search placeholder="Type Workflow name or path"}}
+ </div>
+ {{#if modelSorted}}
+ <div id="draftsTable">
+ <table id="search-table" class="table search-table listing table-striped table-hover table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <!--th>Draft Name</th-->
+ <th></th>
+ <th>Name</th>
+ <th>Path</th>
+ <th>Updated at</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if modelSorted}}
+ {{#each modelSorted as |job idx|}}
+ <tr id={{job.id}}>
+ <!--td title={{job.workflowDefinitionPath}}> <div class="width300">{{job.workflowDefinitionPath}}</div></td-->
+ <td class="{{job.type}} cyScrollMsg">
+ {{#if (eq job.type "WORKFLOW")}}
+ <i class="fa fa-sitemap marginright5"></i>
+ {{else if (eq job.type "COORDINATOR")}}
+ <i class="fa fa-history marginright5"></i>
+ {{else}}
+ <i class="fa fa-cubes marginright5"></i>
+ {{/if}}
+ </td>
+ <td title={{job.name}} class="pointer action-link">
+ <div class="width100" {{action "importActionToEditor" job.workflowDefinitionPath job.type}}>
+ {{job.name}}
+ </div>
+ </td>
+ <td title={{job.workflowDefinitionPath}}>
+ <div class="width300">
+ {{job.workflowDefinitionPath}}
+ </div>
+ </td>
+ <td>
+ <div class="width50">
+ {{format-unicode-date job.updatedAt}}
+ </div>
+ </td>
+ <td>
+ <div class="width50">
+ <span title="Delete Workflow" {{action "confirmDelete" job}}><i class="fa fa-trash-o"></i></span>
+ </div>
+ </td>
+ </tr>
+ {{/each}}
{{/if}}
- {{/each}}
- {{/if}}
- </tbody>
- </table>
+ </tbody>
+ </table>
+ </div>
+ <div id="draftsNum">Displaying {{modelSorted.length}} workflows</div>
+ {{else}}
+ <div id="emptyDrafts">
+ <label class="control-label" for="{{type}}-path">There are no workflows currently</label>
+ </div>
+ {{/if}}
+
+
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" {{action "close"}}>Close</button>
+ </div>
</div>
- <div id="draftsNum">Displaying {{modelSorted.length}} workflows</div>
-{{else}}
- <div id="emptyDrafts">
- <label class="control-label" for="{{type}}-path">There are no workflows currently</label>
+ </div>
+</div>
+
+
+{{#if showingDeleteConfirmation}}
+<div class="modal" id="projectsDeleteConfirmation" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal">×</button>
+ <h4 class="modal-title">Delete confirmation</h4>
+ </div>
+ <div class="modal-body">
+ {{#unless deleteMsg}}
+ <label>Do you want to delete the draft?</label>
+ {{/unless}}
+ {{#if true}}
+ {{spin-spinner lines=7 length=3 width=3 radius=3 top=-10 left=150}}
+ {{/if}}
+ <div><label>{{deleteMsg}}</label></div>
+ </div>
+ <div class="modal-footer">
+ {{#unless deleteMsg}}
+ <button type="button" class="btn btn-primary" {{action "deleteWorkflow"}}>Delete</button>
+ {{/unless}}
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+ </div>
</div>
-{{/if}}
\ No newline at end of file
+ </div>
+</div>
+{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c9f70565/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/recent-projects.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/recent-projects.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/recent-projects.hbs
index cd8f6af..c616586 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/recent-projects.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/recent-projects.hbs
@@ -15,19 +15,4 @@
* See the License for the specific language governing permissions and
* limitations under the License.
}}
-<div class="modal" id="projectsList" role="dialog">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal">×</button>
- <h4 class="modal-title">My Workflows</h4>
- </div>
- <div class="modal-body">
- {{drafts-wf model=recentFiles routeToDesigner="routeToDesigner" editWorkflow="editWorkflow" deleteWorkflow="deleteWorkflow"}}
- </div>
- <div class="modal-footer">
- <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
- </div>
- </div>
- </div>
-</div>
+{{drafts-wf recentFiles=recentFiles routeToDesigner="routeToDesigner" editWorkflow="editWorkflow" deleteWorkflow="deleteWorkflow" showDeleteConfirmation="showDeleteConfirmation" showProjectManagerList="showProjectManagerList" close="close"}}
[12/50] [abbrv] ambari git commit: AMBARI-20308 - Atlas service check
fails during EU on wire encrypted cluster (jonathanhurley)
Posted by ol...@apache.org.
AMBARI-20308 - Atlas service check fails during EU on wire encrypted cluster (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8e688244
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8e688244
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8e688244
Branch: refs/heads/branch-dev-logsearch
Commit: 8e68824473cf68b5129ead6f81d4d9e5b9cfdc8f
Parents: e19f57e
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Mon Mar 6 14:21:11 2017 -0500
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Mon Mar 6 14:23:44 2017 -0500
----------------------------------------------------------------------
.../configuration/application-properties.xml | 42 ++++++++++++++++++++
.../stacks/HDP/2.5/upgrades/config-upgrade.xml | 6 +++
.../HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml | 16 +++++---
.../HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml | 6 +++
.../stacks/HDP/2.5/upgrades/upgrade-2.5.xml | 6 +++
.../stacks/HDP/2.5/upgrades/upgrade-2.6.xml | 1 +
.../configuration/application-properties.xml | 3 +-
7 files changed, 73 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/8e688244/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
new file mode 100644
index 0000000..366ecf6
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+<configuration supports_final="false">
+
+ <!-- Supported in HDP 2.5.4 -->
+ <property>
+ <name>atlas.ssl.exclude.protocols</name>
+ <display-name>Excluded Wire Encryption Protocols</display-name>
+ <value>TLSv1.2</value>
+ <value-attributes>
+ <empty-value-valid>true</empty-value-valid>
+ </value-attributes>
+ <description>A comma-separate list of the wire encryption protocols to exclude when TLS is enabled. Some versions of cURL do not work with TLSv1.2.</description>
+ <used-by>
+ <property>
+ <type>application-properties</type>
+ <name>atlas.enableTLS</name>
+ </property>
+ </used-by>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/8e688244/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
index 93e0149..6f3fe42 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
@@ -103,6 +103,11 @@
<replace key="content" find="<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">" replace-with="<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">\n<param name="MaxFileSize" value="{{atlas_log_max_backup_size}}MB" />"/>
<replace key="content" find="<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">" replace-with="<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">\n<param name="MaxFileSize" value="{{atlas_log_number_of_backup_files}}" />"/>
</definition>
+
+ <definition xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol" summary="Excluding TLS v1.2 Protocol">
+ <type>application-properties</type>
+ <set key="atlas.ssl.exclude.protocols" value="TLSv1.2" if-type="application-properties" if-key="atlas.ssl.exclude.protocols" if-key-state="absent"/>
+ </definition>
</changes>
</component>
<component name="SPARK_CLIENT">
@@ -136,6 +141,7 @@
</changes>
</component>
</service>
+
<service name="OOZIE">
<component name="OOZIE_SERVER">
<changes>
http://git-wip-us.apache.org/repos/asf/ambari/blob/8e688244/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
index 5b37375..e7ada04 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
@@ -75,7 +75,7 @@
<service name="FLUME">
<component>FLUME_HANDLER</component>
</service>
-
+
<service name="ACCUMULO">
<component>ACCUMULO_TRACER</component>
<component>ACCUMULO_GC</component>
@@ -300,6 +300,12 @@
<execute-stage service="STORM" component="NIMBUS" title="Apply config changes for Nimbus">
<task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/>
</execute-stage>
+
+ <execute-stage service="ATLAS" component="ATLAS_SERVER" title="Updating Atlas TLS Exclude Protocols">
+ <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol">
+ <summary>Updating Atlas TLS Exclude Protocols to exclude TLS v1.2</summary>
+ </task>
+ </execute-stage>
</group>
<!--
@@ -329,7 +335,7 @@
</task>
</execute-stage>
</group>
-
+
<!-- Now, restart all of the services. -->
<group xsi:type="restart" name="ZOOKEEPER" title="ZooKeeper">
<service-check>false</service-check>
@@ -671,7 +677,7 @@
<component>FLUME_HANDLER</component>
</service>
</group>
-
+
<group xsi:type="restart" name="ACCUMULO" title="Accumulo">
<service-check>false</service-check>
<skippable>true</skippable>
@@ -700,7 +706,7 @@
<group xsi:type="cluster" name="FINALIZE_PRE_CHECK" title="Finalize {{direction.text.proper}} Pre-Check">
<direction>UPGRADE</direction>
-
+
<execute-stage title="Check Component Versions">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.ComponentVersionCheckAction" />
</execute-stage>
@@ -770,7 +776,7 @@
<function>setup_ranger_java_patches</function>
</task>
</pre-upgrade>
-
+
<pre-downgrade copy-upgrade="true" />
<upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/8e688244/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
index 55e8924..fe297c3 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
@@ -431,6 +431,12 @@
<summary>Updating the Atlas Log4J properties to include parameterizations</summary>
</task>
</execute-stage>
+
+ <execute-stage service="ATLAS" component="ATLAS_SERVER" title="Updating Atlas TLS Exclude Protocols">
+ <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol">
+ <summary>Updating Atlas TLS Exclude Protocols to exclude TLS v1.2</summary>
+ </task>
+ </execute-stage>
<!--KAFKA-->
<execute-stage service="KAFKA" component="KAFKA_BROKER" title="Parameterizing Kafka Log4J Properties">
http://git-wip-us.apache.org/repos/asf/ambari/blob/8e688244/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
index 15e5536..a030adb 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
@@ -934,6 +934,12 @@
<service name="ATLAS">
<component name="ATLAS_SERVER">
+ <pre-upgrade>
+ <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol"/>
+ </pre-upgrade>
+
+ <pre-downgrade/>
+
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/8e688244/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
index 0c0b08e..97313b5 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
@@ -1066,6 +1066,7 @@
<component name="ATLAS_SERVER">
<pre-upgrade>
<task xsi:type="configure" id="atlas_log4j_parameterize" />
+ <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol"/>
</pre-upgrade>
<pre-downgrade />
<upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/8e688244/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
index 47e1fb5..91de1b0 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
@@ -60,7 +60,7 @@
<on-ambari-upgrade add="true"/>
</property>
- <property>
+ <property>
<name>atlas.sso.knox.browser.useragent</name>
<value/>
<description/>
@@ -92,5 +92,4 @@
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
-
</configuration>
[02/50] [abbrv] ambari git commit: AMBARI-20259. Superset not able to
start on Ubuntu if ASCII encoding is set as default encoding - addendum patch
(Nishant Bangarwa via smohanty)
Posted by ol...@apache.org.
AMBARI-20259. Superset not able to start on Ubuntu if ASCII encoding is set as default encoding - addendum patch (Nishant Bangarwa via smohanty)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0ba42cf6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0ba42cf6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0ba42cf6
Branch: refs/heads/branch-dev-logsearch
Commit: 0ba42cf6c101a435a97b08188ec628f26cdd324d
Parents: 34eafc3
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Sun Mar 5 08:40:06 2017 -0800
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Sun Mar 5 08:40:11 2017 -0800
----------------------------------------------------------------------
.../DRUID/0.9.2/configuration/druid-superset-env.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0ba42cf6/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml b/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml
index 2ca83de..7284342 100644
--- a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml
+++ b/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml
@@ -90,8 +90,8 @@
<value>
# Set environment variables here.
- export LC_ALL=C.UTF-8
- export LANG=C.UTF-8
+ export LC_ALL=en_US.UTF-8
+ export LANG=en_US.UTF-8
# Superset Home Dir
export SUPERSET_CONFIG_DIR={{superset_config_dir}}
[21/50] [abbrv] ambari git commit: AMBARI-20344. RU: MR2 service
check failed during rolling upgrade (dlysnichenko)
Posted by ol...@apache.org.
AMBARI-20344. RU: MR2 service check failed during rolling upgrade (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7e8a8150
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7e8a8150
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7e8a8150
Branch: refs/heads/branch-dev-logsearch
Commit: 7e8a8150e8e103e1835c72cfd8bcc65a623b6d46
Parents: 3bc3d68
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Tue Mar 7 18:02:05 2017 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Tue Mar 7 18:02:05 2017 +0200
----------------------------------------------------------------------
.../resource_management/libraries/functions/stack_select.py | 5 ++++-
.../SLIDER/0.60.0.2.2/package/scripts/service_check.py | 4 +++-
2 files changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/7e8a8150/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py b/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py
index 513ceac..34c311d 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py
@@ -91,7 +91,10 @@ SERVICE_CHECK_DIRECTORY_MAP = {
"PIG_SERVICE_CHECK" : "hadoop-client",
"HIVE_SERVICE_CHECK" : "hadoop-client",
"OOZIE_SERVICE_CHECK" : "hadoop-client",
- "MAHOUT_SERVICE_CHECK" : "mahout-client"
+ "MAHOUT_SERVICE_CHECK" : "mahout-client",
+ "MAPREDUCE2_SERVICE_CHECK" : "hadoop-client",
+ "YARN_SERVICE_CHECK" : "hadoop-client",
+ "SLIDER_SERVICE_CHECK" : "slider-client"
}
# <stack-root>/current/hadoop-client/[bin|sbin|libexec|lib]
http://git-wip-us.apache.org/repos/asf/ambari/blob/7e8a8150/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py
index 2f656c7..3b2c4ab 100644
--- a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py
+++ b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/service_check.py
@@ -39,6 +39,7 @@ class SliderServiceCheck(Script):
def service_check(self, env):
import params
env.set_params(params)
+ environment={'HADOOP_CONF_DIR': '/usr/hdp/2.4.3.0-227/hadoop/conf'}
if params.stack_version_formatted and check_stack_feature(StackFeature.COPY_TARBALL_TO_HDFS, params.stack_version_formatted):
copy_to_hdfs("slider", params.user_group, params.hdfs_user, skip=params.sysprep_skip_copy_tarballs_hdfs)
@@ -52,7 +53,8 @@ class SliderServiceCheck(Script):
tries=3,
try_sleep=5,
user=params.smokeuser,
- logoutput=True
+ logoutput=True,
+ environment=environment
)
[34/50] [abbrv] ambari git commit: AMBARI-20357. [Hive2] JS error in
udf delete (pallavkul)
Posted by ol...@apache.org.
AMBARI-20357. [Hive2] JS error in udf delete (pallavkul)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/63dad097
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/63dad097
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/63dad097
Branch: refs/heads/branch-dev-logsearch
Commit: 63dad097a730d6403f052e0083fa0e665de26f25
Parents: 60095bc
Author: pallavkul <pa...@gmail.com>
Authored: Wed Mar 8 20:50:09 2017 +0530
Committer: pallavkul <pa...@gmail.com>
Committed: Wed Mar 8 20:51:44 2017 +0530
----------------------------------------------------------------------
.../resources/ui/app/components/udf-item.js | 148 +++++++++++++------
.../resources/ui/app/routes/queries/query.js | 4 +-
.../src/main/resources/ui/app/routes/udfs.js | 18 ++-
.../main/resources/ui/app/routes/udfs/new.js | 138 ++++++++++-------
.../resources/ui/app/services/auto-refresh.js | 2 +-
.../ui/app/templates/components/udf-item.hbs | 26 ++--
.../main/resources/ui/app/templates/udfs.hbs | 3 +
7 files changed, 221 insertions(+), 118 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/63dad097/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
index 44f56e5..3e6e623 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/components/udf-item.js
@@ -17,8 +17,9 @@
*/
import Ember from 'ember';
+import UILoggerMixin from '../mixins/ui-logger';
-export default Ember.Component.extend({
+export default Ember.Component.extend(UILoggerMixin, {
store: Ember.inject.service(),
@@ -30,10 +31,43 @@ export default Ember.Component.extend({
showDeleteUdfModal: false,
expandedValue: null,
udfId: null,
+ editUdfId: Ember.computed('udf', function () {
+ return this.get('udf.id');
+ }),
+ editUdfName: Ember.computed('udf', function () {
+ return this.get('udf.name');
+ }),
+ editUdfClassName: Ember.computed('udf', function () {
+ return this.get('udf.classname');
+ }),
+ editOwner: Ember.computed('udf', function () {
+ return this.get('udf.owner');
+ }),
+ editFileResource: Ember.computed('udf', function () {
+ return this.get('udf.fileResource');
+ }),
fileResourceList:[],
selectedFileResource: null,
isAddingNewFileResource: false,
+ validate(udfName, udfClassName, resourceName, resourcePath){
+ if (Ember.isEmpty(udfName)) {
+ this.get('logger').danger('UDF Name can not be empty.');
+ return false;
+ }
+
+ if (Ember.isEmpty(udfClassName)) {
+ this.get('logger').danger('UDF Class Name can not be empty.');
+ return false;
+ }
+
+ if (Ember.isEmpty(resourceName) || Ember.isEmpty(resourcePath)) {
+ this.get('logger').danger('File Resource can not be empty.');
+ return false;
+ }
+ return true;
+ },
+
actions: {
toggleExpandUdf(fileResourceId) {
@@ -59,14 +93,30 @@ export default Ember.Component.extend({
this.set('expandedEdit', true);
this.set('valueLoading', true);
- this.get('store').find('fileResource', fileResourceId).then((data) => {
- this.set('udfFileResourceName', data.get('name'));
- this.set('udfFileResourcePath', data.get('path'));
- });
+ this.get('store').findAll('file-resource').then((data) => {
+ let fileResourceList = [];
+ data.forEach(x => {
+ let localFileResource = {'id': x.get('id'),
+ 'name': x.get('name'),
+ 'path': x.get('path'),
+ 'owner': x.get('owner')
+ };
+ fileResourceList.push(localFileResource);
+ });
+ fileResourceList.filterBy('id', fileResourceId).map((data) => {
+ this.set('udfFileResourceName', data.name);
+ this.set('udfFileResourcePath', data.path);
+ this.get('store').find('udf', udfId).then((data) => {
+ this.set('editUdfId', udfId);
+ this.set('editUdfName', data.get('name'));
+ this.set('editUdfClassName', data.get('classname'));
+ this.set('editOwner', data.get('owner'));
+ });
+ });
+ });
this.send('setFileResource', fileResourceId);
-
}
},
@@ -75,39 +125,38 @@ export default Ember.Component.extend({
},
saveUDf(name, classname, udfid, udfFileResourceName, udfFileResourcePath){
-
let self = this;
-
- if(!Ember.isEmpty(this.get('selectedFileResource'))){
- this.get('store').findRecord('udf', udfid).then(function(resultUdf) {
- resultUdf.set('name', name);
- resultUdf.set('classname', classname);
- resultUdf.set('fileResource', self.get('selectedFileResource').id);
- resultUdf.save();
- self.set('expandedEdit', false);
- });
- } else {
-
- let resourcePayload = {"name":udfFileResourceName,"path":udfFileResourcePath};
-
- this.get('udfService').savefileResource(resourcePayload)
- .then((data) => {
- console.log('fileResource is', data.fileResource.id);
- self.get('store').findRecord('udf', udfid).then(function(resultUdf) {
-
- resultUdf.set('name', name);
- resultUdf.set('classname', classname);
- resultUdf.set('fileResource', data.fileResource.id);
- resultUdf.save();
- self.set('expandedEdit', false);
- });
- }, (error) => {
- console.log("Error encountered", error);
+ if (this.validate(name, classname, udfFileResourceName, udfFileResourcePath)) {
+ if (!Ember.isEmpty(this.get('selectedFileResource'))) {
+ this.get('store').findRecord('udf', udfid).then(function (resultUdf) {
+ resultUdf.set('name', name);
+ resultUdf.set('classname', classname);
+ resultUdf.set('fileResource', self.get('selectedFileResource').id);
+ resultUdf.save();
+ self.set('expandedEdit', false);
});
+ }
+ else {
+
+ let resourcePayload = {"name": udfFileResourceName, "path": udfFileResourcePath};
+
+ this.get('udfService').savefileResource(resourcePayload)
+ .then((data) => {
+ console.log('fileResource is', data.fileResource.id);
+ self.get('store').findRecord('udf', udfid).then(function (resultUdf) {
+
+ resultUdf.set('name', name);
+ resultUdf.set('classname', classname);
+ resultUdf.set('fileResource', data.fileResource.id);
+ resultUdf.save();
+ self.set('expandedEdit', false);
+ });
+ }, (error) => {
+ console.log("Error encountered", error);
+ });
+ }
}
-
this.set('isAddingNewFileResource', false);
-
},
showRemoveUdfModal(udfId){
@@ -117,16 +166,7 @@ export default Ember.Component.extend({
},
removeUdf(){
- let self = this;
- this.get('store').find('udf', this.get('udfId')).then(function(resultUdf) {
- resultUdf.destroyRecord().then(function() {
- self.send('cancelUdf');
- self.sendAction('refreshUdfList');
- }, function(response) {
- console.log('UDF NOT deleted', response);
- });
- return false;
- });
+ this.sendAction('removeUdf', this.get('udfId') );
},
cancelUdf(){
@@ -144,10 +184,22 @@ export default Ember.Component.extend({
},
setFileResource(fileResourceId){
- let localSelectedFileResource = this.get('fileResourceList').filterBy('id', fileResourceId);
- this.set('selectedFileResource',localSelectedFileResource[0]);
- }
+ this.get('store').findAll('file-resource').then((data) => {
+ let fileResourceList = [];
+ data.forEach(x => {
+ let localFileResource = {'id': x.get('id'),
+ 'name': x.get('name'),
+ 'path': x.get('path'),
+ 'owner': x.get('owner')
+ };
+ fileResourceList.push(localFileResource);
+ });
+
+ let localSelectedFileResource = fileResourceList.filterBy('id', fileResourceId);
+ this.set('selectedFileResource',localSelectedFileResource.get('firstObject'));
+ });
+ }
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/63dad097/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
index 80116da..6b395ac 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
@@ -522,7 +522,7 @@ export default Ember.Route.extend(UILoggerMixin, {
Ember.run.later(() => {
if(this.get('controller.model').get('isQueryDirty')) {
- this.get('controller.model').set('tabDataToClose', {index:index, id:id})
+ this.get('controller.model').set('tabDataToClose', {index:index, id:id});
this.send('openWorksheetModal');
} else {
this.send('closeWorksheet', index, id);
@@ -627,7 +627,7 @@ export default Ember.Route.extend(UILoggerMixin, {
closeWorksheetModal(){
this.get('controller').set('showWorksheetModal', false);
this.closeWorksheetAfterSave();
- this.get('controller.model').set('tabDataToClose', null)
+ this.get('controller.model').set('tabDataToClose', null);
},
expandQueryEdidorPanel(){
http://git-wip-us.apache.org/repos/asf/ambari/blob/63dad097/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
index 138e85f..5733d5c 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs.js
@@ -19,6 +19,9 @@
import Ember from 'ember';
export default Ember.Route.extend({
+
+ showDeleteUdfModal: false,
+
model() {
return this.store.findAll('udf').then(udfs => udfs.toArray());
},
@@ -48,7 +51,6 @@ export default Ember.Route.extend({
actions:{
refreshUdfList(){
-
this.get('store').findAll('udf').then((data) => {
let udfList = [];
data.forEach(x => {
@@ -65,8 +67,20 @@ export default Ember.Route.extend({
this.controllerFor('udfs').set('udflist',udfList);
this.transitionTo('udfs');
});
+ },
- }
+ removeUdf(udfId){
+ var self = this;
+ let record = this.get('store').peekRecord('udf', udfId );
+ if(record){
+ record.destroyRecord().then(function(){
+ self.send('cancelUdf');
+ self.send('refreshUdfList');
+ })}
+ },
+ cancelUdf(){
+ this.set('showDeleteUdfModal', false);
+ }
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/63dad097/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
index 84733e8..6207b77 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/udfs/new.js
@@ -25,6 +25,26 @@ export default Ember.Route.extend(UILoggerMixin, {
},
+ validateUDF(udfName, udfClassName){
+ if (Ember.isEmpty(udfName)) {
+ this.get('logger').danger('UDF Name can not be empty.');
+ return false;
+ }
+ if (Ember.isEmpty(udfClassName)) {
+ this.get('logger').danger('UDF Class Name can not be empty.');
+ return false;
+ }
+ return true;
+ },
+
+ validateFileResource(resourceName, resourcePath){
+ if (Ember.isEmpty(resourceName) || Ember.isEmpty(resourcePath)) {
+ this.get('logger').danger('File Resource can not be empty.');
+ return false;
+ }
+ return true;
+ },
+
udf: Ember.inject.service(),
store: Ember.inject.service(),
@@ -41,7 +61,7 @@ export default Ember.Route.extend(UILoggerMixin, {
};
fileResourceList.push(localFileResource);
});
- fileResourceList.push({'name':'Add New File Resource', 'action':'addNewFileResource'})
+ fileResourceList.push({'name':'Add New File Resource', 'action':'addNewFileResource'});
controller.set('fileResourceList', fileResourceList);
});
@@ -60,52 +80,19 @@ export default Ember.Route.extend(UILoggerMixin, {
this.get('controller').set('udfName', udfName);
this.get('controller').set('udfClassName', udfClassName);
- if(!Ember.isEmpty( this.get('controller').get('resourceId'))){
- let newUDF = this.get('store').createRecord('udf',
- {name:udfName,
- classname:udfClassName,
- fileResource: this.get('controller').get('resourceId')
- });
- newUDF.save().then((data) => {
- console.log('udf saved');
-
- this.get('store').findAll('udf').then((data) => {
- let udfList = [];
- data.forEach(x => {
- let localUdf = {
- 'id': x.get('id'),
- 'name': x.get('name'),
- 'classname': x.get('classname'),
- 'fileResource': x.get('fileResource'),
- 'owner': x.get('owner')
- };
- udfList.pushObject(localUdf);
- });
-
- this.controllerFor('udfs').set('udflist',udfList);
- this.transitionTo('udfs');
- })
+ if(!Ember.isEmpty( this.get('controller').get('resourceId'))){
- });
+ if (this.validateUDF(udfName, udfClassName)) {
- } else {
-
- let resourcePayload = {"name":resourceName,"path":resourcePath};
-
- var newFileResource = this.get('store').createRecord('file-resource',
- {name:resourceName,
- path:resourcePath
- });
- newFileResource.save().then((data) => {
- console.log('fileResource is', data.get('id'));
let newUDF = this.get('store').createRecord('udf',
- {name:udfName,
- classname:udfClassName,
- fileResource: data.get('id')
+ {
+ name: udfName,
+ classname: udfClassName,
+ fileResource: this.get('controller').get('resourceId')
});
newUDF.save().then((data) => {
@@ -124,20 +111,66 @@ export default Ember.Route.extend(UILoggerMixin, {
udfList.pushObject(localUdf);
});
- this.controllerFor('udfs').set('udflist',udfList);
+ this.controllerFor('udfs').set('udflist', udfList);
this.transitionTo('udfs');
- })
- })
- .catch((error) => {
- this.get('logger').danger('Failed to create UDF.', this.extractError(error));
- this.transitionTo('udfs');
+ });
});
- })
- .catch((error) => {
- this.get('logger').danger('Failed to create File Resource.', this.extractError(error));
- this.transitionTo('udfs');
- });
+
+ }
+
+ } else {
+
+ let resourcePayload = {"name":resourceName,"path":resourcePath};
+
+ var newFileResource = this.get('store').createRecord('file-resource',
+ {name:resourceName,
+ path:resourcePath
+ });
+
+
+ if (this.validateFileResource(resourceName, resourcePath) && this.validateUDF(udfName, udfClassName)) {
+
+ newFileResource.save().then((data) => {
+ console.log('fileResource is', data.get('id'));
+ let newUDF = this.get('store').createRecord('udf',
+ {name:udfName,
+ classname:udfClassName,
+ fileResource: data.get('id')
+ });
+
+ newUDF.save().then((data) => {
+ console.log('udf saved');
+
+ this.get('store').findAll('udf').then((data) => {
+ let udfList = [];
+ data.forEach(x => {
+ let localUdf = {
+ 'id': x.get('id'),
+ 'name': x.get('name'),
+ 'classname': x.get('classname'),
+ 'fileResource': x.get('fileResource'),
+ 'owner': x.get('owner')
+ };
+ udfList.pushObject(localUdf);
+ });
+
+ this.controllerFor('udfs').set('udflist',udfList);
+ this.transitionTo('udfs');
+ });
+ })
+ .catch((error) => {
+ this.get('logger').danger('Failed to create UDF.', this.extractError(error));
+ this.transitionTo('udfs');
+
+ });
+ })
+ .catch((error) => {
+ this.get('logger').danger('Failed to create File Resource.', this.extractError(error));
+ this.transitionTo('udfs');
+ });
+
+ }
}
},
@@ -153,10 +186,11 @@ export default Ember.Route.extend(UILoggerMixin, {
handleFileResourceChange(filter){
console.log('filter', filter);
- if(filter.action == "addNewFileResource"){
+ if(filter.action === "addNewFileResource"){
this.get('controller').set('isAddingNewFileResource', true);
this.get('controller').set('resourceName','');
this.get('controller').set('resourcePath','');
+ this.get('controller').set('resourceId', null);
this.get('controller').set('selectedFileResource',null);
}else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/63dad097/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
index 2e8ec62..b3276e7 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/auto-refresh.js
@@ -50,7 +50,7 @@ export default Ember.Service.extend({
databaseRefreshStartingCallback();
let oldDatabases = this.get('store').peekAll('database').mapBy('name');
this.get('store').query('database', {}).then((data) => {
- let deletedDbCount = 0
+ let deletedDbCount = 0;
let newDatabases = data.mapBy('name');
oldDatabases.forEach((oldDB) => {
if (!newDatabases.contains(oldDB)) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/63dad097/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
index fec48fb..929b91a 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/components/udf-item.hbs
@@ -39,19 +39,19 @@
{{#if expandedEdit}}
{{udf-edit
- udfid=udf.id
- name=udf.name
- classname=udf.classname
- owner=udf.owner
- fileResource=udf.fileResource
- udfFileResourceName=udfFileResourceName
- udfFileResourcePath=udfFileResourcePath
- fileResourceList=fileResourceList
- selectedFileResource=selectedFileResource
- isAddingNewFileResource=isAddingNewFileResource
- handleResourceChange='handleResourceChange'
- cancelEditUdf='cancelEditUdf'
- saveUDf='saveUDf'
+ udfid=editUdfId
+ name=editUdfName
+ classname=editUdfClassName
+ owner=editOwner
+ fileResource=editFileResource
+ udfFileResourceName=udfFileResourceName
+ udfFileResourcePath=udfFileResourcePath
+ fileResourceList=fileResourceList
+ selectedFileResource=selectedFileResource
+ isAddingNewFileResource=isAddingNewFileResource
+ handleResourceChange='handleResourceChange'
+ cancelEditUdf='cancelEditUdf'
+ saveUDf='saveUDf'
}}
{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/63dad097/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs
index ef6a01c..ffb824e 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/udfs.hbs
@@ -35,7 +35,10 @@
{{udf-item
udf=udf
fileResourceList=fileResourceList
+ showDeleteUdfModal=showDeleteUdfModal
refreshUdfList='refreshUdfList'
+ removeUdf='removeUdf'
+ cancelUdf='cancelUdf'
}}
{{/each}}
</tbody>
[19/50] [abbrv] ambari git commit: AMBARI-20335. Kerberos identity
reference not working for ranger-audit property in hbase (rlevas)
Posted by ol...@apache.org.
AMBARI-20335. Kerberos identity reference not working for ranger-audit property in hbase (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/225edb97
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/225edb97
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/225edb97
Branch: refs/heads/branch-dev-logsearch
Commit: 225edb97f91428be6426f50b794ba051df2bb65e
Parents: 4df38c3
Author: Robert Levas <rl...@hortonworks.com>
Authored: Tue Mar 7 10:03:12 2017 -0500
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Tue Mar 7 10:03:12 2017 -0500
----------------------------------------------------------------------
.../server/upgrade/UpgradeCatalog250.java | 57 ++++---
.../stacks/HDP/2.5/services/HBASE/kerberos.json | 3 +-
.../PERF/1.0/services/FAKEHBASE/kerberos.json | 3 +-
.../server/upgrade/UpgradeCatalog250Test.java | 71 ++++++---
...test_kerberos_descriptor_2_5_infra_solr.json | 148 ++++++++++++++++++-
5 files changed, 238 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/225edb97/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
index 0246229..e244925 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
@@ -469,6 +469,7 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
addInfrSolrDescriptor(artifactDAO, artifactEntity, kerberosDescriptor, logSearchKerberosDescriptor, "LOGSEARCH_SERVER");
addInfrSolrDescriptor(artifactDAO, artifactEntity, kerberosDescriptor, rangerKerberosDescriptor, "RANGER_ADMIN");
KerberosServiceDescriptor stormKerberosDescriptor = kerberosDescriptor.getService("STORM");
+
if (stormKerberosDescriptor != null) {
KerberosComponentDescriptor componentDescriptor = stormKerberosDescriptor.getComponent("NIMBUS");
if (componentDescriptor != null) {
@@ -476,27 +477,24 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
if (origIdentityDescriptor != null) {
KerberosPrincipalDescriptor origPrincipalDescriptor = origIdentityDescriptor.getPrincipalDescriptor();
KerberosPrincipalDescriptor newPrincipalDescriptor = new KerberosPrincipalDescriptor(
- null,
- null,
- (origPrincipalDescriptor == null) ?
- "ranger-storm-audit/xasecure.audit.jaas.Client.option.principal" : origPrincipalDescriptor.getConfiguration(),
- null
+ null,
+ null,
+ (origPrincipalDescriptor == null) ?
+ "ranger-storm-audit/xasecure.audit.jaas.Client.option.principal" : origPrincipalDescriptor.getConfiguration(),
+ null
);
KerberosKeytabDescriptor origKeytabDescriptor = origIdentityDescriptor.getKeytabDescriptor();
KerberosKeytabDescriptor newKeytabDescriptor = new KerberosKeytabDescriptor(
- null,
- null,
- null,
- null,
- null,
- (origKeytabDescriptor == null) ?
- "ranger-storm-audit/xasecure.audit.jaas.Client.option.keyTab" : origKeytabDescriptor.getConfiguration(),
- false);
+ null,
+ null,
+ null,
+ null,
+ null,
+ (origKeytabDescriptor == null) ?
+ "ranger-storm-audit/xasecure.audit.jaas.Client.option.keyTab" : origKeytabDescriptor.getConfiguration(),
+ false);
componentDescriptor.removeIdentity("/STORM/NIMBUS/nimbus_server");
componentDescriptor.putIdentity(new KerberosIdentityDescriptor("/STORM/storm_components", null, newPrincipalDescriptor, newKeytabDescriptor, null));
-
- artifactEntity.setArtifactData(kerberosDescriptor.toMap());
- artifactDAO.merge(artifactEntity);
}
}
}
@@ -508,11 +506,32 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
Map<String, String> properties = yarnSiteConfigDescriptor.getProperties();
if (properties != null && properties.containsKey(YARN_LCE_CGROUPS_MOUNT_PATH)) {
properties.remove(YARN_LCE_CGROUPS_MOUNT_PATH);
- artifactEntity.setArtifactData(kerberosDescriptor.toMap());
- artifactDAO.merge(artifactEntity);
}
}
}
+
+ // Fix HBASE_MASTER Kerberos identity for Ranger audit by clearing out any keytab file or principal name values.
+ KerberosServiceDescriptor hbaseKerberosDescriptor = kerberosDescriptor.getService("HBASE");
+ if (hbaseKerberosDescriptor != null) {
+ KerberosComponentDescriptor hbaseMasterKerberosDescriptor = hbaseKerberosDescriptor.getComponent("HBASE_MASTER");
+ if (hbaseMasterKerberosDescriptor != null) {
+ KerberosIdentityDescriptor identityDescriptor = hbaseMasterKerberosDescriptor.getIdentity("/HBASE/HBASE_MASTER/hbase_master_hbase");
+
+ if (identityDescriptor != null) {
+ KerberosPrincipalDescriptor principalDescriptor = identityDescriptor.getPrincipalDescriptor();
+ KerberosKeytabDescriptor keytabDescriptor = identityDescriptor.getKeytabDescriptor();
+
+ identityDescriptor.setReference(identityDescriptor.getName());
+ identityDescriptor.setName("ranger_hbase_audit");
+
+ principalDescriptor.setValue(null);
+ keytabDescriptor.setFile(null);
+ }
+ }
+ }
+
+ artifactEntity.setArtifactData(kerberosDescriptor.toMap());
+ artifactDAO.merge(artifactEntity);
}
}
}
@@ -532,8 +551,6 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
} else {
Predicate predicate = ContainsPredicate.fromMap(Collections.<String, Object>singletonMap(ContainsPredicate.NAME, Arrays.asList("services", "AMBARI_INFRA")));
componentDescriptor.putIdentity(new KerberosIdentityDescriptor("/AMBARI_INFRA/INFRA_SOLR/infra-solr",null, null, null, predicate));
- artifactEntity.setArtifactData(kerberosDescriptor.toMap());
- artifactDAO.merge(artifactEntity);
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/225edb97/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json
index f510770..011921b 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json
@@ -93,7 +93,8 @@
}
},
{
- "name": "/HBASE/HBASE_MASTER/hbase_master_hbase",
+ "name" : "ranger_hbase_audit",
+ "reference": "/HBASE/HBASE_MASTER/hbase_master_hbase",
"principal": {
"configuration": "ranger-hbase-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/225edb97/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json
index b053779..f1026f1 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json
@@ -93,7 +93,8 @@
}
},
{
- "name": "/FAKEHBASE/FAKEHBASE_MASTER/hbase_master_hbase",
+ "name": "ranger_hbase_audit",
+ "reference": "/FAKEHBASE/FAKEHBASE_MASTER/hbase_master_hbase",
"principal": {
"configuration": "ranger-hbase-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/225edb97/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
index ad01e07..3dfc32f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
@@ -56,8 +56,13 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.Service;
+import org.apache.ambari.server.state.kerberos.AbstractKerberosDescriptorContainer;
+import org.apache.ambari.server.state.kerberos.KerberosComponentDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosDescriptorFactory;
+import org.apache.ambari.server.state.kerberos.KerberosIdentityDescriptor;
+import org.apache.ambari.server.state.kerberos.KerberosKeytabDescriptor;
+import org.apache.ambari.server.state.kerberos.KerberosPrincipalDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptor;
import org.apache.ambari.server.state.stack.OsFamily;
import org.easymock.Capture;
@@ -1682,34 +1687,34 @@ public class UpgradeCatalog250Test {
Capture<Map<String, Object>> updateData = Capture.newInstance(CaptureType.ALL);
artifactEntity.setArtifactData(capture(updateData));
- expectLastCall().times(4);
+ expectLastCall().times(1);
ArtifactDAO artifactDAO = createNiceMock(ArtifactDAO.class);
- expect(artifactDAO.merge(anyObject(ArtifactEntity.class))).andReturn(artifactEntity).times(4);
+ expect(artifactDAO.merge(anyObject(ArtifactEntity.class))).andReturn(artifactEntity).times(1);
replay(artifactEntity, artifactDAO, upgradeMock);
upgradeMock.updateKerberosDescriptorArtifact(artifactDAO, artifactEntity);
verify(artifactEntity, artifactDAO, upgradeMock);
- KerberosDescriptor atlasKerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(updateData.getValues().get(0));
- KerberosDescriptor rangerKerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(updateData.getValues().get(1));
- KerberosDescriptor stormKerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(updateData.getValues().get(2));
- KerberosDescriptor yarnKerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(updateData.getValues().get(3));
-
- Assert.assertNotNull(atlasKerberosDescriptorUpdated.getIdentity("spnego"));
- Assert.assertNotNull(atlasKerberosDescriptorUpdated.getService("LOGSEARCH"));
- Assert.assertNotNull(atlasKerberosDescriptorUpdated.getService("LOGSEARCH").getComponent("LOGSEARCH_SERVER"));
- Assert.assertNotNull(atlasKerberosDescriptorUpdated.getService("LOGSEARCH").getComponent("LOGSEARCH_SERVER").getIdentity("/AMBARI_INFRA/INFRA_SOLR/infra-solr"));
- Assert.assertNotNull(atlasKerberosDescriptorUpdated.getService("ATLAS"));
- Assert.assertNotNull(atlasKerberosDescriptorUpdated.getService("ATLAS").getComponent("ATLAS_SERVER"));
- Assert.assertNotNull(atlasKerberosDescriptorUpdated.getService("ATLAS").getComponent("ATLAS_SERVER").getIdentity("/AMBARI_INFRA/INFRA_SOLR/infra-solr"));
- Assert.assertNotNull(rangerKerberosDescriptorUpdated.getService("RANGER"));
- Assert.assertNotNull(rangerKerberosDescriptorUpdated.getService("RANGER").getComponent("RANGER_ADMIN"));
- Assert.assertNotNull(rangerKerberosDescriptorUpdated.getService("RANGER").getComponent("RANGER_ADMIN").getIdentity("/AMBARI_INFRA/INFRA_SOLR/infra-solr"));
- Assert.assertNotNull(stormKerberosDescriptorUpdated.getService("STORM"));
- Assert.assertNotNull(stormKerberosDescriptorUpdated.getService("STORM").getComponent("NIMBUS"));
- Assert.assertNotNull(stormKerberosDescriptorUpdated.getService("STORM").getComponent("NIMBUS").getIdentity("/STORM/storm_components"));
- Assert.assertFalse(yarnKerberosDescriptorUpdated.getService("YARN").getConfigurations().get("yarn-site").getProperties().containsKey(propertyToRemove));
+ KerberosDescriptor kerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(updateData.getValue());
+
+ getIdentity(kerberosDescriptorUpdated,null, null, "spnego");
+ getIdentity(kerberosDescriptorUpdated,"LOGSEARCH", "LOGSEARCH_SERVER", "/AMBARI_INFRA/INFRA_SOLR/infra-solr");
+ getIdentity(kerberosDescriptorUpdated,"ATLAS", "ATLAS_SERVER", "/AMBARI_INFRA/INFRA_SOLR/infra-solr");
+ getIdentity(kerberosDescriptorUpdated,"RANGER", "RANGER_ADMIN", "/AMBARI_INFRA/INFRA_SOLR/infra-solr");
+ getIdentity(kerberosDescriptorUpdated,"STORM", "NIMBUS", "/STORM/storm_components");
+
+ Assert.assertFalse(kerberosDescriptorUpdated.getService("YARN").getConfigurations().get("yarn-site").getProperties().containsKey(propertyToRemove));
+
+ KerberosIdentityDescriptor rangerHbaseAuditIdentityDescriptor = getIdentity(kerberosDescriptorUpdated,"HBASE", "HBASE_MASTER", "ranger_hbase_audit");
+
+ KerberosPrincipalDescriptor rangerHbaseAuditPrincipalDescriptor = rangerHbaseAuditIdentityDescriptor.getPrincipalDescriptor();
+ Assert.assertNotNull(rangerHbaseAuditPrincipalDescriptor);
+ Assert.assertNull(rangerHbaseAuditPrincipalDescriptor.getValue());
+
+ KerberosKeytabDescriptor rangerHbaseAuditKeytabDescriptor = rangerHbaseAuditIdentityDescriptor.getKeytabDescriptor();
+ Assert.assertNotNull(rangerHbaseAuditKeytabDescriptor);
+ Assert.assertNull(rangerHbaseAuditKeytabDescriptor.getFile());
}
@Test
@@ -1936,4 +1941,28 @@ public class UpgradeCatalog250Test {
}
});
}
+
+ private KerberosIdentityDescriptor getIdentity(KerberosDescriptor kerberosDescriptor, String serviceName, String componentName, String identityName) {
+ KerberosIdentityDescriptor identityDescriptor = null;
+ AbstractKerberosDescriptorContainer container = kerberosDescriptor;
+
+ if(serviceName != null) {
+ KerberosServiceDescriptor serviceDescriptor = kerberosDescriptor.getService(serviceName);
+ Assert.assertNotNull(serviceDescriptor);
+ container = serviceDescriptor;
+
+ if(componentName != null) {
+ KerberosComponentDescriptor componentDescriptor = serviceDescriptor.getComponent(componentName);
+ Assert.assertNotNull(componentDescriptor);
+ container = componentDescriptor;
+ }
+ }
+
+ if(identityName != null) {
+ identityDescriptor = container.getIdentity(identityName);
+ Assert.assertNotNull(identityDescriptor);
+ }
+
+ return identityDescriptor;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/225edb97/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_2_5_infra_solr.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_2_5_infra_solr.json b/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_2_5_infra_solr.json
index 0c2723e..de12baf 100644
--- a/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_2_5_infra_solr.json
+++ b/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_2_5_infra_solr.json
@@ -71,6 +71,153 @@
]
},
{
+ "components": [
+ {
+ "identities": [
+ {
+ "keytab": {
+ "configuration": "ranger-hbase-audit/xasecure.audit.jaas.Client.option.keyTab",
+ "file": "${keytab_dir}/ams-hbase.master.keytab"
+ },
+ "name": "/HBASE/HBASE_MASTER/hbase_master_hbase",
+ "principal": {
+ "configuration": "ranger-hbase-audit/xasecure.audit.jaas.Client.option.principal",
+ "local_username": null,
+ "type": null,
+ "value": "amshbase/_HOST@${realm}"
+ }
+ },
+ {
+ "name": "/HDFS/NAMENODE/hdfs"
+ },
+ {
+ "keytab": {
+ "configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.keytab",
+ "file": "${keytab_dir}/spnego.service.keytab"
+ },
+ "name": "/spnego",
+ "principal": {
+ "configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal",
+ "local_username": null,
+ "type": null,
+ "value": "HTTP/_HOST@${realm}"
+ }
+ },
+ {
+ "keytab": {
+ "configuration": "hbase-site/hbase.master.keytab.file",
+ "file": "${keytab_dir}/hbase.service.keytab",
+ "group": {
+ "access": "",
+ "name": "${cluster-env/user_group}"
+ },
+ "owner": {
+ "access": "r",
+ "name": "${hbase-env/hbase_user}"
+ }
+ },
+ "name": "hbase_master_hbase",
+ "principal": {
+ "configuration": "hbase-site/hbase.master.kerberos.principal",
+ "local_username": "${hbase-env/hbase_user}",
+ "type": "service",
+ "value": "hbase/_HOST@${realm}"
+ }
+ }
+ ],
+ "name": "HBASE_MASTER"
+ },
+ {
+ "identities": [
+ {
+ "keytab": {
+ "configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.keytab",
+ "file": "${keytab_dir}/spnego.service.keytab"
+ },
+ "name": "/spnego",
+ "principal": {
+ "configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal",
+ "local_username": null,
+ "type": null,
+ "value": "HTTP/_HOST@${realm}"
+ }
+ },
+ {
+ "keytab": {
+ "configuration": "hbase-site/hbase.regionserver.keytab.file",
+ "file": "${keytab_dir}/hbase.service.keytab",
+ "group": {
+ "access": "",
+ "name": "${cluster-env/user_group}"
+ },
+ "owner": {
+ "access": "r",
+ "name": "${hbase-env/hbase_user}"
+ }
+ },
+ "name": "hbase_regionserver_hbase",
+ "principal": {
+ "configuration": "hbase-site/hbase.regionserver.kerberos.principal",
+ "local_username": "${hbase-env/hbase_user}",
+ "type": "service",
+ "value": "hbase/_HOST@${realm}"
+ }
+ }
+ ],
+ "name": "HBASE_REGIONSERVER"
+ },
+ {
+ "identities": [
+ {
+ "keytab": {
+ "configuration": "hbase-site/phoenix.queryserver.keytab.file",
+ "file": null
+ },
+ "name": "phoenix_spnego",
+ "principal": {
+ "configuration": "hbase-site/phoenix.queryserver.kerberos.principal",
+ "local_username": null,
+ "type": null,
+ "value": null
+ },
+ "reference": "/spnego"
+ }
+ ],
+ "name": "PHOENIX_QUERY_SERVER"
+ }
+ ],
+ "identities": [
+ {
+ "name": "/smokeuser"
+ },
+ {
+ "name": "/spnego"
+ },
+ {
+ "keytab": {
+ "configuration": "hbase-env/hbase_user_keytab",
+ "file": "${keytab_dir}/hbase.headless.keytab",
+ "group": {
+ "access": "r",
+ "name": "${cluster-env/user_group}"
+ },
+ "owner": {
+ "access": "r",
+ "name": "${hbase-env/hbase_user}"
+ }
+ },
+ "name": "hbase",
+ "principal": {
+ "configuration": "hbase-env/hbase_principal_name",
+ "local_username": "${hbase-env/hbase_user}",
+ "type": "user",
+ "value": "${hbase-env/hbase_user}-${cluster_name|toLower()}@${realm}"
+ }
+ }
+ ],
+ "name": "HBASE"
+ },
+ {
"name": "LOGSEARCH",
"identities": [
{
@@ -114,7 +261,6 @@
}
]
},
- ,
{
"components": [
{
[27/50] [abbrv] ambari git commit: AMBARI-20355 : WFM view :
Import/Export asset label changes(Venkata Sairam via nitirajrathore)
Posted by ol...@apache.org.
AMBARI-20355 : WFM view : Import/Export asset label changes(Venkata Sairam via nitirajrathore)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f66a663a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f66a663a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f66a663a
Branch: refs/heads/branch-dev-logsearch
Commit: f66a663ad9722d808a1b656939fab9a7ae269d17
Parents: cb1ba69
Author: Nitiraj Singh Rathore <ni...@gmail.com>
Authored: Wed Mar 8 14:54:39 2017 +0530
Committer: Nitiraj Singh Rathore <ni...@gmail.com>
Committed: Wed Mar 8 14:56:09 2017 +0530
----------------------------------------------------------------------
.../ui/app/templates/components/flow-designer.hbs | 12 ++++++------
.../ui/app/templates/components/workflow-actions.hbs | 4 ++--
2 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f66a663a/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 b5c3807..f4d3876 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
@@ -37,8 +37,8 @@
<span class="caret"></span></button>
<ul class="dropdown-menu">
<li>
- <a class="pointer" title="Import workflow from HDFS" {{action "showFileBrowser"}}>
- <i class="fa fa-download marginright5"></i>Import from HDFS
+ <a class="pointer" title="Import Workflow from Shared File System" {{action "showFileBrowser"}}>
+ <i class="fa fa-download marginright5"></i>Import from Shared File System
</a>
<a class="pointer" title="Import workflow from Local File System">
{{#file-picker fileLoaded="fileLoaded" preview=false}}
@@ -231,16 +231,16 @@
{{/file-picker}}
</div>
</span>
- <span class="overlay-asset-import-icon" title="Import Asset" {{action "showAssetList" true}}>
+ <span class="overlay-asset-import-icon" title="Import Asset from Local Ambari Database" {{action "showAssetList" true}}>
<i class="fa fa-download"></i>
</span>
- <span class="overlay-hdfs-asset-import-icon" title="Import asset from HDFS" {{action "showActionSettingsFileBrowser"}}>
+ <span class="overlay-hdfs-asset-import-icon" title="Import Asset from Shared File System" {{action "showActionSettingsFileBrowser"}}>
<i class="fa fa-cloud-download"></i>
</span>
- <span class="overlay-asset-export-icon" title="Publish Asset" {{action "showAssetConfig" true}}>
+ <span class="overlay-asset-export-icon" title="Save Asset to Local Ambari Database" {{action "showAssetConfig" true}}>
<i class="fa fa-upload"></i>
</span>
- <span class="overlay-hdfs-asset-export-icon" title="Publish Asset to HDFS" {{action "showExportActionNodeFileBrowser"}}>
+ <span class="overlay-hdfs-asset-export-icon" title="Save Asset to Shared File System" {{action "showExportActionNodeFileBrowser"}}>
<i class="fa fa-cloud-upload"></i>
</span>
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f66a663a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs
index 75ec872..8907fdd 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs
@@ -35,8 +35,8 @@
</span>
</div>
{{/if}}
- <div {{action 'showAssetNodeList'}} class="btn asset-import-btn margin3"> <i class="fa fa-download"></i> <span class="font10px">Import asset</span></div>
- <div {{action 'showImportActionNodeFileBrowser'}} class="btn asset-import-btn margin3"> <i class="fa fa-cloud-download"></i> <span class="font10px">Import asset from HDFS</span></div>
+ <div {{action 'showAssetNodeList'}} class="btn asset-import-btn margin3"> <i class="fa fa-download"></i> <span class="font10px">Import Asset from Local Ambari Database</span></div>
+ <div {{action 'showImportActionNodeFileBrowser'}} class="btn asset-import-btn margin3"> <i class="fa fa-cloud-download"></i> <span class="font10px">Import Asset from Shared File System</span></div>
<div class="clearfix"></div>
<ul class="actions_list_left actionNodes">
<li {{action 'addAction' 'hive'}} class="dr_action enabled" data-name="Hive" data-type="hive"> <i class="fa fa-server"></i> Hive </li>
[10/50] [abbrv] ambari git commit: AMBARI-20308 - Atlas service check
fails during EU on wire encrypted cluster (jonathanhurley)
Posted by ol...@apache.org.
AMBARI-20308 - Atlas service check fails during EU on wire encrypted cluster (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d8901e26
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d8901e26
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d8901e26
Branch: refs/heads/branch-dev-logsearch
Commit: d8901e26c3f5cf45011d700cb44d73ea67c86d20
Parents: e895659
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Fri Mar 3 13:00:58 2017 -0500
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Mon Mar 6 12:42:26 2017 -0500
----------------------------------------------------------------------
.../configuration/application-properties.xml | 42 ++++++++++++++++++++
.../stacks/HDP/2.5/upgrades/config-upgrade.xml | 12 ++++++
.../HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml | 16 +++++---
.../HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml | 6 +++
.../stacks/HDP/2.5/upgrades/upgrade-2.5.xml | 6 +++
.../stacks/HDP/2.5/upgrades/upgrade-2.6.xml | 1 +
.../configuration/application-properties.xml | 3 +-
7 files changed, 79 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8901e26/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
new file mode 100644
index 0000000..366ecf6
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/configuration/application-properties.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+<configuration supports_final="false">
+
+ <!-- Supported in HDP 2.5.4 -->
+ <property>
+ <name>atlas.ssl.exclude.protocols</name>
+ <display-name>Excluded Wire Encryption Protocols</display-name>
+ <value>TLSv1.2</value>
+ <value-attributes>
+ <empty-value-valid>true</empty-value-valid>
+ </value-attributes>
+ <description>A comma-separate list of the wire encryption protocols to exclude when TLS is enabled. Some versions of cURL do not work with TLSv1.2.</description>
+ <used-by>
+ <property>
+ <type>application-properties</type>
+ <name>atlas.enableTLS</name>
+ </property>
+ </used-by>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8901e26/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
index 93e0149..37f2a82 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
@@ -136,6 +136,18 @@
</changes>
</component>
</service>
+
+ <service name="ATLAS">
+ <component name="ATLAS_SERVER">
+ <changes>
+ <definition xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol" summary="Excluding TLS v1.2 Protocol">
+ <type>application-properties</type>
+ <set key="atlas.ssl.exclude.protocols" value="TLSv1.2" if-type="application-properties" if-key="atlas.ssl.exclude.protocols" if-key-state="absent"/>
+ </definition>
+ </changes>
+ </component>
+ </service>
+
<service name="OOZIE">
<component name="OOZIE_SERVER">
<changes>
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8901e26/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
index 5b37375..e7ada04 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
@@ -75,7 +75,7 @@
<service name="FLUME">
<component>FLUME_HANDLER</component>
</service>
-
+
<service name="ACCUMULO">
<component>ACCUMULO_TRACER</component>
<component>ACCUMULO_GC</component>
@@ -300,6 +300,12 @@
<execute-stage service="STORM" component="NIMBUS" title="Apply config changes for Nimbus">
<task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/>
</execute-stage>
+
+ <execute-stage service="ATLAS" component="ATLAS_SERVER" title="Updating Atlas TLS Exclude Protocols">
+ <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol">
+ <summary>Updating Atlas TLS Exclude Protocols to exclude TLS v1.2</summary>
+ </task>
+ </execute-stage>
</group>
<!--
@@ -329,7 +335,7 @@
</task>
</execute-stage>
</group>
-
+
<!-- Now, restart all of the services. -->
<group xsi:type="restart" name="ZOOKEEPER" title="ZooKeeper">
<service-check>false</service-check>
@@ -671,7 +677,7 @@
<component>FLUME_HANDLER</component>
</service>
</group>
-
+
<group xsi:type="restart" name="ACCUMULO" title="Accumulo">
<service-check>false</service-check>
<skippable>true</skippable>
@@ -700,7 +706,7 @@
<group xsi:type="cluster" name="FINALIZE_PRE_CHECK" title="Finalize {{direction.text.proper}} Pre-Check">
<direction>UPGRADE</direction>
-
+
<execute-stage title="Check Component Versions">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.ComponentVersionCheckAction" />
</execute-stage>
@@ -770,7 +776,7 @@
<function>setup_ranger_java_patches</function>
</task>
</pre-upgrade>
-
+
<pre-downgrade copy-upgrade="true" />
<upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8901e26/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
index 55e8924..fe297c3 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
@@ -431,6 +431,12 @@
<summary>Updating the Atlas Log4J properties to include parameterizations</summary>
</task>
</execute-stage>
+
+ <execute-stage service="ATLAS" component="ATLAS_SERVER" title="Updating Atlas TLS Exclude Protocols">
+ <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol">
+ <summary>Updating Atlas TLS Exclude Protocols to exclude TLS v1.2</summary>
+ </task>
+ </execute-stage>
<!--KAFKA-->
<execute-stage service="KAFKA" component="KAFKA_BROKER" title="Parameterizing Kafka Log4J Properties">
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8901e26/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
index 15e5536..a030adb 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
@@ -934,6 +934,12 @@
<service name="ATLAS">
<component name="ATLAS_SERVER">
+ <pre-upgrade>
+ <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol"/>
+ </pre-upgrade>
+
+ <pre-downgrade/>
+
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8901e26/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
index 0c0b08e..97313b5 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
@@ -1066,6 +1066,7 @@
<component name="ATLAS_SERVER">
<pre-upgrade>
<task xsi:type="configure" id="atlas_log4j_parameterize" />
+ <task xsi:type="configure" id="hdp_2_5_4_0_atlas_exclude_tls_protocol"/>
</pre-upgrade>
<pre-downgrade />
<upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8901e26/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
index 47e1fb5..91de1b0 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/configuration/application-properties.xml
@@ -60,7 +60,7 @@
<on-ambari-upgrade add="true"/>
</property>
- <property>
+ <property>
<name>atlas.sso.knox.browser.useragent</name>
<value/>
<description/>
@@ -92,5 +92,4 @@
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
-
</configuration>
[07/50] [abbrv] ambari git commit: AMBARI-20304. Services shows as
Restart required after upgrading from Ambari-2.4.x to 2.5.0. (dlysnichenko)
Posted by ol...@apache.org.
AMBARI-20304. Services shows as Restart required after upgrading from Ambari-2.4.x to 2.5.0. (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/84e767ba
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/84e767ba
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/84e767ba
Branch: refs/heads/branch-dev-logsearch
Commit: 84e767ba0064029ed323d193625b165e0cf621dd
Parents: b9d1996
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Mon Mar 6 18:58:35 2017 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Mon Mar 6 18:58:35 2017 +0200
----------------------------------------------------------------------
.../common-services/FALCON/0.5.0.2.1/configuration/falcon-env.xml | 2 +-
.../common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml | 2 +-
.../common-services/SQOOP/1.4.4.2.0/configuration/sqoop-env.xml | 2 +-
.../common-services/STORM/0.10.0/configuration/storm-env.xml | 2 +-
.../common-services/YARN/2.1.0.2.0/configuration/yarn-site.xml | 2 +-
.../stacks/BIGTOP/0.8/services/YARN/configuration/yarn-site.xml | 2 +-
.../HDP/2.0.6.GlusterFS/services/YARN/configuration/yarn-site.xml | 2 +-
.../HDP/2.1.GlusterFS/services/YARN/configuration/yarn-site.xml | 2 +-
8 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/84e767ba/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/configuration/falcon-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/configuration/falcon-env.xml b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/configuration/falcon-env.xml
index 5663f57..f45199f 100644
--- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/configuration/falcon-env.xml
+++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/configuration/falcon-env.xml
@@ -29,7 +29,7 @@
<type>boolean</type>
<overridable>false</overridable>
</value-attributes>
- <on-ambari-upgrade add="true"/>
+ <on-ambari-upgrade add="false"/>
<depends-on>
<property>
<type>application-properties</type>
http://git-wip-us.apache.org/repos/asf/ambari/blob/84e767ba/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml
index 1213580..be79331 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/configuration/hive-env.xml
@@ -29,7 +29,7 @@
<type>boolean</type>
<overridable>false</overridable>
</value-attributes>
- <on-ambari-upgrade add="true"/>
+ <on-ambari-upgrade add="false"/>
<depends-on>
<property>
<type>application-properties</type>
http://git-wip-us.apache.org/repos/asf/ambari/blob/84e767ba/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-env.xml b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-env.xml
index 508cfab..d9d548d 100644
--- a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-env.xml
+++ b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/configuration/sqoop-env.xml
@@ -30,7 +30,7 @@
<type>boolean</type>
<overridable>false</overridable>
</value-attributes>
- <on-ambari-upgrade add="true"/>
+ <on-ambari-upgrade add="false"/>
<depends-on>
<property>
<type>application-properties</type>
http://git-wip-us.apache.org/repos/asf/ambari/blob/84e767ba/ambari-server/src/main/resources/common-services/STORM/0.10.0/configuration/storm-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.10.0/configuration/storm-env.xml b/ambari-server/src/main/resources/common-services/STORM/0.10.0/configuration/storm-env.xml
index 3b814a9..1145ec7 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.10.0/configuration/storm-env.xml
+++ b/ambari-server/src/main/resources/common-services/STORM/0.10.0/configuration/storm-env.xml
@@ -29,7 +29,7 @@
<type>boolean</type>
<overridable>false</overridable>
</value-attributes>
- <on-ambari-upgrade add="true"/>
+ <on-ambari-upgrade add="false"/>
<depends-on>
<property>
<type>application-properties</type>
http://git-wip-us.apache.org/repos/asf/ambari/blob/84e767ba/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/configuration/yarn-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/configuration/yarn-site.xml b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/configuration/yarn-site.xml
index 2810a23..d0d0ede 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/configuration/yarn-site.xml
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/configuration/yarn-site.xml
@@ -265,7 +265,7 @@
Time in seconds to retain user logs. Only applicable if
log aggregation is disabled.
</description>
- <on-ambari-upgrade add="true"/>
+ <on-ambari-upgrade add="false"/>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
http://git-wip-us.apache.org/repos/asf/ambari/blob/84e767ba/ambari-server/src/main/resources/stacks/BIGTOP/0.8/services/YARN/configuration/yarn-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/0.8/services/YARN/configuration/yarn-site.xml b/ambari-server/src/main/resources/stacks/BIGTOP/0.8/services/YARN/configuration/yarn-site.xml
index 7053473..8e9b8b1 100644
--- a/ambari-server/src/main/resources/stacks/BIGTOP/0.8/services/YARN/configuration/yarn-site.xml
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/0.8/services/YARN/configuration/yarn-site.xml
@@ -204,7 +204,7 @@
Time in seconds to retain user logs. Only applicable if
log aggregation is disabled.
</description>
- <on-ambari-upgrade add="true"/>
+ <on-ambari-upgrade add="false"/>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
http://git-wip-us.apache.org/repos/asf/ambari/blob/84e767ba/ambari-server/src/main/resources/stacks/HDP/2.0.6.GlusterFS/services/YARN/configuration/yarn-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6.GlusterFS/services/YARN/configuration/yarn-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.6.GlusterFS/services/YARN/configuration/yarn-site.xml
index 26aac90..93a35cd 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6.GlusterFS/services/YARN/configuration/yarn-site.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6.GlusterFS/services/YARN/configuration/yarn-site.xml
@@ -204,7 +204,7 @@
Time in seconds to retain user logs. Only applicable if
log aggregation is disabled.
</description>
- <on-ambari-upgrade add="true"/>
+ <on-ambari-upgrade add="false"/>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
http://git-wip-us.apache.org/repos/asf/ambari/blob/84e767ba/ambari-server/src/main/resources/stacks/HDP/2.1.GlusterFS/services/YARN/configuration/yarn-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1.GlusterFS/services/YARN/configuration/yarn-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.1.GlusterFS/services/YARN/configuration/yarn-site.xml
index 26aac90..93a35cd 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.1.GlusterFS/services/YARN/configuration/yarn-site.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.1.GlusterFS/services/YARN/configuration/yarn-site.xml
@@ -204,7 +204,7 @@
Time in seconds to retain user logs. Only applicable if
log aggregation is disabled.
</description>
- <on-ambari-upgrade add="true"/>
+ <on-ambari-upgrade add="false"/>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
[45/50] [abbrv] ambari git commit: AMBARI-20367: Update Zeppelin
version on Ambari-2.5 from 0.6.2 to 0.7.0 (Prabhjyot Singh via r-kamath)
Posted by ol...@apache.org.
AMBARI-20367: Update Zeppelin version on Ambari-2.5 from 0.6.2 to 0.7.0 (Prabhjyot Singh via r-kamath)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e1cdfe44
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e1cdfe44
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e1cdfe44
Branch: refs/heads/branch-dev-logsearch
Commit: e1cdfe4492c9bd8d9aa1a4151af5badfd93e6d95
Parents: 4534e0a
Author: Renjith Kamath <re...@gmail.com>
Authored: Thu Mar 9 19:57:06 2017 +0530
Committer: Renjith Kamath <re...@gmail.com>
Committed: Thu Mar 9 19:59:28 2017 +0530
----------------------------------------------------------------------
.../main/resources/stacks/HDP/2.6/services/ZEPPELIN/metainfo.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e1cdfe44/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/metainfo.xml
index 59a0ae8..2e2996b 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/metainfo.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/metainfo.xml
@@ -21,7 +21,7 @@
<services>
<service>
<name>ZEPPELIN</name>
- <version>0.6.2</version>
+ <version>0.7.0</version>
</service>
</services>
</metainfo>
[16/50] [abbrv] ambari git commit: AMBARI-20303. HiveView2.0: Issues
in worksheet (Venkata Sairam via pallavkul)
Posted by ol...@apache.org.
AMBARI-20303. HiveView2.0: Issues in worksheet (Venkata Sairam via pallavkul)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bf25d310
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bf25d310
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bf25d310
Branch: refs/heads/branch-dev-logsearch
Commit: bf25d310f6755c50b12a6fafa02fd097c02d9658
Parents: 7f9a512
Author: pallavkul <pa...@gmail.com>
Authored: Tue Mar 7 14:25:58 2017 +0530
Committer: pallavkul <pa...@gmail.com>
Committed: Tue Mar 7 14:27:29 2017 +0530
----------------------------------------------------------------------
.../main/resources/ui/app/models/worksheet.js | 1 +
.../src/main/resources/ui/app/routes/queries.js | 5 +-
.../main/resources/ui/app/routes/queries/new.js | 9 ++-
.../resources/ui/app/routes/queries/query.js | 85 +++++++++++++++++++-
.../src/main/resources/ui/app/styles/app.scss | 5 ++
.../main/resources/ui/app/templates/queries.hbs | 11 ++-
.../ui/app/templates/queries/query.hbs | 35 +++++++-
7 files changed, 140 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/bf25d310/contrib/views/hive20/src/main/resources/ui/app/models/worksheet.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/models/worksheet.js b/contrib/views/hive20/src/main/resources/ui/app/models/worksheet.js
index f820ea0..12a681c 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/models/worksheet.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/models/worksheet.js
@@ -38,6 +38,7 @@ export default DS.Model.extend({
logFile: DS.attr('string', {defaultValue: ""}),
logResults: DS.attr('string', {defaultValue: ""}),
isQueryRunning: DS.attr('boolean', {defaultValue: false}),
+ isQueryDirty: DS.attr('boolean', {defaultValue: false}),
isQueryResultContainer: DS.attr('boolean', {defaultValue: false}),
visualExplainJson: DS.attr({defaultValue: null}),
lastResultRoute: DS.attr({defaultValue: ""}),
http://git-wip-us.apache.org/repos/asf/ambari/blob/bf25d310/contrib/views/hive20/src/main/resources/ui/app/routes/queries.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries.js
index 4ef3834..8c7c17c 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries.js
@@ -19,9 +19,12 @@
import Ember from 'ember';
export default Ember.Route.extend({
-
+ 'worksheetCount': 1,
actions: {
createNewWorksheet(){
+ let id = this.get('worksheetCount');
+ this.get('controller').set('worksheetCount',parseInt(id)+1);
+ this.set('worksheetCount',parseInt(id)+1);
this.transitionTo('queries.new');
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bf25d310/contrib/views/hive20/src/main/resources/ui/app/routes/queries/new.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/new.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/new.js
index 7bd2214..b48b8df 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/new.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/new.js
@@ -21,11 +21,18 @@ import Ember from 'ember';
export default Ember.Route.extend({
beforeModel() {
let existingWorksheets = this.store.peekAll('worksheet');
- let newWorksheetName = `worksheet${existingWorksheets.get('length') + 1}`;
+ let newWorksheetName = 'worksheet';
+ if(!this.controllerFor("queries").worksheetCount) {
+ newWorksheetName = newWorksheetName + 1;
+ } else {
+ let id = parseInt(this.controllerFor("queries").worksheetCount);
+ newWorksheetName = newWorksheetName + id;
+ }
let newWorksheetTitle = newWorksheetName.capitalize();
this.store.createRecord('worksheet', {
id: newWorksheetName,
title: newWorksheetTitle,
+ isQueryDirty: false,
//query: 'select 1;',
//owner: 'admin',
selected: true
http://git-wip-us.apache.org/repos/asf/ambari/blob/bf25d310/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
index 062f93a..e1ab620 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
@@ -80,7 +80,6 @@ export default Ember.Route.extend(UILoggerMixin, {
this._super(...arguments);
this.get("tezViewInfo").getTezViewInfo();
-
let self = this, selectedDb;
let alldatabases = this.store.peekAll('database');
controller.set('alldatabases',alldatabases);
@@ -127,7 +126,6 @@ export default Ember.Route.extend(UILoggerMixin, {
controller.set('worksheet', model);
-
controller.set('selectedTablesModels',model.get('selectedTablesModels') || selectedTablesModels );
controller.set('selectedMultiDb', model.get('selectedMultiDb') || selectedMultiDb);
@@ -175,6 +173,12 @@ export default Ember.Route.extend(UILoggerMixin, {
this.get('controller.model').set('selectedDb', null);
}
},
+ closeWorksheetAfterSave(){
+ let tabDataToClose = this.get('controller.model').get('tabDataToClose');
+ if(tabDataToClose) {
+ this.send('closeWorksheet', tabDataToClose.index, tabDataToClose.id);
+ }
+ },
actions: {
resetDefaultWorksheet(){
@@ -230,8 +234,13 @@ export default Ember.Route.extend(UILoggerMixin, {
},
updateQuery(query){
- this.get('controller').set('currentQuery', query);
this.get('controller.model').set('query', query);
+ if(Ember.isBlank(query)){
+ this.get('controller.model').set('isQueryDirty', false);
+ } else if(this.get('controller').get('currentQuery').indexOf(query) !== 0){
+ this.get('controller.model').set('isQueryDirty', true);
+ }
+ this.get('controller').set('currentQuery', query);
},
executeQuery(isVisualExplainQuery){
@@ -492,8 +501,72 @@ export default Ember.Route.extend(UILoggerMixin, {
this.transitionTo('queries.query.results', myWs);
}, 1 * 100);
},
+ confirmWorksheetClose(index, id) {
+ let existingWorksheets = this.store.peekAll('worksheet');
+ let selectedWorksheet = existingWorksheets.filterBy('id', id.toLowerCase()).get('firstObject');
+ if(selectedWorksheet.get("isQueryDirty")){
+ this.transitionTo('queries.query', id);
+ }
+ Ember.run.later(() => {
+
+ if(this.get('controller.model').get('isQueryDirty')) {
+ this.get('controller.model').set('tabDataToClose', {index:index, id:id})
+ this.send('openWorksheetModal');
+ } else {
+ this.send('closeWorksheet', index, id);
+ }
+ }, 1 * 100);
+ },
+ closeWorksheet(index, id) {
+ let existingWorksheets = this.store.peekAll('worksheet');
+ let selectedWorksheet = existingWorksheets.filterBy('id', id.toLowerCase()).get('firstObject');
+ this.store.unloadRecord(selectedWorksheet);
+ this.controllerFor('queries').set('worksheets', this.store.peekAll('worksheet'));
+ let idToTransition = 0;
+ if(selectedWorksheet.get('selected')) {
+ if(index){
+ idToTransition = existingWorksheets.get('content')[parseInt(index)-1].id;
+ } else {
+ idToTransition = existingWorksheets.get('content')[1].id;
+ }
+ this.transitionTo('queries.query', idToTransition);
+ } else {
+ idToTransition = existingWorksheets.get('content')[existingWorksheets.get('length')-1].id;
+ }
+ },
+ openWorksheetRenameModal(title){
+ let wf = this.store.peekAll('worksheet').filterBy('id', this.paramsFor('queries.query').worksheetId.toLowerCase()).get('firstObject');
+ this.get('controller').set('worksheetTitle', title);
+ this.get('controller').set('showWorksheetRenameModal', true);
+ this.get('controller').set('renameWorksheetModalSuccess', false);
+ },
+ closeRenameWorksheetModal() {
+ this.get('controller').set('showWorksheetRenameModal', false);
+ },
+ renameWorksheetModal(){
+ let wf = this.store.peekAll('worksheet').filterBy('id', this.paramsFor('queries.query').worksheetId.toLowerCase()).get('firstObject');
+ let newTitle = Ember.$('#worksheet-title').val();
+ if(wf) {
+ wf.set('title', newTitle);
+ this.get('controller').set('renameWorksheetModalSuccess', true);
+ } else {
+ this.get('controller').set('renameWorksheetModalFail', true);
+ }
+
+ Ember.run.later(() => {
+ this.get('controller').set('showWorksheetRenameModal', false);
+ }, 2 * 1000);
+ },
openWorksheetModal(){
+ let originalQuery = this.get('controller').get('currentQuery');
+ if(Ember.isBlank(originalQuery)) {
+ this.get('logger').danger('Query cannot be empty.');
+ this.send('resetDefaultWorksheet');
+ return;
+ }
+ let wf = this.store.peekAll('worksheet').filterBy('id', this.paramsFor('queries.query').worksheetId.toLowerCase()).get('firstObject');
+ this.get('controller').set('worksheetTitle', wf.get('title'));
this.get('controller').set('showWorksheetModal', true);
},
@@ -527,10 +600,12 @@ export default Ember.Route.extend(UILoggerMixin, {
console.log('saved query saved');
this.get('controller.model').set('title', newTitle);
+ this.get('controller.model').set('isQueryDirty', false);
this.get('controller').set('worksheetModalSuccess', true);
Ember.run.later(() => {
this.get('controller').set('showWorksheetModal', false);
+ this.closeWorksheetAfterSave();
}, 2 * 1000);
});
@@ -539,7 +614,9 @@ export default Ember.Route.extend(UILoggerMixin, {
closeWorksheetModal(){
this.get('controller').set('showWorksheetModal', false);
- },
+ this.closeWorksheetAfterSave();
+ this.get('controller.model').set('tabDataToClose', null)
+ },
expandQueryEdidorPanel(){
if(!this.get('isQueryEdidorPaneExpanded')){
http://git-wip-us.apache.org/repos/asf/ambari/blob/bf25d310/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss b/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss
index 6b7fc6a..1b18955 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss
+++ b/contrib/views/hive20/src/main/resources/ui/app/styles/app.scss
@@ -953,3 +953,8 @@ rect.operator__box {
margin-top: auto !important;
top: 200px !important;
}
+
+.closeTab {
+ cursor: pointer;
+ padding-left:10px;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/bf25d310/contrib/views/hive20/src/main/resources/ui/app/templates/queries.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/queries.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/queries.hbs
index b8e19da..17b7768 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/queries.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/queries.hbs
@@ -18,9 +18,14 @@
<div class="worksheet-container">
<ul class="worksheet-nav row nav nav-tabs inverse">
- {{#each worksheets as |worksheet| }}
- <li class="{{if worksheet.selected 'active'}}" style="">
- {{#link-to 'queries.query' worksheet.id classBinding='worksheet.selected:active'}}{{ worksheet.title }}{{/link-to}}
+ {{#each worksheets as |worksheet index| }}
+ <li class="{{if worksheet.selected 'active'}}" style="" {{action "openWorksheetRenameModal" wf.title on="doubleClick"}}>
+ {{#link-to 'queries.query' worksheet.id classBinding='worksheet.selected:active' }}{{ worksheet.title }}
+ {{#if worksheet.isQueryDirty}}*{{/if}}
+ {{#if (gt worksheets.length 1)}}
+ <span class="closeTab" {{action "confirmWorksheetClose" index worksheet.id bubbles=false }}>{{fa-icon "times"}}</span>
+ {{/if}}
+ {{/link-to}}
</li>
{{/each}}
<li>
http://git-wip-us.apache.org/repos/asf/ambari/blob/bf25d310/contrib/views/hive20/src/main/resources/ui/app/templates/queries/query.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/templates/queries/query.hbs b/contrib/views/hive20/src/main/resources/ui/app/templates/queries/query.hbs
index 8a771eb..989cfc3 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/templates/queries/query.hbs
+++ b/contrib/views/hive20/src/main/resources/ui/app/templates/queries/query.hbs
@@ -116,7 +116,7 @@
<div class="form-group">
<label for="title" class="col-sm-2 control-label">Title</label>
<div class="col-sm-10">
- {{input type="text" class="form-control" id="worksheet-title" placeholder="Title" value=worksheet.title }}
+ {{input type="text" class="form-control" id="worksheet-title" placeholder="Title" value=worksheetTitle }}
</div>
</div>
{{#if worksheetModalSuccess }}
@@ -129,7 +129,7 @@
</div>
<div class="modal-footer">
- <button type="button" class="btn btn-default" {{action "saveWorksheetModal"}}>{{fa-icon "check"}} Save</button>
+ <button type="button" class="btn btn-default" disabled={{not worksheetTitle}} {{action "saveWorksheetModal"}}>{{fa-icon "check"}} Save</button>
<button type="button" class="btn btn-default" {{action "closeWorksheetModal"}}>{{fa-icon "close"}}Cancel
</button>
</div>
@@ -137,3 +137,34 @@
{{/modal-dialog}}
{{/if}}
+{{#if showWorksheetRenameModal}}
+ {{#modal-dialog translucentOverlay=true clickOutsideToClose=true container-class="modal-dialog modal-sm"}}
+ <div class="modal-content">
+ <div class="modal-header">
+ <h4 class="modal-title">Renaming worksheet</h4>
+ </div>
+ <div class="modal-body">
+ <div class="form-horizontal">
+ <div class="form-group">
+ <label for="title" class="col-sm-2 control-label">Title</label>
+ <div class="col-sm-10">
+ {{input type="text" class="form-control" id="worksheet-title" placeholder="Title" value=worksheetTitle }}
+ </div>
+ </div>
+ {{#if renameWorksheetModalSuccess }}
+ <div class="text-success">Renamed successfully.</div>
+ {{/if}}
+ {{#if renameWorksheetModalFail }}
+ <div class="text-danger">Error while renaming.</div>
+ {{/if}}
+ </div>
+ </div>
+
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" disabled={{not worksheetTitle}} {{action "renameWorksheetModal"}}>{{fa-icon "check"}} Save</button>
+ <button type="button" class="btn btn-default" {{action "closeRenameWorksheetModal"}}>{{fa-icon "close"}}Cancel
+ </button>
+ </div>
+ </div>
+ {{/modal-dialog}}
+{{/if}}
[49/50] [abbrv] ambari git commit: AMBARI-20376. While Moving
Namenode via Move Master wizard, datanodes reported as down (alexantonenko)
Posted by ol...@apache.org.
AMBARI-20376. While Moving Namenode via Move Master wizard, datanodes reported as down (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/221ad283
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/221ad283
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/221ad283
Branch: refs/heads/branch-dev-logsearch
Commit: 221ad2830f1ce3f82508ac92a226f8d4b784fd5c
Parents: 47f9243
Author: Alex Antonenko <hi...@gmail.com>
Authored: Thu Mar 9 14:32:10 2017 +0200
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Thu Mar 9 17:12:07 2017 +0200
----------------------------------------------------------------------
.../controllers/main/service/reassign/step6_controller.js | 9 +++++++++
ambari-web/app/messages.js | 1 +
.../app/mixins/wizard/wizardProgressPageController.js | 6 +++---
3 files changed, 13 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ad283/ambari-web/app/controllers/main/service/reassign/step6_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/reassign/step6_controller.js b/ambari-web/app/controllers/main/service/reassign/step6_controller.js
index 80f1bf6..05494d4 100644
--- a/ambari-web/app/controllers/main/service/reassign/step6_controller.js
+++ b/ambari-web/app/controllers/main/service/reassign/step6_controller.js
@@ -27,6 +27,7 @@ App.ReassignMasterWizardStep6Controller = App.HighAvailabilityProgressPageContro
'putHostComponentsInMaintenanceMode',
'stopHostComponentsInMaintenanceMode',
'deleteHostComponents',
+ 'startDatanodes',
'startAllServices'
],
@@ -97,6 +98,9 @@ App.ReassignMasterWizardStep6Controller = App.HighAvailabilityProgressPageContro
} else {
this.removeTasks(['stopHostComponentsInMaintenanceMode']);
}
+ if (!(this.get('content.reassign.component_name') === 'NAMENODE' && App.get('isHaEnabled'))) {
+ this.removeTasks(['startDatanodes']);
+ }
},
hideRollbackButton: function () {
@@ -200,5 +204,10 @@ App.ReassignMasterWizardStep6Controller = App.HighAvailabilityProgressPageContro
success: 'startPolling',
error: 'onTaskError'
});
+ },
+
+ startDatanodes: function () {
+ this.updateComponent('DATANODE', null, 'HDFS', 'Start');
}
+
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ad283/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 83cc85c..20f7757 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -2396,6 +2396,7 @@ Em.I18n.translations = {
'services.reassign.step6.tasks.installPxf.title': 'Install PXF on NameNode',
'services.reassign.step6.tasks.stopMysqlService.title': 'Stop Mysql Server',
'services.reassign.step6.tasks.stopHostComponentsInMaintenanceMode.title': 'Stop {0}',
+ 'services.reassign.step6.tasks.startDatanodes.title': 'Start DataNodes',
'services.reassign.step6.status.success': 'Successfully moved <b>{0}</b> from <b>{1}</b> host to <b>{2}</b> host.',
'services.reassign.step6.status.failed': 'Failed to move <b>{0}</b> from <b>{1}</b> host to <b>{2}</b> host.',
'services.reassign.step6.status.info': 'Reassigning {0}. \nPlease wait for all tasks to be completed.',
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ad283/ambari-web/app/mixins/wizard/wizardProgressPageController.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/wizard/wizardProgressPageController.js b/ambari-web/app/mixins/wizard/wizardProgressPageController.js
index ced5591..9d9d000 100644
--- a/ambari-web/app/mixins/wizard/wizardProgressPageController.js
+++ b/ambari-web/app/mixins/wizard/wizardProgressPageController.js
@@ -604,14 +604,14 @@ App.wizardProgressPageControllerMixin = Em.Mixin.create(App.InstallComponent, {
* Update component status on selected hosts.
*
* @param {string} componentName
- * @param {(string|string[])} hostName
+ * @param {(string|string[]|null)} hostName - use null to update components on all hosts
* @param {string} serviceName
* @param {string} context
* @param {number} taskNum
* @returns {$.ajax}
*/
updateComponent: function (componentName, hostName, serviceName, context, taskNum) {
- if (!(hostName instanceof Array)) {
+ if (hostName && !(hostName instanceof Array)) {
hostName = [hostName];
}
var state = context.toLowerCase() == "start" ? "STARTED" : "INSTALLED";
@@ -622,7 +622,7 @@ App.wizardProgressPageControllerMixin = Em.Mixin.create(App.InstallComponent, {
HostRoles: {
state: state
},
- query: 'HostRoles/component_name=' + componentName + '&HostRoles/host_name.in(' + hostName.join(',') + ')&HostRoles/maintenance_state=OFF',
+ query: 'HostRoles/component_name=' + componentName + (hostName ? '&HostRoles/host_name.in(' + hostName.join(',') + ')' : '') + '&HostRoles/maintenance_state=OFF',
context: context + " " + App.format.role(componentName, false),
hostName: hostName,
taskNum: taskNum || 1,
[46/50] [abbrv] ambari git commit: AMBARI-20332. Few ambari agent
unit tests are failing (aonishuk)
Posted by ol...@apache.org.
AMBARI-20332. Few ambari agent unit tests are failing (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/95833865
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/95833865
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/95833865
Branch: refs/heads/branch-dev-logsearch
Commit: 95833865c3b2bb006ae44b355a3c597bd2cef3d7
Parents: e1cdfe4
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Thu Mar 9 16:31:01 2017 +0200
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Thu Mar 9 16:31:01 2017 +0200
----------------------------------------------------------------------
.../resource_management/TestDatanodeHelper.py | 16 ++++++++--------
.../stacks/2.0.6/YARN/test_yarn_service_check.py | 2 +-
2 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/95833865/ambari-agent/src/test/python/resource_management/TestDatanodeHelper.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/resource_management/TestDatanodeHelper.py b/ambari-agent/src/test/python/resource_management/TestDatanodeHelper.py
index f22c8e9..071bd05 100644
--- a/ambari-agent/src/test/python/resource_management/TestDatanodeHelper.py
+++ b/ambari-agent/src/test/python/resource_management/TestDatanodeHelper.py
@@ -176,46 +176,46 @@ class TestDatanodeHelper(TestCase):
# folder should be managed
dirs_unmounted=set()
self.assertEquals(True, mounted_dirs_helper._may_manage_folder(dir_='/grid/0/data', last_mount_point_for_dir=None, is_non_root_dir=False, dirs_unmounted=dirs_unmounted, error_messages = [], manage_dirs_on_root = True, curr_mount_point = '/'))
- self.assertSetEqual(dirs_unmounted, set())
+ self.assertEquals(dirs_unmounted, set())
# root, no history file, manage_dirs_on_root = False
# folder should not be managed
dirs_unmounted=set()
self.assertEquals(False, mounted_dirs_helper._may_manage_folder(dir_='/grid/0/data', last_mount_point_for_dir=None, is_non_root_dir=False, dirs_unmounted=dirs_unmounted, error_messages = [], manage_dirs_on_root = False, curr_mount_point = '/'))
- self.assertSetEqual(dirs_unmounted, set(['/grid/0/data']))
+ self.assertEquals(dirs_unmounted, set(['/grid/0/data']))
# non root, no history file, manage_dirs_on_root = False
# folder should be managed
dirs_unmounted=set()
self.assertEquals(True, mounted_dirs_helper._may_manage_folder(dir_='/grid/0/data', last_mount_point_for_dir=None, is_non_root_dir=True, dirs_unmounted=dirs_unmounted, error_messages = [], manage_dirs_on_root = False, curr_mount_point = '/'))
- self.assertSetEqual(dirs_unmounted, set())
+ self.assertEquals(dirs_unmounted, set())
# unmounted to root, manage_dirs_on_root = True
# folder should not be managed
dirs_unmounted=set()
self.assertEquals(False, mounted_dirs_helper._may_manage_folder('/grid/0/data', '/grid/0', True, dirs_unmounted, [], False, '/'))
- self.assertSetEqual(dirs_unmounted, set(['/grid/0/data']))
+ self.assertEquals(dirs_unmounted, set(['/grid/0/data']))
# unmounted to root, manage_dirs_on_root = False
# folder should not be managed
dirs_unmounted=set()
self.assertEquals(False, mounted_dirs_helper._may_manage_folder(dir_='/grid/0/data', last_mount_point_for_dir='/grid/0/data', is_non_root_dir=False, dirs_unmounted=dirs_unmounted, error_messages = [], manage_dirs_on_root = False, curr_mount_point = '/'))
- self.assertSetEqual(dirs_unmounted, set(['/grid/0/data']))
+ self.assertEquals(dirs_unmounted, set(['/grid/0/data']))
# same mount = root, manage_dirs_on_root = False
# folder should not be managed
dirs_unmounted=set()
self.assertEquals(False, mounted_dirs_helper._may_manage_folder(dir_='/grid/0/data', last_mount_point_for_dir='/', is_non_root_dir=False, dirs_unmounted=dirs_unmounted, error_messages = [], manage_dirs_on_root = False, curr_mount_point = '/'))
- self.assertSetEqual(dirs_unmounted, set())
+ self.assertEquals(dirs_unmounted, set())
# same mount = root, manage_dirs_on_root = True
# folder should be managed
dirs_unmounted=set()
self.assertEquals(True, mounted_dirs_helper._may_manage_folder(dir_='/grid/0/data', last_mount_point_for_dir='/', is_non_root_dir=False, dirs_unmounted=dirs_unmounted, error_messages = [], manage_dirs_on_root = True, curr_mount_point = '/'))
- self.assertSetEqual(dirs_unmounted, set())
+ self.assertEquals(dirs_unmounted, set())
# mount changed to non root, manage_dirs_on_root = False
# folder should not be managed
dirs_unmounted=set()
self.assertEquals(False, mounted_dirs_helper._may_manage_folder('/grid/0/data', '/', True, dirs_unmounted, [], False, '/grid/0'))
- self.assertSetEqual(dirs_unmounted, set(['/grid/0/data']))
+ self.assertEquals(dirs_unmounted, set(['/grid/0/data']))
http://git-wip-us.apache.org/repos/asf/ambari/blob/95833865/ambari-server/src/test/python/stacks/2.0.6/YARN/test_yarn_service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/YARN/test_yarn_service_check.py b/ambari-server/src/test/python/stacks/2.0.6/YARN/test_yarn_service_check.py
index fe7456d..fa40f60 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/YARN/test_yarn_service_check.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/YARN/test_yarn_service_check.py
@@ -99,4 +99,4 @@ class TestServiceCheck(RMFTestCase):
self.assertNoMoreResources()
def assertCurlCallForwardsCredentialsOnRedirect(self, mock_curl_call):
- self.assertIn('--location-trusted', mock_curl_call.call_args[0][0])
+ self.assertTrue('--location-trusted' in mock_curl_call.call_args[0][0])
[26/50] [abbrv] ambari git commit: AMBARI-20180. HDFS SecurityLogger
messages are logged twice (Arpit Agarwal via smohanty)
Posted by ol...@apache.org.
AMBARI-20180. HDFS SecurityLogger messages are logged twice (Arpit Agarwal via smohanty)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/cb1ba69e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/cb1ba69e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/cb1ba69e
Branch: refs/heads/branch-dev-logsearch
Commit: cb1ba69e721326bfb4ef3531e8a9e509f36dbb4d
Parents: ee6c5d8
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Tue Mar 7 16:52:55 2017 -0800
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Tue Mar 7 16:53:57 2017 -0800
----------------------------------------------------------------------
.../stacks/HDP/2.2/services/HDFS/configuration/hdfs-log4j.xml | 1 +
.../main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml | 6 ++++++
.../stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml | 4 ++++
.../src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml | 1 +
.../main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml | 5 +++++
.../stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml | 5 +++++
.../src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml | 1 +
.../main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml | 5 +++++
.../stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml | 5 +++++
.../src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml | 1 +
.../HDPWIN/2.2/services/HDFS/configuration/hdfs-log4j.xml | 1 +
11 files changed, 35 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hdfs-log4j.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hdfs-log4j.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hdfs-log4j.xml
index 280c43a..9e48acc 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hdfs-log4j.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hdfs-log4j.xml
@@ -158,6 +158,7 @@ hadoop.security.log.maxfilesize={{hadoop_security_log_max_backup_size}}MB
hadoop.security.log.maxbackupindex={{hadoop_security_log_number_of_backup_files}}
log4j.category.SecurityLogger=${hadoop.security.logger}
hadoop.security.log.file=SecurityAuth.audit
+log4j.additivity.SecurityLogger=false
log4j.appender.DRFAS=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFAS.File=${hadoop.log.dir}/${hadoop.security.log.file}
log4j.appender.DRFAS.layout=org.apache.log4j.PatternLayout
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml
index 96a95fb..eeb10fc 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml
@@ -374,6 +374,12 @@
<type>hadoop-env</type>
<insert key="content" value="{% if hadoop_zkfc_opts is defined %} export HADOOP_ZKFC_OPTS="{{hadoop_zkfc_opts}} $HADOOP_ZKFC_OPTS" {% endif %}" insert-type="append" newline-before="true" newline-after="true" />
</definition>
+
+ <definition xsi:type="configure" id="hdfs_securitylogger_additivity" summary="Set additivity of SecurityLogger to false">
+ <type>hdfs-log4j</type>
+ <regex-replace key="content" find="hadoop.security.log.file=SecurityAuth.audit" replace-with="hadoop.security.log.file=SecurityAuth.audit log4j.additivity.SecurityLogger=false"/>
+ <regex-replace key="content" find="log4j.additivity.SecurityLogger=true" replace-with="log4j.additivity.SecurityLogger=false"/>
+ </definition>
</changes>
</component>
</service>
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml
index 40ef43d..c8f93e4 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml
@@ -293,6 +293,10 @@
</task>
</execute-stage>
+ <execute-stage service="HDFS" component="NAMENODE" title="Apply config changes for Hdfs NameNode">
+ <task xsi:type="configure" id="hdfs_securitylogger_additivity"/>
+ </execute-stage>
+
<!-- YARN -->
<execute-stage service="YARN" component="RESOURCEMANAGER" title="Calculating Yarn Properties for Spark">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.SparkShufflePropertyConfig">
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml
index fb5e584..da5265d 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml
@@ -672,6 +672,7 @@
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hdfs_audit_db" />
<task xsi:type="configure" id="hdfs_log4j_parameterize" />
<task xsi:type="configure" id="hadoop_env_zkfc_security_opts" />
+ <task xsi:type="configure" id="hdfs_securitylogger_additivity" />
</pre-upgrade>
<pre-downgrade /> <!-- no-op to prevent config changes on downgrade -->
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml
index 8ab88b8..1b809c5 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml
@@ -261,6 +261,11 @@
<type>hadoop-env</type>
<insert key="content" value="{% if hadoop_zkfc_opts is defined %} export HADOOP_ZKFC_OPTS="{{hadoop_zkfc_opts}} $HADOOP_ZKFC_OPTS" {% endif %}" insert-type="append" newline-before="true" newline-after="true" />
</definition>
+ <definition xsi:type="configure" id="hdfs_securitylogger_additivity" summary="Set additivity of SecurityLogger to false">
+ <type>hdfs-log4j</type>
+ <regex-replace key="content" find="hadoop.security.log.file=SecurityAuth.audit" replace-with="hadoop.security.log.file=SecurityAuth.audit log4j.additivity.SecurityLogger=false"/>
+ <regex-replace key="content" find="log4j.additivity.SecurityLogger=true" replace-with="log4j.additivity.SecurityLogger=false"/>
+ </definition>
</changes>
</component>
</service>
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml
index d5a7c68..53caa52 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml
@@ -265,6 +265,11 @@
<direction>UPGRADE</direction> <!-- prevent config changes on downgrade -->
<skippable>true</skippable> <!-- May fix configuration problems manually -->
+ <!--HDFS-->
+ <execute-stage service="HDFS" component="NAMENODE" title="Apply config changes for Hdfs NameNode">
+ <task xsi:type="configure" id="hdfs_securitylogger_additivity"/>
+ </execute-stage>
+
<!--YARN-->
<execute-stage service="MAPREDUCE2" component="MAPREDUCE2_CLIENT" title="Apply config changes for Mapreduce2 client">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath">
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml
index e11ff02..2ee2094 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml
@@ -677,6 +677,7 @@
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hdfs_audit_db" />
<task xsi:type="configure" id="hdfs_log4j_parameterize" />
<task xsi:type="configure" id="hadoop_env_zkfc_security_opts" />
+ <task xsi:type="configure" id="hdfs_securitylogger_additivity" />
</pre-upgrade>
<pre-downgrade /> <!-- no-op to prevent config changes on downgrade -->
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
index 6f3fe42..febd8e2 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
@@ -224,6 +224,11 @@
<type>hadoop-env</type>
<insert key="content" value="{% if hadoop_zkfc_opts is defined %} export HADOOP_ZKFC_OPTS="{{hadoop_zkfc_opts}} $HADOOP_ZKFC_OPTS" {% endif %}" insert-type="append" newline-before="true" newline-after="true" />
</definition>
+ <definition xsi:type="configure" id="hdfs_securitylogger_additivity" summary="Set additivity of SecurityLogger to false">
+ <type>hdfs-log4j</type>
+ <regex-replace key="content" find="hadoop.security.log.file=SecurityAuth.audit" replace-with="hadoop.security.log.file=SecurityAuth.audit log4j.additivity.SecurityLogger=false"/>
+ <regex-replace key="content" find="log4j.additivity.SecurityLogger=true" replace-with="log4j.additivity.SecurityLogger=false"/>
+ </definition>
</changes>
</component>
</service>
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
index fe297c3..0d6f51b 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml
@@ -276,6 +276,11 @@
<direction>UPGRADE</direction> <!-- prevent config changes on downgrade -->
<skippable>true</skippable> <!-- May fix configuration problems manually -->
+ <!--HDFS-->
+ <execute-stage service="HDFS" component="NAMENODE" title="Apply config changes for Hdfs NameNode">
+ <task xsi:type="configure" id="hdfs_securitylogger_additivity"/>
+ </execute-stage>
+
<!--YARN-->
<execute-stage service="MAPREDUCE2" component="MAPREDUCE2_CLIENT" title="Apply config changes for Mapreduce2 client">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath">
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
index 97313b5..ab6b239 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml
@@ -605,6 +605,7 @@
<pre-upgrade>
<task xsi:type="configure" id="hdfs_log4j_parameterize" />
<task xsi:type="configure" id="hadoop_env_zkfc_security_opts" />
+ <task xsi:type="configure" id="hdfs_securitylogger_additivity" />
</pre-upgrade>
<pre-downgrade />
<upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb1ba69e/ambari-server/src/main/resources/stacks/HDPWIN/2.2/services/HDFS/configuration/hdfs-log4j.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDPWIN/2.2/services/HDFS/configuration/hdfs-log4j.xml b/ambari-server/src/main/resources/stacks/HDPWIN/2.2/services/HDFS/configuration/hdfs-log4j.xml
index 777c846..4d0cd73 100644
--- a/ambari-server/src/main/resources/stacks/HDPWIN/2.2/services/HDFS/configuration/hdfs-log4j.xml
+++ b/ambari-server/src/main/resources/stacks/HDPWIN/2.2/services/HDFS/configuration/hdfs-log4j.xml
@@ -115,6 +115,7 @@ hadoop.security.log.maxfilesize=256MB
hadoop.security.log.maxbackupindex=20
log4j.category.SecurityLogger=${hadoop.security.logger}
hadoop.security.log.file=SecurityAuth.audit
+log4j.additivity.SecurityLogger=false
log4j.appender.DRFAS=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFAS.File=${hadoop.log.dir}/${hadoop.security.log.file}
log4j.appender.DRFAS.layout=org.apache.log4j.PatternLayout
[17/50] [abbrv] ambari git commit: AMBARI-20338. Alert Definition
Name with brackets marked as invalid (onechiporenko)
Posted by ol...@apache.org.
AMBARI-20338. Alert Definition Name with brackets marked as invalid (onechiporenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b9451a4b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b9451a4b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b9451a4b
Branch: refs/heads/branch-dev-logsearch
Commit: b9451a4b87ab680219d1790d7b2a091e9c330da0
Parents: bf25d31
Author: Oleg Nechiporenko <on...@apache.org>
Authored: Tue Mar 7 12:24:31 2017 +0200
Committer: Oleg Nechiporenko <on...@apache.org>
Committed: Tue Mar 7 13:13:06 2017 +0200
----------------------------------------------------------------------
ambari-web/app/messages.js | 2 +-
ambari-web/app/utils/validator.js | 2 +-
ambari-web/test/utils/validator_test.js | 22 ++++++++++++++++++++++
3 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9451a4b/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 6684f32..83cc85c 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1123,7 +1123,7 @@ Em.I18n.translations = {
'alerts.definition.name': 'Alert Definition Name',
'alerts.saveChanges': 'You have unsaved changes',
- 'alert.definition.name.invalid': 'Invalid input. Only alphanumerics, underscores, hyphens, percentage and spaces are allowed.',
+ 'alert.definition.name.invalid': 'Invalid input. Only alphanumerics, underscores, hyphens, percentage, brackets and spaces are allowed. Value should be less than 255 symbols.',
'alerts.definition.details.enable': 'Enable',
'alerts.definition.details.disable': 'Disable',
'alerts.definition.details.enableDisable': 'Enable / Disable',
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9451a4b/ambari-web/app/utils/validator.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/validator.js b/ambari-web/app/utils/validator.js
index 774215b..dd3d6c0 100644
--- a/ambari-web/app/utils/validator.js
+++ b/ambari-web/app/utils/validator.js
@@ -322,7 +322,7 @@ module.exports = {
* @returns {boolean}
*/
isValidAlertName: function(value) {
- var alertNameRegex = /^[\s0-9a-z_\-%]+$/i;
+ var alertNameRegex = /^[\s0-9a-z_\-%\(\)]+$/i;
return alertNameRegex.test(value);
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9451a4b/ambari-web/test/utils/validator_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/utils/validator_test.js b/ambari-web/test/utils/validator_test.js
index f0167da..2cb7750 100644
--- a/ambari-web/test/utils/validator_test.js
+++ b/ambari-web/test/utils/validator_test.js
@@ -500,4 +500,26 @@ describe('validator', function () {
})
});
});
+
+ describe('#isValidAlertName', function () {
+
+ [
+ {v: '', e: false},
+ {v: 'a', e: true},
+ {v: 'a b', e: true},
+ {v: '/', e: false},
+ {v: '/>1', e: false},
+ {v: 'a 1%', e: true},
+ {v: 'a (b)', e: true}
+ ].forEach(function (test) {
+
+ it(test.m || test.v, function () {
+ expect(validator.isValidAlertName(test.v)).to.be.equal(test.e);
+ })
+
+ });
+
+
+ });
+
});
[35/50] [abbrv] ambari git commit: AMBARI-20346 Log Search Upgrade
should modify keystore / truststore path if it wasn't used (mgergely)
Posted by ol...@apache.org.
AMBARI-20346 Log Search Upgrade should modify keystore / truststore path if it wasn't used (mgergely)
Change-Id: Ib5614acea9667205b2eaecbd57e3d4ec3c560f5f
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/546225f3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/546225f3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/546225f3
Branch: refs/heads/branch-dev-logsearch
Commit: 546225f326323a5d6e6013c8413a36180e0b0d32
Parents: 63dad09
Author: Miklos Gergely <mg...@hortonworks.com>
Authored: Wed Mar 8 16:32:28 2017 +0100
Committer: Miklos Gergely <mg...@hortonworks.com>
Committed: Wed Mar 8 16:33:58 2017 +0100
----------------------------------------------------------------------
.../ambari/server/upgrade/UpgradeCatalog250.java | 7 +++++++
.../LOGSEARCH/0.5.0/package/scripts/params.py | 2 +-
.../server/upgrade/UpgradeCatalog250Test.java | 16 +++++++++++-----
3 files changed, 19 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/546225f3/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
index 36160ca..00d1c31 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
@@ -1006,6 +1006,13 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
newProperties.put("content", content);
}
+ if ("http".equals(logsearchEnvProperties.getProperties().get("logsearch_ui_protocol")) &&
+ "/etc/security/serverKeys/logsearch.trustStore.jks".equals(logsearchEnvProperties.getProperties().get("logsearch_truststore_location")) &&
+ "/etc/security/serverKeys/logsearch.keyStore.jks".equals(logsearchEnvProperties.getProperties().get("logsearch_keystore_location"))) {
+ newProperties.put("logsearch_truststore_location", "/etc/ambari-logsearch-portal/conf/keys/logsearch.jks");
+ newProperties.put("logsearch_keystore_location", "/etc/ambari-logsearch-portal/conf/keys/logsearch.jks");
+ }
+
Set<String> removeProperties = new HashSet<>();
removeProperties.add("logsearch_solr_audit_logs_use_ranger");
removeProperties.add("logsearch_solr_audit_logs_zk_node");
http://git-wip-us.apache.org/repos/asf/ambari/blob/546225f3/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/package/scripts/params.py
index 17c536e..8dac69a 100644
--- a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/package/scripts/params.py
@@ -336,7 +336,7 @@ logfeeder_custom_config_file_names = ['input.config-%s.json' % (tag.replace('-lo
for tag, content in logfeeder_metadata.iteritems() if any(logfeeder_metadata)]
if logfeeder_system_log_enabled:
- default_config_files = ','.join(['output.json','input.config-ambari.json'] + logfeeder_default_config_file_names + logfeeder_custom_config_file_names
+ default_config_files = ','.join(['output.config.json','input.config-ambari.json'] + logfeeder_default_config_file_names + logfeeder_custom_config_file_names
+ ['input.config-system_messages.json', 'input.config-secure_log.json'])
else:
default_config_files = ','.join(['output.config.json','input.config-ambari.json'] + logfeeder_default_config_file_names + logfeeder_custom_config_file_names)
http://git-wip-us.apache.org/repos/asf/ambari/blob/546225f3/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
index cb2e5f6..1a87433 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
@@ -1235,13 +1235,19 @@ public class UpgradeCatalog250Test {
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(logFeederEnvCapture), anyString(),
EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
- Map<String, String> oldLogSearchEnv = ImmutableMap.of(
- "logsearch_solr_audit_logs_use_ranger", "false",
- "logsearch_solr_audit_logs_zk_node", "zk_node",
- "logsearch_solr_audit_logs_zk_quorum", "zk_quorum",
- "content", "infra_solr_ssl_enabled or logsearch_ui_protocol == 'https'");
+ Map<String, String> oldLogSearchEnv = new HashMap<>();
+ oldLogSearchEnv.put("logsearch_solr_audit_logs_use_ranger", "false");
+ oldLogSearchEnv.put("logsearch_solr_audit_logs_zk_node", "zk_node");
+ oldLogSearchEnv.put("logsearch_solr_audit_logs_zk_quorum", "zk_quorum");
+ oldLogSearchEnv.put("logsearch_ui_protocol", "http");
+ oldLogSearchEnv.put("logsearch_truststore_location", "/etc/security/serverKeys/logsearch.trustStore.jks");
+ oldLogSearchEnv.put("logsearch_keystore_location", "/etc/security/serverKeys/logsearch.keyStore.jks");
+ oldLogSearchEnv.put("content", "infra_solr_ssl_enabled or logsearch_ui_protocol == 'https'");
Map<String, String> expectedLogSearchEnv = ImmutableMap.of(
+ "logsearch_ui_protocol", "http",
+ "logsearch_truststore_location", "/etc/ambari-logsearch-portal/conf/keys/logsearch.jks",
+ "logsearch_keystore_location", "/etc/ambari-logsearch-portal/conf/keys/logsearch.jks",
"content", "logsearch_use_ssl");
Config mockLogSearchEnv = easyMockSupport.createNiceMock(Config.class);
[08/50] [abbrv] ambari git commit: AMBARI-20309. HBase Master CPU
Utilization Alert is in unknown state due to kinit error (rlevas)
Posted by ol...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/e8956590/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
index 529ac5c..ad01e07 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
@@ -21,12 +21,16 @@ package org.apache.ambari.server.upgrade;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
import com.google.inject.AbstractModule;
import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.Provider;
+
import junit.framework.Assert;
import junit.framework.AssertionFailedError;
@@ -69,6 +73,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import javax.persistence.EntityManager;
+
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
@@ -76,6 +81,7 @@ import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -144,7 +150,7 @@ public class UpgradeCatalog250Test {
private Clusters clusters;
@Mock(type = MockType.NICE)
- private Cluster cluster;
+ private Cluster cluster;
@Mock(type = MockType.NICE)
private Injector injector;
@@ -181,16 +187,16 @@ public class UpgradeCatalog250Test {
Capture<List<DBAccessor.DBColumnInfo>> capturedComponentVersionColumns = newCapture();
dbAccessor.createTable(eq(UpgradeCatalog250.COMPONENT_VERSION_TABLE), capture(capturedComponentVersionColumns),
- eq((String[]) null));
+ eq((String[]) null));
dbAccessor.addPKConstraint(eq(UpgradeCatalog250.COMPONENT_VERSION_TABLE),
- eq(UpgradeCatalog250.COMPONENT_VERSION_PK), eq("id"));
+ eq(UpgradeCatalog250.COMPONENT_VERSION_PK), eq("id"));
dbAccessor.addFKConstraint(eq(UpgradeCatalog250.COMPONENT_VERSION_TABLE),
- eq(UpgradeCatalog250.COMPONENT_VERSION_FK_COMPONENT), eq("component_id"),
- eq(UpgradeCatalog250.COMPONENT_TABLE), eq("id"), eq(false));
+ eq(UpgradeCatalog250.COMPONENT_VERSION_FK_COMPONENT), eq("component_id"),
+ eq(UpgradeCatalog250.COMPONENT_TABLE), eq("id"), eq(false));
dbAccessor.addFKConstraint(eq(UpgradeCatalog250.COMPONENT_VERSION_TABLE),
- eq(UpgradeCatalog250.COMPONENT_VERSION_FK_REPO_VERSION), eq("repo_version_id"),
- eq("repo_version"), eq("repo_version_id"), eq(false));
+ eq(UpgradeCatalog250.COMPONENT_VERSION_FK_REPO_VERSION), eq("repo_version_id"),
+ eq("repo_version"), eq("repo_version_id"), eq(false));
// servicedesiredstate table
Capture<DBAccessor.DBColumnInfo> capturedCredentialStoreEnabledCol = newCapture();
@@ -288,27 +294,29 @@ public class UpgradeCatalog250Test {
Method updateAlerts = UpgradeCatalog250.class.getDeclaredMethod("updateStormAlerts");
Method removeAlertDuplicates = UpgradeCatalog250.class.getDeclaredMethod("removeAlertDuplicates");
Method updateKerberosDescriptorArtifacts = AbstractUpgradeCatalog.class.getDeclaredMethod("updateKerberosDescriptorArtifacts");
+ Method fixHBaseMasterCPUUtilizationAlertDefinition = UpgradeCatalog250.class.getDeclaredMethod("fixHBaseMasterCPUUtilizationAlertDefinition");
UpgradeCatalog250 upgradeCatalog250 = createMockBuilder(UpgradeCatalog250.class)
- .addMockedMethod(updateAmsConfigs)
- .addMockedMethod(updateHadoopEnvConfigs)
- .addMockedMethod(updateKafkaConfigs)
- .addMockedMethod(updateHIVEInteractiveConfigs)
- .addMockedMethod(updateHiveLlapConfigs)
- .addMockedMethod(updateTablesForZeppelinViewRemoval)
- .addMockedMethod(updateZeppelinConfigs)
- .addMockedMethod(updateAtlasConfigs)
- .addMockedMethod(updateLogSearchConfigs)
- .addMockedMethod(updateAmbariInfraConfigs)
- .addMockedMethod(addNewConfigurationsFromXml)
- .addMockedMethod(updateRangerUrlConfigs)
- .addMockedMethod(addManageServiceAutoStartPermissions)
- .addMockedMethod(addManageAlertNotificationsPermissions)
- .addMockedMethod(updateYarnSite)
- .addMockedMethod(updateAlerts)
- .addMockedMethod(removeAlertDuplicates)
- .addMockedMethod(updateKerberosDescriptorArtifacts)
- .createMock();
+ .addMockedMethod(updateAmsConfigs)
+ .addMockedMethod(updateHadoopEnvConfigs)
+ .addMockedMethod(updateKafkaConfigs)
+ .addMockedMethod(updateHIVEInteractiveConfigs)
+ .addMockedMethod(updateHiveLlapConfigs)
+ .addMockedMethod(updateTablesForZeppelinViewRemoval)
+ .addMockedMethod(updateZeppelinConfigs)
+ .addMockedMethod(updateAtlasConfigs)
+ .addMockedMethod(updateLogSearchConfigs)
+ .addMockedMethod(updateAmbariInfraConfigs)
+ .addMockedMethod(addNewConfigurationsFromXml)
+ .addMockedMethod(updateRangerUrlConfigs)
+ .addMockedMethod(addManageServiceAutoStartPermissions)
+ .addMockedMethod(addManageAlertNotificationsPermissions)
+ .addMockedMethod(updateYarnSite)
+ .addMockedMethod(updateAlerts)
+ .addMockedMethod(removeAlertDuplicates)
+ .addMockedMethod(updateKerberosDescriptorArtifacts)
+ .addMockedMethod(fixHBaseMasterCPUUtilizationAlertDefinition)
+ .createMock();
upgradeCatalog250.updateAMSConfigs();
@@ -354,10 +362,10 @@ public class UpgradeCatalog250Test {
expectLastCall().once();
upgradeCatalog250.updateYarnSite();
- expectLastCall().once();
+ expectLastCall().once();
upgradeCatalog250.updateStormAlerts();
- expectLastCall().once();
+ expectLastCall().once();
upgradeCatalog250.removeAlertDuplicates();
expectLastCall().once();
@@ -365,6 +373,9 @@ public class UpgradeCatalog250Test {
upgradeCatalog250.updateKerberosDescriptorArtifacts();
expectLastCall().once();
+ upgradeCatalog250.fixHBaseMasterCPUUtilizationAlertDefinition();
+ expectLastCall().once();
+
replay(upgradeCatalog250);
upgradeCatalog250.executeDMLUpdates();
@@ -381,18 +392,7 @@ public class UpgradeCatalog250Test {
final AlertDefinitionDAO mockAlertDefinitionDAO = easyMockSupport.createNiceMock(AlertDefinitionDAO.class);
final AlertDefinitionEntity stormWebUIAlertMock = easyMockSupport.createNiceMock(AlertDefinitionEntity.class);
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(Clusters.class).toInstance(mockClusters);
- bind(EntityManager.class).toInstance(entityManager);
- bind(AlertDefinitionDAO.class).toInstance(mockAlertDefinitionDAO);
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
+ final Injector mockInjector = createInjector(mockAmbariManagementController, mockClusters, mockAlertDefinitionDAO);
long clusterId = 1;
expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
@@ -401,13 +401,13 @@ public class UpgradeCatalog250Test {
}}).atLeastOnce();
expect(mockClusterExpected.getClusterId()).andReturn(clusterId).anyTimes();
expect(mockAlertDefinitionDAO.findByName(eq(clusterId), eq("storm_webui")))
- .andReturn(stormWebUIAlertMock).atLeastOnce();
+ .andReturn(stormWebUIAlertMock).atLeastOnce();
expect(stormWebUIAlertMock.getSource()).andReturn("{\"uri\": {\n" +
- " \"http\": \"{{storm-site/ui.port}}\",\n" +
- " \"kerberos_keytab\": \"{{storm-env/storm_ui_keytab}}\",\n" +
- " \"kerberos_principal\": \"{{storm-env/storm_ui_principal_name}}\",\n" +
- " \"connection_timeout\": 5.0\n" +
- " } }");
+ " \"http\": \"{{storm-site/ui.port}}\",\n" +
+ " \"kerberos_keytab\": \"{{storm-env/storm_ui_keytab}}\",\n" +
+ " \"kerberos_principal\": \"{{storm-env/storm_ui_principal_name}}\",\n" +
+ " \"connection_timeout\": 5.0\n" +
+ " } }");
stormWebUIAlertMock.setSource("{\"uri\":{\"http\":\"{{storm-site/ui.port}}\",\"kerberos_keytab\":\"{{storm-env/storm_ui_keytab}}\",\"kerberos_principal\":\"{{storm-env/storm_ui_principal_name}}\",\"connection_timeout\":5.0,\"https\":\"{{storm-site/ui.https.port}}\",\"https_property\":\"{{storm-site/ui.https.keystore.type}}\",\"https_property_value\":\"jks\"}}");
@@ -427,18 +427,7 @@ public class UpgradeCatalog250Test {
final AlertDefinitionDAO mockAlertDefinitionDAO = easyMockSupport.createNiceMock(AlertDefinitionDAO.class);
final AlertDefinitionEntity stormUIPortAlertMock = easyMockSupport.createNiceMock(AlertDefinitionEntity.class);
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(Clusters.class).toInstance(mockClusters);
- bind(EntityManager.class).toInstance(entityManager);
- bind(AlertDefinitionDAO.class).toInstance(mockAlertDefinitionDAO);
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
+ final Injector mockInjector = createInjector(mockAmbariManagementController, mockClusters, mockAlertDefinitionDAO);
long clusterId = 1;
expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
@@ -447,7 +436,7 @@ public class UpgradeCatalog250Test {
}}).atLeastOnce();
expect(mockClusterExpected.getClusterId()).andReturn(clusterId).anyTimes();
expect(mockAlertDefinitionDAO.findByName(eq(clusterId), eq("storm_server_process")))
- .andReturn(stormUIPortAlertMock).atLeastOnce();
+ .andReturn(stormUIPortAlertMock).atLeastOnce();
mockAlertDefinitionDAO.remove(stormUIPortAlertMock);
expectLastCall().once();
@@ -459,7 +448,62 @@ public class UpgradeCatalog250Test {
}
@Test
- public void testUpdateYarnSite() throws Exception{
+ public void testFixHBaseMasterCPUUtilizationAlertDefinition() {
+ EasyMockSupport easyMockSupport = new EasyMockSupport();
+ final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
+ final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
+ final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
+ final AlertDefinitionDAO mockAlertDefinitionDAO = easyMockSupport.createNiceMock(AlertDefinitionDAO.class);
+ final AlertDefinitionEntity hbaseMasterCPUAlertMock = easyMockSupport.createNiceMock(AlertDefinitionEntity.class);
+
+ String brokenSource = "{\"uri\":{\"http\":\"{{hbase-site/hbase.master.info.port}}\",\"kerberos_keytab\":\"{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}\",\"kerberos_principal\":\"{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}\",\"default_port\":60010,\"connection_timeout\":5.0},\"jmx\":{\"property_list\":[\"java.lang:type\\u003dOperatingSystem/SystemCpuLoad\",\"java.lang:type\\u003dOperatingSystem/AvailableProcessors\"],\"value\":\"{0} * 100\"},\"type\":\"METRIC\",\"reporting\":{\"ok\":{\"text\":\"{1} CPU, load {0:.1%}\"},\"warning\":{\"text\":\"{1} CPU, load {0:.1%}\",\"value\":200.0},\"critical\":{\"text\":\"{1} CPU, load {0:.1%}\",\"value\":250.0},\"units\":\"%\",\"type\":\"PERCENT\"}}";
+
+ Capture<String> capturedFixedSource = newCapture();
+
+ final Injector mockInjector = createInjector(mockAmbariManagementController, mockClusters, mockAlertDefinitionDAO);
+ long clusterId = 1;
+
+ expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
+ expect(mockClusters.getClusters()).andReturn(Collections.singletonMap("normal", mockClusterExpected)).atLeastOnce();
+ expect(mockClusterExpected.getClusterId()).andReturn(clusterId).anyTimes();
+ expect(mockAlertDefinitionDAO.findByName(eq(clusterId), eq("hbase_master_cpu"))).andReturn(hbaseMasterCPUAlertMock).atLeastOnce();
+ expect(hbaseMasterCPUAlertMock.getDefinitionName()).andReturn("hbase_master_cpu").once();
+ expect(hbaseMasterCPUAlertMock.getSource()).andReturn(brokenSource).once();
+
+ hbaseMasterCPUAlertMock.setSource(capture(capturedFixedSource));
+ expectLastCall().once();
+
+ hbaseMasterCPUAlertMock.setHash(anyString());
+ expectLastCall().once();
+
+ expect(mockAlertDefinitionDAO.merge(hbaseMasterCPUAlertMock)).andReturn(hbaseMasterCPUAlertMock).once();
+
+ easyMockSupport.replayAll();
+
+ mockInjector.getInstance(UpgradeCatalog250.class).fixHBaseMasterCPUUtilizationAlertDefinition();
+ easyMockSupport.verifyAll();
+
+ String fixedSource = capturedFixedSource.getValue();
+ Assert.assertNotNull(fixedSource);
+
+ JsonObject sourceJson = new JsonParser().parse(fixedSource).getAsJsonObject();
+ Assert.assertNotNull(sourceJson);
+
+ JsonObject uriJson = sourceJson.get("uri").getAsJsonObject();
+ Assert.assertNotNull(uriJson);
+
+ JsonPrimitive primitive;
+ primitive = uriJson.getAsJsonPrimitive("kerberos_keytab");
+ Assert.assertTrue(primitive.isString());
+ Assert.assertEquals("{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}", primitive.getAsString());
+
+ primitive = uriJson.getAsJsonPrimitive("kerberos_principal");
+ Assert.assertTrue(primitive.isString());
+ Assert.assertEquals("{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}", primitive.getAsString());
+ }
+
+ @Test
+ public void testUpdateYarnSite() throws Exception {
EasyMockSupport easyMockSupport = new EasyMockSupport();
final String propertyToRemove = "yarn.nodemanager.linux-container-executor.cgroups.mount-path";
@@ -467,7 +511,7 @@ public class UpgradeCatalog250Test {
Config mockYarnEnv = easyMockSupport.createNiceMock(Config.class);
Config mockYarnSite = easyMockSupport.createNiceMock(Config.class);
- HashMap<String, String> yarnEnv = new HashMap<String, String>(){{
+ HashMap<String, String> yarnEnv = new HashMap<String, String>() {{
put("yarn_cgroups_enabled", "false");
}};
@@ -490,9 +534,9 @@ public class UpgradeCatalog250Test {
replay(clusters, cluster, injector, ambariManagementController, mockYarnEnv, mockYarnSite);
UpgradeCatalog250 upgradeCatalog250 = createMockBuilder(UpgradeCatalog250.class)
- .addMockedMethod("removeConfigurationPropertiesFromCluster")
- .withConstructor(injector)
- .createNiceMock();
+ .addMockedMethod("removeConfigurationPropertiesFromCluster")
+ .withConstructor(injector)
+ .createNiceMock();
Capture<HashSet<String>> removeConfigName = EasyMock.newCapture();
@@ -512,7 +556,7 @@ public class UpgradeCatalog250Test {
}
@Test
- public void testUpdateYarnSiteWithEnabledCGroups() throws Exception{
+ public void testUpdateYarnSiteWithEnabledCGroups() throws Exception {
EasyMockSupport easyMockSupport = new EasyMockSupport();
final String propertyToRemove = "yarn.nodemanager.linux-container-executor.cgroups.mount-path";
@@ -520,7 +564,7 @@ public class UpgradeCatalog250Test {
Config mockYarnEnv = easyMockSupport.createNiceMock(Config.class);
Config mockYarnSite = easyMockSupport.createNiceMock(Config.class);
- HashMap<String, String> yarnEnv = new HashMap<String, String>(){{
+ HashMap<String, String> yarnEnv = new HashMap<String, String>() {{
put("yarn_cgroups_enabled", "true");
}};
@@ -543,9 +587,9 @@ public class UpgradeCatalog250Test {
replay(clusters, cluster, injector, ambariManagementController, mockYarnEnv, mockYarnSite);
UpgradeCatalog250 upgradeCatalog250 = createMockBuilder(UpgradeCatalog250.class)
- .addMockedMethod("removeConfigurationPropertiesFromCluster")
- .withConstructor(injector)
- .createNiceMock();
+ .addMockedMethod("removeConfigurationPropertiesFromCluster")
+ .withConstructor(injector)
+ .createNiceMock();
Capture<HashSet<String>> removeConfigName = EasyMock.newCapture();
@@ -565,27 +609,27 @@ public class UpgradeCatalog250Test {
Map<String, String> oldPropertiesAmsEnv = new HashMap<String, String>() {
{
put("content", "\n" +
- "# AMS Collector heapsize\n" +
- "export AMS_COLLECTOR_HEAPSIZE={{metrics_collector_heapsize}}\n" +
- "\n" +
- "# HBase normalizer enabled\n" +
- "export AMS_HBASE_NORMALIZER_ENABLED={{ams_hbase_normalizer_enabled}}\n" +
- "\n" +
- "# HBase compaction policy enabled\n" +
- "export HBASE_FIFO_COMPACTION_POLICY_ENABLED={{ams_hbase_fifo_compaction_policy_enabled}}\n" +
- "\n" +
- "# HBase Tables Initialization check enabled\n" +
- "export AMS_HBASE_INIT_CHECK_ENABLED={{ams_hbase_init_check_enabled}}\n");
+ "# AMS Collector heapsize\n" +
+ "export AMS_COLLECTOR_HEAPSIZE={{metrics_collector_heapsize}}\n" +
+ "\n" +
+ "# HBase normalizer enabled\n" +
+ "export AMS_HBASE_NORMALIZER_ENABLED={{ams_hbase_normalizer_enabled}}\n" +
+ "\n" +
+ "# HBase compaction policy enabled\n" +
+ "export HBASE_FIFO_COMPACTION_POLICY_ENABLED={{ams_hbase_fifo_compaction_policy_enabled}}\n" +
+ "\n" +
+ "# HBase Tables Initialization check enabled\n" +
+ "export AMS_HBASE_INIT_CHECK_ENABLED={{ams_hbase_init_check_enabled}}\n");
}
};
Map<String, String> newPropertiesAmsEnv = new HashMap<String, String>() {
{
put("content", "\n" +
- "# AMS Collector heapsize\n" +
- "export AMS_COLLECTOR_HEAPSIZE={{metrics_collector_heapsize}}\n" +
- "\n" +
- "# HBase Tables Initialization check enabled\n" +
- "export AMS_HBASE_INIT_CHECK_ENABLED={{ams_hbase_init_check_enabled}}\n");
+ "# AMS Collector heapsize\n" +
+ "export AMS_COLLECTOR_HEAPSIZE={{metrics_collector_heapsize}}\n" +
+ "\n" +
+ "# HBase Tables Initialization check enabled\n" +
+ "export AMS_HBASE_INIT_CHECK_ENABLED={{ams_hbase_init_check_enabled}}\n");
}
};
EasyMockSupport easyMockSupport = new EasyMockSupport();
@@ -602,11 +646,11 @@ public class UpgradeCatalog250Test {
replay(clusters, mockAmsEnv, cluster);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
- .addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] { })
- .addMockedMethod("createConfig")
- .withConstructor(actionManager, clusters, injector)
- .createNiceMock();
+ .addMockedMethod("createConfiguration")
+ .addMockedMethod("getClusters", new Class[]{})
+ .addMockedMethod("createConfig")
+ .withConstructor(actionManager, clusters, injector)
+ .createNiceMock();
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
Capture<Map<String, String>> propertiesCapture = EasyMock.newCapture();
@@ -683,11 +727,11 @@ public class UpgradeCatalog250Test {
replay(clusters, mockAmsHbaseSite, mockAmsSite, cluster);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
- .addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] { })
- .addMockedMethod("createConfig")
- .withConstructor(actionManager, clusters, injector)
- .createNiceMock();
+ .addMockedMethod("createConfiguration")
+ .addMockedMethod("getClusters", new Class[]{})
+ .addMockedMethod("createConfig")
+ .withConstructor(actionManager, clusters, injector)
+ .createNiceMock();
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
Capture<Map<String, String>> propertiesCapture = EasyMock.newCapture(CaptureType.ALL);
@@ -711,7 +755,7 @@ public class UpgradeCatalog250Test {
}
@Test
- public void testKafkaUpdateConfigs() throws Exception{
+ public void testKafkaUpdateConfigs() throws Exception {
Map<String, String> oldProperties = new HashMap<String, String>() {
{
@@ -737,11 +781,11 @@ public class UpgradeCatalog250Test {
replay(clusters, mockKafkaBroker, cluster);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
- .addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] { })
- .addMockedMethod("createConfig")
- .withConstructor(actionManager, clusters, injector)
- .createNiceMock();
+ .addMockedMethod("createConfiguration")
+ .addMockedMethod("getClusters", new Class[]{})
+ .addMockedMethod("createConfig")
+ .withConstructor(actionManager, clusters, injector)
+ .createNiceMock();
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
Capture<Map<String, String>> propertiesCapture = EasyMock.newCapture();
@@ -768,85 +812,85 @@ public class UpgradeCatalog250Test {
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
- .addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] {})
- .addMockedMethod("createConfig")
- .withConstructor(actionManager, clusters, injector)
- .createNiceMock();
+ .addMockedMethod("createConfiguration")
+ .addMockedMethod("getClusters", new Class[]{})
+ .addMockedMethod("createConfig")
+ .withConstructor(actionManager, clusters, injector)
+ .createNiceMock();
expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
Map<String, String> oldAmsLog4j = ImmutableMap.of(
- "content",
+ "content",
+ "#\n" +
+ "# Licensed to the Apache Software Foundation (ASF) under one\n" +
+ "# or more contributor license agreements. See the NOTICE file\n" +
+ "# distributed with this work for additional information\n" +
+ "# regarding copyright ownership. The ASF licenses this file\n" +
+ "# to you under the Apache License, Version 2.0 (the\n" +
+ "# \"License\"); you may not use this file except in compliance\n" +
+ "# with the License. You may obtain a copy of the License at\n" +
+ "#\n" +
+ "# http://www.apache.org/licenses/LICENSE-2.0\n" +
+ "#\n" +
+ "# Unless required by applicable law or agreed to in writing, software\n" +
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+ "# See the License for the specific language governing permissions and\n" +
+ "# limitations under the License.\n" +
"#\n" +
- "# Licensed to the Apache Software Foundation (ASF) under one\n" +
- "# or more contributor license agreements. See the NOTICE file\n" +
- "# distributed with this work for additional information\n" +
- "# regarding copyright ownership. The ASF licenses this file\n" +
- "# to you under the Apache License, Version 2.0 (the\n" +
- "# \"License\"); you may not use this file except in compliance\n" +
- "# with the License. You may obtain a copy of the License at\n" +
- "#\n" +
- "# http://www.apache.org/licenses/LICENSE-2.0\n" +
- "#\n" +
- "# Unless required by applicable law or agreed to in writing, software\n" +
- "# distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
- "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
- "# See the License for the specific language governing permissions and\n" +
- "# limitations under the License.\n" +
- "#\n" +
- "\n" +
- "# Define some default values that can be overridden by system properties\n" +
- "ams.log.dir=.\n" +
- "ams.log.file=ambari-metrics-collector.log\n" +
- "\n" +
- "# Root logger option\n" +
- "log4j.rootLogger=INFO,file\n" +
- "\n" +
- "# Direct log messages to a log file\n" +
- "log4j.appender.file=org.apache.log4j.RollingFileAppender\n" +
- "log4j.appender.file.File=${ams.log.dir}/${ams.log.file}\n" +
- "log4j.appender.file.MaxFileSize=10MB\n" +
- "log4j.appender.file.MaxBackupIndex=12\n" +
- "log4j.appender.file.layout=org.apache.log4j.PatternLayout\n" +
- "log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n");
+ "\n" +
+ "# Define some default values that can be overridden by system properties\n" +
+ "ams.log.dir=.\n" +
+ "ams.log.file=ambari-metrics-collector.log\n" +
+ "\n" +
+ "# Root logger option\n" +
+ "log4j.rootLogger=INFO,file\n" +
+ "\n" +
+ "# Direct log messages to a log file\n" +
+ "log4j.appender.file=org.apache.log4j.RollingFileAppender\n" +
+ "log4j.appender.file.File=${ams.log.dir}/${ams.log.file}\n" +
+ "log4j.appender.file.MaxFileSize=10MB\n" +
+ "log4j.appender.file.MaxBackupIndex=12\n" +
+ "log4j.appender.file.layout=org.apache.log4j.PatternLayout\n" +
+ "log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n");
Map<String, String> expectedAmsLog4j = new HashMap<>();
- expectedAmsLog4j.put("content","#\n" +
- "# Licensed to the Apache Software Foundation (ASF) under one\n" +
- "# or more contributor license agreements. See the NOTICE file\n" +
- "# distributed with this work for additional information\n" +
- "# regarding copyright ownership. The ASF licenses this file\n" +
- "# to you under the Apache License, Version 2.0 (the\n" +
- "# \"License\"); you may not use this file except in compliance\n" +
- "# with the License. You may obtain a copy of the License at\n" +
- "#\n" +
- "# http://www.apache.org/licenses/LICENSE-2.0\n" +
- "#\n" +
- "# Unless required by applicable law or agreed to in writing, software\n" +
- "# distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
- "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
- "# See the License for the specific language governing permissions and\n" +
- "# limitations under the License.\n" +
- "#\n" +
- "\n" +
- "# Define some default values that can be overridden by system properties\n" +
- "ams.log.dir=.\n" +
- "ams.log.file=ambari-metrics-collector.log\n" +
- "\n" +
- "# Root logger option\n" +
- "log4j.rootLogger=INFO,file\n" +
- "\n" +
- "# Direct log messages to a log file\n" +
- "log4j.appender.file=org.apache.log4j.RollingFileAppender\n" +
- "log4j.appender.file.File=${ams.log.dir}/${ams.log.file}\n" +
- "log4j.appender.file.MaxFileSize={{ams_log_max_backup_size}}MB\n" +
- "log4j.appender.file.MaxBackupIndex={{ams_log_number_of_backup_files}}\n" +
- "log4j.appender.file.layout=org.apache.log4j.PatternLayout\n" +
- "log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n");
- expectedAmsLog4j.put("ams_log_max_backup_size","10");
- expectedAmsLog4j.put("ams_log_number_of_backup_files","12");
+ expectedAmsLog4j.put("content", "#\n" +
+ "# Licensed to the Apache Software Foundation (ASF) under one\n" +
+ "# or more contributor license agreements. See the NOTICE file\n" +
+ "# distributed with this work for additional information\n" +
+ "# regarding copyright ownership. The ASF licenses this file\n" +
+ "# to you under the Apache License, Version 2.0 (the\n" +
+ "# \"License\"); you may not use this file except in compliance\n" +
+ "# with the License. You may obtain a copy of the License at\n" +
+ "#\n" +
+ "# http://www.apache.org/licenses/LICENSE-2.0\n" +
+ "#\n" +
+ "# Unless required by applicable law or agreed to in writing, software\n" +
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+ "# See the License for the specific language governing permissions and\n" +
+ "# limitations under the License.\n" +
+ "#\n" +
+ "\n" +
+ "# Define some default values that can be overridden by system properties\n" +
+ "ams.log.dir=.\n" +
+ "ams.log.file=ambari-metrics-collector.log\n" +
+ "\n" +
+ "# Root logger option\n" +
+ "log4j.rootLogger=INFO,file\n" +
+ "\n" +
+ "# Direct log messages to a log file\n" +
+ "log4j.appender.file=org.apache.log4j.RollingFileAppender\n" +
+ "log4j.appender.file.File=${ams.log.dir}/${ams.log.file}\n" +
+ "log4j.appender.file.MaxFileSize={{ams_log_max_backup_size}}MB\n" +
+ "log4j.appender.file.MaxBackupIndex={{ams_log_number_of_backup_files}}\n" +
+ "log4j.appender.file.layout=org.apache.log4j.PatternLayout\n" +
+ "log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n");
+ expectedAmsLog4j.put("ams_log_max_backup_size", "10");
+ expectedAmsLog4j.put("ams_log_number_of_backup_files", "12");
Config mockAmsLog4j = easyMockSupport.createNiceMock(Config.class);
@@ -854,122 +898,10 @@ public class UpgradeCatalog250Test {
expect(mockAmsLog4j.getProperties()).andReturn(oldAmsLog4j).anyTimes();
Capture<Map<String, String>> AmsLog4jCapture = EasyMock.newCapture();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(AmsLog4jCapture), anyString(),
- anyObject(Map.class))).andReturn(config).once();
+ anyObject(Map.class))).andReturn(config).once();
Map<String, String> oldAmsHbaseLog4j = ImmutableMap.of(
- "content","# Licensed to the Apache Software Foundation (ASF) under one\n" +
- "# or more contributor license agreements. See the NOTICE file\n" +
- "# distributed with this work for additional information\n" +
- "# regarding copyright ownership. The ASF licenses this file\n" +
- "# to you under the Apache License, Version 2.0 (the\n" +
- "# \"License\"); you may not use this file except in compliance\n" +
- "# with the License. You may obtain a copy of the License at\n" +
- "#\n" +
- "# http://www.apache.org/licenses/LICENSE-2.0\n" +
- "#\n" +
- "# Unless required by applicable law or agreed to in writing, software\n" +
- "# distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
- "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
- "# See the License for the specific language governing permissions and\n" +
- "# limitations under the License.\n" +
- "\n" +
- "\n" +
- "# Define some default values that can be overridden by system properties\n" +
- "hbase.root.logger=INFO,console\n" +
- "hbase.security.logger=INFO,console\n" +
- "hbase.log.dir=.\n" +
- "hbase.log.file=hbase.log\n" +
- "\n" +
- "# Define the root logger to the system property \"hbase.root.logger\".\n" +
- "log4j.rootLogger=${hbase.root.logger}\n" +
- "\n" +
- "# Logging Threshold\n" +
- "log4j.threshold=ALL\n" +
- "\n" +
- "#\n" +
- "# Daily Rolling File Appender\n" +
- "#\n" +
- "log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\n" +
- "log4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}\n" +
- "\n" +
- "# Rollver at midnight\n" +
- "log4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n" +
- "\n" +
- "# 30-day backup\n" +
- "#log4j.appender.DRFA.MaxBackupIndex=30\n" +
- "log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n" +
- "\n" +
- "# Pattern format: Date LogLevel LoggerName LogMessage\n" +
- "log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n" +
- "\n" +
- "# Rolling File Appender properties\n" +
- "hbase.log.maxfilesize=256MB\n" +
- "hbase.log.maxbackupindex=20\n" +
- "\n" +
- "# Rolling File Appender\n" +
- "log4j.appender.RFA=org.apache.log4j.RollingFileAppender\n" +
- "log4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}\n" +
- "\n" +
- "log4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}\n" +
- "log4j.appender.RFA.MaxBackupIndex=${hbase.log.maxbackupindex}\n" +
- "\n" +
- "log4j.appender.RFA.layout=org.apache.log4j.PatternLayout\n" +
- "log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n" +
- "\n" +
- "#\n" +
- "# Security audit appender\n" +
- "#\n" +
- "hbase.security.log.file=SecurityAuth.audit\n" +
- "hbase.security.log.maxfilesize=256MB\n" +
- "hbase.security.log.maxbackupindex=20\n" +
- "log4j.appender.RFAS=org.apache.log4j.RollingFileAppender\n" +
- "log4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}\n" +
- "log4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}\n" +
- "log4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}\n" +
- "log4j.appender.RFAS.layout=org.apache.log4j.PatternLayout\n" +
- "log4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\n" +
- "log4j.category.SecurityLogger=${hbase.security.logger}\n" +
- "log4j.additivity.SecurityLogger=false\n" +
- "#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE\n" +
- "\n" +
- "#\n" +
- "# Null Appender\n" +
- "#\n" +
- "log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender\n" +
- "\n" +
- "#\n" +
- "# console\n" +
- "# Add \"console\" to rootlogger above if you want to use this\n" +
- "#\n" +
- "log4j.appender.console=org.apache.log4j.ConsoleAppender\n" +
- "log4j.appender.console.target=System.err\n" +
- "log4j.appender.console.layout=org.apache.log4j.PatternLayout\n" +
- "log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n" +
- "\n" +
- "# Custom Logging levels\n" +
- "\n" +
- "log4j.logger.org.apache.zookeeper=INFO\n" +
- "#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG\n" +
- "log4j.logger.org.apache.hadoop.hbase=INFO\n" +
- "# Make these two classes INFO-level. Make them DEBUG to see more zk debug.\n" +
- "log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO\n" +
- "log4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO\n" +
- "#log4j.logger.org.apache.hadoop.dfs=DEBUG\n" +
- "# Set this class to log INFO only otherwise its OTT\n" +
- "# Enable this to get detailed connection error/retry logging.\n" +
- "# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE\n" +
- "\n" +
- "\n" +
- "# Uncomment this line to enable tracing on _every_ RPC call (this can be a lot of output)\n" +
- "#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG\n" +
- "\n" +
- "# Uncomment the below if you want to remove logging of client region caching'\n" +
- "# and scan of .META. messages\n" +
- "# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO\n" +
- "# log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO\n");
-
- Map<String, String> expectedAmsHbaseLog4j = new HashMap<String,String>();
- expectedAmsHbaseLog4j.put("content","# Licensed to the Apache Software Foundation (ASF) under one\n" +
+ "content", "# Licensed to the Apache Software Foundation (ASF) under one\n" +
"# or more contributor license agreements. See the NOTICE file\n" +
"# distributed with this work for additional information\n" +
"# regarding copyright ownership. The ASF licenses this file\n" +
@@ -1015,8 +947,8 @@ public class UpgradeCatalog250Test {
"log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n" +
"\n" +
"# Rolling File Appender properties\n" +
- "hbase.log.maxfilesize={{ams_hbase_log_maxfilesize}}MB\n" +
- "hbase.log.maxbackupindex={{ams_hbase_log_maxbackupindex}}\n" +
+ "hbase.log.maxfilesize=256MB\n" +
+ "hbase.log.maxbackupindex=20\n" +
"\n" +
"# Rolling File Appender\n" +
"log4j.appender.RFA=org.apache.log4j.RollingFileAppender\n" +
@@ -1032,8 +964,8 @@ public class UpgradeCatalog250Test {
"# Security audit appender\n" +
"#\n" +
"hbase.security.log.file=SecurityAuth.audit\n" +
- "hbase.security.log.maxfilesize={{ams_hbase_security_log_maxfilesize}}MB\n" +
- "hbase.security.log.maxbackupindex={{ams_hbase_security_log_maxbackupindex}}\n" +
+ "hbase.security.log.maxfilesize=256MB\n" +
+ "hbase.security.log.maxbackupindex=20\n" +
"log4j.appender.RFAS=org.apache.log4j.RollingFileAppender\n" +
"log4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}\n" +
"log4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}\n" +
@@ -1079,21 +1011,133 @@ public class UpgradeCatalog250Test {
"# and scan of .META. messages\n" +
"# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO\n" +
"# log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO\n");
- expectedAmsHbaseLog4j.put("ams_hbase_log_maxfilesize","256");
- expectedAmsHbaseLog4j.put("ams_hbase_log_maxbackupindex","20");
- expectedAmsHbaseLog4j.put("ams_hbase_security_log_maxfilesize","256");
- expectedAmsHbaseLog4j.put("ams_hbase_security_log_maxbackupindex","20");
+
+ Map<String, String> expectedAmsHbaseLog4j = new HashMap<String, String>();
+ expectedAmsHbaseLog4j.put("content", "# Licensed to the Apache Software Foundation (ASF) under one\n" +
+ "# or more contributor license agreements. See the NOTICE file\n" +
+ "# distributed with this work for additional information\n" +
+ "# regarding copyright ownership. The ASF licenses this file\n" +
+ "# to you under the Apache License, Version 2.0 (the\n" +
+ "# \"License\"); you may not use this file except in compliance\n" +
+ "# with the License. You may obtain a copy of the License at\n" +
+ "#\n" +
+ "# http://www.apache.org/licenses/LICENSE-2.0\n" +
+ "#\n" +
+ "# Unless required by applicable law or agreed to in writing, software\n" +
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+ "# See the License for the specific language governing permissions and\n" +
+ "# limitations under the License.\n" +
+ "\n" +
+ "\n" +
+ "# Define some default values that can be overridden by system properties\n" +
+ "hbase.root.logger=INFO,console\n" +
+ "hbase.security.logger=INFO,console\n" +
+ "hbase.log.dir=.\n" +
+ "hbase.log.file=hbase.log\n" +
+ "\n" +
+ "# Define the root logger to the system property \"hbase.root.logger\".\n" +
+ "log4j.rootLogger=${hbase.root.logger}\n" +
+ "\n" +
+ "# Logging Threshold\n" +
+ "log4j.threshold=ALL\n" +
+ "\n" +
+ "#\n" +
+ "# Daily Rolling File Appender\n" +
+ "#\n" +
+ "log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\n" +
+ "log4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}\n" +
+ "\n" +
+ "# Rollver at midnight\n" +
+ "log4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n" +
+ "\n" +
+ "# 30-day backup\n" +
+ "#log4j.appender.DRFA.MaxBackupIndex=30\n" +
+ "log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n" +
+ "\n" +
+ "# Pattern format: Date LogLevel LoggerName LogMessage\n" +
+ "log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n" +
+ "\n" +
+ "# Rolling File Appender properties\n" +
+ "hbase.log.maxfilesize={{ams_hbase_log_maxfilesize}}MB\n" +
+ "hbase.log.maxbackupindex={{ams_hbase_log_maxbackupindex}}\n" +
+ "\n" +
+ "# Rolling File Appender\n" +
+ "log4j.appender.RFA=org.apache.log4j.RollingFileAppender\n" +
+ "log4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}\n" +
+ "\n" +
+ "log4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}\n" +
+ "log4j.appender.RFA.MaxBackupIndex=${hbase.log.maxbackupindex}\n" +
+ "\n" +
+ "log4j.appender.RFA.layout=org.apache.log4j.PatternLayout\n" +
+ "log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n" +
+ "\n" +
+ "#\n" +
+ "# Security audit appender\n" +
+ "#\n" +
+ "hbase.security.log.file=SecurityAuth.audit\n" +
+ "hbase.security.log.maxfilesize={{ams_hbase_security_log_maxfilesize}}MB\n" +
+ "hbase.security.log.maxbackupindex={{ams_hbase_security_log_maxbackupindex}}\n" +
+ "log4j.appender.RFAS=org.apache.log4j.RollingFileAppender\n" +
+ "log4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}\n" +
+ "log4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}\n" +
+ "log4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}\n" +
+ "log4j.appender.RFAS.layout=org.apache.log4j.PatternLayout\n" +
+ "log4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n\n" +
+ "log4j.category.SecurityLogger=${hbase.security.logger}\n" +
+ "log4j.additivity.SecurityLogger=false\n" +
+ "#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE\n" +
+ "\n" +
+ "#\n" +
+ "# Null Appender\n" +
+ "#\n" +
+ "log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender\n" +
+ "\n" +
+ "#\n" +
+ "# console\n" +
+ "# Add \"console\" to rootlogger above if you want to use this\n" +
+ "#\n" +
+ "log4j.appender.console=org.apache.log4j.ConsoleAppender\n" +
+ "log4j.appender.console.target=System.err\n" +
+ "log4j.appender.console.layout=org.apache.log4j.PatternLayout\n" +
+ "log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n\n" +
+ "\n" +
+ "# Custom Logging levels\n" +
+ "\n" +
+ "log4j.logger.org.apache.zookeeper=INFO\n" +
+ "#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG\n" +
+ "log4j.logger.org.apache.hadoop.hbase=INFO\n" +
+ "# Make these two classes INFO-level. Make them DEBUG to see more zk debug.\n" +
+ "log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO\n" +
+ "log4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO\n" +
+ "#log4j.logger.org.apache.hadoop.dfs=DEBUG\n" +
+ "# Set this class to log INFO only otherwise its OTT\n" +
+ "# Enable this to get detailed connection error/retry logging.\n" +
+ "# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE\n" +
+ "\n" +
+ "\n" +
+ "# Uncomment this line to enable tracing on _every_ RPC call (this can be a lot of output)\n" +
+ "#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG\n" +
+ "\n" +
+ "# Uncomment the below if you want to remove logging of client region caching'\n" +
+ "# and scan of .META. messages\n" +
+ "# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO\n" +
+ "# log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO\n");
+ expectedAmsHbaseLog4j.put("ams_hbase_log_maxfilesize", "256");
+ expectedAmsHbaseLog4j.put("ams_hbase_log_maxbackupindex", "20");
+ expectedAmsHbaseLog4j.put("ams_hbase_security_log_maxfilesize", "256");
+ expectedAmsHbaseLog4j.put("ams_hbase_security_log_maxbackupindex", "20");
Config mockAmsHbaseLog4j = easyMockSupport.createNiceMock(Config.class);
expect(cluster.getDesiredConfigByType("ams-hbase-log4j")).andReturn(mockAmsHbaseLog4j).atLeastOnce();
expect(mockAmsHbaseLog4j.getProperties()).andReturn(oldAmsHbaseLog4j).anyTimes();
Capture<Map<String, String>> AmsHbaseLog4jCapture = EasyMock.newCapture();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(AmsHbaseLog4jCapture), anyString(),
- anyObject(Map.class))).andReturn(config).once();
+ anyObject(Map.class))).andReturn(config).once();
replay(clusters, cluster);
replay(controller, injector2);
- replay(mockAmsLog4j,mockAmsHbaseLog4j);
+ replay(mockAmsLog4j, mockAmsHbaseLog4j);
new UpgradeCatalog250(injector2).updateAMSConfigs();
easyMockSupport.verifyAll();
@@ -1115,7 +1159,7 @@ public class UpgradeCatalog250Test {
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
.addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] {})
+ .addMockedMethod("getClusters", new Class[]{})
.addMockedMethod("createConfig")
.withConstructor(actionManager, clusters, injector)
.createNiceMock();
@@ -1138,7 +1182,7 @@ public class UpgradeCatalog250Test {
expect(mockLogSearchProperties.getProperties()).andReturn(oldLogSearchProperties).anyTimes();
Capture<Map<String, String>> logSearchPropertiesCapture = EasyMock.newCapture();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(logSearchPropertiesCapture), anyString(),
- EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
+ EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
Map<String, String> oldLogFeederEnv = ImmutableMap.of(
"content", "infra_solr_ssl_enabled");
@@ -1172,44 +1216,44 @@ public class UpgradeCatalog250Test {
Map<String, String> oldLogFeederLog4j = ImmutableMap.of(
"content",
" <appender name=\"rolling_file\" class=\"org.apache.log4j.RollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logfeeder_log_dir}}/logfeeder.log\"/>\n" +
- " <param name=\"append\" value=\"true\"/>\n" +
- " <param name=\"maxFileSize\" value=\"11MB\"/>\n" +
- " <param name=\"maxBackupIndex\" value=\"12\"/>\n" +
- " <layout class=\"org.apache.log4j.PatternLayout\">\n" +
- " <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\"/>\n" +
- " </layout>\n" +
- " </appender>\n" +
- "\n" +
- " <appender name=\"rolling_file_json\"\n" +
- " class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logfeeder_log_dir}}/logsearch-logfeeder.json\" />\n" +
- " <param name=\"append\" value=\"true\" />\n" +
- " <param name=\"maxFileSize\" value=\"13MB\" />\n" +
- " <param name=\"maxBackupIndex\" value=\"14\" />\n" +
- " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\" />\n" +
- " </appender>");
+ " <param name=\"file\" value=\"{{logfeeder_log_dir}}/logfeeder.log\"/>\n" +
+ " <param name=\"append\" value=\"true\"/>\n" +
+ " <param name=\"maxFileSize\" value=\"11MB\"/>\n" +
+ " <param name=\"maxBackupIndex\" value=\"12\"/>\n" +
+ " <layout class=\"org.apache.log4j.PatternLayout\">\n" +
+ " <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\"/>\n" +
+ " </layout>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <appender name=\"rolling_file_json\"\n" +
+ " class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
+ " <param name=\"file\" value=\"{{logfeeder_log_dir}}/logsearch-logfeeder.json\" />\n" +
+ " <param name=\"append\" value=\"true\" />\n" +
+ " <param name=\"maxFileSize\" value=\"13MB\" />\n" +
+ " <param name=\"maxBackupIndex\" value=\"14\" />\n" +
+ " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\" />\n" +
+ " </appender>");
Map<String, String> expectedLogFeederLog4j = ImmutableMap.of(
"content",
" <appender name=\"rolling_file\" class=\"org.apache.log4j.RollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logfeeder_log_dir}}/logfeeder.log\"/>\n" +
- " <param name=\"append\" value=\"true\"/>\n" +
- " <param name=\"maxFileSize\" value=\"{{logfeeder_log_maxfilesize}}MB\"/>\n" +
- " <param name=\"maxBackupIndex\" value=\"{{logfeeder_log_maxbackupindex}}\"/>\n" +
- " <layout class=\"org.apache.log4j.PatternLayout\">\n" +
- " <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\"/>\n" +
- " </layout>\n" +
- " </appender>\n" +
- "\n" +
- " <appender name=\"rolling_file_json\"\n" +
- " class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logfeeder_log_dir}}/logsearch-logfeeder.json\" />\n" +
- " <param name=\"append\" value=\"true\" />\n" +
- " <param name=\"maxFileSize\" value=\"{{logfeeder_json_log_maxfilesize}}MB\" />\n" +
- " <param name=\"maxBackupIndex\" value=\"{{logfeeder_json_log_maxbackupindex}}\" />\n" +
- " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\" />\n" +
- " </appender>",
+ " <param name=\"file\" value=\"{{logfeeder_log_dir}}/logfeeder.log\"/>\n" +
+ " <param name=\"append\" value=\"true\"/>\n" +
+ " <param name=\"maxFileSize\" value=\"{{logfeeder_log_maxfilesize}}MB\"/>\n" +
+ " <param name=\"maxBackupIndex\" value=\"{{logfeeder_log_maxbackupindex}}\"/>\n" +
+ " <layout class=\"org.apache.log4j.PatternLayout\">\n" +
+ " <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\"/>\n" +
+ " </layout>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <appender name=\"rolling_file_json\"\n" +
+ " class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
+ " <param name=\"file\" value=\"{{logfeeder_log_dir}}/logsearch-logfeeder.json\" />\n" +
+ " <param name=\"append\" value=\"true\" />\n" +
+ " <param name=\"maxFileSize\" value=\"{{logfeeder_json_log_maxfilesize}}MB\" />\n" +
+ " <param name=\"maxBackupIndex\" value=\"{{logfeeder_json_log_maxbackupindex}}\" />\n" +
+ " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\" />\n" +
+ " </appender>",
"logfeeder_log_maxfilesize", "11",
"logfeeder_log_maxbackupindex", "12",
"logfeeder_json_log_maxfilesize", "13",
@@ -1225,113 +1269,113 @@ public class UpgradeCatalog250Test {
Map<String, String> oldLogSearchLog4j = ImmutableMap.of(
"content",
" <appender name=\"rolling_file\" class=\"org.apache.log4j.RollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.err\" />\n" +
- " <param name=\"Threshold\" value=\"info\" />\n" +
- " <param name=\"append\" value=\"true\" />\n" +
- " <param name=\"maxFileSize\" value=\"11MB\" />\n" +
- " <param name=\"maxBackupIndex\" value=\"12\" />\n" +
- " <layout class=\"org.apache.log4j.PatternLayout\">\n" +
- " <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\" />\n" +
- " </layout>\n" +
- " </appender>\n" +
- "\n" +
- " <appender name=\"rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.json\"/>\n" +
- " <param name=\"append\" value=\"true\"/>\n" +
- " <param name=\"maxFileSize\" value=\"13MB\"/>\n" +
- " <param name=\"maxBackupIndex\" value=\"14\"/>\n" +
- " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
- " </appender>\n" +
- "\n" +
- " <appender name=\"audit_rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-audit.json\"/>\n" +
- " <param name=\"append\" value=\"true\"/>\n" +
- " <param name=\"maxFileSize\" value=\"15MB\"/>\n" +
- " <param name=\"maxBackupIndex\" value=\"16\"/>\n" +
- " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
- " </appender>\n" +
- "\n" +
- " <appender name=\"performance_analyzer_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-performance.json\"/>\n" +
- " <param name=\"Threshold\" value=\"info\"/>\n" +
- " <param name=\"append\" value=\"true\"/>\n" +
- " <param name=\"maxFileSize\" value=\"17MB\"/>\n" +
- " <param name=\"maxBackupIndex\" value=\"18\"/>\n" +
- " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
- " </appender>\n" +
- "\n" +
- " <logger name=\"org.apache.ambari.logsearch.audit\" additivity=\"true\">\n" +
- " <appender-ref ref=\"audit_rolling_file_json\"/>\n" +
- " </logger>\n" +
- "\n" +
- " <logger name=\"org.apache.ambari.logsearch.performance\" additivity=\"false\">\n" +
- " <appender-ref ref=\"performance_analyzer_json\"/>\n" +
- " </logger>\n" +
- "\n" +
- " <category name=\"org.apache.ambari.logsearch\" additivity=\"false\">\n" +
- " <priority value=\"warn\"/>\n" +
- " <appender-ref ref=\"rolling_file_json\"/>\n" +
- " </category>");
+ " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.err\" />\n" +
+ " <param name=\"Threshold\" value=\"info\" />\n" +
+ " <param name=\"append\" value=\"true\" />\n" +
+ " <param name=\"maxFileSize\" value=\"11MB\" />\n" +
+ " <param name=\"maxBackupIndex\" value=\"12\" />\n" +
+ " <layout class=\"org.apache.log4j.PatternLayout\">\n" +
+ " <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\" />\n" +
+ " </layout>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <appender name=\"rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
+ " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.json\"/>\n" +
+ " <param name=\"append\" value=\"true\"/>\n" +
+ " <param name=\"maxFileSize\" value=\"13MB\"/>\n" +
+ " <param name=\"maxBackupIndex\" value=\"14\"/>\n" +
+ " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <appender name=\"audit_rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
+ " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-audit.json\"/>\n" +
+ " <param name=\"append\" value=\"true\"/>\n" +
+ " <param name=\"maxFileSize\" value=\"15MB\"/>\n" +
+ " <param name=\"maxBackupIndex\" value=\"16\"/>\n" +
+ " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <appender name=\"performance_analyzer_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
+ " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-performance.json\"/>\n" +
+ " <param name=\"Threshold\" value=\"info\"/>\n" +
+ " <param name=\"append\" value=\"true\"/>\n" +
+ " <param name=\"maxFileSize\" value=\"17MB\"/>\n" +
+ " <param name=\"maxBackupIndex\" value=\"18\"/>\n" +
+ " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <logger name=\"org.apache.ambari.logsearch.audit\" additivity=\"true\">\n" +
+ " <appender-ref ref=\"audit_rolling_file_json\"/>\n" +
+ " </logger>\n" +
+ "\n" +
+ " <logger name=\"org.apache.ambari.logsearch.performance\" additivity=\"false\">\n" +
+ " <appender-ref ref=\"performance_analyzer_json\"/>\n" +
+ " </logger>\n" +
+ "\n" +
+ " <category name=\"org.apache.ambari.logsearch\" additivity=\"false\">\n" +
+ " <priority value=\"warn\"/>\n" +
+ " <appender-ref ref=\"rolling_file_json\"/>\n" +
+ " </category>");
Map<String, String> expectedLogSearchLog4j = new HashMap<>();
- expectedLogSearchLog4j.put("content",
+ expectedLogSearchLog4j.put("content",
" <appender name=\"rolling_file\" class=\"org.apache.log4j.RollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.log\" />\n" +
- " <param name=\"Threshold\" value=\"info\" />\n" +
- " <param name=\"append\" value=\"true\" />\n" +
- " <param name=\"maxFileSize\" value=\"{{logsearch_log_maxfilesize}}MB\" />\n" +
- " <param name=\"maxBackupIndex\" value=\"{{logsearch_log_maxbackupindex}}\" />\n" +
- " <layout class=\"org.apache.log4j.PatternLayout\">\n" +
- " <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\" />\n" +
- " </layout>\n" +
- " </appender>\n" +
- "\n" +
- " <appender name=\"rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.json\"/>\n" +
- " <param name=\"append\" value=\"true\"/>\n" +
- " <param name=\"maxFileSize\" value=\"{{logsearch_json_log_maxfilesize}}MB\"/>\n" +
- " <param name=\"maxBackupIndex\" value=\"{{logsearch_json_log_maxbackupindex}}\"/>\n" +
- " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
- " </appender>\n" +
- "\n" +
- " <appender name=\"audit_rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-audit.json\"/>\n" +
- " <param name=\"append\" value=\"true\"/>\n" +
- " <param name=\"maxFileSize\" value=\"{{logsearch_audit_log_maxfilesize}}MB\"/>\n" +
- " <param name=\"maxBackupIndex\" value=\"{{logsearch_audit_log_maxbackupindex}}\"/>\n" +
- " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
- " </appender>\n" +
- "\n" +
- " <appender name=\"performance_analyzer_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
- " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-performance.json\"/>\n" +
- " <param name=\"Threshold\" value=\"info\"/>\n" +
- " <param name=\"append\" value=\"true\"/>\n" +
- " <param name=\"maxFileSize\" value=\"{{logsearch_perf_log_maxfilesize}}MB\"/>\n" +
- " <param name=\"maxBackupIndex\" value=\"{{logsearch_perf_log_maxbackupindex}}\"/>\n" +
- " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
- " </appender>\n" +
- "\n" +
- " <logger name=\"org.apache.ambari.logsearch.audit\" additivity=\"true\">\n" +
- " <appender-ref ref=\"audit_rolling_file_json\"/>\n" +
- " </logger>\n" +
- "\n" +
- " <logger name=\"org.apache.ambari.logsearch.performance\" additivity=\"false\">\n" +
- " <appender-ref ref=\"performance_analyzer_json\"/>\n" +
- " </logger>\n" +
- "\n" +
- " <category name=\"org.apache.ambari.logsearch\" additivity=\"false\">\n" +
- " <priority value=\"info\"/>\n" +
- " <appender-ref ref=\"rolling_file_json\"/>\n" +
- " </category>");
-
- expectedLogSearchLog4j.put("logsearch_log_maxfilesize", "11");
- expectedLogSearchLog4j.put("logsearch_log_maxbackupindex", "12");
- expectedLogSearchLog4j.put("logsearch_json_log_maxfilesize", "13");
- expectedLogSearchLog4j.put("logsearch_json_log_maxbackupindex", "14");
- expectedLogSearchLog4j.put("logsearch_audit_log_maxfilesize", "15");
- expectedLogSearchLog4j.put("logsearch_audit_log_maxbackupindex", "16");
- expectedLogSearchLog4j.put("logsearch_perf_log_maxfilesize", "17");
- expectedLogSearchLog4j.put("logsearch_perf_log_maxbackupindex", "18");
+ " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.log\" />\n" +
+ " <param name=\"Threshold\" value=\"info\" />\n" +
+ " <param name=\"append\" value=\"true\" />\n" +
+ " <param name=\"maxFileSize\" value=\"{{logsearch_log_maxfilesize}}MB\" />\n" +
+ " <param name=\"maxBackupIndex\" value=\"{{logsearch_log_maxbackupindex}}\" />\n" +
+ " <layout class=\"org.apache.log4j.PatternLayout\">\n" +
+ " <param name=\"ConversionPattern\" value=\"%d [%t] %-5p %C{6} (%F:%L) - %m%n\" />\n" +
+ " </layout>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <appender name=\"rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
+ " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch.json\"/>\n" +
+ " <param name=\"append\" value=\"true\"/>\n" +
+ " <param name=\"maxFileSize\" value=\"{{logsearch_json_log_maxfilesize}}MB\"/>\n" +
+ " <param name=\"maxBackupIndex\" value=\"{{logsearch_json_log_maxbackupindex}}\"/>\n" +
+ " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <appender name=\"audit_rolling_file_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
+ " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-audit.json\"/>\n" +
+ " <param name=\"append\" value=\"true\"/>\n" +
+ " <param name=\"maxFileSize\" value=\"{{logsearch_audit_log_maxfilesize}}MB\"/>\n" +
+ " <param name=\"maxBackupIndex\" value=\"{{logsearch_audit_log_maxbackupindex}}\"/>\n" +
+ " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <appender name=\"performance_analyzer_json\" class=\"org.apache.ambari.logsearch.appender.LogsearchRollingFileAppender\">\n" +
+ " <param name=\"file\" value=\"{{logsearch_log_dir}}/logsearch-performance.json\"/>\n" +
+ " <param name=\"Threshold\" value=\"info\"/>\n" +
+ " <param name=\"append\" value=\"true\"/>\n" +
+ " <param name=\"maxFileSize\" value=\"{{logsearch_perf_log_maxfilesize}}MB\"/>\n" +
+ " <param name=\"maxBackupIndex\" value=\"{{logsearch_perf_log_maxbackupindex}}\"/>\n" +
+ " <layout class=\"org.apache.ambari.logsearch.appender.LogsearchConversion\"/>\n" +
+ " </appender>\n" +
+ "\n" +
+ " <logger name=\"org.apache.ambari.logsearch.audit\" additivity=\"true\">\n" +
+ " <appender-ref ref=\"audit_rolling_file_json\"/>\n" +
+ " </logger>\n" +
+ "\n" +
+ " <logger name=\"org.apache.ambari.logsearch.performance\" additivity=\"false\">\n" +
+ " <appender-ref ref=\"performance_analyzer_json\"/>\n" +
+ " </logger>\n" +
+ "\n" +
+ " <category name=\"org.apache.ambari.logsearch\" additivity=\"false\">\n" +
+ " <priority value=\"info\"/>\n" +
+ " <appender-ref ref=\"rolling_file_json\"/>\n" +
+ " </category>");
+
+ expectedLogSearchLog4j.put("logsearch_log_maxfilesize", "11");
+ expectedLogSearchLog4j.put("logsearch_log_maxbackupindex", "12");
+ expectedLogSearchLog4j.put("logsearch_json_log_maxfilesize", "13");
+ expectedLogSearchLog4j.put("logsearch_json_log_maxbackupindex", "14");
+ expectedLogSearchLog4j.put("logsearch_audit_log_maxfilesize", "15");
+ expectedLogSearchLog4j.put("logsearch_audit_log_maxbackupindex", "16");
+ expectedLogSearchLog4j.put("logsearch_perf_log_maxfilesize", "17");
+ expectedLogSearchLog4j.put("logsearch_perf_log_maxbackupindex", "18");
Config mockLogSearchLog4j = easyMockSupport.createNiceMock(Config.class);
expect(cluster.getDesiredConfigByType("logsearch-log4j")).andReturn(mockLogSearchLog4j).atLeastOnce();
@@ -1348,16 +1392,16 @@ public class UpgradeCatalog250Test {
Map<String, String> updatedLogSearchProperties = logSearchPropertiesCapture.getValue();
assertTrue(Maps.difference(expectedLogSearchProperties, updatedLogSearchProperties).areEqual());
-
+
Map<String, String> updatedLogFeederEnv = logFeederEnvCapture.getValue();
assertTrue(Maps.difference(expectedLogFeederEnv, updatedLogFeederEnv).areEqual());
-
+
Map<String, String> updatedLogSearchEnv = logSearchEnvCapture.getValue();
assertTrue(Maps.difference(expectedLogSearchEnv, updatedLogSearchEnv).areEqual());
-
+
Map<String, String> updatedLogFeederLog4j = logFeederLog4jCapture.getValue();
assertTrue(Maps.difference(expectedLogFeederLog4j, updatedLogFeederLog4j).areEqual());
-
+
Map<String, String> updatedLogSearchLog4j = logSearchLog4jCapture.getValue();
assertTrue(Maps.difference(expectedLogSearchLog4j, updatedLogSearchLog4j).areEqual());
}
@@ -1372,7 +1416,7 @@ public class UpgradeCatalog250Test {
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
.addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] {})
+ .addMockedMethod("getClusters", new Class[]{})
.addMockedMethod("createConfig")
.withConstructor(actionManager, clusters, injector)
.createNiceMock();
@@ -1382,15 +1426,15 @@ public class UpgradeCatalog250Test {
Map<String, String> oldInfraSolrEnv = ImmutableMap.of(
"content", "SOLR_SSL_TRUST_STORE={{infra_solr_keystore_location}}\n" +
- "SOLR_SSL_TRUST_STORE_PASSWORD={{infra_solr_keystore_password}}\n" +
- "SOLR_KERB_NAME_RULES={{infra_solr_kerberos_name_rules}}\n" +
- "SOLR_AUTHENTICATION_OPTS=\" -DauthenticationPlugin=org.apache.solr.security.KerberosPlugin -Djava.security.auth.login.config=$SOLR_JAAS_FILE -Dsolr.kerberos.principal=${SOLR_KERB_PRINCIPAL} -Dsolr.kerberos.keytab=${SOLR_KERB_KEYTAB} -Dsolr.kerberos.cookie.domain=${SOLR_HOST} -Dsolr.kerberos.name.rules=${SOLR_KERB_NAME_RULES}\"");
+ "SOLR_SSL_TRUST_STORE_PASSWORD={{infra_solr_keystore_password}}\n" +
+ "SOLR_KERB_NAME_RULES={{infra_solr_kerberos_name_rules}}\n" +
+ "SOLR_AUTHENTICATION_OPTS=\" -DauthenticationPlugin=org.apache.solr.security.KerberosPlugin -Djava.security.auth.login.config=$SOLR_JAAS_FILE -Dsolr.kerberos.principal=${SOLR_KERB_PRINCIPAL} -Dsolr.kerberos.keytab=${SOLR_KERB_KEYTAB} -Dsolr.kerberos.cookie.domain=${SOLR_HOST} -Dsolr.kerberos.name.rules=${SOLR_KERB_NAME_RULES}\"");
Map<String, String> expectedInfraSolrEnv = ImmutableMap.of(
"content", "SOLR_SSL_TRUST_STORE={{infra_solr_truststore_location}}\n" +
- "SOLR_SSL_TRUST_STORE_PASSWORD={{infra_solr_truststore_password}}\n" +
- "SOLR_KERB_NAME_RULES=\"{{infra_solr_kerberos_name_rules}}\"\n" +
- "SOLR_AUTHENTICATION_OPTS=\" -DauthenticationPlugin=org.apache.solr.security.KerberosPlugin -Djava.security.auth.login.config=$SOLR_JAAS_FILE -Dsolr.kerberos.principal=${SOLR_KERB_PRINCIPAL} -Dsolr.kerberos.keytab=${SOLR_KERB_KEYTAB} -Dsolr.kerberos.cookie.domain=${SOLR_HOST}\"");
+ "SOLR_SSL_TRUST_STORE_PASSWORD={{infra_solr_truststore_password}}\n" +
+ "SOLR_KERB_NAME_RULES=\"{{infra_solr_kerberos_name_rules}}\"\n" +
+ "SOLR_AUTHENTICATION_OPTS=\" -DauthenticationPlugin=org.apache.solr.security.KerberosPlugin -Djava.security.auth.login.config=$SOLR_JAAS_FILE -Dsolr.kerberos.principal=${SOLR_KERB_PRINCIPAL} -Dsolr.kerberos.keytab=${SOLR_KERB_KEYTAB} -Dsolr.kerberos.cookie.domain=${SOLR_HOST}\"");
Config mockInfraSolrEnv = easyMockSupport.createNiceMock(Config.class);
expect(cluster.getDesiredConfigByType("infra-solr-env")).andReturn(mockInfraSolrEnv).atLeastOnce();
@@ -1401,11 +1445,11 @@ public class UpgradeCatalog250Test {
Map<String, String> oldInfraSolrLog4j = ImmutableMap.of(
"content", "log4j.appender.file.MaxFileSize=15MB\n" +
- "log4j.appender.file.MaxBackupIndex=5\n");
+ "log4j.appender.file.MaxBackupIndex=5\n");
Map<String, String> expectedInfraSolrLog4j = ImmutableMap.of(
"content", "log4j.appender.file.MaxFileSize={{infra_log_maxfilesize}}MB\n" +
- "log4j.appender.file.MaxBackupIndex={{infra_log_maxbackupindex}}\n",
+ "log4j.appender.file.MaxBackupIndex={{infra_log_maxbackupindex}}\n",
"infra_log_maxfilesize", "15",
"infra_log_maxbackupindex", "5");
@@ -1418,13 +1462,13 @@ public class UpgradeCatalog250Test {
Map<String, String> oldInfraSolrClientLog4j = ImmutableMap.of(
"content", "log4j.appender.file.File\u003d{{infra_client_log|default(\u0027/var/log/ambari-infra-solr-client/solr-client.log\u0027)}}\n" +
- "log4j.appender.file.MaxFileSize=55MB\n" +
- "log4j.appender.file.MaxBackupIndex=10\n");
+ "log4j.appender.file.MaxFileSize=55MB\n" +
+ "log4j.appender.file.MaxBackupIndex=10\n");
Map<String, String> expectedInfraSolrClientLog4j = ImmutableMap.of(
"content", "log4j.appender.file.File\u003d{{solr_client_log|default(\u0027/var/log/ambari-infra-solr-client/solr-client.log\u0027)}}\n" +
- "log4j.appender.file.MaxFileSize={{solr_client_log_maxfilesize}}MB\n" +
- "log4j.appender.file.MaxBackupIndex={{solr_client_log_maxbackupindex}}\n",
+ "log4j.appender.file.MaxFileSize={{solr_client_log_maxfilesize}}MB\n" +
+ "log4j.appender.file.MaxBackupIndex={{solr_client_log_maxbackupindex}}\n",
"infra_client_log_maxfilesize", "55",
"infra_client_log_maxbackupindex", "10");
@@ -1461,7 +1505,7 @@ public class UpgradeCatalog250Test {
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
.addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] {})
+ .addMockedMethod("getClusters", new Class[]{})
.addMockedMethod("createConfig")
.withConstructor(actionManager, clusters, injector)
.createNiceMock();
@@ -1483,10 +1527,10 @@ public class UpgradeCatalog250Test {
"hive_ambari_database", "MySQL");
Map<String, String> oldHiveIntSite = ImmutableMap.of(
- "hive.llap.daemon.rpc.port","15001");
+ "hive.llap.daemon.rpc.port", "15001");
Map<String, String> expectedHiveIntSite = ImmutableMap.of(
- "hive.llap.daemon.rpc.port","0",
+ "hive.llap.daemon.rpc.port", "0",
"hive.auto.convert.join.noconditionaltask.size", "1000000000");
Config mockHsiSite = easyMockSupport.createNiceMock(Config.class);
@@ -1494,7 +1538,7 @@ public class UpgradeCatalog250Test {
expect(mockHsiSite.getProperties()).andReturn(oldHiveIntSite).anyTimes();
Capture<Map<String, String>> hsiSiteCapture = EasyMock.newCapture();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(hsiSiteCapture), anyString(),
- EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
+ EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
Config mockHiveEnv = easyMockSupport.createNiceMock(Config.class);
expect(cluster.getDesiredConfigByType("hive-env")).andReturn(mockHiveEnv).atLeastOnce();
@@ -1505,7 +1549,7 @@ public class UpgradeCatalog250Test {
expect(mockHsiEnv.getProperties()).andReturn(oldHsiEnv).anyTimes();
Capture<Map<String, String>> hsiEnvCapture = EasyMock.newCapture();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(hsiEnvCapture), anyString(),
- EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
+ EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
replay(clusters, cluster);
replay(controller, injector2);
@@ -1577,11 +1621,11 @@ public class UpgradeCatalog250Test {
replay(clusters, mockAtlasConfig, cluster);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
- .addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] { })
- .addMockedMethod("createConfig")
- .withConstructor(actionManager, clusters, injector)
- .createNiceMock();
+ .addMockedMethod("createConfiguration")
+ .addMockedMethod("getClusters", new Class[]{})
+ .addMockedMethod("createConfig")
+ .withConstructor(actionManager, clusters, injector)
+ .createNiceMock();
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
Capture<Map<String, String>> propertiesCapture = EasyMock.newCapture();
@@ -1633,8 +1677,8 @@ public class UpgradeCatalog250Test {
ArtifactEntity artifactEntity = createNiceMock(ArtifactEntity.class);
expect(artifactEntity.getArtifactData())
- .andReturn(kerberosDescriptorOrig.toMap())
- .once();
+ .andReturn(kerberosDescriptorOrig.toMap())
+ .once();
Capture<Map<String, Object>> updateData = Capture.newInstance(CaptureType.ALL);
artifactEntity.setArtifactData(capture(updateData));
@@ -1684,13 +1728,13 @@ public class UpgradeCatalog250Test {
PermissionDAO permissionDAO = easyMockSupport.createMock(PermissionDAO.class);
expect(permissionDAO.findPermissionByNameAndType("AMBARI.ADMINISTRATOR", ambariResourceTypeEntity))
- .andReturn(ambariAdministratorPermissionEntity).atLeastOnce();
+ .andReturn(ambariAdministratorPermissionEntity).atLeastOnce();
expect(permissionDAO.findPermissionByNameAndType("CLUSTER.ADMINISTRATOR", clusterResourceTypeEntity))
- .andReturn(clusterAdministratorPermissionEntity).atLeastOnce();
+ .andReturn(clusterAdministratorPermissionEntity).atLeastOnce();
expect(permissionDAO.merge(ambariAdministratorPermissionEntity))
- .andReturn(ambariAdministratorPermissionEntity).atLeastOnce();
+ .andReturn(ambariAdministratorPermissionEntity).atLeastOnce();
expect(permissionDAO.merge(clusterAdministratorPermissionEntity))
- .andReturn(clusterAdministratorPermissionEntity).atLeastOnce();
+ .andReturn(clusterAdministratorPermissionEntity).atLeastOnce();
ResourceTypeDAO resourceTypeDAO = easyMockSupport.createMock(ResourceTypeDAO.class);
expect(resourceTypeDAO.findByName("AMBARI")).andReturn(ambariResourceTypeEntity).atLeastOnce();
@@ -1743,8 +1787,8 @@ public class UpgradeCatalog250Test {
final PermissionDAO permissionDAO = easyMockSupport.createNiceMock(PermissionDAO.class);
expect(permissionDAO.findPermissionByNameAndType("AMBARI.ADMINISTRATOR", ambariResourceTypeEntity))
- .andReturn(ambariAdministratorPermissionEntity)
- .anyTimes();
+ .andReturn(ambariAdministratorPermissionEntity)
+ .anyTimes();
final ResourceTypeDAO resourceTypeDAO = easyMockSupport.createNiceMock(ResourceTypeDAO.class);
expect(resourceTypeDAO.findByName("AMBARI")).andReturn(ambariResourceTypeEntity).anyTimes();
@@ -1855,11 +1899,11 @@ public class UpgradeCatalog250Test {
replay(clusters, mockRangerPluginConfig, mockRangerAdminProperties, cluster);
AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
- .addMockedMethod("createConfiguration")
- .addMockedMethod("getClusters", new Class[] { })
- .addMockedMethod("createConfig")
- .withConstructor(actionManager, clusters, injector)
- .createNiceMock();
+ .addMockedMethod("createConfiguration")
+ .addMockedMethod("getClusters", new Class[]{})
+ .addMockedMethod("createConfig")
+ .withConstructor(actionManager, clusters, injector)
+ .createNiceMock();
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
Capture<Map<String, String>> propertiesCapture = EasyMock.newCapture();
@@ -1867,7 +1911,7 @@ public class UpgradeCatalog250Test {
expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(propertiesCapture), anyString(),
- EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
+ EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once();
replay(controller, injector2);
new UpgradeCatalog250(injector2).updateRangerUrlConfigs();
@@ -1876,4 +1920,20 @@ public class UpgradeCatalog250Test {
Map<String, String> updatedProperties = propertiesCapture.getValue();
assertTrue(Maps.difference(newProperties, updatedProperties).areEqual());
}
+
+ private Injector createInjector(final AmbariManagementController mockAmbariManagementController,
+ final Clusters mockClusters,
+ final AlertDefinitionDAO mockAlertDefinitionDAO) {
+ return Guice.createInjector(new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
+ bind(Clusters.class).toInstance(mockClusters);
+ bind(EntityManager.class).toInstance(entityManager);
+ bind(AlertDefinitionDAO.class).toInstance(mockAlertDefinitionDAO);
+ bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
+ bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
+ }
+ });
+ }
}
[39/50] [abbrv] ambari git commit: AMBARI-20254. Service Alert Popup
- Unexpected User Experience. (Vivek Subramanian via yusaku)
Posted by ol...@apache.org.
AMBARI-20254. Service Alert Popup - Unexpected User Experience. (Vivek Subramanian via yusaku)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/69102638
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/69102638
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/69102638
Branch: refs/heads/branch-dev-logsearch
Commit: 6910263850c504195477a1d67adaa1820646975c
Parents: c5d2d5b
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Wed Mar 8 11:30:36 2017 -0800
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Wed Mar 8 11:30:36 2017 -0800
----------------------------------------------------------------------
.../controllers/main/service/info/summary.js | 43 ++++++++------------
.../app/models/alerts/alert_definition.js | 10 +++++
ambari-web/app/styles/alerts.less | 10 ++++-
.../main/service/info/service_alert_popup.hbs | 19 ++++-----
4 files changed, 44 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/69102638/ambari-web/app/controllers/main/service/info/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/summary.js b/ambari-web/app/controllers/main/service/info/summary.js
index b3d7b35..7327255 100644
--- a/ambari-web/app/controllers/main/service/info/summary.js
+++ b/ambari-web/app/controllers/main/service/info/summary.js
@@ -369,7 +369,7 @@ App.MainServiceInfoSummaryController = Em.Controller.extend(App.WidgetSectionMix
return App.ModalPopup.show({
header: Em.I18n.t('services.service.summary.alerts.popup.header').format(context.get('displayName')),
autoHeight: false,
- classNames: ['forty-percent-width-modal'],
+ classNames: ['sixty-percent-width-modal'],
bodyClass: Em.View.extend({
templateName: require('templates/main/service/info/service_alert_popup'),
classNames: ['service-alerts'],
@@ -377,43 +377,36 @@ App.MainServiceInfoSummaryController = Em.Controller.extend(App.WidgetSectionMix
didInsertElement: function () {
Em.run.next(this, function () {
App.tooltip(this.$(".timeago"));
+ App.tooltip(this.$(".definition-latest-text"), {placement: 'bottom'});
});
},
willDestroyElement:function () {
this.$(".timeago").tooltip('destroy');
+ this.$(".definition-latest-text").tooltip('destroy');
},
alerts: function () {
var property = context.get('componentName') ? 'componentName' : 'serviceName';
var serviceDefinitions = this.get('controller.content').filterProperty(property, context.get(property));
// definitions should be sorted in order: critical, warning, ok, unknown, other
- var definitionTypes = {
- "isCritical": [],
- "isWarning": [],
- "isOK": [],
- "isUnknown": []
- };
- var others = [];
+ var criticalDefinitions = [], warningDefinitions = [], okDefinitions = [], unknownDefinitions = [];
serviceDefinitions.forEach(function (definition) {
- definition.set('isCollapsed', true);
- var pushed = false; // make sure each definition gets pushed only one time
- Object.keys(definitionTypes).forEach(function (type) {
- if (!pushed && definition.get(type)) {
- definitionTypes[type].push(definition);
- pushed = true;
- }
- });
- if (!pushed) {
- others.push(definition);
+ if (definition.get('isCritical')) {
+ criticalDefinitions.push(definition);
+ serviceDefinitions = serviceDefinitions.without(definition);
+ } else if (definition.get('isWarning')) {
+ warningDefinitions.push(definition);
+ serviceDefinitions = serviceDefinitions.without(definition);
+ } else if (definition.get('isOK')) {
+ okDefinitions.push(definition);
+ serviceDefinitions = serviceDefinitions.without(definition);
+ } else if (definition.get('isUnknown')) {
+ unknownDefinitions.push(definition);
+ serviceDefinitions = serviceDefinitions.without(definition);
}
});
- serviceDefinitions = definitionTypes.isCritical.concat(definitionTypes.isWarning, definitionTypes.isOK, definitionTypes.isUnknown, others);
-
+ serviceDefinitions = criticalDefinitions.concat(warningDefinitions, okDefinitions, unknownDefinitions, serviceDefinitions);
return serviceDefinitions;
}.property('controller.content'),
- onToggleBlock: function (alert) {
- this.$('#' + alert.context.clientId).toggle('blind', 500);
- alert.context.toggleProperty('isCollapsed');
- },
gotoAlertDetails: function (e) {
if (e && e.context) {
this.get('parentView').hide();
@@ -865,4 +858,4 @@ App.MainServiceInfoSummaryController = Em.Controller.extend(App.WidgetSectionMix
App.router.route('main' + event.context.href);
}
-});
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/69102638/ambari-web/app/models/alerts/alert_definition.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/alerts/alert_definition.js b/ambari-web/app/models/alerts/alert_definition.js
index 4da7199..d8a6a3f 100644
--- a/ambari-web/app/models/alerts/alert_definition.js
+++ b/ambari-web/app/models/alerts/alert_definition.js
@@ -160,6 +160,16 @@ App.AlertDefinition = DS.Model.extend({
return text;
}.property('summary'),
+ latestTextSummary: function () {
+ var latestText = this.get('latestText');
+ var ellipsis = '...';
+ var summaryLength = 400;
+ if(latestText.length > summaryLength) {
+ latestText = latestText.substring(0, summaryLength - ellipsis.length) + ellipsis;
+ }
+ return latestText;
+ }.property('latestText'),
+
isAmbariService: Em.computed.equal('service._id', 'AMBARI'),
isAmbariAgentComponent: Em.computed.equal('componentName', 'AMBARI_AGENT'),
http://git-wip-us.apache.org/repos/asf/ambari/blob/69102638/ambari-web/app/styles/alerts.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/alerts.less b/ambari-web/app/styles/alerts.less
index e31ea30..d31ba47 100644
--- a/ambari-web/app/styles/alerts.less
+++ b/ambari-web/app/styles/alerts.less
@@ -551,6 +551,14 @@
}
}
+.sixty-percent-width-modal {
+ .definition-latest-text {
+ overflow-x: auto;
+ text-overflow: inherit;
+ white-space: normal;
+ }
+}
+
/*****end styles for manage alerts popup*****/
/*****start styles for alerts popup*****/
@@ -566,7 +574,7 @@
}
.service-alerts {
- max-height: 246px;
+ max-height: 400px;
}
.instance-text {
http://git-wip-us.apache.org/repos/asf/ambari/blob/69102638/ambari-web/app/templates/main/service/info/service_alert_popup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/service_alert_popup.hbs b/ambari-web/app/templates/main/service/info/service_alert_popup.hbs
index 6ab6b3f..253c624 100644
--- a/ambari-web/app/templates/main/service/info/service_alert_popup.hbs
+++ b/ambari-web/app/templates/main/service/info/service_alert_popup.hbs
@@ -21,20 +21,15 @@
{{#each alert in view.alerts}}
<li class="alert-list-wrap">
<div class="row-fluid">
- <div class="span8 name-text">
- <div class="accordion-group block">
- <div class="accordion-heading" {{action "onToggleBlock" alert target="view"}}>
- <i {{bindAttr class=":pull-left :accordion-toggle alert.isCollapsed:icon-caret-right:icon-caret-down"}}></i>
- <a class="accordion-toggle" href="#" {{action "gotoAlertDetails" alert target="view"}}>{{alert.label}}</a>
- </div>
- <div id="{{unbound alert.clientId}}" class="accordion-body collapse in" style="display: none">
- <div class="accordion-inner definition-latest-text">
- {{alert.latestText}}
- </div>
- </div>
+ <div class="span9 name-text">
+ <div>
+ <a href="#" {{action "gotoAlertDetails" alert target="view"}}>{{alert.label}}</a>
+ </div>
+ <div class="definition-latest-text" {{bindAttr data-original-title="alert.latestText"}}>
+ {{alert.latestTextSummary}}
</div>
</div>
- <div class="span4 status-col" rel="alert-status-tooltip" >
+ <div class="span3 status-col" rel="alert-status-tooltip" >
{{view App.AlertDefinitionSummary contentBinding="alert"}}
<span class="timeago" {{bindAttr data-original-title="alert.lastTriggeredVerboseDisplay"}}>
<span class="status-icon">{{{alert.status}}}</span>
[22/50] [abbrv] ambari git commit: AMBARI-20256. Auto Hive 2.0
instance is missing permission for default Ambari roles. (dipayanb)
Posted by ol...@apache.org.
AMBARI-20256. Auto Hive 2.0 instance is missing permission for default Ambari roles. (dipayanb)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a92b7c80
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a92b7c80
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a92b7c80
Branch: refs/heads/branch-dev-logsearch
Commit: a92b7c80210ab180c6782600c38c0566e8d9acb6
Parents: 7e8a815
Author: Dipayan Bhowmick <di...@gmail.com>
Authored: Wed Mar 8 00:59:27 2017 +0530
Committer: Dipayan Bhowmick <di...@gmail.com>
Committed: Wed Mar 8 00:59:27 2017 +0530
----------------------------------------------------------------------
contrib/views/hive20/src/main/resources/view.xml | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a92b7c80/contrib/views/hive20/src/main/resources/view.xml
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/view.xml b/contrib/views/hive20/src/main/resources/view.xml
index 37ddf56..f0e9e34 100644
--- a/contrib/views/hive20/src/main/resources/view.xml
+++ b/contrib/views/hive20/src/main/resources/view.xml
@@ -395,5 +395,12 @@
<services>
<service>HIVE</service>
</services>
+ <roles>
+ <role>CLUSTER.ADMINISTRATOR</role>
+ <role>CLUSTER.OPERATOR</role>
+ <role>SERVICE.ADMINISTRATOR</role>
+ <role>SERVICE.OPERATOR</role>
+ <role>CLUSTER.USER</role>
+ </roles>
</auto-instance>
</view>
[33/50] [abbrv] ambari git commit: AMBARI-20345 - Alert Event
Publisher Executor Doesn't Scale Threads (part2) (jonathanhurley)
Posted by ol...@apache.org.
AMBARI-20345 - Alert Event Publisher Executor Doesn't Scale Threads (part2) (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/60095bc2
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/60095bc2
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/60095bc2
Branch: refs/heads/branch-dev-logsearch
Commit: 60095bc29b21ca92a4dfb6c3ce60f398896a0e43
Parents: 8eaaf80
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Wed Mar 8 07:52:38 2017 -0500
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Wed Mar 8 07:53:44 2017 -0500
----------------------------------------------------------------------
.../java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/60095bc2/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java
index f47a997..cb5f143 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOCachedTest.java
@@ -17,8 +17,6 @@
*/
package org.apache.ambari.server.orm.dao;
-import static org.easymock.EasyMock.expect;
-
import java.util.List;
import javax.persistence.EntityManager;