YARN-1215. Yarn URL should include userinfo. Contributed by Chuan Liu.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1528233 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Chris Nauroth 2013-10-01 22:28:02 +00:00
parent aa2745abe5
commit b2a7811fe7
6 changed files with 53 additions and 0 deletions

View File

@ -54,6 +54,8 @@ Release 2.3.0 - UNRELEASED
YARN-1188. The context of QueueMetrics becomes default when using
FairScheduler (Tsuyoshi Ozawa via Sandy Ryza)
YARN-1215. Yarn URL should include userinfo. (Chuan Liu via cnauroth)
Release 2.2.0 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -56,6 +56,22 @@ public static URL newInstance(String scheme, String host, int port, String file)
@Stable
public abstract void setScheme(String scheme);
/**
* Get the user info of the URL.
* @return user info of the URL
*/
@Public
@Stable
public abstract String getUserInfo();
/**
* Set the user info of the URL.
* @param userInfo user info of the URL
*/
@Public
@Stable
public abstract void setUserInfo(String userInfo);
/**
* Get the host of the URL.
* @return host of the URL

View File

@ -100,6 +100,7 @@ message URLProto {
optional string host = 2;
optional int32 port = 3;
optional string file = 4;
optional string userInfo = 5;
}
enum LocalResourceVisibilityProto {

View File

@ -113,6 +113,26 @@ public void setScheme(String scheme) {
}
builder.setScheme((scheme));
}
@Override
public String getUserInfo() {
URLProtoOrBuilder p = viaProto ? proto : builder;
if (!p.hasUserInfo()) {
return null;
}
return (p.getUserInfo());
}
@Override
public void setUserInfo(String userInfo) {
maybeInitBuilder();
if (userInfo == null) {
builder.clearUserInfo();
return;
}
builder.setUserInfo((userInfo));
}
@Override
public String getHost() {
URLProtoOrBuilder p = viaProto ? proto : builder;

View File

@ -69,6 +69,9 @@ public static Path getPathFromYarnURL(URL url) throws URISyntaxException {
String authority = "";
if (url.getHost() != null) {
authority = url.getHost();
if (url.getUserInfo() != null) {
authority = url.getUserInfo() + "@" + authority;
}
if (url.getPort() > 0) {
authority += ":" + url.getPort();
}
@ -102,6 +105,9 @@ public static URL getYarnUrlFromURI(URI uri) {
if (uri.getHost() != null) {
url.setHost(uri.getHost());
}
if (uri.getUserInfo() != null) {
url.setUserInfo(uri.getUserInfo());
}
url.setPort(uri.getPort());
url.setScheme(uri.getScheme());
url.setFile(uri.getPath());

View File

@ -38,6 +38,14 @@ public void testConvertUrlWithNoPort() throws URISyntaxException {
assertEquals(expectedPath, actualPath);
}
@Test
public void testConvertUrlWithUserinfo() throws URISyntaxException {
Path expectedPath = new Path("foo://username:password@example.com:8042");
URL url = ConverterUtils.getYarnUrlFromPath(expectedPath);
Path actualPath = ConverterUtils.getPathFromYarnURL(url);
assertEquals(expectedPath, actualPath);
}
@Test
public void testContainerId() throws URISyntaxException {
ContainerId id = TestContainerId.newContainerId(0, 0, 0, 0);