|
@@ -25,6 +25,7 @@ import org.apache.hadoop.hdds.HddsUtils;
|
|
import org.apache.hadoop.hdds.cli.GenericCli;
|
|
import org.apache.hadoop.hdds.cli.GenericCli;
|
|
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
|
|
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
|
|
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
|
|
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
|
|
|
|
+import org.apache.hadoop.hdds.protocol.SCMSecurityProtocol;
|
|
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
|
|
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
|
|
import org.apache.hadoop.hdds.scm.XceiverClientManager;
|
|
import org.apache.hadoop.hdds.scm.XceiverClientManager;
|
|
import org.apache.hadoop.hdds.scm.cli.container.ContainerCommands;
|
|
import org.apache.hadoop.hdds.scm.cli.container.ContainerCommands;
|
|
@@ -36,17 +37,20 @@ import org.apache.hadoop.hdds.scm.protocol.StorageContainerLocationProtocol;
|
|
import org.apache.hadoop.hdds.scm.protocolPB
|
|
import org.apache.hadoop.hdds.scm.protocolPB
|
|
.StorageContainerLocationProtocolClientSideTranslatorPB;
|
|
.StorageContainerLocationProtocolClientSideTranslatorPB;
|
|
import org.apache.hadoop.hdds.scm.protocolPB.StorageContainerLocationProtocolPB;
|
|
import org.apache.hadoop.hdds.scm.protocolPB.StorageContainerLocationProtocolPB;
|
|
|
|
+import org.apache.hadoop.hdds.security.x509.SecurityConfig;
|
|
import org.apache.hadoop.hdds.tracing.TracingUtil;
|
|
import org.apache.hadoop.hdds.tracing.TracingUtil;
|
|
import org.apache.hadoop.ipc.Client;
|
|
import org.apache.hadoop.ipc.Client;
|
|
import org.apache.hadoop.ipc.ProtobufRpcEngine;
|
|
import org.apache.hadoop.ipc.ProtobufRpcEngine;
|
|
import org.apache.hadoop.ipc.RPC;
|
|
import org.apache.hadoop.ipc.RPC;
|
|
import org.apache.hadoop.net.NetUtils;
|
|
import org.apache.hadoop.net.NetUtils;
|
|
import org.apache.hadoop.ozone.OzoneConsts;
|
|
import org.apache.hadoop.ozone.OzoneConsts;
|
|
|
|
+import org.apache.hadoop.ozone.OzoneSecurityUtil;
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
import org.apache.hadoop.util.NativeCodeLoader;
|
|
import org.apache.hadoop.util.NativeCodeLoader;
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import static org.apache.hadoop.hdds.HddsUtils.getScmAddressForClients;
|
|
import static org.apache.hadoop.hdds.HddsUtils.getScmAddressForClients;
|
|
|
|
+import static org.apache.hadoop.hdds.HddsUtils.getScmSecurityClient;
|
|
import static org.apache.hadoop.hdds.scm.ScmConfigKeys
|
|
import static org.apache.hadoop.hdds.scm.ScmConfigKeys
|
|
.OZONE_SCM_CLIENT_ADDRESS_KEY;
|
|
.OZONE_SCM_CLIENT_ADDRESS_KEY;
|
|
import static org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE;
|
|
import static org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE;
|
|
@@ -136,8 +140,21 @@ public class SCMCLI extends GenericCli {
|
|
NetUtils.getDefaultSocketFactory(ozoneConf),
|
|
NetUtils.getDefaultSocketFactory(ozoneConf),
|
|
Client.getRpcTimeout(ozoneConf))),
|
|
Client.getRpcTimeout(ozoneConf))),
|
|
StorageContainerLocationProtocol.class, ozoneConf);
|
|
StorageContainerLocationProtocol.class, ozoneConf);
|
|
- return new ContainerOperationClient(
|
|
|
|
- client, new XceiverClientManager(ozoneConf));
|
|
|
|
|
|
+
|
|
|
|
+ XceiverClientManager xceiverClientManager = null;
|
|
|
|
+ if (OzoneSecurityUtil.isSecurityEnabled(ozoneConf)) {
|
|
|
|
+ SecurityConfig securityConfig = new SecurityConfig(ozoneConf);
|
|
|
|
+ SCMSecurityProtocol scmSecurityProtocolClient = getScmSecurityClient(
|
|
|
|
+ (OzoneConfiguration) securityConfig.getConfiguration());
|
|
|
|
+ String caCertificate =
|
|
|
|
+ scmSecurityProtocolClient.getCACertificate();
|
|
|
|
+ xceiverClientManager = new XceiverClientManager(ozoneConf,
|
|
|
|
+ OzoneConfiguration.of(ozoneConf).getObject(XceiverClientManager
|
|
|
|
+ .ScmClientConfig.class), caCertificate);
|
|
|
|
+ } else {
|
|
|
|
+ xceiverClientManager = new XceiverClientManager(ozoneConf);
|
|
|
|
+ }
|
|
|
|
+ return new ContainerOperationClient(client, xceiverClientManager);
|
|
}
|
|
}
|
|
|
|
|
|
public void checkContainerExists(ScmClient scmClient, long containerId)
|
|
public void checkContainerExists(ScmClient scmClient, long containerId)
|