This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 719500a659 HDDS-9196. Fix ECKeyOutputStream for secure S3 (#5234)
719500a659 is described below
commit 719500a659cc6ef00746f554bee3f3fbfd6558b2
Author: Slava Tutrinov <[email protected]>
AuthorDate: Tue Sep 12 12:29:52 2023 +0300
HDDS-9196. Fix ECKeyOutputStream for secure S3 (#5234)
* set thread-local s3auth to EC stripes flusher
* throw unauthorized user exception if the UGI is null in OM request
---
.../hadoop/ozone/client/io/ECKeyOutputStream.java | 17 ++++++++++++
.../ozone/client/protocol/ClientProtocol.java | 4 +++
.../apache/hadoop/ozone/client/rpc/RpcClient.java | 8 +++++-
.../hadoop/ozone/om/exceptions/OMException.java | 3 +-
.../om/protocolPB/OzoneManagerClientProtocol.java | 2 ++
...OzoneManagerProtocolClientSideTranslatorPB.java | 6 ++++
.../ozone/om/TestOzoneManagerHAMetadataOnly.java | 12 +++++++-
.../src/main/proto/OmClientProtocol.proto | 1 +
.../org/apache/hadoop/ozone/om/OzoneManager.java | 3 +-
.../hadoop/ozone/om/request/OMClientRequest.java | 32 +++++++++++++++++-----
.../request/bucket/OMBucketSetPropertyRequest.java | 2 +-
.../request/snapshot/OMSnapshotCreateRequest.java | 2 +-
.../request/snapshot/OMSnapshotDeleteRequest.java | 2 +-
.../om/request/upgrade/OMCancelPrepareRequest.java | 6 ++--
.../request/upgrade/OMFinalizeUpgradeRequest.java | 2 +-
.../ozone/om/request/OMRequestTestUtils.java | 16 +++++++++++
.../upgrade/TestOMCancelPrepareRequest.java | 11 +++++++-
17 files changed, 111 insertions(+), 18 deletions(-)
diff --git
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ECKeyOutputStream.java
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ECKeyOutputStream.java
index 3751cf665f..5ca9890cbe 100644
---
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ECKeyOutputStream.java
+++
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ECKeyOutputStream.java
@@ -51,6 +51,7 @@ import
org.apache.hadoop.ozone.om.helpers.OmMultipartCommitUploadPartInfo;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
+import org.apache.hadoop.ozone.om.protocol.S3Auth;
import org.apache.ozone.erasurecode.rawcoder.RawErasureEncoder;
import org.apache.ozone.erasurecode.rawcoder.util.CodecUtil;
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
@@ -146,6 +147,10 @@ public final class ECKeyOutputStream extends
KeyOutputStream {
this.encoder = CodecUtil.createRawEncoderWithFallback(
builder.getReplicationConfig());
this.flushExecutor = Executors.newSingleThreadExecutor();
+ S3Auth s3Auth = builder.getS3CredentialsProvider().get();
+ ThreadLocal<S3Auth> s3CredentialsProvider =
+ builder.getS3CredentialsProvider();
+ flushExecutor.submit(() -> s3CredentialsProvider.set(s3Auth));
this.flushFuture = this.flushExecutor.submit(this::flushStripeFromQueue);
this.flushCheckpoint = new AtomicLong(0);
}
@@ -610,6 +615,8 @@ public final class ECKeyOutputStream extends
KeyOutputStream {
private ECReplicationConfig replicationConfig;
private ByteBufferPool byteBufferPool;
+ private ThreadLocal<S3Auth> s3CredentialsProvider;
+
@Override
public ECReplicationConfig getReplicationConfig() {
return replicationConfig;
@@ -631,6 +638,16 @@ public final class ECKeyOutputStream extends
KeyOutputStream {
return this;
}
+ public ECKeyOutputStream.Builder setS3CredentialsProvider(
+ ThreadLocal<S3Auth> s3CredentialsThreadLocal) {
+ this.s3CredentialsProvider = s3CredentialsThreadLocal;
+ return this;
+ }
+
+ public ThreadLocal<S3Auth> getS3CredentialsProvider() {
+ return s3CredentialsProvider;
+ }
+
@Override
public ECKeyOutputStream build() {
return new ECKeyOutputStream(this);
diff --git
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/protocol/ClientProtocol.java
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/protocol/ClientProtocol.java
index b04adb4ef3..3d51341ec0 100644
---
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/protocol/ClientProtocol.java
+++
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/protocol/ClientProtocol.java
@@ -1000,6 +1000,10 @@ public interface ClientProtocol {
*/
void clearThreadLocalS3Auth();
+ default ThreadLocal<S3Auth> getS3CredentialsProvider() {
+ return null;
+ }
+
/**
* Sets the owner of bucket.
* @param volumeName Name of the Volume
diff --git
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
index 984c6e70b1..183a62c1ea 100644
---
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
+++
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
@@ -2266,7 +2266,8 @@ public class RpcClient implements ClientProtocol {
HddsProtos.ReplicationType.EC) {
builder = new ECKeyOutputStream.Builder()
.setReplicationConfig((ECReplicationConfig) replicationConfig)
- .setByteBufferPool(byteBufferPool);
+ .setByteBufferPool(byteBufferPool)
+ .setS3CredentialsProvider(getS3CredentialsProvider());
} else {
builder = new KeyOutputStream.Builder()
.setReplicationConfig(replicationConfig);
@@ -2365,6 +2366,11 @@ public class RpcClient implements ClientProtocol {
ozoneManagerClient.clearThreadLocalS3Auth();
}
+ @Override
+ public ThreadLocal<S3Auth> getS3CredentialsProvider() {
+ return ozoneManagerClient.getS3CredentialsProvider();
+ }
+
@Override
public boolean setBucketOwner(String volumeName, String bucketName,
String owner) throws IOException {
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/exceptions/OMException.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/exceptions/OMException.java
index 3783be1079..94d0f5016d 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/exceptions/OMException.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/exceptions/OMException.java
@@ -262,6 +262,7 @@ public class OMException extends IOException {
INVALID_SNAPSHOT_ERROR,
CONTAINS_SNAPSHOT,
SSL_CONNECTION_FAILURE,
- RENAME_OPEN_FILE
+ RENAME_OPEN_FILE,
+ UNAUTHORIZED
}
}
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerClientProtocol.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerClientProtocol.java
index fca6c149d8..17f6c21562 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerClientProtocol.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerClientProtocol.java
@@ -35,4 +35,6 @@ public interface OzoneManagerClientProtocol extends
OzoneManagerProtocol {
void setThreadLocalS3Auth(S3Auth s3Auth);
S3Auth getThreadLocalS3Auth();
void clearThreadLocalS3Auth();
+
+ ThreadLocal<S3Auth> getS3CredentialsProvider();
}
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
index c53ea15617..a4820817c0 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
@@ -1901,6 +1901,12 @@ public final class
OzoneManagerProtocolClientSideTranslatorPB
public void clearThreadLocalS3Auth() {
this.threadLocalS3Auth.remove();
}
+
+ @Override
+ public ThreadLocal<S3Auth> getS3CredentialsProvider() {
+ return this.threadLocalS3Auth;
+ }
+
@Override
public S3Auth getThreadLocalS3Auth() {
return this.threadLocalS3Auth.get();
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAMetadataOnly.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAMetadataOnly.java
index 4ff87b0bcc..af4c5d1477 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAMetadataOnly.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAMetadataOnly.java
@@ -441,13 +441,23 @@ public class TestOzoneManagerHAMetadataOnly extends
TestOzoneManagerHA {
GenericTestUtils.LogCapturer logCapturer = GenericTestUtils.LogCapturer
.captureLogs(OMVolumeCreateRequest.getLogger());
+
+ OzoneManagerProtocolProtos.UserInfo userInfo =
+ OzoneManagerProtocolProtos.UserInfo.newBuilder()
+ .setUserName("user")
+ .setHostName("host")
+ .setRemoteAddress("0.0.0.0")
+ .build();
+
OMRequest omRequest =
OMRequest.newBuilder().setCreateVolumeRequest(
CreateVolumeRequest.newBuilder().setVolumeInfo(
VolumeInfo.newBuilder().setOwnerName(userName)
.setAdminName(userName).setVolume(volumeName).build())
.build()).setClientId(UUID.randomUUID().toString())
- .setCmdType(OzoneManagerProtocolProtos.Type.CreateVolume).build();
+ .setCmdType(OzoneManagerProtocolProtos.Type.CreateVolume)
+ .setUserInfo(userInfo)
+ .build();
RaftClientReply raftClientReply =
raftServer.submitClientRequest(RaftClientRequest.newBuilder()
diff --git
a/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
b/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
index fc4844302b..50e308d990 100644
--- a/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
+++ b/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
@@ -503,6 +503,7 @@ enum Status {
CONTAINS_SNAPSHOT = 88;
SSL_CONNECTION_FAILURE = 89;
RENAME_OPEN_FILE = 90;
+ UNAUTHORIZED = 91;
}
/**
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
index b30ff26de3..3396f6b975 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
@@ -4135,7 +4135,8 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
Pair<String, String> resolved;
if (isAclEnabled) {
resolved = resolveBucketLink(requested, new HashSet<>(),
- omClientRequest.createUGI(), omClientRequest.getRemoteAddress(),
+ omClientRequest.createUGIForApi(),
+ omClientRequest.getRemoteAddress(),
omClientRequest.getHostName());
} else {
resolved = resolveBucketLink(requested, new HashSet<>(),
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/OMClientRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/OMClientRequest.java
index e769717cf2..29c7372315 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/OMClientRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/OMClientRequest.java
@@ -49,6 +49,7 @@ import org.apache.hadoop.ozone.security.acl.OzoneObj;
import org.apache.hadoop.ozone.security.acl.OzoneObjInfo;
import org.apache.hadoop.ozone.security.acl.RequestContext;
import org.apache.hadoop.security.UserGroupInformation;
+import
org.apache.hadoop.security.authentication.client.AuthenticationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -59,6 +60,7 @@ import java.util.LinkedHashMap;
import java.util.Map;
import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.INVALID_KEY_NAME;
+import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.UNAUTHORIZED;
/**
* OMClientRequest provides methods which every write OM request should
@@ -262,7 +264,7 @@ public abstract class OMClientRequest implements
RequestAuditor {
obj.getVolumeName(),
obj.getBucketName(), contextBuilder.getAclRights(),
obj.getResourceType());
- UserGroupInformation currentUser = createUGI();
+ UserGroupInformation currentUser = createUGIForApi();
contextBuilder.setClientUgi(currentUser);
contextBuilder.setIp(getRemoteAddress());
contextBuilder.setHost(getHostName());
@@ -316,7 +318,7 @@ public abstract class OMClientRequest implements
RequestAuditor {
String vol, String bucket, String key, String volOwner)
throws IOException {
ozoneManager.checkAcls(resType, storeType, aclType, vol, bucket, key,
- createUGI(), getRemoteAddress(), getHostName(), true,
+ createUGIForApi(), getRemoteAddress(), getHostName(), true,
volOwner);
}
@@ -345,7 +347,7 @@ public abstract class OMClientRequest implements
RequestAuditor {
ozoneManager.getOmMetadataReader()) {
OzoneAclUtils.checkAllAcls((OmMetadataReader) rcMetadataReader.get(),
resType, storeType, aclType,
- vol, bucket, key, volOwner, bucketOwner, createUGI(),
+ vol, bucket, key, volOwner, bucketOwner, createUGIForApi(),
getRemoteAddress(), getHostName());
}
}
@@ -356,7 +358,7 @@ public abstract class OMClientRequest implements
RequestAuditor {
* @return UserGroupInformation.
*/
@VisibleForTesting
- public UserGroupInformation createUGI() {
+ public UserGroupInformation createUGI() throws AuthenticationException {
if (userGroupInformation != null) {
return userGroupInformation;
@@ -367,10 +369,26 @@ public abstract class OMClientRequest implements
RequestAuditor {
omRequest.getUserInfo().getUserName());
return userGroupInformation;
} else {
- // This will never happen, as for every OM request preExecute, we
- // should add userInfo.
- return null;
+ throw new AuthenticationException("User info is not set."
+ + " Please check client auth credentials");
+ }
+ }
+
+ /**
+ * Crete a UGI from request and wrap the AuthenticationException
+ * to OMException in case of empty credentials.
+ * @return UserGroupInformation
+ * @throws OMException exception about an empty user credential
+ * (unauthorized request)
+ */
+ public UserGroupInformation createUGIForApi() throws OMException {
+ UserGroupInformation ugi;
+ try {
+ ugi = createUGI();
+ } catch (AuthenticationException e) {
+ throw new OMException(e, UNAUTHORIZED);
}
+ return ugi;
}
/**
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java
index dbbd6c7ee4..5b4a1bf6fa 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java
@@ -235,7 +235,7 @@ public class OMBucketSetPropertyRequest extends
OMClientRequest {
OzoneManager ozoneManager, String volumeName, String bucketName)
throws IOException {
if (ozoneManager.getAccessAuthorizer().isNative()) {
- UserGroupInformation ugi = createUGI();
+ UserGroupInformation ugi = createUGIForApi();
String bucketOwner = ozoneManager.getBucketOwner(volumeName, bucketName,
IAccessAuthorizer.ACLType.READ, OzoneObj.ResourceType.BUCKET);
if (!ozoneManager.isAdmin(ugi) &&
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotCreateRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotCreateRequest.java
index 9900ca9340..f61ddcc419 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotCreateRequest.java
@@ -105,7 +105,7 @@ public class OMSnapshotCreateRequest extends
OMClientRequest {
// Verify name
OmUtils.validateSnapshotName(snapshotName);
- UserGroupInformation ugi = createUGI();
+ UserGroupInformation ugi = createUGIForApi();
String bucketOwner = ozoneManager.getBucketOwner(volumeName, bucketName,
IAccessAuthorizer.ACLType.READ, OzoneObj.ResourceType.BUCKET);
if (!ozoneManager.isAdmin(ugi) &&
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotDeleteRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotDeleteRequest.java
index 04b405192a..e2af6ffc5b 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotDeleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotDeleteRequest.java
@@ -83,7 +83,7 @@ public class OMSnapshotDeleteRequest extends OMClientRequest {
String bucketName = deleteSnapshotRequest.getBucketName();
// Permission check
- UserGroupInformation ugi = createUGI();
+ UserGroupInformation ugi = createUGIForApi();
String bucketOwner = ozoneManager.getBucketOwner(volumeName, bucketName,
IAccessAuthorizer.ACLType.READ, OzoneObj.ResourceType.BUCKET);
if (!ozoneManager.isAdmin(ugi) &&
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMCancelPrepareRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMCancelPrepareRequest.java
index a0f06934b9..760f1b88d3 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMCancelPrepareRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMCancelPrepareRequest.java
@@ -31,6 +31,7 @@ import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRespo
import static
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type;
+import org.apache.hadoop.security.UserGroupInformation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,9 +63,10 @@ public class OMCancelPrepareRequest extends OMClientRequest {
OMClientResponse response = null;
try {
- if (ozoneManager.getAclsEnabled() && !ozoneManager.isAdmin(createUGI()))
{
+ UserGroupInformation ugi = createUGIForApi();
+ if (ozoneManager.getAclsEnabled() && !ozoneManager.isAdmin(ugi)) {
throw new OMException("Access denied for user "
- + createUGI() + ". " +
+ + ugi + ". " +
"Superuser privilege is required to cancel ozone manager " +
"preparation.",
OMException.ResultCodes.ACCESS_DENIED);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMFinalizeUpgradeRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMFinalizeUpgradeRequest.java
index 17ce2b444f..c9a9e20ccd 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMFinalizeUpgradeRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMFinalizeUpgradeRequest.java
@@ -67,7 +67,7 @@ public class OMFinalizeUpgradeRequest extends OMClientRequest
{
try {
if (ozoneManager.getAclsEnabled()) {
- final UserGroupInformation ugi = createUGI();
+ UserGroupInformation ugi = createUGIForApi();
if (!ozoneManager.isAdmin(ugi)) {
throw new OMException("Access denied for user " + ugi + ". "
+ "Superuser privilege is required to finalize upgrade.",
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
index f3ecd43922..4c64b6b645 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
@@ -1275,10 +1275,18 @@ public final class OMRequestTestUtils {
.setSnapshotName(snapshotName)
.build();
+ OzoneManagerProtocolProtos.UserInfo userInfo =
+ OzoneManagerProtocolProtos.UserInfo.newBuilder()
+ .setUserName("user")
+ .setHostName("host")
+ .setRemoteAddress("remote-address")
+ .build();
+
return OMRequest.newBuilder()
.setCreateSnapshotRequest(createSnapshotRequest)
.setCmdType(Type.CreateSnapshot)
.setClientId(UUID.randomUUID().toString())
+ .setUserInfo(userInfo)
.build();
}
@@ -1298,10 +1306,18 @@ public final class OMRequestTestUtils {
.setDeletionTime(Time.now())
.build();
+ OzoneManagerProtocolProtos.UserInfo userInfo =
+ OzoneManagerProtocolProtos.UserInfo.newBuilder()
+ .setUserName("user")
+ .setHostName("host")
+ .setRemoteAddress("0.0.0.0")
+ .build();
+
return OMRequest.newBuilder()
.setDeleteSnapshotRequest(deleteSnapshotRequest)
.setCmdType(Type.DeleteSnapshot)
.setClientId(UUID.randomUUID().toString())
+ .setUserInfo(userInfo)
.build();
}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/upgrade/TestOMCancelPrepareRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/upgrade/TestOMCancelPrepareRequest.java
index 5913814eb8..cb8f8ad7d6 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/upgrade/TestOMCancelPrepareRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/upgrade/TestOMCancelPrepareRequest.java
@@ -102,9 +102,18 @@ public class TestOMCancelPrepareRequest extends
TestOMKeyRequest {
OzoneManagerProtocolProtos.CancelPrepareRequest cancelPrepareRequest =
OzoneManagerProtocolProtos.CancelPrepareRequest.newBuilder().build();
+ OzoneManagerProtocolProtos.UserInfo userInfo =
+ OzoneManagerProtocolProtos.UserInfo.newBuilder()
+ .setUserName("user")
+ .setHostName("host")
+ .setRemoteAddress("0.0.0.0")
+ .build();
+
return OMRequest.newBuilder()
.setCancelPrepareRequest(cancelPrepareRequest)
.setCmdType(OzoneManagerProtocolProtos.Type.CancelPrepare)
- .setClientId(UUID.randomUUID().toString()).build();
+ .setClientId(UUID.randomUUID().toString())
+ .setUserInfo(userInfo)
+ .build();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]