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
----------------------------------------------------------------------