You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2016/10/13 12:43:13 UTC
[01/20] ambari git commit: AMBARI-18563. Ambari startup script
doesn't work on SUSE and potentially other OS's. (aonishuk)
Repository: ambari
Updated Branches:
refs/heads/branch-dev-patch-upgrade b31c6c285 -> 1cc090d56
AMBARI-18563. Ambari startup script doesn't work on SUSE and potentially other OS's. (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a80c5a2d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a80c5a2d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a80c5a2d
Branch: refs/heads/branch-dev-patch-upgrade
Commit: a80c5a2dbaa0c48f7df87dae6a23a027c2ab6022
Parents: 2d1d5f9
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Oct 10 17:52:36 2016 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Oct 10 17:52:36 2016 +0300
----------------------------------------------------------------------
ambari-server/conf/unix/install-helper.sh | 1 +
ambari-server/sbin/ambari-server | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80c5a2d/ambari-server/conf/unix/install-helper.sh
----------------------------------------------------------------------
diff --git a/ambari-server/conf/unix/install-helper.sh b/ambari-server/conf/unix/install-helper.sh
index 229e146..34ec0e9 100644
--- a/ambari-server/conf/unix/install-helper.sh
+++ b/ambari-server/conf/unix/install-helper.sh
@@ -102,6 +102,7 @@ do_install(){
sed -i "s|ambari.root.dir\s*=\s*/|ambari.root.dir=${ROOT}|g" "$AMBARI_LOG4J"
sed -i "s|root_dir\s*=\s*/|root_dir = ${ROOT}|g" "$CA_CONFIG"
+ sed -i "s|^ROOT=\"/\"$|ROOT=\"${ROOT}\"|g" "$AMBARI_SERVER_EXECUTABLE"
AUTOSTART_SERVER_CMD=""
which chkconfig > /dev/null 2>&1
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80c5a2d/ambari-server/sbin/ambari-server
----------------------------------------------------------------------
diff --git a/ambari-server/sbin/ambari-server b/ambari-server/sbin/ambari-server
index 762ae19..bdbdd0f 100755
--- a/ambari-server/sbin/ambari-server
+++ b/ambari-server/sbin/ambari-server
@@ -44,8 +44,10 @@ case "${1:-}" in
esac
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-export ROOT=`dirname $(dirname $SCRIPT_DIR)`
+# the below line (ROOT="/") is replaced by install-helper.sh. Don't edit/remove it.
+ROOT="/"
ROOT=`echo $ROOT | sed 's/\/$//'`
+export ROOT
export PATH=$ROOT/usr/lib/ambari-server/*:$PATH:/sbin/:/usr/sbin
export AMBARI_CONF_DIR=$ROOT/etc/ambari-server/conf
[09/20] ambari git commit: AMBARI-18502: Logging of ambari agent
scheduling activities in debug mode (Ranjan Banerjee via Nahappan
Somasundaram)
Posted by nc...@apache.org.
AMBARI-18502: Logging of ambari agent scheduling activities in debug mode (Ranjan Banerjee via Nahappan Somasundaram)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3e4b368f
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3e4b368f
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3e4b368f
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 3e4b368f9bde259b29d3a2e97fd84e773af434c3
Parents: 6587fda
Author: Nahappan Somasundaram <ns...@hortonworks.com>
Authored: Mon Oct 10 20:47:32 2016 -0700
Committer: Nahappan Somasundaram <ns...@hortonworks.com>
Committed: Mon Oct 10 20:47:32 2016 -0700
----------------------------------------------------------------------
ambari-agent/src/main/python/ambari_agent/apscheduler/scheduler.py | 1 +
ambari-agent/src/main/python/ambari_agent/apscheduler/threadpool.py | 1 +
2 files changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/3e4b368f/ambari-agent/src/main/python/ambari_agent/apscheduler/scheduler.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/apscheduler/scheduler.py b/ambari-agent/src/main/python/ambari_agent/apscheduler/scheduler.py
index 35460b2..f787a2d 100644
--- a/ambari-agent/src/main/python/ambari_agent/apscheduler/scheduler.py
+++ b/ambari-agent/src/main/python/ambari_agent/apscheduler/scheduler.py
@@ -544,6 +544,7 @@ class Scheduler(object):
for job in tuple(jobstore.jobs):
run_times = job.get_run_times(now)
if run_times:
+ logger.debug('Scheduler submitting job %s to run', job.name)
self._threadpool.submit(self._run_job, job, run_times)
# Increase the job's run count
http://git-wip-us.apache.org/repos/asf/ambari/blob/3e4b368f/ambari-agent/src/main/python/ambari_agent/apscheduler/threadpool.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/apscheduler/threadpool.py b/ambari-agent/src/main/python/ambari_agent/apscheduler/threadpool.py
index 6cd7ce2..cb19888 100644
--- a/ambari-agent/src/main/python/ambari_agent/apscheduler/threadpool.py
+++ b/ambari-agent/src/main/python/ambari_agent/apscheduler/threadpool.py
@@ -83,6 +83,7 @@ class ThreadPool(object):
break
try:
+ logger.debug('Worker thread starting job %s', args[0])
func(*args, **kwargs)
except:
logger.exception('Error in worker thread')
[14/20] ambari git commit: AMBARI-18568. Hive shows restart indicator
after RU (ncole)
Posted by nc...@apache.org.
AMBARI-18568. Hive shows restart indicator after RU (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/82afd3a0
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/82afd3a0
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/82afd3a0
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 82afd3a0ff4dac37a8c56b914b37c1c9476c30ee
Parents: 9511638
Author: Nate Cole <nc...@hortonworks.com>
Authored: Tue Oct 11 17:08:05 2016 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Wed Oct 12 10:36:03 2016 -0400
----------------------------------------------------------------------
.../src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/82afd3a0/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 88d9b13..28b34a2 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
@@ -246,8 +246,8 @@
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<service name="HIVE">
- <component>HIVE_METASTORE</component>
<component>HIVE_SERVER</component>
+ <component>HIVE_METASTORE</component>
<component>HIVE_SERVER_INTERACTIVE</component>
<component>WEBHCAT_SERVER</component>
</service>
[02/20] ambari git commit: AMBARI-17311. Modify HTTP headers to
follow best security practices (Sangeeta Ravindran via rlevas)
Posted by nc...@apache.org.
AMBARI-17311. Modify HTTP headers to follow best security practices (Sangeeta Ravindran via rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/34c5686c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/34c5686c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/34c5686c
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 34c5686c3a0f80a5c7b78ddf05bb41cb13202438
Parents: a80c5a2
Author: Sangeeta Ravindran <sa...@gmail.com>
Authored: Mon Oct 10 11:05:40 2016 -0400
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Mon Oct 10 11:09:58 2016 -0400
----------------------------------------------------------------------
ambari-server/conf/unix/ambari.properties | 6 +
ambari-server/conf/windows/ambari.properties | 6 +
.../server/configuration/Configuration.java | 135 +++++++++++++++++++
.../security/AbstractSecurityHeaderFilter.java | 43 ++++++
.../AmbariServerSecurityHeaderFilter.java | 3 +
.../AmbariViewsSecurityHeaderFilter.java | 3 +
.../AbstractSecurityHeaderFilterTest.java | 38 +++++-
.../AmbariServerSecurityHeaderFilterTest.java | 7 +
.../AmbariViewsSecurityHeaderFilterTest.java | 6 +
9 files changed, 246 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/ambari-server/conf/unix/ambari.properties
----------------------------------------------------------------------
diff --git a/ambari-server/conf/unix/ambari.properties b/ambari-server/conf/unix/ambari.properties
index 4dcbe99..371653f 100644
--- a/ambari-server/conf/unix/ambari.properties
+++ b/ambari-server/conf/unix/ambari.properties
@@ -113,11 +113,17 @@ rolling.upgrade.skip.packages.prefixes=
http.strict-transport-security=max-age=31536000
http.x-xss-protection=1; mode=block
http.x-frame-options=DENY
+http.x-content-type-options=nosniff
+http.cache-control=no-store
+http.pragma=no-cache
# HTTP Header settings for Ambari Views
views.http.strict-transport-security=max-age=31536000
views.http.x-xss-protection=1; mode=block
views.http.x-frame-options=SAMEORIGIN
+views.http.x-content-type-options=nosniff
+views.http.cache-control=no-store
+views.http.pragma=no-cache
mpacks.staging.path=$ROOT/var/lib/ambari-server/resources/mpacks
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/ambari-server/conf/windows/ambari.properties
----------------------------------------------------------------------
diff --git a/ambari-server/conf/windows/ambari.properties b/ambari-server/conf/windows/ambari.properties
index 64cce3b..c1c0a99 100644
--- a/ambari-server/conf/windows/ambari.properties
+++ b/ambari-server/conf/windows/ambari.properties
@@ -93,10 +93,16 @@ ulimit.open.files=10000
http.strict-transport-security=max-age=31536000
http.x-xss-protection=1; mode=block
http.x-frame-options=DENY
+http.x-content-type-options=nosniff
+http.cache-control=no-store
+http.pragma=no-cache
# HTTP Header settings for Ambari Views
views.http.strict-transport-security=max-age=31536000
views.http.x-xss-protection=1; mode=block
views.http.x-frame-options=SAMEORIGIN
+views.http.x-content-type-options=nosniff
+views.http.cache-control=no-store
+views.http.pragma=no-cache
mpacks.staging.path=resources\\mpacks
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/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 2e850ef..e976f45 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
@@ -2182,6 +2182,27 @@ public class Configuration {
"http.x-xss-protection", "1; mode=block");
/**
+ * The value that will be used to set the {@code X-Content-Type} HTTP response header.
+ */
+ @Markdown(description = "The value that will be used to set the `X-CONTENT-TYPE` HTTP response header.")
+ public static final ConfigurationProperty<String> HTTP_X_CONTENT_TYPE_HEADER_VALUE = new ConfigurationProperty<>(
+ "http.x-content-type-options", "nosniff");
+
+ /**
+ * The value that will be used to set the {@code Cache-Control} HTTP response header.
+ */
+ @Markdown(description = "The value that will be used to set the `Cache-Control` HTTP response header.")
+ public static final ConfigurationProperty<String> HTTP_CACHE_CONTROL_HEADER_VALUE = new ConfigurationProperty<>(
+ "http.cache-control", "no-store");
+
+ /**
+ * The value that will be used to set the {@code PRAGMA} HTTP response header.
+ */
+ @Markdown(description = "The value that will be used to set the `PRAGMA` HTTP response header.")
+ public static final ConfigurationProperty<String> HTTP_PRAGMA_HEADER_VALUE = new ConfigurationProperty<>(
+ "http.pragma", "no-cache");
+
+ /**
* The value that will be used to set the {@code Strict-Transport-Security}
* HTTP response header for Ambari View requests.
*/
@@ -2207,6 +2228,30 @@ public class Configuration {
"views.http.x-xss-protection", "1; mode=block");
/**
+ * The value that will be used to set the {@code X-Content-Type} HTTP response header.
+ * HTTP response header for Ambari View requests.
+ */
+ @Markdown(description = "The value that will be used to set the `X-CONTENT-TYPE` HTTP response header for Ambari View requests.")
+ public static final ConfigurationProperty<String> VIEWS_HTTP_X_CONTENT_TYPE_HEADER_VALUE = new ConfigurationProperty<>(
+ "views.http.x-content-type-options", "nosniff");
+
+ /**
+ * The value that will be used to set the {@code Cache-Control} HTTP response header.
+ * HTTP response header for Ambari View requests.
+ */
+ @Markdown(description = "The value that will be used to set the `Cache-Control` HTTP response header for Ambari View requests.")
+ public static final ConfigurationProperty<String> VIEWS_HTTP_CACHE_CONTROL_HEADER_VALUE = new ConfigurationProperty<>(
+ "views.http.cache-control", "no-store");
+
+ /**
+ * The value that will be used to set the {@code PRAGMA} HTTP response header.
+ * HTTP response header for Ambari View requests.
+ */
+ @Markdown(description = "The value that will be used to set the `PRAGMA` HTTP response header for Ambari View requests.")
+ public static final ConfigurationProperty<String> VIEWS_HTTP_PRAGMA_HEADER_VALUE = new ConfigurationProperty<>(
+ "views.http.pragma", "no-cache");
+
+ /**
* The time, in milliseconds, that requests to connect to a URL to retrieve
* Version Definition Files (VDF) will wait before being terminated.
*/
@@ -3284,6 +3329,51 @@ public class Configuration {
}
/**
+ * Get the value that should be set for the <code>X-Content-Type</code> HTTP response header for Ambari Server UI.
+ * <p/>
+ * By default this will be <code>nosniff</code>. For example:
+ * <p/>
+ * <code>
+ * X-Content-Type: nosniff
+ * </code>
+ *
+ * @return the X-Content-Type value - null or "" indicates that the value is not set
+ */
+ public String getXContentTypeHTTPResponseHeader() {
+ return getProperty(HTTP_X_CONTENT_TYPE_HEADER_VALUE);
+ }
+
+ /**
+ * Get the value that should be set for the <code>Cache-Control</code> HTTP response header for Ambari Server UI.
+ * <p/>
+ * By default this will be <code>no-store</code>. For example:
+ * <p/>
+ * <code>
+ * Cache-control: no-store
+ * </code>
+ *
+ * @return the Cache-Control value - null or "" indicates that the value is not set
+ */
+ public String getCacheControlHTTPResponseHeader() {
+ return getProperty(HTTP_CACHE_CONTROL_HEADER_VALUE);
+ }
+
+ /**
+ * Get the value that should be set for the <code>Pragma</code> HTTP response header for Ambari Server UI.
+ * <p/>
+ * By default this will be <code>no-cache</code>. For example:
+ * <p/>
+ * <code>
+ * Pragma: no-cache
+ * </code>
+ *
+ * @return the Pragma value - null or "" indicates that the value is not set
+ */
+ public String getPragmaHTTPResponseHeader() {
+ return getProperty(HTTP_PRAGMA_HEADER_VALUE);
+ }
+
+ /**
* Get the value that should be set for the <code>Strict-Transport-Security</code> HTTP response header for Ambari Views.
* <p/>
* By default this will be <code>max-age=31536000; includeSubDomains</code>. For example:
@@ -3331,6 +3421,51 @@ public class Configuration {
}
/**
+ * Get the value that should be set for the <code>X-Content-Type</code> HTTP response header for Ambari Views.
+ * <p/>
+ * By default this will be <code>nosniff</code>. For example:
+ * <p/>
+ * <code>
+ * X-Content-Type: nosniff
+ * </code>
+ *
+ * @return the X-Content-Type value - null or "" indicates that the value is not set
+ */
+ public String getViewsXContentTypeHTTPResponseHeader() {
+ return getProperty(VIEWS_HTTP_X_CONTENT_TYPE_HEADER_VALUE);
+ }
+
+ /**
+ * Get the value that should be set for the <code>Cache-Control</code> HTTP response header for Ambari Views.
+ * <p/>
+ * By default this will be <code>no-store</code>. For example:
+ * <p/>
+ * <code>
+ * Cache-control: no-store
+ * </code>
+ *
+ * @return the Cache-Control value - null or "" indicates that the value is not set
+ */
+ public String getViewsCacheControlHTTPResponseHeader() {
+ return getProperty(VIEWS_HTTP_CACHE_CONTROL_HEADER_VALUE);
+ }
+
+ /**
+ * Get the value that should be set for the <code>Pragma</code> HTTP response header for Ambari Views.
+ * <p/>
+ * By default this will be <code>no-cache</code>. For example:
+ * <p/>
+ * <code>
+ * Pragma: no-cache
+ * </code>
+ *
+ * @return the Pragma value - null or "" indicates that the value is not set
+ */
+ public String getViewsPragmaHTTPResponseHeader() {
+ return getProperty(VIEWS_HTTP_PRAGMA_HEADER_VALUE);
+ }
+
+ /**
* Check to see if the hostname of the agent is to be validated as a proper hostname or not
*
* @return true if agent hostnames should be checked as a valid hostnames; otherwise false
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/ambari-server/src/main/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilter.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilter.java b/ambari-server/src/main/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilter.java
index 05c9ecb..423a013 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilter.java
@@ -53,6 +53,9 @@ public abstract class AbstractSecurityHeaderFilter implements Filter {
protected final static String STRICT_TRANSPORT_HEADER = "Strict-Transport-Security";
protected final static String X_FRAME_OPTIONS_HEADER = "X-Frame-Options";
protected final static String X_XSS_PROTECTION_HEADER = "X-XSS-Protection";
+ protected final static String X_CONTENT_TYPE_HEADER = "X-Content-Type-Options";
+ protected final static String CACHE_CONTROL_HEADER = "Cache-Control";
+ protected final static String PRAGMA_HEADER = "Pragma";
/**
* The logger.
@@ -87,6 +90,19 @@ public abstract class AbstractSecurityHeaderFilter implements Filter {
* The value for the X-XSS-Protection HTTP response header.
*/
private String xXSSProtectionHeader = Configuration.HTTP_X_XSS_PROTECTION_HEADER_VALUE.getDefaultValue();
+ /**
+ * The value for the Content-Type HTTP response header.
+ */
+ private String xContentTypeHeader = Configuration.HTTP_X_CONTENT_TYPE_HEADER_VALUE.getDefaultValue();
+ /**
+ * The value for the Cache-control HTTP response header.
+ */
+ private String cacheControlHeader = Configuration.HTTP_CACHE_CONTROL_HEADER_VALUE.getDefaultValue();
+ /**
+ * The value for the Pragma HTTP response header.
+ */
+ private String pragmaHeader = Configuration.HTTP_PRAGMA_HEADER_VALUE.getDefaultValue();
+
@Override
public void init(FilterConfig filterConfig) throws ServletException {
@@ -141,6 +157,18 @@ public abstract class AbstractSecurityHeaderFilter implements Filter {
this.xXSSProtectionHeader = xXSSProtectionHeader;
}
+ protected void setXContentTypeHeader(String xContentTypeHeader) {
+ this.xContentTypeHeader = xContentTypeHeader;
+ }
+
+ protected void setCacheControlHeader(String cacheControlHeader) {
+ this.cacheControlHeader = cacheControlHeader;
+ }
+
+ protected void setPragmaHeader(String pragmaHeader) {
+ this.pragmaHeader = pragmaHeader;
+ }
+
private void doFilterInternal(ServletRequest servletRequest, ServletResponse servletResponse) {
if (servletResponse instanceof HttpServletResponse) {
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
@@ -159,6 +187,21 @@ public abstract class AbstractSecurityHeaderFilter implements Filter {
if (!StringUtils.isEmpty(xXSSProtectionHeader)) {
httpServletResponse.setHeader(X_XSS_PROTECTION_HEADER, xXSSProtectionHeader);
}
+
+ // Conditionally set the X-Content-Type HTTP response header if a value is supplied
+ if (!StringUtils.isEmpty(xContentTypeHeader)) {
+ httpServletResponse.setHeader(X_CONTENT_TYPE_HEADER, xContentTypeHeader);
+ }
+
+ // Conditionally set the X-Cache-Control HTTP response header if a value is supplied
+ if (!StringUtils.isEmpty(cacheControlHeader)) {
+ httpServletResponse.setHeader(CACHE_CONTROL_HEADER, cacheControlHeader);
+ }
+
+ // Conditionally set the X-Pragma HTTP response header if a value is supplied
+ if (!StringUtils.isEmpty(pragmaHeader)) {
+ httpServletResponse.setHeader(PRAGMA_HEADER, pragmaHeader);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilter.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilter.java b/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilter.java
index b40953b..aa00ac2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilter.java
@@ -47,6 +47,9 @@ public class AmbariServerSecurityHeaderFilter extends AbstractSecurityHeaderFilt
setStrictTransportSecurity(configuration.getStrictTransportSecurityHTTPResponseHeader());
setxFrameOptionsHeader(configuration.getXFrameOptionsHTTPResponseHeader());
setxXSSProtectionHeader(configuration.getXXSSProtectionHTTPResponseHeader());
+ setXContentTypeHeader(configuration.getXContentTypeHTTPResponseHeader());
+ setCacheControlHeader(configuration.getCacheControlHTTPResponseHeader());
+ setPragmaHeader(configuration.getPragmaHTTPResponseHeader());
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilter.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilter.java b/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilter.java
index 5bff4e3..d1be8cc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilter.java
@@ -43,5 +43,8 @@ public class AmbariViewsSecurityHeaderFilter extends AbstractSecurityHeaderFilte
setStrictTransportSecurity(configuration.getViewsStrictTransportSecurityHTTPResponseHeader());
setxFrameOptionsHeader(configuration.getViewsXFrameOptionsHTTPResponseHeader());
setxXSSProtectionHeader(configuration.getViewsXXSSProtectionHTTPResponseHeader());
+ setXContentTypeHeader(configuration.getViewsXContentTypeHTTPResponseHeader());
+ setCacheControlHeader(configuration.getViewsCacheControlHTTPResponseHeader());
+ setPragmaHeader(configuration.getViewsPragmaHTTPResponseHeader());
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/ambari-server/src/test/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilterTest.java
index 7be70a3..d812ee6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/AbstractSecurityHeaderFilterTest.java
@@ -95,7 +95,13 @@ public abstract class AbstractSecurityHeaderFilterTest extends EasyMockSupport {
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER, defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER));
expectLastCall().once();
-
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER, defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER));
+ expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER, defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER));
+ expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.PRAGMA_HEADER, defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.PRAGMA_HEADER));
+ expectLastCall().once();
+
FilterChain filterChain = createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest, servletResponse);
expectLastCall().once();
@@ -141,6 +147,12 @@ public abstract class AbstractSecurityHeaderFilterTest extends EasyMockSupport {
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER, defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER));
expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER, defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER));
+ expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER, defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER));
+ expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.PRAGMA_HEADER, defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.PRAGMA_HEADER));
+ expectLastCall().once();
FilterChain filterChain = createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest, servletResponse);
@@ -171,6 +183,9 @@ public abstract class AbstractSecurityHeaderFilterTest extends EasyMockSupport {
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER), "custom1");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER), "custom2");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER), "custom3");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER), "custom4");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER), "custom5");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.PRAGMA_HEADER), "custom6");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
@@ -187,6 +202,12 @@ public abstract class AbstractSecurityHeaderFilterTest extends EasyMockSupport {
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER, "custom3");
expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER, "custom4");
+ expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER, "custom5");
+ expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.PRAGMA_HEADER, "custom6");
+ expectLastCall().once();
FilterChain filterChain = createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest, servletResponse);
@@ -218,6 +239,9 @@ public abstract class AbstractSecurityHeaderFilterTest extends EasyMockSupport {
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER), "custom1");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER), "custom2");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER), "custom3");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER), "custom4");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER), "custom5");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.PRAGMA_HEADER), "custom6");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
@@ -236,6 +260,12 @@ public abstract class AbstractSecurityHeaderFilterTest extends EasyMockSupport {
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER, "custom3");
expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER, "custom4");
+ expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER, "custom5");
+ expectLastCall().once();
+ servletResponse.setHeader(AbstractSecurityHeaderFilter.PRAGMA_HEADER, "custom6");
+ expectLastCall().once();
FilterChain filterChain = createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest, servletResponse);
@@ -266,6 +296,9 @@ public abstract class AbstractSecurityHeaderFilterTest extends EasyMockSupport {
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER), "");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER), "");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER), "");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER), "");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER), "");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.PRAGMA_HEADER), "");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
@@ -309,6 +342,9 @@ public abstract class AbstractSecurityHeaderFilterTest extends EasyMockSupport {
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER), "");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER), "");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER), "");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER), "");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER), "");
+ properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.PRAGMA_HEADER), "");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilterTest.java
index 6537130..7fa2386 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariServerSecurityHeaderFilterTest.java
@@ -40,12 +40,19 @@ public class AmbariServerSecurityHeaderFilterTest extends AbstractSecurityHeader
map.put(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER, Configuration.HTTP_STRICT_TRANSPORT_HEADER_VALUE.getKey());
map.put(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER, Configuration.HTTP_X_FRAME_OPTIONS_HEADER_VALUE.getKey());
map.put(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER, Configuration.HTTP_X_XSS_PROTECTION_HEADER_VALUE.getKey());
+ map.put(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER, Configuration.HTTP_X_CONTENT_TYPE_HEADER_VALUE.getKey());
+ map.put(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER, Configuration.HTTP_CACHE_CONTROL_HEADER_VALUE.getKey());
+ map.put(AbstractSecurityHeaderFilter.PRAGMA_HEADER, Configuration.HTTP_PRAGMA_HEADER_VALUE.getKey());
+
PROPERTY_NAME_MAP = Collections.unmodifiableMap(map);
map = new HashMap<String, String>();
map.put(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER, Configuration.HTTP_STRICT_TRANSPORT_HEADER_VALUE.getDefaultValue());
map.put(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER, Configuration.HTTP_X_FRAME_OPTIONS_HEADER_VALUE.getDefaultValue());
map.put(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER, Configuration.HTTP_X_XSS_PROTECTION_HEADER_VALUE.getDefaultValue());
+ map.put(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER, Configuration.HTTP_X_CONTENT_TYPE_HEADER_VALUE.getDefaultValue());
+ map.put(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER, Configuration.HTTP_CACHE_CONTROL_HEADER_VALUE.getDefaultValue());
+ map.put(AbstractSecurityHeaderFilter.PRAGMA_HEADER, Configuration.HTTP_PRAGMA_HEADER_VALUE.getDefaultValue());
DEFAULT_PROPERTY_VALUE_MAP = Collections.unmodifiableMap(map);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/34c5686c/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilterTest.java
index c9d7974..d699ae0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/AmbariViewsSecurityHeaderFilterTest.java
@@ -41,12 +41,18 @@ public class AmbariViewsSecurityHeaderFilterTest extends AbstractSecurityHeaderF
map.put(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER, Configuration.VIEWS_HTTP_STRICT_TRANSPORT_HEADER_VALUE.getKey());
map.put(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER, Configuration.VIEWS_HTTP_X_FRAME_OPTIONS_HEADER_VALUE.getKey());
map.put(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER, Configuration.VIEWS_HTTP_X_XSS_PROTECTION_HEADER_VALUE.getKey());
+ map.put(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER, Configuration.VIEWS_HTTP_X_CONTENT_TYPE_HEADER_VALUE.getKey());
+ map.put(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER, Configuration.VIEWS_HTTP_CACHE_CONTROL_HEADER_VALUE.getKey());
+ map.put(AbstractSecurityHeaderFilter.PRAGMA_HEADER, Configuration.VIEWS_HTTP_PRAGMA_HEADER_VALUE.getKey());
PROPERTY_NAME_MAP = Collections.unmodifiableMap(map);
map = new HashMap<String, String>();
map.put(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER, Configuration.VIEWS_HTTP_STRICT_TRANSPORT_HEADER_VALUE.getDefaultValue());
map.put(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER, Configuration.VIEWS_HTTP_X_FRAME_OPTIONS_HEADER_VALUE.getDefaultValue());
map.put(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER, Configuration.VIEWS_HTTP_X_XSS_PROTECTION_HEADER_VALUE.getDefaultValue());
+ map.put(AbstractSecurityHeaderFilter.X_CONTENT_TYPE_HEADER, Configuration.VIEWS_HTTP_X_CONTENT_TYPE_HEADER_VALUE.getDefaultValue());
+ map.put(AbstractSecurityHeaderFilter.CACHE_CONTROL_HEADER, Configuration.VIEWS_HTTP_CACHE_CONTROL_HEADER_VALUE.getDefaultValue());
+ map.put(AbstractSecurityHeaderFilter.PRAGMA_HEADER, Configuration.VIEWS_HTTP_PRAGMA_HEADER_VALUE.getDefaultValue());
DEFAULT_PROPERTY_VALUE_MAP = Collections.unmodifiableMap(map);
}
[06/20] ambari git commit: AMBARI-18554. Improve package handling in Microsoft R Server Mpack (Balázs Bence Sári via magyari_sandor)
Posted by nc...@apache.org.
AMBARI-18554. Improve package handling in Microsoft R Server Mpack (Bal�zs Bence S�ri via magyari_sandor)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0d7689d8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0d7689d8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0d7689d8
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 0d7689d844c1099facc6f6c6c10ba19f786de28a
Parents: da7b2ae
Author: Bal�zs Bence S�ri <bs...@hortonworks.com>
Authored: Mon Oct 10 17:49:51 2016 +0200
Committer: Sandor Magyari <sm...@hortonworks.com>
Committed: Mon Oct 10 17:49:51 2016 +0200
----------------------------------------------------------------------
.../8.0.5/package/scripts/microsoft_r.py | 11 +----------
.../MICROSOFT_R/8.0.5/metainfo.xml | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0d7689d8/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R/8.0.5/package/scripts/microsoft_r.py
----------------------------------------------------------------------
diff --git a/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R/8.0.5/package/scripts/microsoft_r.py b/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R/8.0.5/package/scripts/microsoft_r.py
index 382bd0f..f6eb33e 100644
--- a/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R/8.0.5/package/scripts/microsoft_r.py
+++ b/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R/8.0.5/package/scripts/microsoft_r.py
@@ -22,22 +22,13 @@ from resource_management.core.logger import Logger
from resource_management.core.resources import Package
-rpms = ['microsoft-r-server-mro-8.0',
- 'microsoft-r-server-intel-mkl-8.0',
- 'microsoft-r-server-packages-8.0',
- 'microsoft-r-server-hadoop-8.0']
-
class MicrosoftR(Script):
def install(self, env):
Logger.info('Installing R Server Client...')
tmp_dir = Script.tmp_dir
Logger.debug('Using temp dir: {0}'.format(tmp_dir))
-
- for rpm in rpms:
- Logger.info('Installing {0}'.format(rpm))
- Package(rpm)
-
+ self.install_packages(env)
Logger.info('Installed R Server')
def configure(self, env):
http://git-wip-us.apache.org/repos/asf/ambari/blob/0d7689d8/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/metainfo.xml
----------------------------------------------------------------------
diff --git a/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/metainfo.xml b/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/metainfo.xml
index 31d5225..9470d22 100644
--- a/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/metainfo.xml
+++ b/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/metainfo.xml
@@ -23,6 +23,25 @@
<name>MICROSOFT_R</name>
<extends>common-services/MICROSOFT_R/8.0.5</extends>
<version>8.0.5.0</version>
+ <osSpecifics>
+ <osSpecific>
+ <osFamily>redhat6,redhat7,suse11</osFamily>
+ <packages>
+ <package>
+ <name>microsoft-r-server-mro-8.0</name>
+ </package>
+ <package>
+ <name>microsoft-r-server-intel-mkl-8.0</name>
+ </package>
+ <package>
+ <name>microsoft-r-server-packages-8.0</name>
+ </package>
+ <package>
+ <name>microsoft-r-server-hadoop-8.0</name>
+ </package>
+ </packages>
+ </osSpecific>
+ </osSpecifics>
</service>
</services>
</metainfo>
[08/20] ambari git commit: AMBARI-18559 At "Add Service Wizard",
when the installation is going on, if I click the close (X) on the wizard,
the service will only get INSTALLED not STARTED. (Vivek Ratnavel Subramanian
via zhewang)
Posted by nc...@apache.org.
AMBARI-18559 At "Add Service Wizard", when the installation is going on, if I click the close (X) on the wizard, the service will only get INSTALLED not STARTED. (Vivek Ratnavel Subramanian via zhewang)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6587fda4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6587fda4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6587fda4
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 6587fda470bcf063027e55b315292018dc1e64b4
Parents: 8f51c93
Author: Zhe (Joe) Wang <zh...@apache.org>
Authored: Mon Oct 10 16:17:56 2016 -0700
Committer: Zhe (Joe) Wang <zh...@apache.org>
Committed: Mon Oct 10 16:17:56 2016 -0700
----------------------------------------------------------------------
ambari-web/app/messages.js | 1 +
ambari-web/app/routes/add_service_routes.js | 24 ++++++++++++++++++++++++
2 files changed, 25 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6587fda4/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 5eafad2..7150081 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -2101,6 +2101,7 @@ Em.I18n.translations = {
'services.service.widgets.list-widget.nothingSelected': 'Nothing selected',
'services.add.header':'Add Service Wizard',
+ 'services.add.warning': 'Closing this dialog will continue to install the selected service(s) in the background, but the installed services need to be started manually. Are you sure you want to quit?',
'services.reassign.header':'Move Master Wizard',
'services.service.add':'Add Service',
'services.service.startAll':'Start All',
http://git-wip-us.apache.org/repos/asf/ambari/blob/6587fda4/ambari-web/app/routes/add_service_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/add_service_routes.js b/ambari-web/app/routes/add_service_routes.js
index 30c8e07..692d186 100644
--- a/ambari-web/app/routes/add_service_routes.js
+++ b/ambari-web/app/routes/add_service_routes.js
@@ -46,6 +46,16 @@ module.exports = App.WizardRoute.extend({
App.router.transitionTo('main.services.index');
},
onClose: function () {
+ var controller = router.get('addServiceController');
+ var currentStep = controller.get('currentStep');
+ if(currentStep == '7') {
+ // Show a warning popup
+ this.showWarningPopup();
+ } else {
+ this.afterWarning();
+ }
+ },
+ afterWarning: function () {
this.set('showCloseButton', false); // prevent user to click "Close" many times
App.router.get('updateController').set('isWorking', true);
App.router.get('updateController').updateServices(function () {
@@ -54,6 +64,20 @@ module.exports = App.WizardRoute.extend({
var exitPath = addServiceController.getDBProperty('onClosePath') || 'main.services.index';
addServiceController.resetOnClose(addServiceController, exitPath);
},
+ showWarningPopup: function() {
+ var mainPopupContext = this;
+ App.ModalPopup.show({
+ encodeBody: false,
+ header: Em.I18n.t('common.warning'),
+ primaryClass: 'btn-warning',
+ secondary: Em.I18n.t('form.cancel'),
+ body: Em.I18n.t('services.add.warning'),
+ onPrimary: function () {
+ this.hide();
+ mainPopupContext.afterWarning();
+ }
+ });
+ },
didInsertElement: function () {
this._super();
this.fitHeight();
[05/20] ambari git commit: AMBARI-18562 Cannot update repository on
the UI. (atkach)
Posted by nc...@apache.org.
AMBARI-18562 Cannot update repository on the UI. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/da7b2ae1
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/da7b2ae1
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/da7b2ae1
Branch: refs/heads/branch-dev-patch-upgrade
Commit: da7b2ae1f72dc3e264e2ad0919fe6204de9d9b97
Parents: 24161ed
Author: Andrii Tkach <at...@apache.org>
Authored: Mon Oct 10 16:44:35 2016 +0300
Committer: Andrii Tkach <at...@apache.org>
Committed: Mon Oct 10 18:42:54 2016 +0300
----------------------------------------------------------------------
.../main/admin/stack_and_upgrade_controller.js | 56 ++++++++++++--------
.../admin/stack_and_upgrade_controller_test.js | 45 +++++++++++-----
2 files changed, 66 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/da7b2ae1/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index 56a7a61..d00a652 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -1484,38 +1484,48 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
if (os.get('isSelected')) {
os.get('repositories').forEach(function (repo) {
totalCalls++;
- App.ajax.send({
- name: 'admin.stack_versions.validate.repo',
- sender: this,
- data: {
- repo: repo,
- repoId: repo.get('repoId'),
- baseUrl: repo.get('baseUrl'),
- osType: os.get('osType'),
- stackName: App.get('currentStackName'),
- stackVersion: stackVersionNumber
- }
+ this.validationCall(repo, os, stackVersionNumber)
+ .success(function () {
+ totalCalls--;
+ if (totalCalls === 0) deferred.resolve(invalidUrls);
})
- .success(function () {
- totalCalls--;
- if (totalCalls === 0) deferred.resolve(invalidUrls);
- })
- .error(function () {
- repo.set('hasError', true);
- invalidUrls.push(repo);
- totalCalls--;
- if (totalCalls === 0) deferred.resolve(invalidUrls);
- });
- });
+ .error(function () {
+ repo.set('hasError', true);
+ invalidUrls.push(repo);
+ totalCalls--;
+ if (totalCalls === 0) deferred.resolve(invalidUrls);
+ });
+ }, this);
} else {
return deferred.resolve(invalidUrls);
}
- });
+ }, this);
}
return deferred.promise();
},
/**
+ *
+ * @param {Em.Object} repo
+ * @param {Em.Object} os
+ * @param {string} stackVersionNumber
+ */
+ validationCall: function(repo, os, stackVersionNumber) {
+ return App.ajax.send({
+ name: 'admin.stack_versions.validate.repo',
+ sender: this,
+ data: {
+ repo: repo,
+ repoId: repo.get('repoId'),
+ baseUrl: repo.get('baseUrl'),
+ osType: os.get('osType'),
+ stackName: App.get('currentStackName'),
+ stackVersion: stackVersionNumber
+ }
+ })
+ },
+
+ /**
* success callback for <code>installRepoVersion()<code>
* saves request id to the db
* @param data
http://git-wip-us.apache.org/repos/asf/ambari/blob/da7b2ae1/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
index 12d0da3..be4a3b0 100644
--- a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
@@ -1404,24 +1404,45 @@ describe('App.MainAdminStackAndUpgradeController', function() {
describe("#validateRepoVersions()", function () {
- it("skip validation", function () {
+ beforeEach(function() {
+ sinon.stub(controller, 'validationCall').returns({
+ success: function() {
+ return {error: Em.K}
+ }
+ });
+ sinon.stub(controller, 'getStackVersionNumber').returns('v1')
+ });
+
+ afterEach(function() {
+ controller.validationCall.restore();
+ controller.getStackVersionNumber.restore();
+ });
+
+
+ it("validationCall should not be called", function () {
controller.validateRepoVersions(Em.Object.create({repoVersionId: 1}), true);
- var args = testHelpers.findAjaxRequest('name', 'admin.stack_versions.validate.repo');
- expect(args).to.not.exists;
+ expect(controller.validationCall.called).to.be.false;
});
- it("do validation", function () {
+ it("validationCall should be called", function () {
+ var os = Em.Object.create({
+ isSelected: true,
+ repositories: [
+ Em.Object.create()
+ ]
+ });
var repo = Em.Object.create({
repoVersionId: 1,
- operatingSystems: [
- Em.Object.create({
- isSelected: true,
- repositories: [
- Em.Object.create()
- ]
- })
- ]
+ operatingSystems: [ os ]
});
controller.validateRepoVersions(repo, false);
+ expect(controller.validationCall.calledOnce).to.be.true;
+ });
+ });
+
+ describe("#validationCall()", function () {
+
+ it("App.ajax.send should be called", function() {
+ controller.validationCall(Em.Object.create(), Em.Object.create(), 'v1');
var args = testHelpers.findAjaxRequest('name', 'admin.stack_versions.validate.repo');
expect(args[0]).to.exists;
});
[20/20] ambari git commit: Merge branch 'trunk' into
branch-dev-patch-upgrade
Posted by nc...@apache.org.
Merge branch 'trunk' into branch-dev-patch-upgrade
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1cc090d5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1cc090d5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1cc090d5
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 1cc090d56d2666ec4d96c90509debc65156bce8e
Parents: b31c6c2 2131466
Author: Nate Cole <nc...@hortonworks.com>
Authored: Thu Oct 13 08:43:02 2016 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Thu Oct 13 08:43:02 2016 -0400
----------------------------------------------------------------------
.../ambari_agent/apscheduler/scheduler.py | 1 +
.../ambari_agent/apscheduler/threadpool.py | 1 +
ambari-server/conf/unix/ambari.properties | 6 +
ambari-server/conf/unix/install-helper.sh | 1 +
ambari-server/conf/windows/ambari.properties | 7 +
ambari-server/pom.xml | 3 +
ambari-server/sbin/ambari-server | 4 +-
.../server/actionmanager/ActionDBAccessor.java | 13 ++
.../actionmanager/ActionDBAccessorImpl.java | 14 ++
.../server/actionmanager/ActionScheduler.java | 4 +-
.../server/configuration/Configuration.java | 158 +++++++++++++++++++
.../ambari/server/controller/AmbariServer.java | 50 ++++++
.../server/controller/KerberosHelper.java | 40 ++++-
.../server/controller/KerberosHelperImpl.java | 137 ++++++++--------
.../apache/ambari/server/orm/dao/StageDAO.java | 10 ++
.../ambari/server/orm/entities/StageEntity.java | 5 +-
.../security/AbstractSecurityHeaderFilter.java | 43 +++++
.../AmbariServerSecurityHeaderFilter.java | 3 +
.../AmbariViewsSecurityHeaderFilter.java | 3 +
.../server/serveraction/ServerAction.java | 6 +
.../AbstractPrepareKerberosServerAction.java | 38 +++--
.../ConfigureAmbariIdentitiesServerAction.java | 2 +-
.../0.1.0/package/scripts/metrics_grafana.py | 6 +-
.../0.1.0/package/scripts/params_linux.py | 6 +
.../resources/stacks/HDP/2.0.6/kerberos.json | 40 +++--
.../stacks/HDP/2.3/services/HDFS/widgets.json | 12 +-
.../stacks/HDP/2.5/upgrades/upgrade-2.5.xml | 2 +-
.../actionmanager/TestActionScheduler.java | 12 +-
...nTimelineServerStatePreservingCheckTest.java | 3 +
.../server/controller/KerberosHelperTest.java | 84 ++++++----
.../scheduler/ExecutionScheduleManagerTest.java | 90 ++++++-----
.../AbstractSecurityHeaderFilterTest.java | 38 ++++-
.../AmbariServerSecurityHeaderFilterTest.java | 7 +
.../AmbariViewsSecurityHeaderFilterTest.java | 6 +
.../server/security/SecurityFilterTest.java | 19 ++-
.../state/cluster/ClusterDeadlockTest.java | 15 +-
.../server/testing/DeadlockWarningThread.java | 13 +-
.../server/upgrade/UpgradeCatalog150Test.java | 7 +-
.../server/upgrade/UpgradeCatalog151Test.java | 3 +
.../server/upgrade/UpgradeCatalog160Test.java | 3 +
.../server/upgrade/UpgradeCatalog161Test.java | 3 +
.../server/upgrade/UpgradeCatalog170Test.java | 3 +
.../server/upgrade/UpgradeCatalog221Test.java | 42 +++--
.../AMBARI_METRICS/test_metrics_grafana.py | 5 +-
.../2.0.6/configs/default_ams_embedded.json | 9 +-
ambari-web/app/controllers/installer.js | 3 +
.../main/admin/stack_and_upgrade_controller.js | 56 ++++---
ambari-web/app/messages.js | 1 +
ambari-web/app/routes/add_service_routes.js | 24 +++
.../configs/service_configs_by_category_view.js | 12 +-
ambari-web/app/views/wizard/step1_view.js | 8 +-
.../admin/stack_and_upgrade_controller_test.js | 45 ++++--
.../8.0.5/package/scripts/microsoft_r.py | 11 +-
.../MICROSOFT_R/8.0.5/metainfo.xml | 19 +++
.../MICROSOFT_R/8.0.5/repos/repoinfo.xml | 7 +
55 files changed, 871 insertions(+), 292 deletions(-)
----------------------------------------------------------------------
[16/20] ambari git commit: AMBARI-18543. Option to enable
request/access logs in Ambari. (Amarnath reddy pappu via swagle)
Posted by nc...@apache.org.
AMBARI-18543. Option to enable request/access logs in Ambari. (Amarnath reddy pappu via swagle)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/60dc2402
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/60dc2402
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/60dc2402
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 60dc240216bf54f35dfb5d3fea823ccceee2c9a4
Parents: 5d007e2
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Wed Oct 12 11:04:54 2016 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Wed Oct 12 11:04:54 2016 -0700
----------------------------------------------------------------------
ambari-server/conf/windows/ambari.properties | 1 +
.../server/configuration/Configuration.java | 23 +++++++++
.../ambari/server/controller/AmbariServer.java | 50 ++++++++++++++++++++
3 files changed, 74 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/60dc2402/ambari-server/conf/windows/ambari.properties
----------------------------------------------------------------------
diff --git a/ambari-server/conf/windows/ambari.properties b/ambari-server/conf/windows/ambari.properties
index c1c0a99..e47319e 100644
--- a/ambari-server/conf/windows/ambari.properties
+++ b/ambari-server/conf/windows/ambari.properties
@@ -51,6 +51,7 @@ server.execution.scheduler.maxThreads=5
server.execution.scheduler.maxDbConnections=5
server.execution.scheduler.misfire.toleration.minutes=480
+
# Kerberos settings
kerberos.keytab.cache.dir = data\\cache
http://git-wip-us.apache.org/repos/asf/ambari/blob/60dc2402/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 e976f45..378db18 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
@@ -1680,6 +1680,27 @@ public class Configuration {
"server.tmp.dir", AmbariPath.getPath("/var/lib/ambari-server/tmp"));
/**
+ * Request logs path .
+ */
+ @Markdown(description = "The location on the Ambari Server where request logs can be created.")
+ public static final ConfigurationProperty<String> REQUEST_LOGPATH = new ConfigurationProperty<>(
+ "server.requestlogs.path", null);
+
+ /**
+ * The pattern of request logs .
+ */
+ @Markdown(description = "The pattern of request log file name")
+ public static final ConfigurationProperty<String> REQUEST_LOGNAMEPATTERN = new ConfigurationProperty<>(
+ "server.requestlogs.namepattern", "ambari-access-yyyy_mm_dd.log");
+
+ /**
+ * The number of days request logs can be retained.
+ */
+ @Markdown(description = "The number of days that request log would be retained.")
+ public static final ConfigurationProperty<Integer> REQUEST_LOG_RETAINDAYS = new ConfigurationProperty<>(
+ "server.requestlogs.retaindays", 15);
+
+ /**
* The time, in {@link TimeUnit#MILLISECONDS}, until an external script is killed.
*/
@Markdown(description = "The time, in milliseconds, until an external script is killed.")
@@ -2566,6 +2587,8 @@ public class Configuration {
configsMap.put(JAVA_HOME.getKey(), getProperty(JAVA_HOME));
configsMap.put(PARALLEL_STAGE_EXECUTION.getKey(), getProperty(PARALLEL_STAGE_EXECUTION));
configsMap.put(SERVER_TMP_DIR.getKey(), getProperty(SERVER_TMP_DIR));
+ configsMap.put(REQUEST_LOGPATH.getKey(), getProperty(REQUEST_LOGPATH));
+ configsMap.put(REQUEST_LOG_RETAINDAYS.getKey(), getProperty(REQUEST_LOG_RETAINDAYS));
configsMap.put(EXTERNAL_SCRIPT_TIMEOUT.getKey(), getProperty(EXTERNAL_SCRIPT_TIMEOUT));
configsMap.put(SHARED_RESOURCES_DIR.getKey(), getProperty(SHARED_RESOURCES_DIR));
configsMap.put(KDC_PORT.getKey(), getProperty(KDC_PORT));
http://git-wip-us.apache.org/repos/asf/ambari/blob/60dc2402/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 5e498f0..c05840e 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
@@ -124,12 +124,17 @@ import org.apache.ambari.server.view.AmbariViewsMDCLoggingFilter;
import org.apache.ambari.server.view.ViewDirectoryWatcher;
import org.apache.ambari.server.view.ViewRegistry;
import org.apache.ambari.server.view.ViewThrottleFilter;
+import org.apache.commons.lang.StringUtils;
import org.apache.velocity.app.Velocity;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.SessionIdManager;
import org.eclipse.jetty.server.SessionManager;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
+import org.eclipse.jetty.server.NCSARequestLog;
+import org.eclipse.jetty.server.handler.HandlerCollection;
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.handler.RequestLogHandler;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.ServletContextHandler;
@@ -497,6 +502,9 @@ public class AmbariServer {
viewRegistry.readViewArchives();
viewDirectoryWatcher.start();
+ //Check and load requestlog handler.
+ loadRequestlogHandler(handlerList, serverForAgent, configsMap);
+
handlerList.addHandler(root);
server.setHandler(handlerList);
@@ -933,6 +941,48 @@ public class AmbariServer {
LOG.info(Joiner.on("\n" + linePrefix).join(rawMessages));
}
+ /**
+ * For loading requestlog handlers
+ */
+ private static void loadRequestlogHandler(AmbariHandlerList handlerList, Server serverForAgent , Map<String, String> configsMap) {
+
+ //Example: /var/log/ambari-server/ambari-server-access-yyyy_mm_dd.log
+ String requestlogpath = configsMap.get(Configuration.REQUEST_LOGPATH.getKey());
+
+ //Request logs can be disable by removing the property from ambari.properties file
+ if(!StringUtils.isBlank(requestlogpath)) {
+ String logfullpath = requestlogpath + "//" + Configuration.REQUEST_LOGNAMEPATTERN.getDefaultValue();
+ LOG.info("********* Initializing request access log: " + logfullpath);
+ RequestLogHandler requestLogHandler = new RequestLogHandler();
+
+ NCSARequestLog requestLog = new NCSARequestLog(requestlogpath);
+
+ String retaindays = configsMap.get(Configuration.REQUEST_LOG_RETAINDAYS.getKey());
+ int retaindaysInt = Configuration.REQUEST_LOG_RETAINDAYS.getDefaultValue();
+ if(retaindays != null && !StringUtils.isBlank(retaindays)) {
+ retaindaysInt = Integer.parseInt(retaindays.trim());
+ }
+
+ requestLog.setRetainDays(retaindaysInt);
+ requestLog.setAppend(true);
+ requestLog.setLogLatency(true);
+ requestLog.setExtended(true);
+ requestLogHandler.setRequestLog(requestLog);
+ //Add requestloghandler to existing handlerlist.
+ handlerList.addHandler(requestLogHandler);
+
+ //For agent communication.
+ HandlerCollection handlers = new HandlerCollection();
+ Handler[] handler = serverForAgent.getHandlers();
+ if(handler != null ) {
+ handlers.setHandlers((Handler[])handler);
+ handlers.addHandler(requestLogHandler);
+ serverForAgent.setHandler(handlers);
+ }
+
+ }
+ }
+
public static void main(String[] args) throws Exception {
logStartup();
Injector injector = Guice.createInjector(new ControllerModule(), new AuditLoggerModule());
[15/20] ambari git commit: AMBARI-18579. Grafana fails to start after
deployment (aonishuk)
Posted by nc...@apache.org.
AMBARI-18579. Grafana fails to start after deployment (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5d007e24
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5d007e24
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5d007e24
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 5d007e248e24e02d4d8c5c818a1125830370936c
Parents: 82afd3a
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Wed Oct 12 20:12:27 2016 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Wed Oct 12 20:13:13 2016 +0300
----------------------------------------------------------------------
.../AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py | 6 ++++--
.../AMBARI_METRICS/0.1.0/package/scripts/params_linux.py | 6 ++++++
.../stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py | 5 +++--
.../python/stacks/2.0.6/configs/default_ams_embedded.json | 9 +++++++--
4 files changed, 20 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/5d007e24/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py
index 542663f..606f119 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py
@@ -43,7 +43,8 @@ class AmsGrafana(Script):
start_cmd = format("{ams_grafana_script} start")
Execute(start_cmd,
- user=params.ams_user
+ user=params.ams_user,
+ not_if = params.grafana_process_exists_cmd,
)
# Create datasource
create_ams_datasource()
@@ -55,7 +56,8 @@ class AmsGrafana(Script):
env.set_params(params)
self.configure(env, action = 'stop')
Execute((format("{ams_grafana_script}"), 'stop'),
- sudo=True
+ sudo=True,
+ only_if = params.grafana_process_exists_cmd,
)
def status(self, env):
http://git-wip-us.apache.org/repos/asf/ambari/blob/5d007e24/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_linux.py
index 58c7c1d..da399f7 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_linux.py
@@ -22,6 +22,7 @@ from resource_management.libraries.script.script import Script
from resource_management.libraries.functions import conf_select
from resource_management.libraries.functions.default import default
from resource_management.libraries.functions.format import format
+from resource_management.core.shell import as_user
from ambari_commons import OSCheck
from ambari_commons.constants import AMBARI_SUDO_BINARY
from resource_management.libraries.functions.expect import expect
@@ -34,6 +35,8 @@ ams_user = config['configurations']['ams-env']['ambari_metrics_user']
#RPM versioning support
rpm_version = default("/configurations/hadoop-env/rpm_version", None)
+ams_grafana_pid_dir = config['configurations']['ams-grafana-env']['metrics_grafana_pid_dir']
+
#hadoop params
if rpm_version is not None:
#RPM versioning support
@@ -56,3 +59,6 @@ dfs_type = default("/commandParams/dfs_type", "")
hbase_regionserver_shutdown_timeout = expect('/configurations/ams-hbase-env/hbase_regionserver_shutdown_timeout', int,
30)
+
+grafana_pid_file = format("{ams_grafana_pid_dir}/grafana-server.pid")
+grafana_process_exists_cmd = as_user(format("test -f {grafana_pid_file} && ps -p `cat {grafana_pid_file}`"), ams_user)
http://git-wip-us.apache.org/repos/asf/ambari/blob/5d007e24/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py b/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py
index 2e24d82..9ac14c4 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py
@@ -70,8 +70,9 @@ class TestMetricsGrafana(RMFTestCase):
self.assertResourceCalled('Execute', 'ambari-sudo.sh rm -rf /some_tmp_dir',
)
self.assertResourceCalled('Execute', '/usr/sbin/ambari-metrics-grafana start',
- user = 'ams'
- )
+ not_if = "ambari-sudo.sh su ams -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]test -f /var/run/ambari-metrics-grafana/grafana-server.pid && ps -p `cat /var/run/ambari-metrics-grafana/grafana-server.pid`'",
+ user = 'ams',
+ )
create_ams_datasource_mock.assertCalled()
create_ams_dashboards_mock.assertCalled()
self.assertNoMoreResources()
http://git-wip-us.apache.org/repos/asf/ambari/blob/5d007e24/ambari-server/src/test/python/stacks/2.0.6/configs/default_ams_embedded.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/configs/default_ams_embedded.json b/ambari-server/src/test/python/stacks/2.0.6/configs/default_ams_embedded.json
index 13dce2b..71423c8 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/configs/default_ams_embedded.json
+++ b/ambari-server/src/test/python/stacks/2.0.6/configs/default_ams_embedded.json
@@ -42,8 +42,13 @@
"taskId": 152,
"public_hostname": "c6401.ambari.apache.org",
"configurations": {
- "ams-grafana-env" : {
- "metrics_grafana_pid_dir" : "/var/run/ambari-metrics-monitor"
+ "ams-grafana-env": {
+ "metrics_grafana_username": "admin",
+ "metrics_grafana_pid_dir": "/var/run/ambari-metrics-grafana",
+ "metrics_grafana_data_dir": "/var/lib/ambari-metrics-grafana",
+ "content": "\n# Set environment variables here.\n\n# AMS UI Server Home Dir\nexport AMS_GRAFANA_HOME_DIR={{ams_grafana_home_dir}}\n\n# AMS UI Server Data Dir\nexport AMS_GRAFANA_DATA_DIR={{ams_grafana_data_dir}}\n\n# AMS UI Server Log Dir\nexport AMS_GRAFANA_LOG_DIR={{ams_grafana_log_dir}}\n\n# AMS UI Server PID Dir\nexport AMS_GRAFANA_PID_DIR={{ams_grafana_pid_dir}}",
+ "metrics_grafana_password": "admin",
+ "metrics_grafana_log_dir": "/var/log/ambari-metrics-grafana"
},
"mapred-site": {
"mapreduce.jobhistory.address": "c6402.ambari.apache.org:10020",
[07/20] ambari git commit: AMBARI-18534 Advanced
storm-atlas-application.properties panel is not opened by default upon
filtering (Vivek Ratnavel Subramanian via zhewang)
Posted by nc...@apache.org.
AMBARI-18534 Advanced storm-atlas-application.properties panel is not opened by default upon filtering (Vivek Ratnavel Subramanian via zhewang)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8f51c932
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8f51c932
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8f51c932
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 8f51c9324a407fa8ce8e92e2e77ee0a250c5cbc9
Parents: 0d7689d
Author: Zhe (Joe) Wang <zh...@apache.org>
Authored: Mon Oct 10 16:13:09 2016 -0700
Committer: Zhe (Joe) Wang <zh...@apache.org>
Committed: Mon Oct 10 16:13:09 2016 -0700
----------------------------------------------------------------------
.../common/configs/service_configs_by_category_view.js | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/8f51c932/ambari-web/app/views/common/configs/service_configs_by_category_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/service_configs_by_category_view.js b/ambari-web/app/views/common/configs/service_configs_by_category_view.js
index 3eebfea..d9a4c5c 100644
--- a/ambari-web/app/views/common/configs/service_configs_by_category_view.js
+++ b/ambari-web/app/views/common/configs/service_configs_by_category_view.js
@@ -305,7 +305,7 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
*/
filteredCategoryConfigs: function () {
Em.run.once(this, 'collapseCategory');
- }.observes('categoryConfigs.@each.isHiddenByFilter'),
+ }.observes('serviceConfigs.@each.isHiddenByFilter'),
collapseCategory: function () {
if (this.get('state') === 'destroyed') return;
@@ -330,7 +330,15 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
} else if (isInitialRendering && !filteredResult.length) {
this.set('category.isCollapsed', true);
}
- var categoryBlock = $('.' + this.get('category.name').split(' ').join('.') + '>.accordion-body');
+ var classNames = this.get('category.name').split(' ');
+ // Escape the dots in category names
+ classNames = classNames.map(function(className) {
+ if(className.indexOf(".")) {
+ className = className.split(".").join("\\.");
+ }
+ return className;
+ });
+ var categoryBlock = $('.' + classNames.join('.') + '>.accordion-body');
this.get('category.isCollapsed') ? categoryBlock.hide() : categoryBlock.show();
},
[04/20] ambari git commit: AMBARI-18538. Microsoft R Server management pack should support for Redhat 7 (Balázs Bence Sári via magyari_sandor)
Posted by nc...@apache.org.
AMBARI-18538. Microsoft R Server management pack should support for Redhat 7 (Bal�zs Bence S�ri via magyari_sandor)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/24161edf
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/24161edf
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/24161edf
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 24161edf9f8a81592b120640bfa75a6ef3b1e0a1
Parents: 0a61db5
Author: Bal�zs Bence S�ri <bs...@hortonworks.com>
Authored: Mon Oct 10 17:37:09 2016 +0200
Committer: Sandor Magyari <sm...@hortonworks.com>
Committed: Mon Oct 10 17:37:09 2016 +0200
----------------------------------------------------------------------
.../custom-services/MICROSOFT_R/8.0.5/repos/repoinfo.xml | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/24161edf/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/repos/repoinfo.xml
----------------------------------------------------------------------
diff --git a/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/repos/repoinfo.xml b/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/repos/repoinfo.xml
index deb58de..fac533d 100644
--- a/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/repos/repoinfo.xml
+++ b/contrib/management-packs/microsoft-r_mpack/src/main/resources/custom-services/MICROSOFT_R/8.0.5/repos/repoinfo.xml
@@ -23,6 +23,13 @@
<reponame>MSFT_R</reponame>
</repo>
</os>
+ <os family="redhat7">
+ <repo>
+ <baseurl>http://PLEASE_ENTER_REPO_URL</baseurl>
+ <repoid>MSFT_R-8.0</repoid>
+ <reponame>MSFT_R</reponame>
+ </repo>
+ </os>
<os family="suse11">
<repo>
<baseurl>http://PLEASE_ENTER_REPO_URL</baseurl>
[13/20] ambari git commit: AMBARI-18571 'HDFS Space Utilization'
metric graph in HDFS service page is incorrect. (atkach)
Posted by nc...@apache.org.
AMBARI-18571 'HDFS Space Utilization' metric graph in HDFS service page is incorrect. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/95116386
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/95116386
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/95116386
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 9511638609f756cc70eaf0cca32a1cc55b40424c
Parents: d2a926e
Author: Andrii Tkach <at...@apache.org>
Authored: Tue Oct 11 20:25:07 2016 +0300
Committer: Andrii Tkach <at...@apache.org>
Committed: Wed Oct 12 12:10:55 2016 +0300
----------------------------------------------------------------------
.../resources/stacks/HDP/2.3/services/HDFS/widgets.json | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/95116386/ambari-server/src/main/resources/stacks/HDP/2.3/services/HDFS/widgets.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/services/HDFS/widgets.json b/ambari-server/src/main/resources/stacks/HDP/2.3/services/HDFS/widgets.json
index eeb9ff8..4a645b0 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/HDFS/widgets.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/HDFS/widgets.json
@@ -378,8 +378,8 @@
"is_visible": true,
"metrics": [
{
- "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.DfsUsed",
- "metric_path": "metrics/dfs/datanode/DfsUsed",
+ "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining",
+ "metric_path": "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/Remaining",
"service_name": "HDFS",
"component_name": "DATANODE"
},
@@ -393,7 +393,7 @@
"values": [
{
"name": "HDFS Space Utilization",
- "value": "${FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.DfsUsed/FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity}"
+ "value": "${(FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity - FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining)/FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity}"
}
],
"properties": {
@@ -620,8 +620,8 @@
"is_visible": false,
"metrics": [
{
- "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.DfsUsed",
- "metric_path": "metrics/dfs/datanode/DfsUsed",
+ "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining",
+ "metric_path": "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/Remaining",
"service_name": "HDFS",
"component_name": "DATANODE"
},
@@ -635,7 +635,7 @@
"values": [
{
"name": "HDFS Space Utilization",
- "value": "${(FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.DfsUsed/FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity) * 100}"
+ "value": "${((FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity - FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining)/FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity) * 100}"
}
],
"properties": {
[19/20] ambari git commit: AMBARI-18576. When multiple requests are
running,
aborting any will incorrectly abort all requests instead the desired one
(alejandro)
Posted by nc...@apache.org.
AMBARI-18576. When multiple requests are running, aborting any will incorrectly abort all requests instead the desired one (alejandro)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/21314666
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/21314666
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/21314666
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 2131466610b41af761fd1a105312c6553685c5ac
Parents: 2709304
Author: Alejandro Fernandez <af...@hortonworks.com>
Authored: Wed Oct 12 15:59:29 2016 -0700
Committer: Alejandro Fernandez <af...@hortonworks.com>
Committed: Wed Oct 12 15:59:32 2016 -0700
----------------------------------------------------------------------
.../ambari/server/actionmanager/ActionDBAccessor.java | 13 +++++++++++++
.../server/actionmanager/ActionDBAccessorImpl.java | 14 ++++++++++++++
.../ambari/server/actionmanager/ActionScheduler.java | 4 ++--
.../org/apache/ambari/server/orm/dao/StageDAO.java | 10 ++++++++++
.../ambari/server/orm/entities/StageEntity.java | 5 ++++-
.../server/actionmanager/TestActionScheduler.java | 12 ++++++------
6 files changed, 49 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/21314666/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java
index 0e78cbc..8aef70d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java
@@ -86,6 +86,19 @@ public interface ActionDBAccessor {
public List<Stage> getStagesInProgress();
/**
+ * Returns all the pending stages in a request, including queued and not-queued. A stage is
+ * considered in progress if it is in progress for any host.
+ * <p/>
+ * The results will be sorted by stage ID making this call
+ * expensive in some scenarios. Use {@link #getCommandsInProgressCount()} in
+ * order to determine if there are stages that are in progress before getting
+ * the stages from this method.
+ *
+ * @see HostRoleStatus#IN_PROGRESS_STATUSES
+ */
+ public List<Stage> getStagesInProgressForRequest(Long requestId);
+
+ /**
* Gets the number of commands in progress.
*
* @return the number of commands in progress.
http://git-wip-us.apache.org/repos/asf/ambari/blob/21314666/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
index c31ca7e..2c87583 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
@@ -270,10 +270,24 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
*/
@Override
@Experimental(feature = ExperimentalFeature.PARALLEL_PROCESSING)
+ public List<Stage> getStagesInProgressForRequest(Long requestId) {
+ List<StageEntity> stageEntities = stageDAO.findByRequestIdAndCommandStatuses(requestId, HostRoleStatus.IN_PROGRESS_STATUSES);
+ return getStagesForEntities(stageEntities);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ @Experimental(feature = ExperimentalFeature.PARALLEL_PROCESSING)
public List<Stage> getStagesInProgress() {
List<StageEntity> stageEntities = stageDAO.findByCommandStatuses(
HostRoleStatus.IN_PROGRESS_STATUSES);
+ return getStagesForEntities(stageEntities);
+ }
+ @Experimental(feature = ExperimentalFeature.PARALLEL_PROCESSING)
+ private List<Stage> getStagesForEntities(List<StageEntity> stageEntities) {
// experimentally enable parallel stage processing
@Experimental(feature = ExperimentalFeature.PARALLEL_PROCESSING)
boolean useConcurrentStageProcessing = configuration.isExperimentalConcurrentStageProcessingEnabled();
http://git-wip-us.apache.org/repos/asf/ambari/blob/21314666/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
index e380ae4..8cbfb1e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
@@ -1139,10 +1139,10 @@ class ActionScheduler implements Runnable {
cancelHostRoleCommands(tasksToDequeue, reason);
}
- // abort any stages in progress; don't execute this for all stages since
+ // abort any stages in progress that belong to this request; don't execute this for all stages since
// that could lead to OOM errors on large requests, like those for
// upgrades
- List<Stage> stagesInProgress = db.getStagesInProgress();
+ List<Stage> stagesInProgress = db.getStagesInProgressForRequest(requestId);
for (Stage stageInProgress : stagesInProgress) {
abortOperationsForStage(stageInProgress);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/21314666/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/StageDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/StageDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/StageDAO.java
index 8ef4a1b..d2f899f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/StageDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/StageDAO.java
@@ -164,6 +164,16 @@ public class StageDAO {
}
@RequiresSession
+ public List<StageEntity> findByRequestIdAndCommandStatuses(Long requestId, Collection<HostRoleStatus> statuses) {
+ TypedQuery<StageEntity> query = entityManagerProvider.get().createNamedQuery(
+ "StageEntity.findByRequestIdAndCommandStatuses", StageEntity.class);
+
+ query.setParameter("requestId", requestId);
+ query.setParameter("statuses", statuses);
+ return daoUtils.selectList(query);
+ }
+
+ @RequiresSession
public List<StageEntity> findByCommandStatuses(
Collection<HostRoleStatus> statuses) {
TypedQuery<StageEntity> query = entityManagerProvider.get().createNamedQuery(
http://git-wip-us.apache.org/repos/asf/ambari/blob/21314666/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/StageEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/StageEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/StageEntity.java
index 7659a23..eaea913 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/StageEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/StageEntity.java
@@ -42,7 +42,10 @@ import javax.persistence.Table;
@NamedQueries({
@NamedQuery(
name = "StageEntity.findByCommandStatuses",
- query = "SELECT stage from StageEntity stage WHERE EXISTS (SELECT roleCommand.stageId from HostRoleCommandEntity roleCommand WHERE roleCommand.status IN :statuses AND roleCommand.stageId = stage.stageId AND roleCommand.requestId = stage.requestId ) ORDER by stage.requestId, stage.stageId"),
+ query = "SELECT stage from StageEntity stage WHERE stage.stageId IN (SELECT roleCommand.stageId from HostRoleCommandEntity roleCommand WHERE roleCommand.status IN :statuses AND roleCommand.stageId = stage.stageId AND roleCommand.requestId = stage.requestId ) ORDER BY stage.requestId, stage.stageId"),
+ @NamedQuery(
+ name = "StageEntity.findByRequestIdAndCommandStatuses",
+ query = "SELECT stage from StageEntity stage WHERE stage.stageId IN (SELECT roleCommand.stageId from HostRoleCommandEntity roleCommand WHERE roleCommand.requestId = :requestId AND roleCommand.status IN :statuses AND roleCommand.stageId = stage.stageId AND roleCommand.requestId = stage.requestId ) ORDER BY stage.stageId"),
@NamedQuery(
name = "StageEntity.findIdsByRequestId",
query = "SELECT stage.stageId FROM StageEntity stage WHERE stage.requestId = :requestId ORDER BY stage.stageId ASC") })
http://git-wip-us.apache.org/repos/asf/ambari/blob/21314666/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
index ccb95a6..f86c02e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
@@ -2204,10 +2204,9 @@ public class TestActionScheduler {
hosts.put(hostname, sch);
when(scomp.getServiceComponentHosts()).thenReturn(hosts);
- long requestId = 1;
-
- // create 3 stages, each with a single task - the first stage will be completed and should not
+ // Create a single request with 3 stages, each with a single task - the first stage will be completed and should not
// be included when cancelling the unfinished tasks of the request
+ long requestId = 1;
final List<Stage> allStages = new ArrayList<Stage>();
final List<Stage> stagesInProgress = new ArrayList<Stage>();
final List<HostRoleCommand> tasksInProgress = new ArrayList<>();
@@ -2219,7 +2218,7 @@ public class TestActionScheduler {
Stage stageWithTask = getStageWithSingleTask(
hostname, "cluster1", Role.SECONDARY_NAMENODE, RoleCommand.START,
- Service.Type.HDFS, secondaryNamenodeCmdTaskId, 1, (int)requestId);
+ Service.Type.HDFS, secondaryNamenodeCmdTaskId, 1, (int) requestId);
// complete the first stage
stageWithTask.getOrderedHostRoleCommands().get(0).setStatus(HostRoleStatus.COMPLETED);
@@ -2227,7 +2226,7 @@ public class TestActionScheduler {
stageWithTask = getStageWithSingleTask(
hostname, "cluster1", Role.NAMENODE, RoleCommand.START,
- Service.Type.HDFS, namenodeCmdTaskId, 2, (int)requestId);
+ Service.Type.HDFS, namenodeCmdTaskId, 2, (int) requestId);
tasksInProgress.addAll(stageWithTask.getOrderedHostRoleCommands());
stagesInProgress.add(stageWithTask);
@@ -2235,7 +2234,7 @@ public class TestActionScheduler {
stageWithTask = getStageWithSingleTask(
hostname, "cluster1", Role.DATANODE, RoleCommand.START,
- Service.Type.HDFS, datanodeCmdTaskId, 3, (int)requestId);
+ Service.Type.HDFS, datanodeCmdTaskId, 3, (int) requestId);
tasksInProgress.addAll(stageWithTask.getOrderedHostRoleCommands());
stagesInProgress.add(stageWithTask);
@@ -2271,6 +2270,7 @@ public class TestActionScheduler {
when(db.getCommandsInProgressCount()).thenReturn(stagesInProgress.size());
when(db.getStagesInProgress()).thenReturn(stagesInProgress);
+ when(db.getStagesInProgressForRequest(requestId)).thenReturn(stagesInProgress);
when(db.getAllStages(anyLong())).thenReturn(allStages);
List<HostRoleCommand> requestTasks = new ArrayList<HostRoleCommand>();
[12/20] ambari git commit: AMBARI-18564. Ambari should be able to
create arbitrary Kerberos identities for itself as declared in the Kerberos
Descriptor (rlevas)
Posted by nc...@apache.org.
AMBARI-18564. Ambari should be able to create arbitrary Kerberos identities for itself as declared in the Kerberos Descriptor (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d2a926ee
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d2a926ee
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d2a926ee
Branch: refs/heads/branch-dev-patch-upgrade
Commit: d2a926ee71f8a24a8d568fc977dc8ac06dc18493
Parents: 1d54fef
Author: Robert Levas <rl...@hortonworks.com>
Authored: Wed Oct 12 05:01:14 2016 -0400
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Wed Oct 12 05:01:14 2016 -0400
----------------------------------------------------------------------
.../server/controller/KerberosHelper.java | 40 +++++-
.../server/controller/KerberosHelperImpl.java | 131 +++++++++----------
.../AbstractPrepareKerberosServerAction.java | 38 +++---
.../ConfigureAmbariIdentitiesServerAction.java | 2 +-
.../resources/stacks/HDP/2.0.6/kerberos.json | 40 ++++--
.../server/controller/KerberosHelperTest.java | 84 ++++++++----
6 files changed, 196 insertions(+), 139 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/d2a926ee/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
index 1153d01..35235db 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
@@ -65,15 +65,24 @@ public interface KerberosHelper {
* The alias to assign to the KDC administrator credential Keystore item
*/
String KDC_ADMINISTRATOR_CREDENTIAL_ALIAS = "kdc.admin.credential";
-
+ /**
+ * The hostname used to hold the place of the actual hostname of the host that the Ambari server
+ * is on.
+ */
String AMBARI_SERVER_HOST_NAME = "ambari_server";
-
- String AMBARI_IDENTITY_NAME = "ambari-server";
-
- String SPNEGO_IDENTITY_NAME = "spnego";
-
+ /**
+ * The name of the Ambari server's Kerberos identities as defined in the Kerberos descriptor
+ */
+ String AMBARI_SERVER_KERBEROS_IDENTITY_NAME = "ambari-server";
+ /**
+ * The kerberos-env property name declaring whether Ambari should manage its own required
+ * identities or not
+ */
String CREATE_AMBARI_PRINCIPAL = "create_ambari_principal";
-
+ /**
+ * The kerberos-env property name declaring whether Ambari should manage the cluster's required
+ * identities or not
+ */
String MANAGE_IDENTITIES = "manage_identities";
/**
@@ -607,6 +616,23 @@ public interface KerberosHelper {
throws AmbariException;
/**
+ * Gets the Ambari server Kerberos identities found in the Kerberos descriptor.
+ *
+ * @param kerberosDescriptor the kerberos descriptor
+ */
+ List<KerberosIdentityDescriptor> getAmbariServerIdentities(KerberosDescriptor kerberosDescriptor) throws AmbariException;
+
+ /**
+ * Determines if the Ambari identities should be created when enabling Kerberos.
+ * <p>
+ * If kerberos-env/create_ambari_principal is not set to false the identity should be calculated.
+ *
+ * @param kerberosEnvProperties the kerberos-env configuration properties
+ * @return true if the Ambari identities should be created; otherwise false
+ */
+ boolean createAmbariIdentities(Map<String, String> kerberosEnvProperties);
+
+ /**
* Gets the previously stored KDC administrator credentials.
*
* @param clusterName the name of the relevant cluster
http://git-wip-us.apache.org/repos/asf/ambari/blob/d2a926ee/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
index e15965b..fb87495 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
@@ -359,6 +359,13 @@ public class KerberosHelperImpl implements KerberosHelper {
Map<String, Set<String>> propertiesToIgnore = new HashMap<String, Set<String>>();
+ // If Ambari is managing it own identities then add AMBARI to the set of installed servcie so
+ // that its Kerberos descriptor entries will be included.
+ if(createAmbariIdentities(existingConfigurations.get("kerberos-env"))) {
+ installedServices = new HashMap<String, Set<String>>(installedServices);
+ installedServices.put("AMBARI", Collections.singleton("AMBARI_SERVER"));
+ }
+
// Create the context to use for filtering Kerberos Identities based on the state of the cluster
Map<String, Object> filterContext = new HashMap<String, Object>();
filterContext.put("configurations", configurations);
@@ -401,28 +408,6 @@ public class KerberosHelperImpl implements KerberosHelper {
}
}
- if (kerberosDetails.createAmbariPrincipal()) {
- KerberosIdentityDescriptor ambariServerIdentityDescriptor = kerberosDescriptor.getIdentity(KerberosHelper.AMBARI_IDENTITY_NAME);
- Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
- if (ambariServerIdentityDescriptor != null) {
-
- KerberosPrincipalDescriptor principalDescriptor = ambariServerIdentityDescriptor.getPrincipalDescriptor();
- if (principalDescriptor != null) {
- putConfiguration(map, principalDescriptor.getConfiguration(), principalDescriptor.getValue());
- }
-
- KerberosKeytabDescriptor keytabDescriptor = ambariServerIdentityDescriptor.getKeytabDescriptor();
- if (keytabDescriptor != null) {
- putConfiguration(map, keytabDescriptor.getConfiguration(), keytabDescriptor.getFile());
- }
-
- for (Map.Entry<String, Map<String, String>> entry : map.entrySet()) {
- String configType = entry.getKey();
- mergeConfigurations(kerberosConfigurations, configType, entry.getValue(), configurations);
- }
- }
- }
-
setAuthToLocalRules(kerberosDescriptor, kerberosDetails.getDefaultRealm(), installedServices, configurations, kerberosConfigurations);
return (applyStackAdvisorUpdates)
@@ -764,41 +749,37 @@ public class KerberosHelperImpl implements KerberosHelper {
* configuration
* @throws AmbariException
*/
- private void installAmbariIdentities(AbstractKerberosDescriptorContainer kerberosDescriptor,
+ private void installAmbariIdentities(KerberosDescriptor kerberosDescriptor,
KerberosOperationHandler kerberosOperationHandler,
Map<String, String> kerberosEnvProperties,
Map<String, Map<String, String>> configurations,
KerberosDetails kerberosDetails) throws AmbariException {
- // Install Ambari's user/service principal...
- String ambariServerHostname = StageUtils.getHostName();
- KerberosIdentityDescriptor identity;
+ // Install Ambari's identities.....
+ List<KerberosIdentityDescriptor> ambariIdentities = getAmbariServerIdentities(kerberosDescriptor);
- identity = kerberosDescriptor.getIdentity(KerberosHelper.AMBARI_IDENTITY_NAME);
- if (identity != null) {
- KerberosPrincipalDescriptor principal = identity.getPrincipalDescriptor();
- if (principal != null) {
- Keytab keytab = createIdentity(identity, principal.getType(), kerberosEnvProperties, kerberosOperationHandler, configurations, ambariServerHostname);
- installAmbariIdentity(identity, keytab, configurations, ambariServerHostname, kerberosDetails, true);
+ if (!ambariIdentities.isEmpty()) {
+ String ambariServerHostname = StageUtils.getHostName();
- try {
- KerberosChecker.checkJaasConfiguration();
- } catch (AmbariException e) {
- LOG.error("Error in Ambari JAAS configuration: " + e.getLocalizedMessage(), e);
+ for (KerberosIdentityDescriptor identity : ambariIdentities) {
+ if (identity != null) {
+ KerberosPrincipalDescriptor principal = identity.getPrincipalDescriptor();
+ if (principal != null) {
+ boolean updateJAASFile = AMBARI_SERVER_KERBEROS_IDENTITY_NAME.equals(identity.getName());
+ Keytab keytab = createIdentity(identity, principal.getType(), kerberosEnvProperties, kerberosOperationHandler, configurations, ambariServerHostname);
+ installAmbariIdentity(identity, keytab, configurations, ambariServerHostname, kerberosDetails, updateJAASFile);
+
+ if (updateJAASFile) {
+ try {
+ KerberosChecker.checkJaasConfiguration();
+ } catch (AmbariException e) {
+ LOG.error("Error in Ambari JAAS configuration: " + e.getLocalizedMessage(), e);
+ }
+ }
+ }
}
}
}
-
- // Install Ambari's SPNGEO principal...
- identity = kerberosDescriptor.getIdentity(KerberosHelper.SPNEGO_IDENTITY_NAME);
- if (identity != null) {
- KerberosPrincipalDescriptor principal = identity.getPrincipalDescriptor();
-
- if (principal != null) {
- Keytab keytab = createIdentity(identity, principal.getType(), kerberosEnvProperties, kerberosOperationHandler, configurations, ambariServerHostname);
- installAmbariIdentity(identity, keytab, configurations, ambariServerHostname, kerberosDetails, false);
- }
- }
}
/**
@@ -1351,7 +1332,14 @@ public class KerberosHelperImpl implements KerberosHelper {
serviceName, componentName, kerberosDescriptor, filterContext);
if (hostname.equals(ambariServerHostname)) {
- addAmbariServerIdentities(kerberosEnvConfig.getProperties(), kerberosDescriptor, identities);
+ // Determine if we should _calculate_ the Ambari service identities.
+ // If kerberos-env/create_ambari_principal is not set to false the identity should be calculated.
+ if(createAmbariIdentities(kerberosEnvConfig.getProperties())) {
+ List<KerberosIdentityDescriptor> ambariIdentities = getAmbariServerIdentities(kerberosDescriptor);
+ if (ambariIdentities != null) {
+ identities.addAll(ambariIdentities);
+ }
+ }
}
if (!identities.isEmpty()) {
@@ -1427,35 +1415,34 @@ public class KerberosHelperImpl implements KerberosHelper {
return activeIdentities;
}
- /**
- * Conditionally add the Ambari server Kerberos identity to the set of Kerberos Identities expected
- * to be available when Kerberos is enabled.
- * <p>
- * The Ambari server Kerberos identity should only be added if the <code>kerberos-env/create_ambari_principal</code>
- * property is not explicitly set to <code>false</code>.
- *
- * @param kerberosEnvProperties the kerberos-env properties
- * @param kerberosDescriptor the kerberos descriptor
- * @param identities the collection of identities to add to
- */
- void addAmbariServerIdentities(Map<String, String> kerberosEnvProperties, KerberosDescriptor kerberosDescriptor, List<KerberosIdentityDescriptor> identities) {
- // Determine if we should _calculate_ the Ambari service identity.
- // If kerberos-env/create_ambari_principal is not set to false the identity should be calculated.
- boolean createAmbariPrincipal = (kerberosEnvProperties == null) || !"false".equalsIgnoreCase(kerberosEnvProperties.get(CREATE_AMBARI_PRINCIPAL));
+ @Override
+ public List<KerberosIdentityDescriptor> getAmbariServerIdentities(KerberosDescriptor kerberosDescriptor) throws AmbariException {
+ List<KerberosIdentityDescriptor> ambariIdentities = new ArrayList<KerberosIdentityDescriptor>();
- // append Ambari server principal
- if (createAmbariPrincipal) {
- KerberosIdentityDescriptor ambariServerIdentity = kerberosDescriptor.getIdentity(KerberosHelper.AMBARI_IDENTITY_NAME);
- if (ambariServerIdentity != null) {
- identities.add(ambariServerIdentity);
+ KerberosServiceDescriptor ambariKerberosDescriptor = kerberosDescriptor.getService("AMBARI");
+ if (ambariKerberosDescriptor != null) {
+ List<KerberosIdentityDescriptor> serviceIdentities = ambariKerberosDescriptor.getIdentities(true, null);
+ KerberosComponentDescriptor ambariServerKerberosComponentDescriptor = ambariKerberosDescriptor.getComponent("AMBARI_SERVER");
+
+ if (serviceIdentities != null) {
+ ambariIdentities.addAll(serviceIdentities);
}
- // Add the spnego principal for the Ambari server host....
- KerberosIdentityDescriptor spnegoIdentity = kerberosDescriptor.getIdentity(KerberosHelper.SPNEGO_IDENTITY_NAME);
- if (spnegoIdentity != null) {
- identities.add(spnegoIdentity);
+ if (ambariServerKerberosComponentDescriptor != null) {
+ List<KerberosIdentityDescriptor> componentIdentities = ambariServerKerberosComponentDescriptor.getIdentities(true, null);
+
+ if (componentIdentities != null) {
+ ambariIdentities.addAll(componentIdentities);
+ }
}
}
+
+ return ambariIdentities;
+ }
+
+ @Override
+ public boolean createAmbariIdentities(Map<String, String> kerberosEnvProperties) {
+ return (kerberosEnvProperties == null) || !"false".equalsIgnoreCase(kerberosEnvProperties.get(CREATE_AMBARI_PRINCIPAL));
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/d2a926ee/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
index c283a65..7a2fa40 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
@@ -147,28 +147,26 @@ public abstract class AbstractPrepareKerberosServerAction extends KerberosServer
}
}
- // Add ambari-server principal (and keytab) only if 'kerberos-env.create_ambari_principal = true'
- Map<String, String> kerberosEnvProperties = configurations.get("kerberos-env");
- if (kerberosEnvProperties != null && kerberosEnvProperties.get(KerberosHelper.CREATE_AMBARI_PRINCIPAL) != null
- && "true".equalsIgnoreCase(kerberosEnvProperties.get(KerberosHelper.CREATE_AMBARI_PRINCIPAL))
- && includeAmbariIdentity) {
- KerberosIdentityDescriptor ambariServerIdentity = kerberosDescriptor.getIdentity(KerberosHelper.AMBARI_IDENTITY_NAME);
- if (ambariServerIdentity != null) {
- List<KerberosIdentityDescriptor> componentIdentities = Collections.singletonList(ambariServerIdentity);
- kerberosHelper.addIdentities(kerberosIdentityDataFileWriter, componentIdentities,
- identityFilter, KerberosHelper.AMBARI_SERVER_HOST_NAME, "AMBARI_SERVER", "AMBARI_SERVER", kerberosConfigurations, configurations);
- propertiesToIgnore = gatherPropertiesToIgnore(componentIdentities, propertiesToIgnore);
- }
-
- KerberosIdentityDescriptor spnegoIdentity = kerberosDescriptor.getIdentity(KerberosHelper.SPNEGO_IDENTITY_NAME);
- if (spnegoIdentity != null) {
- List<KerberosIdentityDescriptor> componentIdentities = Collections.singletonList(spnegoIdentity);
- kerberosHelper.addIdentities(kerberosIdentityDataFileWriter, componentIdentities,
- identityFilter, KerberosHelper.AMBARI_SERVER_HOST_NAME, "AMBARI_SERVER", "SPNEGO", kerberosConfigurations, configurations);
- propertiesToIgnore = gatherPropertiesToIgnore(componentIdentities, propertiesToIgnore);
+ // Add ambari-server identities only if 'kerberos-env.create_ambari_principal = true'
+ if (includeAmbariIdentity && kerberosHelper.createAmbariIdentities(configurations.get("kerberos-env"))) {
+ List<KerberosIdentityDescriptor> ambariIdentities = kerberosHelper.getAmbariServerIdentities(kerberosDescriptor);
+
+ if (!ambariIdentities.isEmpty()) {
+ for (KerberosIdentityDescriptor identity : ambariIdentities) {
+ // If the identity represents the ambari-server user, use the component name "AMBARI_SERVER_SELF"
+ // so it can be distinguished between other identities related to the AMBARI-SERVER
+ // component.
+ String componentName = KerberosHelper.AMBARI_SERVER_KERBEROS_IDENTITY_NAME.equals(identity.getName())
+ ? "AMBARI_SERVER_SELF"
+ : "AMBARI_SERVER";
+
+ List<KerberosIdentityDescriptor> componentIdentities = Collections.singletonList(identity);
+ kerberosHelper.addIdentities(kerberosIdentityDataFileWriter, componentIdentities,
+ identityFilter, KerberosHelper.AMBARI_SERVER_HOST_NAME, "AMBARI", componentName, kerberosConfigurations, configurations);
+ propertiesToIgnore = gatherPropertiesToIgnore(componentIdentities, propertiesToIgnore);
+ }
}
}
-
} catch (IOException e) {
String message = String.format("Failed to write index file - %s", identityDataFile.getAbsolutePath());
LOG.error(message, e);
http://git-wip-us.apache.org/repos/asf/ambari/blob/d2a926ee/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ConfigureAmbariIdentitiesServerAction.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ConfigureAmbariIdentitiesServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ConfigureAmbariIdentitiesServerAction.java
index 80acd0d..aa846ea 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ConfigureAmbariIdentitiesServerAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ConfigureAmbariIdentitiesServerAction.java
@@ -137,7 +137,7 @@ public class ConfigureAmbariIdentitiesServerAction extends KerberosServerAction
identityRecord.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_NAME), ownerReadable, ownerWritable,
identityRecord.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_NAME), groupReadable, groupWritable, actionLog);
- if ("AMBARI_SERVER".equals(identityRecord.get(KerberosIdentityDataFileReader.COMPONENT))) {
+ if ("AMBARI_SERVER_SELF".equals(identityRecord.get(KerberosIdentityDataFileReader.COMPONENT))) {
// Create/update the JAASFile...
configureJAAS(evaluatedPrincipal, destKeytabFilePath, actionLog);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d2a926ee/ambari-server/src/main/resources/stacks/HDP/2.0.6/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.0.6/kerberos.json
index 0644f57..9579d0f 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/kerberos.json
@@ -43,20 +43,36 @@
},
"configuration": "cluster-env/smokeuser_keytab"
}
- },
+ }
+ ],
+ "services": [
{
- "name": "ambari-server",
- "principal": {
- "value": "ambari-server-${cluster_name|toLower()}@${realm}",
- "type": "user",
- "configuration": "cluster-env/ambari_principal_name"
- },
- "keytab": {
- "file": "${keytab_dir}/ambari.server.keytab",
- "owner": {
- "access": "r"
+ "name": "AMBARI",
+ "components": [
+ {
+ "name": "AMBARI_SERVER",
+ "identities": [
+ {
+ "name": "ambari-server",
+ "principal": {
+ "value": "ambari-server-${cluster_name|toLower()}@${realm}",
+ "type": "user",
+ "configuration": "cluster-env/ambari_principal_name"
+ },
+ "keytab": {
+ "file": "${keytab_dir}/ambari.server.keytab",
+ "owner": {
+ "access": "r"
+ }
+ }
+ },
+ {
+ "name" : "ambari-server_spnego",
+ "reference" : "/spnego"
+ }
+ ]
}
- }
+ ]
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d2a926ee/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
index b2eb738..bd23e00 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
@@ -2455,7 +2455,7 @@ public class KerberosHelperTest extends EasyMockSupport {
testEnsureHeadlessIdentities(true, true);
}
- private void testEnsureHeadlessIdentities(boolean createAmbariPrincipal, boolean ambariServerPrincipalAsService) throws Exception {
+ private void testEnsureHeadlessIdentities(boolean createAmbariIdentities, boolean ambariServerPrincipalAsService) throws Exception {
String clusterName = "c1";
String realm = "EXAMPLE.COM";
String ambariServerHostname = StageUtils.getHostName();
@@ -2486,7 +2486,7 @@ public class KerberosHelperTest extends EasyMockSupport {
propertiesKerberosEnv.put("password_min_digits", "1");
propertiesKerberosEnv.put("password_min_punctuation", "0");
propertiesKerberosEnv.put("password_min_whitespace", "0");
- propertiesKerberosEnv.put("create_ambari_principal", (createAmbariPrincipal) ? "true" : "false");
+ propertiesKerberosEnv.put("create_ambari_principal", (createAmbariIdentities) ? "true" : "false");
Config configKrb5Conf = createMock(Config.class);
expect(configKrb5Conf.getProperties()).andReturn(propertiesKrb5Conf).times(1);
@@ -2576,21 +2576,29 @@ public class KerberosHelperTest extends EasyMockSupport {
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(service1KerberosDescriptor).times(1);
expect(kerberosDescriptor.getService("SERVICE2")).andReturn(service2KerberosDescriptor).times(1);
- if (createAmbariPrincipal) {
+ if (createAmbariIdentities) {
String spnegoPrincipalNameExpected = String.format("HTTP/%s@%s", ambariServerHostname, realm);
- KerberosIdentityDescriptor ambariIdentity = createMockIdentityDescriptor(
- KerberosHelper.AMBARI_IDENTITY_NAME,
+ ArrayList<KerberosIdentityDescriptor> ambarServerComponent1Identities = new ArrayList<KerberosIdentityDescriptor>();
+ ambarServerComponent1Identities.add(createMockIdentityDescriptor(
+ KerberosHelper.AMBARI_SERVER_KERBEROS_IDENTITY_NAME,
createMockPrincipalDescriptor(ambariServerPrincipalName, ambariServerPrincipalType, "ambari", null),
- createMockKeytabDescriptor(ambariServerKeytabFilePath, null));
+ createMockKeytabDescriptor(ambariServerKeytabFilePath, null)));
- KerberosIdentityDescriptor spnegoIdentity = createMockIdentityDescriptor(
- KerberosHelper.SPNEGO_IDENTITY_NAME,
+ ambarServerComponent1Identities.add(createMockIdentityDescriptor(
+ "spnego",
createMockPrincipalDescriptor("HTTP/_HOST@${realm}", KerberosPrincipalType.SERVICE, null, null),
- createMockKeytabDescriptor("spnego.service.keytab", null));
+ createMockKeytabDescriptor("spnego.service.keytab", null)));
+
+ KerberosComponentDescriptor ambariServerComponentKerberosDescriptor = createMockComponentDescriptor("AMBARI_SERVER", ambarServerComponent1Identities, null);
+
+ HashMap<String, KerberosComponentDescriptor> ambariServerComponentDescriptorMap = new HashMap<String, KerberosComponentDescriptor>();
+ ambariServerComponentDescriptorMap.put("AMBARI_SERVER", ambariServerComponentKerberosDescriptor);
+
+ KerberosServiceDescriptor ambariServiceKerberosDescriptor = createMockServiceDescriptor("AMBARI", ambariServerComponentDescriptorMap, null);
+ expect(ambariServiceKerberosDescriptor.getComponent("AMBARI_SERVER")).andReturn(ambariServerComponentKerberosDescriptor).once();
- expect(kerberosDescriptor.getIdentity(KerberosHelper.AMBARI_IDENTITY_NAME)).andReturn(ambariIdentity).once();
- expect(kerberosDescriptor.getIdentity(KerberosHelper.SPNEGO_IDENTITY_NAME)).andReturn(spnegoIdentity).once();
+ expect(kerberosDescriptor.getService("AMBARI")).andReturn(ambariServiceKerberosDescriptor).once();
ConfigureAmbariIdentitiesServerAction configureAmbariIdentitiesServerAction = injector.getInstance(ConfigureAmbariIdentitiesServerAction.class);
expect(configureAmbariIdentitiesServerAction.installAmbariServerIdentity(eq(ambariServerPrincipalNameExpected), anyString(), eq(ambariServerKeytabFilePath),
@@ -2626,7 +2634,7 @@ public class KerberosHelperTest extends EasyMockSupport {
.andReturn(new CreatePrincipalsServerAction.CreatePrincipalResult("anything", "password", 1))
.times(3);
- if(createAmbariPrincipal) {
+ if(createAmbariIdentities) {
if (ambariServerPrincipalAsService) {
expect(createPrincipalsServerAction.createPrincipal(capture(capturePrincipal), eq(true), anyObject(Map.class), anyObject(KerberosOperationHandler.class), eq(false), isNull(ActionLog.class)))
.andReturn(new CreatePrincipalsServerAction.CreatePrincipalResult("anything", "password", 1))
@@ -2644,7 +2652,7 @@ public class KerberosHelperTest extends EasyMockSupport {
CreateKeytabFilesServerAction createKeytabFilesServerAction = injector.getInstance(CreateKeytabFilesServerAction.class);
expect(createKeytabFilesServerAction.createKeytab(capture(capturePrincipalForKeytab), eq("password"), eq(1), anyObject(KerberosOperationHandler.class), eq(true), eq(true), isNull(ActionLog.class)))
.andReturn(new Keytab())
- .times(createAmbariPrincipal ? 5 : 3);
+ .times(createAmbariIdentities ? 5 : 3);
replayAll();
@@ -2661,18 +2669,18 @@ public class KerberosHelperTest extends EasyMockSupport {
verifyAll();
List<? extends String> capturedPrincipals = capturePrincipal.getValues();
- assertEquals(createAmbariPrincipal ? 5 : 3, capturedPrincipals.size());
+ assertEquals(createAmbariIdentities ? 5 : 3, capturedPrincipals.size());
assertTrue(capturedPrincipals.contains("s1_1@EXAMPLE.COM"));
assertTrue(capturedPrincipals.contains("s1c1_1@EXAMPLE.COM"));
assertTrue(capturedPrincipals.contains("s2_1@EXAMPLE.COM"));
List<? extends String> capturedPrincipalsForKeytab = capturePrincipalForKeytab.getValues();
- assertEquals(createAmbariPrincipal ? 5 : 3, capturedPrincipalsForKeytab.size());
+ assertEquals(createAmbariIdentities ? 5 : 3, capturedPrincipalsForKeytab.size());
assertTrue(capturedPrincipalsForKeytab.contains("s1_1@EXAMPLE.COM"));
assertTrue(capturedPrincipalsForKeytab.contains("s1c1_1@EXAMPLE.COM"));
assertTrue(capturedPrincipalsForKeytab.contains("s2_1@EXAMPLE.COM"));
- if(createAmbariPrincipal) {
+ if(createAmbariIdentities) {
String spnegoPrincipalName = String.format("HTTP/%s@EXAMPLE.COM", ambariServerHostname);
assertTrue(capturedPrincipals.contains(ambariServerPrincipalNameExpected));
@@ -3861,31 +3869,53 @@ public class KerberosHelperTest extends EasyMockSupport {
private void addAmbariServerIdentity(Map<String, String> kerberosEnvProperties) throws Exception {
- boolean createAmbariPrincipal = (kerberosEnvProperties == null)
- || !"false".equalsIgnoreCase(kerberosEnvProperties.get("create_ambari_principal"));
-
KerberosHelperImpl kerberosHelper = injector.getInstance(KerberosHelperImpl.class);
- KerberosIdentityDescriptor ambariKerberosIdentity = createMock(KerberosIdentityDescriptor.class);
+ boolean createAmbariIdentities = kerberosHelper.createAmbariIdentities(kerberosEnvProperties);
+
+ KerberosIdentityDescriptor ambariKerberosIdentity = null;
KerberosDescriptor kerberosDescriptor = createMock(KerberosDescriptor.class);
- if (createAmbariPrincipal) {
- expect(kerberosDescriptor.getIdentity(KerberosHelper.AMBARI_IDENTITY_NAME)).andReturn(ambariKerberosIdentity).once();
- expect(kerberosDescriptor.getIdentity(KerberosHelper.SPNEGO_IDENTITY_NAME)).andReturn(ambariKerberosIdentity).once();
- }
+ if (createAmbariIdentities) {
+ String ambariServerPrincipalName = "ambari-server-${cluster_name}@${realm}";
+ KerberosPrincipalType ambariServerPrincipalType = KerberosPrincipalType.USER;
+ String ambariServerKeytabFilePath = new File("ambari.server.keytab").getAbsolutePath();
+
+ ambariKerberosIdentity = createMockIdentityDescriptor(
+ KerberosHelper.AMBARI_SERVER_KERBEROS_IDENTITY_NAME,
+ createMockPrincipalDescriptor(ambariServerPrincipalName, ambariServerPrincipalType, "ambari", null),
+ createMockKeytabDescriptor(ambariServerKeytabFilePath, null));
+
+ ArrayList<KerberosIdentityDescriptor> ambarServerComponent1Identities = new ArrayList<KerberosIdentityDescriptor>();
+ ambarServerComponent1Identities.add(ambariKerberosIdentity);
+
+ ambarServerComponent1Identities.add(createMockIdentityDescriptor(
+ "ambari-server_spnego",
+ createMockPrincipalDescriptor("HTTP/_HOST@${realm}", KerberosPrincipalType.SERVICE, null, null),
+ createMockKeytabDescriptor("spnego.service.keytab", null)));
+
+ HashMap<String, KerberosComponentDescriptor> ambariServerComponentDescriptorMap = new HashMap<String, KerberosComponentDescriptor>();
+ KerberosComponentDescriptor componentDescrptor = createMockComponentDescriptor("AMBARI_SERVER", ambarServerComponent1Identities, null);
+ ambariServerComponentDescriptorMap.put("AMBARI_SERVER", componentDescrptor);
- List<KerberosIdentityDescriptor> identities = new ArrayList<KerberosIdentityDescriptor>();
+ KerberosServiceDescriptor ambariServiceKerberosDescriptor = createMockServiceDescriptor("AMBARI", ambariServerComponentDescriptorMap, null);
+ expect(ambariServiceKerberosDescriptor.getComponent("AMBARI_SERVER")).andReturn(componentDescrptor).once();
+
+ expect(kerberosDescriptor.getService("AMBARI")).andReturn(ambariServiceKerberosDescriptor).once();
+ }
replayAll();
// Needed by infrastructure
injector.getInstance(AmbariMetaInfo.class).init();
- kerberosHelper.addAmbariServerIdentities(kerberosEnvProperties, kerberosDescriptor, identities);
+ List<KerberosIdentityDescriptor> identities = (createAmbariIdentities)
+ ? kerberosHelper.getAmbariServerIdentities(kerberosDescriptor)
+ : new ArrayList<KerberosIdentityDescriptor>();
verifyAll();
- if (createAmbariPrincipal) {
+ if (createAmbariIdentities) {
Assert.assertEquals(2, identities.size());
Assert.assertSame(ambariKerberosIdentity, identities.get(0));
} else {
[11/20] ambari git commit: AMBARI-18565. Deprecate old UpgradeCatalog
Unit Tests (alejandro)
Posted by nc...@apache.org.
AMBARI-18565. Deprecate old UpgradeCatalog Unit Tests (alejandro)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1d54fefb
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1d54fefb
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1d54fefb
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 1d54fefbbf419d3fe6ebc9abd8257b854b7e0cf5
Parents: f725e33
Author: Alejandro Fernandez <af...@hortonworks.com>
Authored: Thu Oct 6 16:25:05 2016 -0700
Committer: Alejandro Fernandez <af...@hortonworks.com>
Committed: Tue Oct 11 16:33:59 2016 -0700
----------------------------------------------------------------------
...rnTimelineServerStatePreservingCheckTest.java | 3 +++
.../server/security/SecurityFilterTest.java | 19 +++++++++++++++----
.../state/cluster/ClusterDeadlockTest.java | 15 ++++++++-------
.../server/testing/DeadlockWarningThread.java | 13 ++++++++++---
.../server/upgrade/UpgradeCatalog150Test.java | 7 ++++++-
.../server/upgrade/UpgradeCatalog151Test.java | 3 +++
.../server/upgrade/UpgradeCatalog160Test.java | 3 +++
.../server/upgrade/UpgradeCatalog161Test.java | 3 +++
.../server/upgrade/UpgradeCatalog170Test.java | 3 +++
9 files changed, 54 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java
index 7469bbc..613e47f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java
@@ -35,6 +35,7 @@ import org.apache.ambari.server.state.stack.PrerequisiteCheck;
import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.mockito.Mockito;
@@ -42,7 +43,9 @@ import com.google.inject.Provider;
/**
* Tests for {@link YarnTimelineServerStatePreservingCheckTest}
+ * @Deprecated
*/
+@Ignore
public class YarnTimelineServerStatePreservingCheckTest {
private final Clusters m_clusters = Mockito.mock(Clusters.class);
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/security/SecurityFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/SecurityFilterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/SecurityFilterTest.java
index 49eefed..c59e868 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/SecurityFilterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/SecurityFilterTest.java
@@ -21,17 +21,21 @@ package org.apache.ambari.server.security;
import java.io.IOException;
-
+import com.google.inject.Binder;
+import com.google.inject.Module;
import org.apache.ambari.server.configuration.Configuration;
-import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.state.stack.OsFamily;
import org.junit.Before;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.mock.web.MockFilterChain;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNull;
+import static org.easymock.EasyMock.createNiceMock;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -42,10 +46,10 @@ public class SecurityFilterTest {
@Before
public void setUp() throws IOException {
- injector = Guice.createInjector(new InMemoryDefaultTestModule());
+ injector = Guice.createInjector(new MockModule());
SecurityFilter.init(injector.getInstance(Configuration.class));
}
-
+
@Test
public void mustFilterNonHttpsRequests() throws Exception {
SecurityFilter filter = new SecurityFilter();
@@ -107,4 +111,11 @@ public class SecurityFilterTest {
request.setScheme("https");
return request;
}
+
+ private class MockModule implements Module {
+ @Override
+ public void configure(Binder binder) {
+ binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
index ec01b80..434948c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
@@ -63,14 +63,16 @@ import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.persist.PersistService;
import com.google.inject.util.Modules;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Tests AMBARI-9368 and AMBARI-9761 which produced a deadlock during read and
* writes of some of the impl classes.
*/
public class ClusterDeadlockTest {
- private static final int NUMBER_OF_HOSTS = 100;
- private static final int NUMBER_OF_THREADS = 3;
+ private static final int NUMBER_OF_HOSTS = 40;
+ private static final int NUMBER_OF_THREADS = 5;
private final AtomicInteger hostNameCounter = new AtomicInteger(0);
@@ -274,8 +276,7 @@ public class ClusterDeadlockTest {
schWriterThread.start();
}
- DeadlockWarningThread wt = new DeadlockWarningThread(threads);
-
+ DeadlockWarningThread wt = new DeadlockWarningThread(threads, 20, 1000);
while (true) {
if(!wt.isAlive()) {
break;
@@ -328,7 +329,7 @@ public class ClusterDeadlockTest {
private final class ClusterDesiredConfigsReaderThread extends Thread {
@Override
public void run() {
- for (int i =0; i<1500; i++) {
+ for (int i =0; i<1000; i++) {
cluster.getDesiredConfigs();
}
}
@@ -343,7 +344,7 @@ public class ClusterDeadlockTest {
@Override
public void run() {
- for (int i =0; i<500; i++) {
+ for (int i =0; i<300; i++) {
config.persist(false);
}
}
@@ -361,7 +362,7 @@ public class ClusterDeadlockTest {
@Override
public void run() {
try {
- for (int i = 0; i < 1500; i++) {
+ for (int i = 0; i < 1000; i++) {
cluster.convertToResponse();
Thread.sleep(10);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/testing/DeadlockWarningThread.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/testing/DeadlockWarningThread.java b/ambari-server/src/test/java/org/apache/ambari/server/testing/DeadlockWarningThread.java
index 589aee1..a184899 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/testing/DeadlockWarningThread.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/testing/DeadlockWarningThread.java
@@ -34,7 +34,8 @@ import java.util.List;
public class DeadlockWarningThread extends Thread {
private final List<String> errorMessages;
- private static final int MAX_STACK_DEPTH = 30;
+ private int MAX_STACK_DEPTH = 30;
+ private int SLEEP_TIME_MS = 3000;
private Collection<Thread> monitoredThreads = null;
private boolean deadlocked = false;
private static final ThreadMXBean mbean = ManagementFactory.getThreadMXBean();
@@ -47,12 +48,18 @@ public class DeadlockWarningThread extends Thread {
return deadlocked;
}
- public DeadlockWarningThread(Collection<Thread> monitoredThreads) {
+ public DeadlockWarningThread(Collection<Thread> monitoredThreads, int maxStackDepth, int sleepTimeMS) {
this.errorMessages = new ArrayList<String>();
this.monitoredThreads = monitoredThreads;
+ this.MAX_STACK_DEPTH = maxStackDepth;
+ this.SLEEP_TIME_MS = sleepTimeMS;
start();
}
+ public DeadlockWarningThread(Collection<Thread> monitoredThreads) {
+ this(monitoredThreads, 30, 3000);
+ }
+
public String getThreadsStacktraces(Collection<Long> ids) {
StringBuilder errBuilder = new StringBuilder();
for (long id : ids) {
@@ -73,7 +80,7 @@ public class DeadlockWarningThread extends Thread {
public void run() {
while (true) {
try {
- Thread.sleep(3000);
+ Thread.sleep(SLEEP_TIME_MS);
} catch (InterruptedException ex) {
}
long[] ids = mbean.findMonitorDeadlockedThreads();
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java
index 4647815..eebda98 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java
@@ -44,15 +44,20 @@ import org.apache.ambari.server.state.HostComponentAdminState;
import org.apache.ambari.server.state.StackId;
import org.junit.After;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.persist.PersistService;
-import java.util.ArrayList;
import java.util.Collections;
+/**
+ * UpgradeCatalog150 tests.
+ * @Deprecated
+ */
+@Ignore
public class UpgradeCatalog150Test {
private Injector injector;
private final String CLUSTER_NAME = "c1";
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog151Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog151Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog151Test.java
index b47f411..3b82625 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog151Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog151Test.java
@@ -28,6 +28,7 @@ import org.apache.ambari.server.orm.dao.MetainfoDAO;
import org.apache.ambari.server.state.stack.OsFamily;
import org.easymock.EasyMock;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import java.lang.reflect.Field;
@@ -41,7 +42,9 @@ import static org.easymock.EasyMock.verify;
/**
* UpgradeCatalog151 tests.
+ * @Deprecated
*/
+@Ignore
public class UpgradeCatalog151Test {
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog160Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog160Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog160Test.java
index 303fa3a..754999b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog160Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog160Test.java
@@ -44,6 +44,7 @@ import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.state.stack.OsFamily;
import org.easymock.Capture;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import com.google.inject.Binder;
@@ -53,7 +54,9 @@ import com.google.inject.Module;
/**
* UpgradeCatalog160 unit tests.
+ * @Deprecated
*/
+@Ignore
public class UpgradeCatalog160Test {
@Test
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java
index a3b41b8..a87a376 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java
@@ -55,6 +55,7 @@ import org.apache.ambari.server.state.State;
import org.apache.ambari.server.state.stack.OsFamily;
import org.easymock.Capture;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import com.google.inject.Binder;
@@ -65,7 +66,9 @@ import com.google.inject.Provider;
/**
* UpgradeCatalog161 unit tests.
+ * @Deprecated
*/
+@Ignore
public class UpgradeCatalog161Test {
@Test
http://git-wip-us.apache.org/repos/asf/ambari/blob/1d54fefb/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
index 10e4993..d13b40e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
@@ -124,6 +124,7 @@ import org.easymock.IAnswer;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import com.google.inject.Binder;
@@ -135,7 +136,9 @@ import com.google.inject.persist.PersistService;
/**
* UpgradeCatalog170 unit tests.
+ * @Deprecated
*/
+@Ignore
public class UpgradeCatalog170Test {
private Injector injector;
[18/20] ambari git commit: AMBARI-18566 Installer wizard-> Select
Versions page: Selecting Red Hat Satellite option and clicking next button
makes wizard stuck (zhewang)
Posted by nc...@apache.org.
AMBARI-18566 Installer wizard-> Select Versions page: Selecting Red Hat Satellite option and clicking next button makes wizard stuck (zhewang)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2709304c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2709304c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2709304c
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 2709304c50a934679069c2ac63e1dfe64e7dfc3c
Parents: 911deb7
Author: Zhe (Joe) Wang <zh...@apache.org>
Authored: Wed Oct 12 13:50:01 2016 -0700
Committer: Zhe (Joe) Wang <zh...@apache.org>
Committed: Wed Oct 12 13:51:34 2016 -0700
----------------------------------------------------------------------
ambari-web/app/controllers/installer.js | 3 +++
ambari-web/app/views/wizard/step1_view.js | 8 +++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/2709304c/ambari-web/app/controllers/installer.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/installer.js b/ambari-web/app/controllers/installer.js
index f8f70a0..5493b3a 100644
--- a/ambari-web/app/controllers/installer.js
+++ b/ambari-web/app/controllers/installer.js
@@ -831,6 +831,9 @@ App.InstallerController = App.WizardController.extend({
return os.get('repositories.length');
}).reduce(Em.sum, 0));
var verifyBaseUrl = !wizardStep1Controller.get('skipValidationChecked') && !wizardStep1Controller.get('selectedStack.useRedhatSatellite');
+ if (!verifyBaseUrl) {
+ dfd.resolve();
+ }
selectedStack.get('operatingSystems').forEach(function (os) {
if (os.get('isSelected') && !os.get('isEmpty')) {
os.get('repositories').forEach(function (repo) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/2709304c/ambari-web/app/views/wizard/step1_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/wizard/step1_view.js b/ambari-web/app/views/wizard/step1_view.js
index 2b80ad5..bfabc02 100644
--- a/ambari-web/app/views/wizard/step1_view.js
+++ b/ambari-web/app/views/wizard/step1_view.js
@@ -76,7 +76,13 @@ App.WizardStep1View = Em.View.extend({
*
* @type {bool}
*/
- showWarning: Em.computed.or('invalidFormatUrlExist', 'isNoOsChecked', 'isNoOsFilled'),
+ warningExist: Em.computed.or('invalidFormatUrlExist', 'isNoOsChecked', 'isNoOsFilled'),
+
+ skipVerifyBaseUrl: Em.computed.or('controller.selectedStack.skipValidationChecked', 'controller.selectedStack.useRedhatSatellite'),
+
+ verifyBaseUrl: Em.computed.not('skipVerifyBaseUrl'),
+
+ showWarning: Em.computed.and('warningExist', 'verifyBaseUrl'),
/**
* Onclick handler for recheck repos urls. Used in Advanced Repository Options.
[03/20] ambari git commit: AMBARI-18545. Kerberos server actions
should not timeout in minutes as specified in configuration (rlevas)
Posted by nc...@apache.org.
AMBARI-18545. Kerberos server actions should not timeout in minutes as specified in configuration (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0a61db56
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0a61db56
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0a61db56
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 0a61db5666f3ee8b82cdab0d50a1c8450b177ae7
Parents: 34c5686
Author: Robert Levas <rl...@hortonworks.com>
Authored: Mon Oct 10 11:16:01 2016 -0400
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Mon Oct 10 11:16:01 2016 -0400
----------------------------------------------------------------------
.../apache/ambari/server/controller/KerberosHelperImpl.java | 6 +++---
.../org/apache/ambari/server/serveraction/ServerAction.java | 6 ++++++
2 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0a61db56/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
index cd4a0b5..e15965b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
@@ -2890,7 +2890,7 @@ public class KerberosHelperImpl implements KerberosHelper {
event,
commandParameters,
"Create Principals",
- configuration.getDefaultServerTaskTimeout());
+ Math.max(ServerAction.DEFAULT_LONG_RUNNING_TASK_TIMEOUT_SECONDS, configuration.getDefaultServerTaskTimeout()));
RoleGraph roleGraph = roleGraphFactory.createNew(roleCommandOrder);
roleGraph.build(stage);
@@ -2913,7 +2913,7 @@ public class KerberosHelperImpl implements KerberosHelper {
event,
commandParameters,
"Destroy Principals",
- configuration.getDefaultServerTaskTimeout());
+ Math.max(ServerAction.DEFAULT_LONG_RUNNING_TASK_TIMEOUT_SECONDS, configuration.getDefaultServerTaskTimeout()));
RoleGraph roleGraph = roleGraphFactory.createNew(roleCommandOrder);
roleGraph.build(stage);
@@ -2959,7 +2959,7 @@ public class KerberosHelperImpl implements KerberosHelper {
event,
commandParameters,
"Create Keytabs",
- configuration.getDefaultServerTaskTimeout());
+ Math.max(ServerAction.DEFAULT_LONG_RUNNING_TASK_TIMEOUT_SECONDS, configuration.getDefaultServerTaskTimeout()));
RoleGraph roleGraph = roleGraphFactory.createNew(roleCommandOrder);
roleGraph.build(stage);
http://git-wip-us.apache.org/repos/asf/ambari/blob/0a61db56/ambari-server/src/main/java/org/apache/ambari/server/serveraction/ServerAction.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/ServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/ServerAction.java
index b9bf5ce..7c69f52 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/ServerAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/ServerAction.java
@@ -33,6 +33,12 @@ public interface ServerAction {
public static final String ACTION_NAME = "ACTION_NAME";
public static final String ACTION_USER_NAME = "ACTION_USER_NAME";
+ /**
+ * The default timeout (in seconds) to use for potentially long running tasks such as creating
+ * Kerberos principals and generating Kerberos keytab files
+ */
+ int DEFAULT_LONG_RUNNING_TASK_TIMEOUT_SECONDS = 36000;
+
/**
* Gets the ExecutionCommand property of this ServerAction.
[10/20] ambari git commit: AMBARI-18504. Build fails at verify step
due to leftover findbugs html file (Attila Doroszlai via magyari_sandor)
Posted by nc...@apache.org.
AMBARI-18504. Build fails at verify step due to leftover findbugs html file (Attila Doroszlai via magyari_sandor)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f725e33e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f725e33e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f725e33e
Branch: refs/heads/branch-dev-patch-upgrade
Commit: f725e33ecee3374ea32bcc604f53756c9b39cddf
Parents: 3e4b368
Author: Attila Doroszlai <ad...@hortonworks.com>
Authored: Tue Oct 11 19:08:33 2016 +0200
Committer: Sandor Magyari <sm...@hortonworks.com>
Committed: Tue Oct 11 19:08:33 2016 +0200
----------------------------------------------------------------------
ambari-server/pom.xml | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f725e33e/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index d3ec9ad..e02b7a5 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -549,6 +549,9 @@
<transformationSets>
<transformationSet>
<dir>${project.basedir}/target/findbugs</dir>
+ <includes>
+ <include>*.xml</include>
+ </includes>
<outputDir>${project.basedir}/target/findbugs</outputDir>
<stylesheet>fancy-hist.xsl</stylesheet>
<fileMappers>
[17/20] ambari git commit: AMBARI-18575. Fix for improving time taken
by 'ExecutionScheduleManagerTest' and 'UpgradeCatalog221Test' java tests.
Posted by nc...@apache.org.
AMBARI-18575. Fix for improving time taken by 'ExecutionScheduleManagerTest' and 'UpgradeCatalog221Test' java tests.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/911deb74
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/911deb74
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/911deb74
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 911deb744485aa0366aad168c98566cf6381d4cc
Parents: 60dc240
Author: Swapan Shridhar <ss...@hortonworks.com>
Authored: Tue Oct 11 16:09:00 2016 -0700
Committer: Swapan Shridhar <ss...@hortonworks.com>
Committed: Wed Oct 12 13:08:48 2016 -0700
----------------------------------------------------------------------
.../scheduler/ExecutionScheduleManagerTest.java | 90 ++++++++++----------
.../server/upgrade/UpgradeCatalog221Test.java | 42 +++++----
2 files changed, 69 insertions(+), 63 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/911deb74/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
index f2fe3b8..0179486 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
@@ -17,26 +17,16 @@
*/
package org.apache.ambari.server.scheduler;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.capture;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.createMockBuilder;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+import com.google.gson.Gson;
+import com.google.inject.Binder;
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import com.google.inject.persist.PersistService;
+import com.google.inject.persist.Transactional;
+import com.google.inject.util.Modules;
+import junit.framework.Assert;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.ActionDBAccessor;
import org.apache.ambari.server.actionmanager.HostRoleStatus;
@@ -58,8 +48,8 @@ import org.apache.ambari.server.state.scheduler.RequestExecutionFactory;
import org.apache.ambari.server.state.scheduler.Schedule;
import org.easymock.Capture;
import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.quartz.CronTrigger;
import org.quartz.JobDataMap;
@@ -76,34 +66,42 @@ import org.quartz.impl.matchers.GroupMatcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
-import com.google.inject.Binder;
-import com.google.inject.Guice;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import com.google.inject.persist.PersistService;
-import com.google.inject.persist.Transactional;
-import com.google.inject.util.Modules;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
-import junit.framework.Assert;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createMockBuilder;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
public class ExecutionScheduleManagerTest {
- private Clusters clusters;
- private Cluster cluster;
- private String clusterName;
- private Injector injector;
- private AmbariMetaInfo metaInfo;
- private ExecutionScheduleManager executionScheduleManager;
- private RequestExecutionFactory requestExecutionFactory;
- private ExecutionScheduler executionScheduler;
- private Scheduler scheduler;
+ private static Clusters clusters;
+ private static Cluster cluster;
+ private static String clusterName;
+ private static Injector injector;
+ private static AmbariMetaInfo metaInfo;
+ private static ExecutionScheduleManager executionScheduleManager;
+ private static RequestExecutionFactory requestExecutionFactory;
+ private static ExecutionScheduler executionScheduler;
+ private static Scheduler scheduler;
private static final Logger LOG =
LoggerFactory.getLogger(ExecutionScheduleManagerTest.class);
- @Before
- public void setup() throws Exception {
+ @BeforeClass
+ public static void setup() throws Exception {
InMemoryDefaultTestModule defaultTestModule = new InMemoryDefaultTestModule();
injector = Guice.createInjector(Modules.override(defaultTestModule)
.with(new ExecutionSchedulerTestModule()));
@@ -128,8 +126,8 @@ public class ExecutionScheduleManagerTest {
executionScheduleManager.start();
}
- @After
- public void teardown() throws Exception {
+ @AfterClass
+ public static void teardown() throws Exception {
executionScheduleManager.stop();
injector.getInstance(PersistService.class).stop();
}
@@ -154,7 +152,7 @@ public class ExecutionScheduleManagerTest {
}
}
- public class ExecutionSchedulerTestModule implements Module {
+ public static class ExecutionSchedulerTestModule implements Module {
@Override
public void configure(Binder binder) {
binder.bind(ExecutionScheduler.class).to(TestExecutionScheduler.class);
http://git-wip-us.apache.org/repos/asf/ambari/blob/911deb74/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog221Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog221Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog221Test.java
index e754a41..4663c6c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog221Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog221Test.java
@@ -33,10 +33,10 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.ActionManager;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.AmbariManagementController;
-import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.controller.AmbariManagementControllerImpl;
import org.apache.ambari.server.controller.KerberosHelper;
import org.apache.ambari.server.controller.MaintenanceStateHelper;
+import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.dao.AlertDefinitionDAO;
@@ -46,39 +46,47 @@ import org.apache.ambari.server.orm.entities.StackEntity;
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.RepositoryInfo;
import org.apache.ambari.server.state.StackId;
-import org.apache.ambari.server.state.StackInfo;
import org.apache.ambari.server.state.stack.OsFamily;
import org.easymock.Capture;
import org.easymock.EasyMock;
import org.easymock.EasyMockSupport;
-import org.junit.After;
-import org.junit.Before;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Test;
import javax.persistence.EntityManager;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import static org.easymock.EasyMock.*;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.createMockBuilder;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.createStrictMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
+import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
public class UpgradeCatalog221Test {
- private Injector injector;
- private Provider<EntityManager> entityManagerProvider = createStrictMock(Provider.class);
- private EntityManager entityManager = createNiceMock(EntityManager.class);
- private UpgradeCatalogHelper upgradeCatalogHelper;
- private StackEntity desiredStackEntity;
-
- @Before
- public void init() {
+ private static Injector injector;
+ private static Provider<EntityManager> entityManagerProvider = createStrictMock(Provider.class);
+ private static EntityManager entityManager = createNiceMock(EntityManager.class);
+ private static UpgradeCatalogHelper upgradeCatalogHelper;
+ private static StackEntity desiredStackEntity;
+
+ @BeforeClass
+ public static void init() {
reset(entityManagerProvider);
expect(entityManagerProvider.get()).andReturn(entityManager).anyTimes();
replay(entityManagerProvider);
@@ -93,8 +101,8 @@ public class UpgradeCatalog221Test {
desiredStackEntity = stackDAO.find("HDP", "2.2.0");
}
- @After
- public void tearDown() {
+ @AfterClass
+ public static void tearDown() {
injector.getInstance(PersistService.class).stop();
}