|
25 | 25 | import org.apache.hadoop.hdds.cli.GenericCli; |
26 | 26 | import org.apache.hadoop.hdds.cli.HddsVersionProvider; |
27 | 27 | import org.apache.hadoop.hdds.conf.OzoneConfiguration; |
| 28 | +import org.apache.hadoop.hdds.protocol.SCMSecurityProtocol; |
28 | 29 | import org.apache.hadoop.hdds.scm.ScmConfigKeys; |
29 | 30 | import org.apache.hadoop.hdds.scm.XceiverClientManager; |
30 | 31 | import org.apache.hadoop.hdds.scm.cli.container.ContainerCommands; |
|
36 | 37 | import org.apache.hadoop.hdds.scm.protocolPB |
37 | 38 | .StorageContainerLocationProtocolClientSideTranslatorPB; |
38 | 39 | import org.apache.hadoop.hdds.scm.protocolPB.StorageContainerLocationProtocolPB; |
| 40 | +import org.apache.hadoop.hdds.security.x509.SecurityConfig; |
39 | 41 | import org.apache.hadoop.hdds.tracing.TracingUtil; |
40 | 42 | import org.apache.hadoop.ipc.Client; |
41 | 43 | import org.apache.hadoop.ipc.ProtobufRpcEngine; |
42 | 44 | import org.apache.hadoop.ipc.RPC; |
43 | 45 | import org.apache.hadoop.net.NetUtils; |
44 | 46 | import org.apache.hadoop.ozone.OzoneConsts; |
| 47 | +import org.apache.hadoop.ozone.OzoneSecurityUtil; |
45 | 48 | import org.apache.hadoop.security.UserGroupInformation; |
46 | 49 | import org.apache.hadoop.util.NativeCodeLoader; |
47 | 50 |
|
48 | 51 | import org.apache.commons.lang3.StringUtils; |
49 | 52 | import static org.apache.hadoop.hdds.HddsUtils.getScmAddressForClients; |
| 53 | +import static org.apache.hadoop.hdds.HddsUtils.getScmSecurityClient; |
50 | 54 | import static org.apache.hadoop.hdds.scm.ScmConfigKeys |
51 | 55 | .OZONE_SCM_CLIENT_ADDRESS_KEY; |
52 | 56 | import static org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE; |
@@ -136,8 +140,21 @@ public ScmClient createScmClient() |
136 | 140 | NetUtils.getDefaultSocketFactory(ozoneConf), |
137 | 141 | Client.getRpcTimeout(ozoneConf))), |
138 | 142 | StorageContainerLocationProtocol.class, ozoneConf); |
139 | | - return new ContainerOperationClient( |
140 | | - client, new XceiverClientManager(ozoneConf)); |
| 143 | + |
| 144 | + XceiverClientManager xceiverClientManager = null; |
| 145 | + if (OzoneSecurityUtil.isSecurityEnabled(ozoneConf)) { |
| 146 | + SecurityConfig securityConfig = new SecurityConfig(ozoneConf); |
| 147 | + SCMSecurityProtocol scmSecurityProtocolClient = getScmSecurityClient( |
| 148 | + (OzoneConfiguration) securityConfig.getConfiguration()); |
| 149 | + String caCertificate = |
| 150 | + scmSecurityProtocolClient.getCACertificate(); |
| 151 | + xceiverClientManager = new XceiverClientManager(ozoneConf, |
| 152 | + OzoneConfiguration.of(ozoneConf).getObject(XceiverClientManager |
| 153 | + .ScmClientConfig.class), caCertificate); |
| 154 | + } else { |
| 155 | + xceiverClientManager = new XceiverClientManager(ozoneConf); |
| 156 | + } |
| 157 | + return new ContainerOperationClient(client, xceiverClientManager); |
141 | 158 | } |
142 | 159 |
|
143 | 160 | public void checkContainerExists(ScmClient scmClient, long containerId) |
|
0 commit comments