You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by st...@apache.org on 2015/12/14 19:30:19 UTC
[1/2] incubator-slider git commit: SLIDER-1022 Slider AM Web UI To
support HTTPS
Repository: incubator-slider
Updated Branches:
refs/heads/feature/SLIDER-1022_AM_to_support_HTTPS [created] d7c449803
SLIDER-1022
Slider AM Web UI To support HTTPS
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/a2619c85
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/a2619c85
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/a2619c85
Branch: refs/heads/feature/SLIDER-1022_AM_to_support_HTTPS
Commit: a2619c8518c3de34431af53324d7c1730253d2fe
Parents: fe4abc0
Author: Steve Loughran <st...@apache.org>
Authored: Mon Dec 14 18:19:20 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Mon Dec 14 18:19:34 2015 +0000
----------------------------------------------------------------------
.../org/apache/slider/common/SliderKeys.java | 3 +
.../server/appmaster/SliderAppMaster.java | 5 +-
.../apache/slider/agent/rest/TestHttpsAM.groovy | 139 +++++++++++++++++++
3 files changed, 146 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/a2619c85/slider-core/src/main/java/org/apache/slider/common/SliderKeys.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/common/SliderKeys.java b/slider-core/src/main/java/org/apache/slider/common/SliderKeys.java
index 1d2d5f8..6ca7efc 100644
--- a/slider-core/src/main/java/org/apache/slider/common/SliderKeys.java
+++ b/slider-core/src/main/java/org/apache/slider/common/SliderKeys.java
@@ -279,4 +279,7 @@ public interface SliderKeys extends SliderXmlConfKeys {
String SLIDER_CLASSPATH_EXTRA = "SLIDER_CLASSPATH_EXTRA";
String YARN_CONTAINER_PATH = "/node/container/";
+
+ String KEY_SLIDER_AM_HTTPS = "slider.am.https";
+ boolean DEFAULT_SLIDER_AM_HTTPS = false;
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/a2619c85/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
index 7e75c10..f339f6a 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
@@ -1024,7 +1024,10 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
try {
webApp = new SliderAMWebApp(webAppApi);
- HttpConfig.Policy policy = HttpConfig.Policy.HTTP_ONLY;
+ HttpConfig.Policy policy = getConfig().getBoolean(KEY_SLIDER_AM_HTTPS,
+ DEFAULT_SLIDER_AM_HTTPS)
+ ? HttpConfig.Policy.HTTPS_ONLY
+ : HttpConfig.Policy.HTTP_ONLY;
log.info("Launching web application at port {} with policy {}", port, policy);
WebApps.$for(SliderAMWebApp.BASE_PATH,
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/a2619c85/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestHttpsAM.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestHttpsAM.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestHttpsAM.groovy
new file mode 100644
index 0000000..b03cc09
--- /dev/null
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestHttpsAM.groovy
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.agent.rest
+
+import groovy.transform.CompileStatic
+import groovy.util.logging.Slf4j
+import org.apache.hadoop.registry.client.api.RegistryOperations
+import org.apache.hadoop.yarn.api.records.ApplicationReport
+import org.apache.slider.agent.AgentMiniClusterTestBase
+import org.apache.slider.client.SliderClient
+import org.apache.slider.client.ipc.SliderApplicationIpcClient
+import org.apache.slider.client.rest.RestClientFactory
+import org.apache.slider.common.SliderKeys
+import org.apache.slider.common.SliderXmlConfKeys
+import org.apache.slider.common.params.Arguments
+import org.apache.slider.core.main.ServiceLauncher
+import org.apache.slider.core.restclient.HttpOperationResponse
+import static org.apache.slider.server.appmaster.management.MetricsKeys.METRICS_LOGGING_ENABLED
+import static org.apache.slider.server.appmaster.management.MetricsKeys.METRICS_LOGGING_LOG_INTERVAL
+import org.apache.slider.server.appmaster.rpc.RpcBinder
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_RESOURCES
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.SLIDER_PATH_APPLICATION
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.SYSTEM_HEALTHCHECK
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.SYSTEM_METRICS_JSON
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.SYSTEM_PING
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.SYSTEM_THREADS
+import org.junit.Test
+
+@CompileStatic
+@Slf4j
+class TestHttpsAM extends AgentMiniClusterTestBase {
+
+ @Test
+ public void testHttpsAM() throws Throwable {
+
+ describe "create a standalone AM then perform actions on it"
+ //launch fake master
+ def conf = configuration
+ conf.setBoolean(METRICS_LOGGING_ENABLED, true)
+ conf.setInt(METRICS_LOGGING_LOG_INTERVAL, 1)
+ // HTTPS
+ conf.setBoolean(KEY_SLIDER_AM_HTTPS, true)
+ // and AM opens up WS without redirection
+ conf.setBoolean(X_DEV_INSECURE_WS, true)
+ String clustername = createMiniCluster("", conf, 1, true)
+
+ ServiceLauncher<SliderClient> launcher =
+ createStandaloneAMWithArgs(clustername,
+ [
+ Arguments.ARG_OPTION,
+ AbstractRestTestDelegate.TEST_GLOBAL_OPTION,
+ AbstractRestTestDelegate.TEST_GLOBAL_OPTION_PRESENT,
+ Arguments.ARG_COMP_OPT, COMPONENT_AM, KEY_SLIDER_AM_HTTPS, "true"
+ ],
+ true,
+ false)
+ SliderClient client = launcher.service
+ addToTeardown(client);
+
+ ApplicationReport report = waitForClusterLive(client)
+ def directAM = report.originalTrackingUrl
+ assert directAM.startsWith("https:")
+
+ // set up url config to match
+ initHttpTestSupport(launcher.configuration)
+
+ execOperation(WEB_STARTUP_TIME) {
+ GET(directAM)
+ }
+
+ execOperation(WEB_STARTUP_TIME) {
+ def metrics = GET(directAM, SYSTEM_METRICS_JSON)
+ log.info prettyPrintJson(metrics)
+ }
+
+ // Only do direct complex verbs if the no back door is needed, or if
+ // it is enabled
+ def directComplexVerbs = false
+
+ def ugiClient = createUGIJerseyClient();
+
+ describe "Direct SliderRestClient Tests"
+ RestAPIClientTestDelegates directSliderRestAPI =
+ new RestAPIClientTestDelegates(directAM, ugiClient, directComplexVerbs)
+ directSliderRestAPI.testSuiteAll()
+
+ describe "Direct Jersey Tests"
+
+ JerseyTestDelegates directJerseyTests = new JerseyTestDelegates(directAM, ugiClient)
+ directJerseyTests.testSuiteAll()
+
+ describe "Direct Tests"
+
+ LowLevelRestTestDelegates direct = new LowLevelRestTestDelegates(directAM, directComplexVerbs)
+ direct.testSuiteAll()
+
+ // create the Rest client via the registry
+
+ RegistryOperations operations = client.registryOperations;
+ def restClientFactory = new RestClientFactory(
+ operations,
+ ugiClient,
+ "~", SliderKeys.APP_TYPE,
+ clustername)
+ def sliderApplicationApi = restClientFactory.createSliderAppApiClient();
+ sliderApplicationApi.desiredModel
+ sliderApplicationApi.resolvedModel
+
+ if (directComplexVerbs) {
+ sliderApplicationApi.ping("registry located")
+ }
+
+ // log the metrics to show what's up
+ direct.logCodahaleMetrics();
+
+ // finally, stop the AM
+ if (directComplexVerbs) {
+ describe "Stopping AM via REST API"
+ directSliderRestAPI.testStop();
+ }
+ }
+
+}
[2/2] incubator-slider git commit: Merge branch 'develop' into
feature/SLIDER-1022-HTTPS
Posted by st...@apache.org.
Merge branch 'develop' into feature/SLIDER-1022-HTTPS
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/d7c44980
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/d7c44980
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/d7c44980
Branch: refs/heads/feature/SLIDER-1022_AM_to_support_HTTPS
Commit: d7c44980371fa36a34227ec0d157984604ae328f
Parents: a2619c8 9cb9661
Author: Steve Loughran <st...@apache.org>
Authored: Mon Dec 14 18:24:15 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Mon Dec 14 18:24:15 2015 +0000
----------------------------------------------------------------------
.../slider/server/appmaster/SliderAppMaster.java | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d7c44980/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
----------------------------------------------------------------------