YARN-9801. SchedConfCli does not work wiwith https mode. Contributed by Prabhu Joseph
(cherry picked from commit 99cd7572f1
)
This commit is contained in:
parent
5cd6eb2a18
commit
312cfa994a
|
@ -23,6 +23,8 @@ import com.sun.jersey.api.client.Client;
|
||||||
import com.sun.jersey.api.client.ClientResponse;
|
import com.sun.jersey.api.client.ClientResponse;
|
||||||
import com.sun.jersey.api.client.WebResource;
|
import com.sun.jersey.api.client.WebResource;
|
||||||
import com.sun.jersey.api.client.WebResource.Builder;
|
import com.sun.jersey.api.client.WebResource.Builder;
|
||||||
|
import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory;
|
||||||
|
import com.sun.jersey.client.urlconnection.URLConnectionClientHandler;
|
||||||
import org.apache.commons.cli.CommandLine;
|
import org.apache.commons.cli.CommandLine;
|
||||||
import org.apache.commons.cli.GnuParser;
|
import org.apache.commons.cli.GnuParser;
|
||||||
import org.apache.commons.cli.MissingArgumentException;
|
import org.apache.commons.cli.MissingArgumentException;
|
||||||
|
@ -31,6 +33,8 @@ import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.conf.Configured;
|
import org.apache.hadoop.conf.Configured;
|
||||||
|
import org.apache.hadoop.security.authentication.client.AuthenticatedURL;
|
||||||
|
import org.apache.hadoop.security.ssl.SSLFactory;
|
||||||
import org.apache.hadoop.security.UserGroupInformation;
|
import org.apache.hadoop.security.UserGroupInformation;
|
||||||
import org.apache.hadoop.util.Tool;
|
import org.apache.hadoop.util.Tool;
|
||||||
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
||||||
|
@ -41,6 +45,9 @@ import org.apache.hadoop.yarn.webapp.util.YarnWebServiceUtils;
|
||||||
|
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response.Status;
|
import javax.ws.rs.core.Response.Status;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -156,7 +163,12 @@ public class SchedConfCLI extends Configured implements Tool {
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
int formatSchedulerConf(String webAppAddress, WebResource resource)
|
int formatSchedulerConf(String webAppAddress, WebResource resource)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
Client webServiceClient = Client.create();
|
Configuration conf = getConf();
|
||||||
|
SSLFactory clientSslFactory = null;
|
||||||
|
if (YarnConfiguration.useHttps(conf)) {
|
||||||
|
clientSslFactory = new SSLFactory(SSLFactory.Mode.CLIENT, conf);
|
||||||
|
}
|
||||||
|
Client webServiceClient = createWebServiceClient(clientSslFactory);
|
||||||
ClientResponse response = null;
|
ClientResponse response = null;
|
||||||
resource = (resource != null) ? resource :
|
resource = (resource != null) ? resource :
|
||||||
webServiceClient.resource(webAppAddress);
|
webServiceClient.resource(webAppAddress);
|
||||||
|
@ -194,14 +206,24 @@ public class SchedConfCLI extends Configured implements Tool {
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
response.close();
|
response.close();
|
||||||
}
|
}
|
||||||
webServiceClient.destroy();
|
if (webServiceClient != null) {
|
||||||
|
webServiceClient.destroy();
|
||||||
|
}
|
||||||
|
if (clientSslFactory != null) {
|
||||||
|
clientSslFactory.destroy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
int updateSchedulerConfOnRMNode(String webAppAddress,
|
int updateSchedulerConfOnRMNode(String webAppAddress,
|
||||||
SchedConfUpdateInfo updateInfo) throws Exception {
|
SchedConfUpdateInfo updateInfo) throws Exception {
|
||||||
Client webServiceClient = Client.create();
|
Configuration conf = getConf();
|
||||||
|
SSLFactory clientSslFactory = null;
|
||||||
|
if (YarnConfiguration.useHttps(conf)) {
|
||||||
|
clientSslFactory = new SSLFactory(SSLFactory.Mode.CLIENT, conf);
|
||||||
|
}
|
||||||
|
Client webServiceClient = createWebServiceClient(clientSslFactory);
|
||||||
ClientResponse response = null;
|
ClientResponse response = null;
|
||||||
WebResource resource = webServiceClient.resource(webAppAddress);
|
WebResource resource = webServiceClient.resource(webAppAddress);
|
||||||
|
|
||||||
|
@ -236,10 +258,42 @@ public class SchedConfCLI extends Configured implements Tool {
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
response.close();
|
response.close();
|
||||||
}
|
}
|
||||||
webServiceClient.destroy();
|
if (webServiceClient != null) {
|
||||||
|
webServiceClient.destroy();
|
||||||
|
}
|
||||||
|
if (clientSslFactory != null) {
|
||||||
|
clientSslFactory.destroy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Client createWebServiceClient(SSLFactory clientSslFactory) {
|
||||||
|
Client webServiceClient = new Client(new URLConnectionClientHandler(
|
||||||
|
new HttpURLConnectionFactory() {
|
||||||
|
@Override
|
||||||
|
public HttpURLConnection getHttpURLConnection(URL url)
|
||||||
|
throws IOException {
|
||||||
|
AuthenticatedURL.Token token = new AuthenticatedURL.Token();
|
||||||
|
AuthenticatedURL aUrl;
|
||||||
|
HttpURLConnection conn = null;
|
||||||
|
try {
|
||||||
|
if (clientSslFactory != null) {
|
||||||
|
clientSslFactory.init();
|
||||||
|
aUrl = new AuthenticatedURL(null, clientSslFactory);
|
||||||
|
} else {
|
||||||
|
aUrl = new AuthenticatedURL();
|
||||||
|
}
|
||||||
|
conn = aUrl.openConnection(url, token);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new IOException(e);
|
||||||
|
}
|
||||||
|
return conn;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
webServiceClient.setChunkedEncodingSize(null);
|
||||||
|
return webServiceClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void addQueues(String args, SchedConfUpdateInfo updateInfo) {
|
void addQueues(String args, SchedConfUpdateInfo updateInfo) {
|
||||||
|
|
Loading…
Reference in New Issue