This is an automated email from the ASF dual-hosted git repository.

elek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 7f6f813  HDDS-3621. Separate client/server/admin proto files of HDDS 
to separated subprojects  (#949)
7f6f813 is described below

commit 7f6f81398518726afe2f67daa3f2a9e9efd3d8ff
Author: Elek, Márton <[email protected]>
AuthorDate: Fri Jun 5 10:12:46 2020 +0200

    HDDS-3621. Separate client/server/admin proto files of HDDS to separated 
subprojects  (#949)
---
 .../common/dev-support/findbugsExcludeFile.xml     |    3 -
 hadoop-hdds/common/pom.xml                         |   84 +-
 .../dev-support/findbugsExcludeFile.xml            |    3 -
 hadoop-hdds/container-service/pom.xml              |   30 -
 .../states/endpoint/HeartbeatEndpointTask.java     |    5 +-
 hadoop-hdds/framework/pom.xml                      |    8 +
 .../freon/FakeScmBlockLocationProtocolClient.java  |    0
 .../FakeScmContainerLocationProtocolClient.java    |    0
 .../org/apache/hadoop/hdds/freon/package-info.java |   24 +
 .../common/helpers/DeleteBlockResult.java          |    0
 .../scm/container/common/helpers/package-info.java |   22 +
 .../scm/protocol/ScmBlockLocationProtocol.java     |    0
 .../hadoop/hdds/scm/protocol/package-info.java     |   19 +
 ...lockLocationProtocolClientSideTranslatorPB.java |    0
 .../scm/protocolPB/ScmBlockLocationProtocolPB.java |    0
 ...inerLocationProtocolClientSideTranslatorPB.java |    0
 .../StorageContainerLocationProtocolPB.java        |    0
 .../hadoop/hdds/scm/protocolPB/package-info.java}  |   21 +-
 .../org/apache/hadoop/ozone/common/BlockGroup.java |    0
 .../ozone/common/DeleteBlockGroupResult.java       |    0
 .../apache/hadoop/ozone/common/package-info.java   |   18 +
 .../exceptions/TestSCMExceptionResultCodes.java    |    0
 .../dev-support/findbugsExcludeFile.xml            |    3 +-
 hadoop-hdds/interface-admin/pom.xml                |   82 +
 .../src/main/proto/ScmAdminProtocol.proto}         |    0
 .../interface-admin/src/main/proto/proto.lock      |  895 ++++++++++
 .../dev-support/findbugsExcludeFile.xml            |    6 +-
 hadoop-hdds/interface-client/pom.xml               |  135 ++
 .../src/main/proto/DatanodeClientProtocol.proto}   |    0
 .../src/main/proto/hdds.proto                      |    0
 .../src/main/proto/proto.lock                      | 1748 +-------------------
 .../dev-support/findbugsExcludeFile.xml            |    3 +-
 hadoop-hdds/interface-server/pom.xml               |   82 +
 .../ScmServerDatanodeHeartbeatProtocol.proto}      |    0
 .../src/main/proto/ScmServerProtocol.proto}        |    0
 .../main/proto/ScmServerSecurityProtocol.proto}    |    0
 .../src/main/proto/proto.lock                      |  714 +++++++-
 hadoop-hdds/pom.xml                                |   21 +
 .../common/dev-support/findbugsExcludeFile.xml     |    3 +
 hadoop-ozone/common/pom.xml                        |    7 +-
 .../common/src/main/proto/Security.proto           |    0
 hadoop-ozone/common/src/main/proto/proto.lock      |  143 ++
 hadoop-ozone/ozone-manager/pom.xml                 |    6 +
 hadoop-ozone/pom.xml                               |    5 +
 44 files changed, 2193 insertions(+), 1897 deletions(-)

diff --git a/hadoop-hdds/common/dev-support/findbugsExcludeFile.xml 
b/hadoop-hdds/common/dev-support/findbugsExcludeFile.xml
index 4441b69..78da070 100644
--- a/hadoop-hdds/common/dev-support/findbugsExcludeFile.xml
+++ b/hadoop-hdds/common/dev-support/findbugsExcludeFile.xml
@@ -19,9 +19,6 @@
     <Package name="org.apache.hadoop.hdds.protocol.proto"/>
   </Match>
   <Match>
-    <Package name="org.apache.hadoop.hdds.protocol.datanode.proto"/>
-  </Match>
-  <Match>
     <Class name="org.apache.hadoop.hdds.cli.GenericCli"></Class>
     <Bug pattern="DM_EXIT" />
   </Match>
diff --git a/hadoop-hdds/common/pom.xml b/hadoop-hdds/common/pom.xml
index 4aba1ab..1f0b3e6 100644
--- a/hadoop-hdds/common/pom.xml
+++ b/hadoop-hdds/common/pom.xml
@@ -179,8 +179,10 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd";>
       <artifactId>mockito-core</artifactId>
       <scope>test</scope>
     </dependency>
-
-
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdds-interface-client</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
@@ -209,84 +211,6 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd";>
     </extensions>
     <plugins>
       <plugin>
-        <groupId>com.salesforce.servicelibs</groupId>
-        <artifactId>proto-backwards-compatibility</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.xolstice.maven.plugins</groupId>
-        <artifactId>protobuf-maven-plugin</artifactId>
-        <version>${protobuf-maven-plugin.version}</version>
-        <extensions>true</extensions>
-        <executions>
-          <execution>
-            <id>compile-protoc-3</id>
-            <goals>
-              <goal>compile</goal>
-              <goal>test-compile</goal>
-              <goal>compile-custom</goal>
-              <goal>test-compile-custom</goal>
-            </goals>
-            <configuration>
-              <protocArtifact>
-                
com.google.protobuf:protoc:${protobuf-compile.version}:exe:${os.detected.classifier}
-              </protocArtifact>
-              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
-              <includes>
-                <include>DatanodeContainerProtocol.proto</include>
-              </includes>
-              <outputDirectory>target/generated-sources/java</outputDirectory>
-              <clearOutputDirectory>false</clearOutputDirectory>
-              <pluginId>grpc-java</pluginId>
-              <pluginArtifact>
-                
io.grpc:protoc-gen-grpc-java:${grpc-compile.version}:exe:${os.detected.classifier}
-              </pluginArtifact>
-            </configuration>
-          </execution>
-          <execution>
-            <id>compile-protoc-2</id>
-            <goals>
-              <goal>compile</goal>
-              <goal>test-compile</goal>
-            </goals>
-            <configuration>
-              <protocArtifact>
-                
com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
-              </protocArtifact>
-              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
-              <includes>
-                <include>StorageContainerLocationProtocol.proto</include>
-                <include>hdds.proto</include>
-                <include>ScmBlockLocationProtocol.proto</include>
-                <include>SCMSecurityProtocol.proto</include>
-              </includes>
-              <outputDirectory>target/generated-sources/java</outputDirectory>
-              <clearOutputDirectory>false</clearOutputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-antrun-plugin</artifactId>
-        <executions>
-          <execution>
-            <phase>generate-sources</phase>
-            <configuration>
-              <tasks>
-                <replace token="com.google.protobuf" 
value="org.apache.ratis.thirdparty.com.google.protobuf"
-                  
dir="target/generated-sources/java/org/apache/hadoop/hdds/protocol/datanode/proto">
-                </replace>
-                <replace token="io.grpc" 
value="org.apache.ratis.thirdparty.io.grpc"
-                  
dir="target/generated-sources/java/org/apache/hadoop/hdds/protocol/datanode/proto">
-                </replace>
-              </tasks>
-            </configuration>
-            <goals>
-              <goal>run</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-maven-plugins</artifactId>
         <executions>
diff --git a/hadoop-hdds/container-service/dev-support/findbugsExcludeFile.xml 
b/hadoop-hdds/container-service/dev-support/findbugsExcludeFile.xml
index 18128e8..3359383 100644
--- a/hadoop-hdds/container-service/dev-support/findbugsExcludeFile.xml
+++ b/hadoop-hdds/container-service/dev-support/findbugsExcludeFile.xml
@@ -16,9 +16,6 @@
 -->
 <FindBugsFilter>
   <Match>
-    <Package name="org.apache.hadoop.hdds.protocol.proto"/>
-  </Match>
-  <Match>
     <Class 
name="org.apache.hadoop.ozone.container.common.volume.AbstractFuture" />
     <Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
   </Match>
diff --git a/hadoop-hdds/container-service/pom.xml 
b/hadoop-hdds/container-service/pom.xml
index c948db5..d10d2a3 100644
--- a/hadoop-hdds/container-service/pom.xml
+++ b/hadoop-hdds/container-service/pom.xml
@@ -101,36 +101,6 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd";>
   <build>
     <plugins>
       <plugin>
-        <groupId>com.salesforce.servicelibs</groupId>
-        <artifactId>proto-backwards-compatibility</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.xolstice.maven.plugins</groupId>
-        <artifactId>protobuf-maven-plugin</artifactId>
-        <version>${protobuf-maven-plugin.version}</version>
-        <extensions>true</extensions>
-        <executions>
-          <execution>
-            <id>compile-protoc</id>
-            <goals>
-              <goal>compile</goal>
-              <goal>test-compile</goal>
-            </goals>
-            <configuration>
-              <additionalProtoPathElements>
-                <param>
-                  ${basedir}/../../hadoop-hdds/common/src/main/proto/
-                </param>
-                <param>${basedir}/src/main/proto</param>
-              </additionalProtoPathElements>
-              <protocArtifact>
-                
com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
-              </protocArtifact>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
         <configuration>
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
index 494ccd9..da2034d 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
@@ -148,9 +148,8 @@ public class HeartbeatEndpointTask
       rpcEndpoint.zeroMissedCount();
     } catch (IOException ex) {
       // put back the reports which failed to be sent
-      if (requestBuilder != null) {
-        putBackReports(requestBuilder);
-      }
+      putBackReports(requestBuilder);
+
       rpcEndpoint.logIfNeeded(ex);
     } finally {
       rpcEndpoint.unlock();
diff --git a/hadoop-hdds/framework/pom.xml b/hadoop-hdds/framework/pom.xml
index 0333d67..4b541b0 100644
--- a/hadoop-hdds/framework/pom.xml
+++ b/hadoop-hdds/framework/pom.xml
@@ -32,6 +32,14 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd";>
   <dependencies>
     <dependency>
       <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdds-interface-server</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdds-interface-admin</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-hdds-test-utils</artifactId>
       <scope>test</scope>
     </dependency>
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/freon/FakeScmBlockLocationProtocolClient.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/freon/FakeScmBlockLocationProtocolClient.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/freon/FakeScmBlockLocationProtocolClient.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/freon/FakeScmBlockLocationProtocolClient.java
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/freon/FakeScmContainerLocationProtocolClient.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/freon/FakeScmContainerLocationProtocolClient.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/freon/FakeScmContainerLocationProtocolClient.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/freon/FakeScmContainerLocationProtocolClient.java
diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/freon/package-info.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/freon/package-info.java
new file mode 100644
index 0000000..381c811
--- /dev/null
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/freon/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * <p>
+ * Freon related helper classes used for load testing.
+ */
+
+/**
+ * Freon related helper classes used for load testing.
+ */
+package org.apache.hadoop.hdds.freon;
\ No newline at end of file
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/DeleteBlockResult.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/DeleteBlockResult.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/DeleteBlockResult.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/DeleteBlockResult.java
diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/package-info.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/package-info.java
new file mode 100644
index 0000000..ffe0d3d
--- /dev/null
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/package-info.java
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hdds.scm.container.common.helpers;
+/**
+ Contains protocol buffer helper classes and utilites used in
+ impl.
+ **/
\ No newline at end of file
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocol.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocol.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocol.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocol.java
diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/package-info.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/package-info.java
new file mode 100644
index 0000000..b56a749
--- /dev/null
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/package-info.java
@@ -0,0 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hdds.scm.protocol;
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolClientSideTranslatorPB.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolClientSideTranslatorPB.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolClientSideTranslatorPB.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolClientSideTranslatorPB.java
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolPB.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolPB.java
similarity index 100%
copy from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolPB.java
copy to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolPB.java
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolPB.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolPB.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolPB.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolPB.java
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolPB.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/package-info.java
similarity index 51%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolPB.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/package-info.java
index 09fd95c..652ae60 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolPB.java
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/package-info.java
@@ -15,25 +15,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hadoop.hdds.scm.protocolPB;
 
-import org.apache.hadoop.hdds.annotation.InterfaceAudience;
-import org.apache.hadoop.hdds.protocol.proto.ScmBlockLocationProtocolProtos
-    .ScmBlockLocationProtocolService;
-import org.apache.hadoop.hdds.scm.ScmConfig;
-import org.apache.hadoop.ipc.ProtocolInfo;
-import org.apache.hadoop.security.KerberosInfo;
+package org.apache.hadoop.hdds.scm.protocolPB;
 
 /**
- * Protocol used from an HDFS node to StorageContainerManager.  This extends 
the
- * Protocol Buffers service interface to add Hadoop-specific annotations.
+ * This package contains classes for the client of the storage container
+ * protocol.
  */
-@ProtocolInfo(protocolName =
-    "org.apache.hadoop.hdds.scm.protocol.ScmBlockLocationProtocol",
-    protocolVersion = 1)
[email protected]
-@KerberosInfo(
-    serverPrincipal = ScmConfig.ConfigStrings.HDDS_SCM_KERBEROS_PRINCIPAL_KEY)
-public interface ScmBlockLocationProtocolPB
-    extends ScmBlockLocationProtocolService.BlockingInterface {
-}
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/common/BlockGroup.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/common/BlockGroup.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/common/BlockGroup.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/common/BlockGroup.java
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/common/DeleteBlockGroupResult.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/common/DeleteBlockGroupResult.java
similarity index 100%
rename from 
hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/common/DeleteBlockGroupResult.java
rename to 
hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/common/DeleteBlockGroupResult.java
diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/common/package-info.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/common/package-info.java
new file mode 100644
index 0000000..6517e58
--- /dev/null
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/common/package-info.java
@@ -0,0 +1,18 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.hadoop.ozone.common;
\ No newline at end of file
diff --git 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/exceptions/TestSCMExceptionResultCodes.java
 
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/scm/exceptions/TestSCMExceptionResultCodes.java
similarity index 100%
rename from 
hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/exceptions/TestSCMExceptionResultCodes.java
rename to 
hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/scm/exceptions/TestSCMExceptionResultCodes.java
diff --git a/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml 
b/hadoop-hdds/interface-admin/dev-support/findbugsExcludeFile.xml
similarity index 89%
copy from hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
copy to hadoop-hdds/interface-admin/dev-support/findbugsExcludeFile.xml
index df58f36..3571a89 100644
--- a/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
+++ b/hadoop-hdds/interface-admin/dev-support/findbugsExcludeFile.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -17,6 +16,6 @@
 -->
 <FindBugsFilter>
   <Match>
-    <Package name="org.apache.hadoop.ozone.protocol.proto"/>
+    <Package name="org.apache.hadoop.hdds.protocol.proto"/>
   </Match>
 </FindBugsFilter>
diff --git a/hadoop-hdds/interface-admin/pom.xml 
b/hadoop-hdds/interface-admin/pom.xml
new file mode 100644
index 0000000..04965aa
--- /dev/null
+++ b/hadoop-hdds/interface-admin/pom.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.hadoop</groupId>
+    <artifactId>hadoop-hdds</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>hadoop-hdds-interface-admin</artifactId>
+  <version>0.6.0-SNAPSHOT</version>
+  <description>Apache Hadoop Distributed Data Store Admin interface
+  </description>
+  <name>Apache Hadoop HDDS Admin Interface</name>
+  <packaging>jar</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+    </dependency>
+    <!-- required to use common hdds.proto -->
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdds-interface-client</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>com.salesforce.servicelibs</groupId>
+        <artifactId>proto-backwards-compatibility</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.xolstice.maven.plugins</groupId>
+        <artifactId>protobuf-maven-plugin</artifactId>
+        <version>${protobuf-maven-plugin.version}</version>
+        <extensions>true</extensions>
+        <executions>
+          <execution>
+            <id>compile-protoc-2</id>
+            <goals>
+              <goal>compile</goal>
+              <goal>test-compile</goal>
+            </goals>
+            <configuration>
+              <protocArtifact>
+                
com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
+              </protocArtifact>
+              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
+              <outputDirectory>target/generated-sources/java</outputDirectory>
+              <clearOutputDirectory>false</clearOutputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <configuration>
+          
<excludeFilterFile>${basedir}/dev-support/findbugsExcludeFile.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+
+    </plugins>
+  </build>
+</project>
diff --git 
a/hadoop-hdds/common/src/main/proto/StorageContainerLocationProtocol.proto 
b/hadoop-hdds/interface-admin/src/main/proto/ScmAdminProtocol.proto
similarity index 100%
rename from 
hadoop-hdds/common/src/main/proto/StorageContainerLocationProtocol.proto
rename to hadoop-hdds/interface-admin/src/main/proto/ScmAdminProtocol.proto
diff --git a/hadoop-hdds/interface-admin/src/main/proto/proto.lock 
b/hadoop-hdds/interface-admin/src/main/proto/proto.lock
new file mode 100644
index 0000000..7b03859
--- /dev/null
+++ b/hadoop-hdds/interface-admin/src/main/proto/proto.lock
@@ -0,0 +1,895 @@
+{
+  "definitions": [
+    {
+      "protopath": "ScmAdminProtocol.proto",
+      "def": {
+        "enums": [
+          {
+            "name": "ScmContainerLocationResponse.Status",
+            "enum_fields": [
+              {
+                "name": "OK",
+                "integer": 1
+              },
+              {
+                "name": "CONTAINER_ALREADY_EXISTS",
+                "integer": 2
+              },
+              {
+                "name": "CONTAINER_IS_MISSING",
+                "integer": 3
+              }
+            ]
+          },
+          {
+            "name": "Type",
+            "enum_fields": [
+              {
+                "name": "AllocateContainer",
+                "integer": 1
+              },
+              {
+                "name": "GetContainer",
+                "integer": 2
+              },
+              {
+                "name": "GetContainerWithPipeline",
+                "integer": 3
+              },
+              {
+                "name": "ListContainer",
+                "integer": 4
+              },
+              {
+                "name": "DeleteContainer",
+                "integer": 5
+              },
+              {
+                "name": "QueryNode",
+                "integer": 6
+              },
+              {
+                "name": "CloseContainer",
+                "integer": 7
+              },
+              {
+                "name": "AllocatePipeline",
+                "integer": 8
+              },
+              {
+                "name": "ListPipelines",
+                "integer": 9
+              },
+              {
+                "name": "ActivatePipeline",
+                "integer": 10
+              },
+              {
+                "name": "DeactivatePipeline",
+                "integer": 11
+              },
+              {
+                "name": "ClosePipeline",
+                "integer": 12
+              },
+              {
+                "name": "GetScmInfo",
+                "integer": 13
+              },
+              {
+                "name": "InSafeMode",
+                "integer": 14
+              },
+              {
+                "name": "ForceExitSafeMode",
+                "integer": 15
+              },
+              {
+                "name": "StartReplicationManager",
+                "integer": 16
+              },
+              {
+                "name": "StopReplicationManager",
+                "integer": 17
+              },
+              {
+                "name": "GetReplicationManagerStatus",
+                "integer": 18
+              },
+              {
+                "name": "GetPipeline",
+                "integer": 19
+              },
+              {
+                "name": "GetContainerWithPipelineBatch",
+                "integer": 20
+              }
+            ]
+          },
+          {
+            "name": "ContainerResponseProto.Error",
+            "enum_fields": [
+              {
+                "name": "success",
+                "integer": 1
+              },
+              {
+                "name": "errorContainerAlreadyExists",
+                "integer": 2
+              },
+              {
+                "name": "errorContainerMissing",
+                "integer": 3
+              }
+            ]
+          },
+          {
+            "name": "PipelineResponseProto.Error",
+            "enum_fields": [
+              {
+                "name": "success",
+                "integer": 1
+              },
+              {
+                "name": "errorPipelineAlreadyExists",
+                "integer": 2
+              }
+            ]
+          }
+        ],
+        "messages": [
+          {
+            "name": "ScmContainerLocationRequest",
+            "fields": [
+              {
+                "id": 1,
+                "name": "cmdType",
+                "type": "Type"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              },
+              {
+                "id": 6,
+                "name": "containerRequest",
+                "type": "ContainerRequestProto"
+              },
+              {
+                "id": 7,
+                "name": "getContainerRequest",
+                "type": "GetContainerRequestProto"
+              },
+              {
+                "id": 8,
+                "name": "getContainerWithPipelineRequest",
+                "type": "GetContainerWithPipelineRequestProto"
+              },
+              {
+                "id": 9,
+                "name": "scmListContainerRequest",
+                "type": "SCMListContainerRequestProto"
+              },
+              {
+                "id": 10,
+                "name": "scmDeleteContainerRequest",
+                "type": "SCMDeleteContainerRequestProto"
+              },
+              {
+                "id": 11,
+                "name": "nodeQueryRequest",
+                "type": "NodeQueryRequestProto"
+              },
+              {
+                "id": 12,
+                "name": "scmCloseContainerRequest",
+                "type": "SCMCloseContainerRequestProto"
+              },
+              {
+                "id": 13,
+                "name": "pipelineRequest",
+                "type": "PipelineRequestProto"
+              },
+              {
+                "id": 14,
+                "name": "listPipelineRequest",
+                "type": "ListPipelineRequestProto"
+              },
+              {
+                "id": 15,
+                "name": "activatePipelineRequest",
+                "type": "ActivatePipelineRequestProto"
+              },
+              {
+                "id": 16,
+                "name": "deactivatePipelineRequest",
+                "type": "DeactivatePipelineRequestProto"
+              },
+              {
+                "id": 17,
+                "name": "closePipelineRequest",
+                "type": "ClosePipelineRequestProto"
+              },
+              {
+                "id": 18,
+                "name": "getScmInfoRequest",
+                "type": "GetScmInfoRequestProto"
+              },
+              {
+                "id": 19,
+                "name": "inSafeModeRequest",
+                "type": "InSafeModeRequestProto"
+              },
+              {
+                "id": 20,
+                "name": "forceExitSafeModeRequest",
+                "type": "ForceExitSafeModeRequestProto"
+              },
+              {
+                "id": 21,
+                "name": "startReplicationManagerRequest",
+                "type": "StartReplicationManagerRequestProto"
+              },
+              {
+                "id": 22,
+                "name": "stopReplicationManagerRequest",
+                "type": "StopReplicationManagerRequestProto"
+              },
+              {
+                "id": 23,
+                "name": "seplicationManagerStatusRequest",
+                "type": "ReplicationManagerStatusRequestProto"
+              },
+              {
+                "id": 24,
+                "name": "getPipelineRequest",
+                "type": "GetPipelineRequestProto"
+              },
+              {
+                "id": 25,
+                "name": "getContainerWithPipelineBatchRequest",
+                "type": "GetContainerWithPipelineBatchRequestProto"
+              }
+            ]
+          },
+          {
+            "name": "ScmContainerLocationResponse",
+            "fields": [
+              {
+                "id": 1,
+                "name": "cmdType",
+                "type": "Type"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              },
+              {
+                "id": 3,
+                "name": "success",
+                "type": "bool",
+                "options": [
+                  {
+                    "name": "default",
+                    "value": "true"
+                  }
+                ]
+              },
+              {
+                "id": 4,
+                "name": "message",
+                "type": "string"
+              },
+              {
+                "id": 5,
+                "name": "status",
+                "type": "Status"
+              },
+              {
+                "id": 6,
+                "name": "containerResponse",
+                "type": "ContainerResponseProto"
+              },
+              {
+                "id": 7,
+                "name": "getContainerResponse",
+                "type": "GetContainerResponseProto"
+              },
+              {
+                "id": 8,
+                "name": "getContainerWithPipelineResponse",
+                "type": "GetContainerWithPipelineResponseProto"
+              },
+              {
+                "id": 9,
+                "name": "scmListContainerResponse",
+                "type": "SCMListContainerResponseProto"
+              },
+              {
+                "id": 10,
+                "name": "scmDeleteContainerResponse",
+                "type": "SCMDeleteContainerResponseProto"
+              },
+              {
+                "id": 11,
+                "name": "nodeQueryResponse",
+                "type": "NodeQueryResponseProto"
+              },
+              {
+                "id": 12,
+                "name": "scmCloseContainerResponse",
+                "type": "SCMCloseContainerResponseProto"
+              },
+              {
+                "id": 13,
+                "name": "pipelineResponse",
+                "type": "PipelineResponseProto"
+              },
+              {
+                "id": 14,
+                "name": "listPipelineResponse",
+                "type": "ListPipelineResponseProto"
+              },
+              {
+                "id": 15,
+                "name": "activatePipelineResponse",
+                "type": "ActivatePipelineResponseProto"
+              },
+              {
+                "id": 16,
+                "name": "deactivatePipelineResponse",
+                "type": "DeactivatePipelineResponseProto"
+              },
+              {
+                "id": 17,
+                "name": "closePipelineResponse",
+                "type": "ClosePipelineResponseProto"
+              },
+              {
+                "id": 18,
+                "name": "getScmInfoResponse",
+                "type": "GetScmInfoResponseProto"
+              },
+              {
+                "id": 19,
+                "name": "inSafeModeResponse",
+                "type": "InSafeModeResponseProto"
+              },
+              {
+                "id": 20,
+                "name": "forceExitSafeModeResponse",
+                "type": "ForceExitSafeModeResponseProto"
+              },
+              {
+                "id": 21,
+                "name": "startReplicationManagerResponse",
+                "type": "StartReplicationManagerResponseProto"
+              },
+              {
+                "id": 22,
+                "name": "stopReplicationManagerResponse",
+                "type": "StopReplicationManagerResponseProto"
+              },
+              {
+                "id": 23,
+                "name": "replicationManagerStatusResponse",
+                "type": "ReplicationManagerStatusResponseProto"
+              },
+              {
+                "id": 24,
+                "name": "getPipelineResponse",
+                "type": "GetPipelineResponseProto"
+              },
+              {
+                "id": 25,
+                "name": "getContainerWithPipelineBatchResponse",
+                "type": "GetContainerWithPipelineBatchResponseProto"
+              }
+            ]
+          },
+          {
+            "name": "ContainerRequestProto",
+            "fields": [
+              {
+                "id": 2,
+                "name": "replicationFactor",
+                "type": "ReplicationFactor"
+              },
+              {
+                "id": 3,
+                "name": "replicationType",
+                "type": "ReplicationType"
+              },
+              {
+                "id": 4,
+                "name": "owner",
+                "type": "string"
+              },
+              {
+                "id": 5,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "ContainerResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "errorCode",
+                "type": "Error"
+              },
+              {
+                "id": 2,
+                "name": "containerWithPipeline",
+                "type": "ContainerWithPipeline"
+              },
+              {
+                "id": 3,
+                "name": "errorMessage",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "GetContainerRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerID",
+                "type": "int64"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "GetContainerResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerInfo",
+                "type": "ContainerInfoProto"
+              }
+            ]
+          },
+          {
+            "name": "GetContainerWithPipelineRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerID",
+                "type": "int64"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "GetContainerWithPipelineResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerWithPipeline",
+                "type": "ContainerWithPipeline"
+              }
+            ]
+          },
+          {
+            "name": "GetContainerWithPipelineBatchRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerIDs",
+                "type": "int64",
+                "is_repeated": true
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "GetContainerWithPipelineBatchResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerWithPipelines",
+                "type": "ContainerWithPipeline",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "SCMListContainerRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "count",
+                "type": "uint32"
+              },
+              {
+                "id": 2,
+                "name": "startContainerID",
+                "type": "uint64"
+              },
+              {
+                "id": 3,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "SCMListContainerResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containers",
+                "type": "ContainerInfoProto",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "SCMDeleteContainerRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerID",
+                "type": "int64"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "SCMDeleteContainerResponseProto"
+          },
+          {
+            "name": "SCMCloseContainerRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerID",
+                "type": "int64"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "SCMCloseContainerResponseProto"
+          },
+          {
+            "name": "NodeQueryRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "state",
+                "type": "NodeState"
+              },
+              {
+                "id": 2,
+                "name": "scope",
+                "type": "QueryScope"
+              },
+              {
+                "id": 3,
+                "name": "poolName",
+                "type": "string"
+              },
+              {
+                "id": 4,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "NodeQueryResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "datanodes",
+                "type": "Node",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "PipelineRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "replicationType",
+                "type": "ReplicationType"
+              },
+              {
+                "id": 2,
+                "name": "replicationFactor",
+                "type": "ReplicationFactor"
+              },
+              {
+                "id": 3,
+                "name": "nodePool",
+                "type": "NodePool"
+              },
+              {
+                "id": 4,
+                "name": "pipelineID",
+                "type": "string"
+              },
+              {
+                "id": 5,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "PipelineResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "errorCode",
+                "type": "Error"
+              },
+              {
+                "id": 2,
+                "name": "pipeline",
+                "type": "Pipeline"
+              },
+              {
+                "id": 3,
+                "name": "errorMessage",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "ListPipelineRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "ListPipelineResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "pipelines",
+                "type": "Pipeline",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "GetPipelineRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "pipelineID",
+                "type": "PipelineID"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "GetPipelineResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "pipeline",
+                "type": "Pipeline"
+              }
+            ]
+          },
+          {
+            "name": "ActivatePipelineRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "pipelineID",
+                "type": "PipelineID"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "ActivatePipelineResponseProto"
+          },
+          {
+            "name": "DeactivatePipelineRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "pipelineID",
+                "type": "PipelineID"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "DeactivatePipelineResponseProto"
+          },
+          {
+            "name": "ClosePipelineRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "pipelineID",
+                "type": "PipelineID"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "ClosePipelineResponseProto"
+          },
+          {
+            "name": "InSafeModeRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "InSafeModeResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "inSafeMode",
+                "type": "bool"
+              }
+            ]
+          },
+          {
+            "name": "ForceExitSafeModeRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "ForceExitSafeModeResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "exitedSafeMode",
+                "type": "bool"
+              }
+            ]
+          },
+          {
+            "name": "StartReplicationManagerRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "StartReplicationManagerResponseProto"
+          },
+          {
+            "name": "StopReplicationManagerRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "StopReplicationManagerResponseProto"
+          },
+          {
+            "name": "ReplicationManagerStatusRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "traceID",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "ReplicationManagerStatusResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "isRunning",
+                "type": "bool"
+              }
+            ]
+          }
+        ],
+        "services": [
+          {
+            "name": "StorageContainerLocationProtocolService",
+            "rpcs": [
+              {
+                "name": "submitRequest",
+                "in_type": "ScmContainerLocationRequest",
+                "out_type": "ScmContainerLocationResponse"
+              }
+            ]
+          }
+        ],
+        "imports": [
+          {
+            "path": "hdds.proto"
+          }
+        ],
+        "package": {
+          "name": "hadoop.hdds.container"
+        },
+        "options": [
+          {
+            "name": "java_package",
+            "value": "org.apache.hadoop.hdds.protocol.proto"
+          },
+          {
+            "name": "java_outer_classname",
+            "value": "StorageContainerLocationProtocolProtos"
+          },
+          {
+            "name": "java_generic_services",
+            "value": "true"
+          },
+          {
+            "name": "java_generate_equals_and_hash",
+            "value": "true"
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml 
b/hadoop-hdds/interface-client/dev-support/findbugsExcludeFile.xml
similarity index 85%
copy from hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
copy to hadoop-hdds/interface-client/dev-support/findbugsExcludeFile.xml
index df58f36..ba54a4f 100644
--- a/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
+++ b/hadoop-hdds/interface-client/dev-support/findbugsExcludeFile.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -17,6 +16,9 @@
 -->
 <FindBugsFilter>
   <Match>
-    <Package name="org.apache.hadoop.ozone.protocol.proto"/>
+    <Package name="org.apache.hadoop.hdds.protocol.datanode.proto"/>
+  </Match>
+  <Match>
+    <Package name="org.apache.hadoop.hdds.protocol.proto"/>
   </Match>
 </FindBugsFilter>
diff --git a/hadoop-hdds/interface-client/pom.xml 
b/hadoop-hdds/interface-client/pom.xml
new file mode 100644
index 0000000..f6d1dec
--- /dev/null
+++ b/hadoop-hdds/interface-client/pom.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.hadoop</groupId>
+    <artifactId>hadoop-hdds</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>hadoop-hdds-interface-client</artifactId>
+  <version>0.6.0-SNAPSHOT</version>
+  <description>Apache Hadoop Distributed Data Store Client interface
+  </description>
+  <name>Apache Hadoop HDDS Client Interface</name>
+  <packaging>jar</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ratis</groupId>
+      <artifactId>ratis-thirdparty-misc</artifactId>
+      <version>0.4.0</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>com.salesforce.servicelibs</groupId>
+        <artifactId>proto-backwards-compatibility</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.xolstice.maven.plugins</groupId>
+        <artifactId>protobuf-maven-plugin</artifactId>
+        <version>${protobuf-maven-plugin.version}</version>
+        <extensions>true</extensions>
+        <executions>
+          <execution>
+            <id>compile-protoc-3</id>
+            <goals>
+              <goal>compile</goal>
+              <goal>test-compile</goal>
+              <goal>compile-custom</goal>
+              <goal>test-compile-custom</goal>
+            </goals>
+            <configuration>
+              <protocArtifact>
+                
com.google.protobuf:protoc:${protobuf-compile.version}:exe:${os.detected.classifier}
+              </protocArtifact>
+              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
+              <includes>
+                <include>DatanodeClientProtocol.proto</include>
+              </includes>
+              <outputDirectory>target/generated-sources/java</outputDirectory>
+              <clearOutputDirectory>false</clearOutputDirectory>
+              <pluginId>grpc-java</pluginId>
+              <pluginArtifact>
+                
io.grpc:protoc-gen-grpc-java:${grpc-compile.version}:exe:${os.detected.classifier}
+              </pluginArtifact>
+            </configuration>
+          </execution>
+          <execution>
+            <id>compile-protoc-2</id>
+            <goals>
+              <goal>compile</goal>
+              <goal>test-compile</goal>
+            </goals>
+            <configuration>
+              <protocArtifact>
+                
com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
+              </protocArtifact>
+              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
+              <includes>
+                <include>hdds.proto</include>
+              </includes>
+              <outputDirectory>target/generated-sources/java</outputDirectory>
+              <clearOutputDirectory>false</clearOutputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>generate-sources</phase>
+            <configuration>
+              <tasks>
+                <replace token="com.google.protobuf"
+                         
value="org.apache.ratis.thirdparty.com.google.protobuf"
+                         
dir="target/generated-sources/java/org/apache/hadoop/hdds/protocol/datanode/proto">
+                </replace>
+                <replace token="io.grpc"
+                         value="org.apache.ratis.thirdparty.io.grpc"
+                         
dir="target/generated-sources/java/org/apache/hadoop/hdds/protocol/datanode/proto">
+                </replace>
+                <replace token="com.google.common"
+                         value="org.apache.ratis.thirdparty.com.google.common"
+                         
dir="target/generated-sources/java/org/apache/hadoop/hdds/protocol/datanode/proto">
+                </replace>
+              </tasks>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <configuration>
+          
<excludeFilterFile>${basedir}/dev-support/findbugsExcludeFile.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/hadoop-hdds/common/src/main/proto/DatanodeContainerProtocol.proto 
b/hadoop-hdds/interface-client/src/main/proto/DatanodeClientProtocol.proto
similarity index 100%
rename from hadoop-hdds/common/src/main/proto/DatanodeContainerProtocol.proto
rename to 
hadoop-hdds/interface-client/src/main/proto/DatanodeClientProtocol.proto
diff --git a/hadoop-hdds/common/src/main/proto/hdds.proto 
b/hadoop-hdds/interface-client/src/main/proto/hdds.proto
similarity index 100%
rename from hadoop-hdds/common/src/main/proto/hdds.proto
rename to hadoop-hdds/interface-client/src/main/proto/hdds.proto
diff --git a/hadoop-hdds/common/src/main/proto/proto.lock 
b/hadoop-hdds/interface-client/src/main/proto/proto.lock
similarity index 51%
rename from hadoop-hdds/common/src/main/proto/proto.lock
rename to hadoop-hdds/interface-client/src/main/proto/proto.lock
index 02749d7..5706a6f 100644
--- a/hadoop-hdds/common/src/main/proto/proto.lock
+++ b/hadoop-hdds/interface-client/src/main/proto/proto.lock
@@ -1,7 +1,7 @@
 {
   "definitions": [
     {
-      "protopath": "DatanodeContainerProtocol.proto",
+      "protopath": "DatanodeClientProtocol.proto",
       "def": {
         "enums": [
           {
@@ -1229,1752 +1229,6 @@
       }
     },
     {
-      "protopath": "SCMSecurityProtocol.proto",
-      "def": {
-        "enums": [
-          {
-            "name": "Type",
-            "enum_fields": [
-              {
-                "name": "GetDataNodeCertificate",
-                "integer": 1
-              },
-              {
-                "name": "GetOMCertificate",
-                "integer": 2
-              },
-              {
-                "name": "GetCertificate",
-                "integer": 3
-              },
-              {
-                "name": "GetCACertificate",
-                "integer": 4
-              }
-            ]
-          },
-          {
-            "name": "Status",
-            "enum_fields": [
-              {
-                "name": "OK",
-                "integer": 1
-              }
-            ]
-          },
-          {
-            "name": "SCMGetCertResponseProto.ResponseCode",
-            "enum_fields": [
-              {
-                "name": "success",
-                "integer": 1
-              },
-              {
-                "name": "authenticationFailed",
-                "integer": 2
-              },
-              {
-                "name": "invalidCSR",
-                "integer": 3
-              }
-            ]
-          }
-        ],
-        "messages": [
-          {
-            "name": "SCMSecurityRequest",
-            "fields": [
-              {
-                "id": 1,
-                "name": "cmdType",
-                "type": "Type"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              },
-              {
-                "id": 3,
-                "name": "getDataNodeCertRequest",
-                "type": "SCMGetDataNodeCertRequestProto"
-              },
-              {
-                "id": 4,
-                "name": "getOMCertRequest",
-                "type": "SCMGetOMCertRequestProto"
-              },
-              {
-                "id": 5,
-                "name": "getCertificateRequest",
-                "type": "SCMGetCertificateRequestProto"
-              },
-              {
-                "id": 6,
-                "name": "getCACertificateRequest",
-                "type": "SCMGetCACertificateRequestProto"
-              }
-            ]
-          },
-          {
-            "name": "SCMSecurityResponse",
-            "fields": [
-              {
-                "id": 1,
-                "name": "cmdType",
-                "type": "Type"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              },
-              {
-                "id": 3,
-                "name": "success",
-                "type": "bool",
-                "options": [
-                  {
-                    "name": "default",
-                    "value": "true"
-                  }
-                ]
-              },
-              {
-                "id": 4,
-                "name": "message",
-                "type": "string"
-              },
-              {
-                "id": 5,
-                "name": "status",
-                "type": "Status"
-              },
-              {
-                "id": 6,
-                "name": "getCertResponseProto",
-                "type": "SCMGetCertResponseProto"
-              }
-            ]
-          },
-          {
-            "name": "SCMGetDataNodeCertRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "datanodeDetails",
-                "type": "DatanodeDetailsProto"
-              },
-              {
-                "id": 2,
-                "name": "CSR",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "SCMGetOMCertRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "omDetails",
-                "type": "OzoneManagerDetailsProto"
-              },
-              {
-                "id": 2,
-                "name": "CSR",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "SCMGetCertificateRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "certSerialId",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "SCMGetCACertificateRequestProto"
-          },
-          {
-            "name": "SCMGetCertResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "responseCode",
-                "type": "ResponseCode"
-              },
-              {
-                "id": 2,
-                "name": "x509Certificate",
-                "type": "string"
-              },
-              {
-                "id": 3,
-                "name": "x509CACertificate",
-                "type": "string"
-              }
-            ]
-          }
-        ],
-        "services": [
-          {
-            "name": "SCMSecurityProtocolService",
-            "rpcs": [
-              {
-                "name": "submitRequest",
-                "in_type": "SCMSecurityRequest",
-                "out_type": "SCMSecurityResponse"
-              }
-            ]
-          }
-        ],
-        "imports": [
-          {
-            "path": "hdds.proto"
-          }
-        ],
-        "package": {
-          "name": "hadoop.hdds.security"
-        },
-        "options": [
-          {
-            "name": "java_package",
-            "value": "org.apache.hadoop.hdds.protocol.proto"
-          },
-          {
-            "name": "java_outer_classname",
-            "value": "SCMSecurityProtocolProtos"
-          },
-          {
-            "name": "java_generic_services",
-            "value": "true"
-          },
-          {
-            "name": "java_generate_equals_and_hash",
-            "value": "true"
-          }
-        ]
-      }
-    },
-    {
-      "protopath": "ScmBlockLocationProtocol.proto",
-      "def": {
-        "enums": [
-          {
-            "name": "Type",
-            "enum_fields": [
-              {
-                "name": "AllocateScmBlock",
-                "integer": 11
-              },
-              {
-                "name": "DeleteScmKeyBlocks",
-                "integer": 12
-              },
-              {
-                "name": "GetScmInfo",
-                "integer": 13
-              },
-              {
-                "name": "SortDatanodes",
-                "integer": 14
-              }
-            ]
-          },
-          {
-            "name": "Status",
-            "enum_fields": [
-              {
-                "name": "OK",
-                "integer": 1
-              },
-              {
-                "name": "FAILED_TO_LOAD_NODEPOOL",
-                "integer": 2
-              },
-              {
-                "name": "FAILED_TO_FIND_NODE_IN_POOL",
-                "integer": 3
-              },
-              {
-                "name": "FAILED_TO_FIND_HEALTHY_NODES",
-                "integer": 4
-              },
-              {
-                "name": "FAILED_TO_FIND_NODES_WITH_SPACE",
-                "integer": 5
-              },
-              {
-                "name": "FAILED_TO_FIND_SUITABLE_NODE",
-                "integer": 6
-              },
-              {
-                "name": "INVALID_CAPACITY",
-                "integer": 7
-              },
-              {
-                "name": "INVALID_BLOCK_SIZE",
-                "integer": 8
-              },
-              {
-                "name": "SAFE_MODE_EXCEPTION",
-                "integer": 9
-              },
-              {
-                "name": "FAILED_TO_LOAD_OPEN_CONTAINER",
-                "integer": 10
-              },
-              {
-                "name": "FAILED_TO_ALLOCATE_CONTAINER",
-                "integer": 11
-              },
-              {
-                "name": "FAILED_TO_CHANGE_CONTAINER_STATE",
-                "integer": 12
-              },
-              {
-                "name": "FAILED_TO_CHANGE_PIPELINE_STATE",
-                "integer": 13
-              },
-              {
-                "name": "CONTAINER_EXISTS",
-                "integer": 14
-              },
-              {
-                "name": "FAILED_TO_FIND_CONTAINER",
-                "integer": 15
-              },
-              {
-                "name": "FAILED_TO_FIND_CONTAINER_WITH_SPACE",
-                "integer": 16
-              },
-              {
-                "name": "BLOCK_EXISTS",
-                "integer": 17
-              },
-              {
-                "name": "FAILED_TO_FIND_BLOCK",
-                "integer": 18
-              },
-              {
-                "name": "IO_EXCEPTION",
-                "integer": 19
-              },
-              {
-                "name": "UNEXPECTED_CONTAINER_STATE",
-                "integer": 20
-              },
-              {
-                "name": "SCM_NOT_INITIALIZED",
-                "integer": 21
-              },
-              {
-                "name": "DUPLICATE_DATANODE",
-                "integer": 22
-              },
-              {
-                "name": "NO_SUCH_DATANODE",
-                "integer": 23
-              },
-              {
-                "name": "NO_REPLICA_FOUND",
-                "integer": 24
-              },
-              {
-                "name": "FAILED_TO_FIND_ACTIVE_PIPELINE",
-                "integer": 25
-              },
-              {
-                "name": "FAILED_TO_INIT_CONTAINER_PLACEMENT_POLICY",
-                "integer": 26
-              },
-              {
-                "name": "FAILED_TO_ALLOCATE_ENOUGH_BLOCKS",
-                "integer": 27
-              },
-              {
-                "name": "INTERNAL_ERROR",
-                "integer": 29
-              }
-            ]
-          },
-          {
-            "name": "DeleteScmBlockResult.Result",
-            "enum_fields": [
-              {
-                "name": "success",
-                "integer": 1
-              },
-              {
-                "name": "safeMode",
-                "integer": 2
-              },
-              {
-                "name": "errorNotFound",
-                "integer": 3
-              },
-              {
-                "name": "unknownFailure",
-                "integer": 4
-              }
-            ]
-          }
-        ],
-        "messages": [
-          {
-            "name": "SCMBlockLocationRequest",
-            "fields": [
-              {
-                "id": 1,
-                "name": "cmdType",
-                "type": "Type"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              },
-              {
-                "id": 3,
-                "name": "userInfo",
-                "type": "UserInfo"
-              },
-              {
-                "id": 11,
-                "name": "allocateScmBlockRequest",
-                "type": "AllocateScmBlockRequestProto"
-              },
-              {
-                "id": 12,
-                "name": "deleteScmKeyBlocksRequest",
-                "type": "DeleteScmKeyBlocksRequestProto"
-              },
-              {
-                "id": 13,
-                "name": "getScmInfoRequest",
-                "type": "hadoop.hdds.GetScmInfoRequestProto"
-              },
-              {
-                "id": 14,
-                "name": "sortDatanodesRequest",
-                "type": "SortDatanodesRequestProto"
-              }
-            ]
-          },
-          {
-            "name": "SCMBlockLocationResponse",
-            "fields": [
-              {
-                "id": 1,
-                "name": "cmdType",
-                "type": "Type"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              },
-              {
-                "id": 3,
-                "name": "success",
-                "type": "bool",
-                "options": [
-                  {
-                    "name": "default",
-                    "value": "true"
-                  }
-                ]
-              },
-              {
-                "id": 4,
-                "name": "message",
-                "type": "string"
-              },
-              {
-                "id": 5,
-                "name": "status",
-                "type": "Status"
-              },
-              {
-                "id": 6,
-                "name": "leaderOMNodeId",
-                "type": "string"
-              },
-              {
-                "id": 11,
-                "name": "allocateScmBlockResponse",
-                "type": "AllocateScmBlockResponseProto"
-              },
-              {
-                "id": 12,
-                "name": "deleteScmKeyBlocksResponse",
-                "type": "DeleteScmKeyBlocksResponseProto"
-              },
-              {
-                "id": 13,
-                "name": "getScmInfoResponse",
-                "type": "hadoop.hdds.GetScmInfoResponseProto"
-              },
-              {
-                "id": 14,
-                "name": "sortDatanodesResponse",
-                "type": "SortDatanodesResponseProto"
-              }
-            ]
-          },
-          {
-            "name": "UserInfo",
-            "fields": [
-              {
-                "id": 1,
-                "name": "userName",
-                "type": "string"
-              },
-              {
-                "id": 3,
-                "name": "remoteAddress",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "AllocateScmBlockRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "size",
-                "type": "uint64"
-              },
-              {
-                "id": 2,
-                "name": "numBlocks",
-                "type": "uint32"
-              },
-              {
-                "id": 3,
-                "name": "type",
-                "type": "ReplicationType"
-              },
-              {
-                "id": 4,
-                "name": "factor",
-                "type": "hadoop.hdds.ReplicationFactor"
-              },
-              {
-                "id": 5,
-                "name": "owner",
-                "type": "string"
-              },
-              {
-                "id": 7,
-                "name": "excludeList",
-                "type": "ExcludeListProto"
-              }
-            ]
-          },
-          {
-            "name": "DeleteScmKeyBlocksRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "keyBlocks",
-                "type": "KeyBlocks",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "KeyBlocks",
-            "fields": [
-              {
-                "id": 1,
-                "name": "key",
-                "type": "string"
-              },
-              {
-                "id": 2,
-                "name": "blocks",
-                "type": "BlockID",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "DeleteScmKeyBlocksResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "results",
-                "type": "DeleteKeyBlocksResultProto",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "DeleteKeyBlocksResultProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "objectKey",
-                "type": "string"
-              },
-              {
-                "id": 2,
-                "name": "blockResults",
-                "type": "DeleteScmBlockResult",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "DeleteScmBlockResult",
-            "fields": [
-              {
-                "id": 1,
-                "name": "result",
-                "type": "Result"
-              },
-              {
-                "id": 2,
-                "name": "blockID",
-                "type": "BlockID"
-              }
-            ]
-          },
-          {
-            "name": "AllocateBlockResponse",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerBlockID",
-                "type": "ContainerBlockID"
-              },
-              {
-                "id": 2,
-                "name": "pipeline",
-                "type": "hadoop.hdds.Pipeline"
-              }
-            ]
-          },
-          {
-            "name": "AllocateScmBlockResponseProto",
-            "fields": [
-              {
-                "id": 3,
-                "name": "blocks",
-                "type": "AllocateBlockResponse",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "SortDatanodesRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "client",
-                "type": "string"
-              },
-              {
-                "id": 2,
-                "name": "nodeNetworkName",
-                "type": "string",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "SortDatanodesResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "node",
-                "type": "DatanodeDetailsProto",
-                "is_repeated": true
-              }
-            ]
-          }
-        ],
-        "services": [
-          {
-            "name": "ScmBlockLocationProtocolService",
-            "rpcs": [
-              {
-                "name": "send",
-                "in_type": "SCMBlockLocationRequest",
-                "out_type": "SCMBlockLocationResponse"
-              }
-            ]
-          }
-        ],
-        "imports": [
-          {
-            "path": "hdds.proto"
-          }
-        ],
-        "package": {
-          "name": "hadoop.hdds.block"
-        },
-        "options": [
-          {
-            "name": "java_package",
-            "value": "org.apache.hadoop.hdds.protocol.proto"
-          },
-          {
-            "name": "java_outer_classname",
-            "value": "ScmBlockLocationProtocolProtos"
-          },
-          {
-            "name": "java_generic_services",
-            "value": "true"
-          },
-          {
-            "name": "java_generate_equals_and_hash",
-            "value": "true"
-          }
-        ]
-      }
-    },
-    {
-      "protopath": "Security.proto",
-      "def": {
-        "messages": [
-          {
-            "name": "TokenProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "identifier",
-                "type": "bytes"
-              },
-              {
-                "id": 2,
-                "name": "password",
-                "type": "bytes"
-              },
-              {
-                "id": 3,
-                "name": "kind",
-                "type": "string"
-              },
-              {
-                "id": 4,
-                "name": "service",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "CredentialsKVProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "alias",
-                "type": "string"
-              },
-              {
-                "id": 2,
-                "name": "token",
-                "type": "hadoop.common.TokenProto"
-              },
-              {
-                "id": 3,
-                "name": "secret",
-                "type": "bytes"
-              }
-            ]
-          },
-          {
-            "name": "CredentialsProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "tokens",
-                "type": "hadoop.common.CredentialsKVProto",
-                "is_repeated": true
-              },
-              {
-                "id": 2,
-                "name": "secrets",
-                "type": "hadoop.common.CredentialsKVProto",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "GetDelegationTokenRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "renewer",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "GetDelegationTokenResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "token",
-                "type": "hadoop.common.TokenProto"
-              }
-            ]
-          },
-          {
-            "name": "RenewDelegationTokenRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "token",
-                "type": "hadoop.common.TokenProto"
-              }
-            ]
-          },
-          {
-            "name": "RenewDelegationTokenResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "newExpiryTime",
-                "type": "uint64"
-              }
-            ]
-          },
-          {
-            "name": "CancelDelegationTokenRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "token",
-                "type": "hadoop.common.TokenProto"
-              }
-            ]
-          },
-          {
-            "name": "CancelDelegationTokenResponseProto"
-          }
-        ],
-        "package": {
-          "name": "hadoop.common"
-        },
-        "options": [
-          {
-            "name": "java_package",
-            "value": "org.apache.hadoop.security.proto"
-          },
-          {
-            "name": "java_outer_classname",
-            "value": "SecurityProtos"
-          },
-          {
-            "name": "java_generic_services",
-            "value": "true"
-          },
-          {
-            "name": "java_generate_equals_and_hash",
-            "value": "true"
-          }
-        ]
-      }
-    },
-    {
-      "protopath": "StorageContainerLocationProtocol.proto",
-      "def": {
-        "enums": [
-          {
-            "name": "ScmContainerLocationResponse.Status",
-            "enum_fields": [
-              {
-                "name": "OK",
-                "integer": 1
-              },
-              {
-                "name": "CONTAINER_ALREADY_EXISTS",
-                "integer": 2
-              },
-              {
-                "name": "CONTAINER_IS_MISSING",
-                "integer": 3
-              }
-            ]
-          },
-          {
-            "name": "Type",
-            "enum_fields": [
-              {
-                "name": "AllocateContainer",
-                "integer": 1
-              },
-              {
-                "name": "GetContainer",
-                "integer": 2
-              },
-              {
-                "name": "GetContainerWithPipeline",
-                "integer": 3
-              },
-              {
-                "name": "ListContainer",
-                "integer": 4
-              },
-              {
-                "name": "DeleteContainer",
-                "integer": 5
-              },
-              {
-                "name": "QueryNode",
-                "integer": 6
-              },
-              {
-                "name": "CloseContainer",
-                "integer": 7
-              },
-              {
-                "name": "AllocatePipeline",
-                "integer": 8
-              },
-              {
-                "name": "ListPipelines",
-                "integer": 9
-              },
-              {
-                "name": "ActivatePipeline",
-                "integer": 10
-              },
-              {
-                "name": "DeactivatePipeline",
-                "integer": 11
-              },
-              {
-                "name": "ClosePipeline",
-                "integer": 12
-              },
-              {
-                "name": "GetScmInfo",
-                "integer": 13
-              },
-              {
-                "name": "InSafeMode",
-                "integer": 14
-              },
-              {
-                "name": "ForceExitSafeMode",
-                "integer": 15
-              },
-              {
-                "name": "StartReplicationManager",
-                "integer": 16
-              },
-              {
-                "name": "StopReplicationManager",
-                "integer": 17
-              },
-              {
-                "name": "GetReplicationManagerStatus",
-                "integer": 18
-              },
-              {
-                "name": "GetPipeline",
-                "integer": 19
-              },
-              {
-                "name": "GetContainerWithPipelineBatch",
-                "integer": 20
-              }
-            ]
-          },
-          {
-            "name": "ContainerResponseProto.Error",
-            "enum_fields": [
-              {
-                "name": "success",
-                "integer": 1
-              },
-              {
-                "name": "errorContainerAlreadyExists",
-                "integer": 2
-              },
-              {
-                "name": "errorContainerMissing",
-                "integer": 3
-              }
-            ]
-          },
-          {
-            "name": "PipelineResponseProto.Error",
-            "enum_fields": [
-              {
-                "name": "success",
-                "integer": 1
-              },
-              {
-                "name": "errorPipelineAlreadyExists",
-                "integer": 2
-              }
-            ]
-          }
-        ],
-        "messages": [
-          {
-            "name": "ScmContainerLocationRequest",
-            "fields": [
-              {
-                "id": 1,
-                "name": "cmdType",
-                "type": "Type"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              },
-              {
-                "id": 6,
-                "name": "containerRequest",
-                "type": "ContainerRequestProto"
-              },
-              {
-                "id": 7,
-                "name": "getContainerRequest",
-                "type": "GetContainerRequestProto"
-              },
-              {
-                "id": 8,
-                "name": "getContainerWithPipelineRequest",
-                "type": "GetContainerWithPipelineRequestProto"
-              },
-              {
-                "id": 9,
-                "name": "scmListContainerRequest",
-                "type": "SCMListContainerRequestProto"
-              },
-              {
-                "id": 10,
-                "name": "scmDeleteContainerRequest",
-                "type": "SCMDeleteContainerRequestProto"
-              },
-              {
-                "id": 11,
-                "name": "nodeQueryRequest",
-                "type": "NodeQueryRequestProto"
-              },
-              {
-                "id": 12,
-                "name": "scmCloseContainerRequest",
-                "type": "SCMCloseContainerRequestProto"
-              },
-              {
-                "id": 13,
-                "name": "pipelineRequest",
-                "type": "PipelineRequestProto"
-              },
-              {
-                "id": 14,
-                "name": "listPipelineRequest",
-                "type": "ListPipelineRequestProto"
-              },
-              {
-                "id": 15,
-                "name": "activatePipelineRequest",
-                "type": "ActivatePipelineRequestProto"
-              },
-              {
-                "id": 16,
-                "name": "deactivatePipelineRequest",
-                "type": "DeactivatePipelineRequestProto"
-              },
-              {
-                "id": 17,
-                "name": "closePipelineRequest",
-                "type": "ClosePipelineRequestProto"
-              },
-              {
-                "id": 18,
-                "name": "getScmInfoRequest",
-                "type": "GetScmInfoRequestProto"
-              },
-              {
-                "id": 19,
-                "name": "inSafeModeRequest",
-                "type": "InSafeModeRequestProto"
-              },
-              {
-                "id": 20,
-                "name": "forceExitSafeModeRequest",
-                "type": "ForceExitSafeModeRequestProto"
-              },
-              {
-                "id": 21,
-                "name": "startReplicationManagerRequest",
-                "type": "StartReplicationManagerRequestProto"
-              },
-              {
-                "id": 22,
-                "name": "stopReplicationManagerRequest",
-                "type": "StopReplicationManagerRequestProto"
-              },
-              {
-                "id": 23,
-                "name": "seplicationManagerStatusRequest",
-                "type": "ReplicationManagerStatusRequestProto"
-              },
-              {
-                "id": 24,
-                "name": "getPipelineRequest",
-                "type": "GetPipelineRequestProto"
-              },
-              {
-                "id": 25,
-                "name": "getContainerWithPipelineBatchRequest",
-                "type": "GetContainerWithPipelineBatchRequestProto"
-              }
-            ]
-          },
-          {
-            "name": "ScmContainerLocationResponse",
-            "fields": [
-              {
-                "id": 1,
-                "name": "cmdType",
-                "type": "Type"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              },
-              {
-                "id": 3,
-                "name": "success",
-                "type": "bool",
-                "options": [
-                  {
-                    "name": "default",
-                    "value": "true"
-                  }
-                ]
-              },
-              {
-                "id": 4,
-                "name": "message",
-                "type": "string"
-              },
-              {
-                "id": 5,
-                "name": "status",
-                "type": "Status"
-              },
-              {
-                "id": 6,
-                "name": "containerResponse",
-                "type": "ContainerResponseProto"
-              },
-              {
-                "id": 7,
-                "name": "getContainerResponse",
-                "type": "GetContainerResponseProto"
-              },
-              {
-                "id": 8,
-                "name": "getContainerWithPipelineResponse",
-                "type": "GetContainerWithPipelineResponseProto"
-              },
-              {
-                "id": 9,
-                "name": "scmListContainerResponse",
-                "type": "SCMListContainerResponseProto"
-              },
-              {
-                "id": 10,
-                "name": "scmDeleteContainerResponse",
-                "type": "SCMDeleteContainerResponseProto"
-              },
-              {
-                "id": 11,
-                "name": "nodeQueryResponse",
-                "type": "NodeQueryResponseProto"
-              },
-              {
-                "id": 12,
-                "name": "scmCloseContainerResponse",
-                "type": "SCMCloseContainerResponseProto"
-              },
-              {
-                "id": 13,
-                "name": "pipelineResponse",
-                "type": "PipelineResponseProto"
-              },
-              {
-                "id": 14,
-                "name": "listPipelineResponse",
-                "type": "ListPipelineResponseProto"
-              },
-              {
-                "id": 15,
-                "name": "activatePipelineResponse",
-                "type": "ActivatePipelineResponseProto"
-              },
-              {
-                "id": 16,
-                "name": "deactivatePipelineResponse",
-                "type": "DeactivatePipelineResponseProto"
-              },
-              {
-                "id": 17,
-                "name": "closePipelineResponse",
-                "type": "ClosePipelineResponseProto"
-              },
-              {
-                "id": 18,
-                "name": "getScmInfoResponse",
-                "type": "GetScmInfoResponseProto"
-              },
-              {
-                "id": 19,
-                "name": "inSafeModeResponse",
-                "type": "InSafeModeResponseProto"
-              },
-              {
-                "id": 20,
-                "name": "forceExitSafeModeResponse",
-                "type": "ForceExitSafeModeResponseProto"
-              },
-              {
-                "id": 21,
-                "name": "startReplicationManagerResponse",
-                "type": "StartReplicationManagerResponseProto"
-              },
-              {
-                "id": 22,
-                "name": "stopReplicationManagerResponse",
-                "type": "StopReplicationManagerResponseProto"
-              },
-              {
-                "id": 23,
-                "name": "replicationManagerStatusResponse",
-                "type": "ReplicationManagerStatusResponseProto"
-              },
-              {
-                "id": 24,
-                "name": "getPipelineResponse",
-                "type": "GetPipelineResponseProto"
-              },
-              {
-                "id": 25,
-                "name": "getContainerWithPipelineBatchResponse",
-                "type": "GetContainerWithPipelineBatchResponseProto"
-              }
-            ]
-          },
-          {
-            "name": "ContainerRequestProto",
-            "fields": [
-              {
-                "id": 2,
-                "name": "replicationFactor",
-                "type": "ReplicationFactor"
-              },
-              {
-                "id": 3,
-                "name": "replicationType",
-                "type": "ReplicationType"
-              },
-              {
-                "id": 4,
-                "name": "owner",
-                "type": "string"
-              },
-              {
-                "id": 5,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "ContainerResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "errorCode",
-                "type": "Error"
-              },
-              {
-                "id": 2,
-                "name": "containerWithPipeline",
-                "type": "ContainerWithPipeline"
-              },
-              {
-                "id": 3,
-                "name": "errorMessage",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "GetContainerRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerID",
-                "type": "int64"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "GetContainerResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerInfo",
-                "type": "ContainerInfoProto"
-              }
-            ]
-          },
-          {
-            "name": "GetContainerWithPipelineRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerID",
-                "type": "int64"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "GetContainerWithPipelineResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerWithPipeline",
-                "type": "ContainerWithPipeline"
-              }
-            ]
-          },
-          {
-            "name": "GetContainerWithPipelineBatchRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerIDs",
-                "type": "int64",
-                "is_repeated": true
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "GetContainerWithPipelineBatchResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerWithPipelines",
-                "type": "ContainerWithPipeline",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "SCMListContainerRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "count",
-                "type": "uint32"
-              },
-              {
-                "id": 2,
-                "name": "startContainerID",
-                "type": "uint64"
-              },
-              {
-                "id": 3,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "SCMListContainerResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containers",
-                "type": "ContainerInfoProto",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "SCMDeleteContainerRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerID",
-                "type": "int64"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "SCMDeleteContainerResponseProto"
-          },
-          {
-            "name": "SCMCloseContainerRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "containerID",
-                "type": "int64"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "SCMCloseContainerResponseProto"
-          },
-          {
-            "name": "NodeQueryRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "state",
-                "type": "NodeState"
-              },
-              {
-                "id": 2,
-                "name": "scope",
-                "type": "QueryScope"
-              },
-              {
-                "id": 3,
-                "name": "poolName",
-                "type": "string"
-              },
-              {
-                "id": 4,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "NodeQueryResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "datanodes",
-                "type": "Node",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "PipelineRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "replicationType",
-                "type": "ReplicationType"
-              },
-              {
-                "id": 2,
-                "name": "replicationFactor",
-                "type": "ReplicationFactor"
-              },
-              {
-                "id": 3,
-                "name": "nodePool",
-                "type": "NodePool"
-              },
-              {
-                "id": 4,
-                "name": "pipelineID",
-                "type": "string"
-              },
-              {
-                "id": 5,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "PipelineResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "errorCode",
-                "type": "Error"
-              },
-              {
-                "id": 2,
-                "name": "pipeline",
-                "type": "Pipeline"
-              },
-              {
-                "id": 3,
-                "name": "errorMessage",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "ListPipelineRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "ListPipelineResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "pipelines",
-                "type": "Pipeline",
-                "is_repeated": true
-              }
-            ]
-          },
-          {
-            "name": "GetPipelineRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "pipelineID",
-                "type": "PipelineID"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "GetPipelineResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "pipeline",
-                "type": "Pipeline"
-              }
-            ]
-          },
-          {
-            "name": "ActivatePipelineRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "pipelineID",
-                "type": "PipelineID"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "ActivatePipelineResponseProto"
-          },
-          {
-            "name": "DeactivatePipelineRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "pipelineID",
-                "type": "PipelineID"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "DeactivatePipelineResponseProto"
-          },
-          {
-            "name": "ClosePipelineRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "pipelineID",
-                "type": "PipelineID"
-              },
-              {
-                "id": 2,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "ClosePipelineResponseProto"
-          },
-          {
-            "name": "InSafeModeRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "InSafeModeResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "inSafeMode",
-                "type": "bool"
-              }
-            ]
-          },
-          {
-            "name": "ForceExitSafeModeRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "ForceExitSafeModeResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "exitedSafeMode",
-                "type": "bool"
-              }
-            ]
-          },
-          {
-            "name": "StartReplicationManagerRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "StartReplicationManagerResponseProto"
-          },
-          {
-            "name": "StopReplicationManagerRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "StopReplicationManagerResponseProto"
-          },
-          {
-            "name": "ReplicationManagerStatusRequestProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "traceID",
-                "type": "string"
-              }
-            ]
-          },
-          {
-            "name": "ReplicationManagerStatusResponseProto",
-            "fields": [
-              {
-                "id": 1,
-                "name": "isRunning",
-                "type": "bool"
-              }
-            ]
-          }
-        ],
-        "services": [
-          {
-            "name": "StorageContainerLocationProtocolService",
-            "rpcs": [
-              {
-                "name": "submitRequest",
-                "in_type": "ScmContainerLocationRequest",
-                "out_type": "ScmContainerLocationResponse"
-              }
-            ]
-          }
-        ],
-        "imports": [
-          {
-            "path": "hdds.proto"
-          }
-        ],
-        "package": {
-          "name": "hadoop.hdds.container"
-        },
-        "options": [
-          {
-            "name": "java_package",
-            "value": "org.apache.hadoop.hdds.protocol.proto"
-          },
-          {
-            "name": "java_outer_classname",
-            "value": "StorageContainerLocationProtocolProtos"
-          },
-          {
-            "name": "java_generic_services",
-            "value": "true"
-          },
-          {
-            "name": "java_generate_equals_and_hash",
-            "value": "true"
-          }
-        ]
-      }
-    },
-    {
       "protopath": "hdds.proto",
       "def": {
         "enums": [
diff --git a/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml 
b/hadoop-hdds/interface-server/dev-support/findbugsExcludeFile.xml
similarity index 89%
copy from hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
copy to hadoop-hdds/interface-server/dev-support/findbugsExcludeFile.xml
index df58f36..3571a89 100644
--- a/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
+++ b/hadoop-hdds/interface-server/dev-support/findbugsExcludeFile.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -17,6 +16,6 @@
 -->
 <FindBugsFilter>
   <Match>
-    <Package name="org.apache.hadoop.ozone.protocol.proto"/>
+    <Package name="org.apache.hadoop.hdds.protocol.proto"/>
   </Match>
 </FindBugsFilter>
diff --git a/hadoop-hdds/interface-server/pom.xml 
b/hadoop-hdds/interface-server/pom.xml
new file mode 100644
index 0000000..de6f980
--- /dev/null
+++ b/hadoop-hdds/interface-server/pom.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.hadoop</groupId>
+    <artifactId>hadoop-hdds</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>hadoop-hdds-interface-server</artifactId>
+  <version>0.6.0-SNAPSHOT</version>
+  <description>Apache Hadoop Distributed Data Store Server interface
+  </description>
+  <name>Apache Hadoop HDDS Server Interface</name>
+  <packaging>jar</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <!-- required to use common hdds.proto -->
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdds-interface-client</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>com.salesforce.servicelibs</groupId>
+        <artifactId>proto-backwards-compatibility</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.xolstice.maven.plugins</groupId>
+        <artifactId>protobuf-maven-plugin</artifactId>
+        <version>${protobuf-maven-plugin.version}</version>
+        <extensions>true</extensions>
+        <executions>
+          <execution>
+            <id>compile-protoc-2</id>
+            <goals>
+              <goal>compile</goal>
+              <goal>test-compile</goal>
+            </goals>
+            <configuration>
+              <protocArtifact>
+                
com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
+              </protocArtifact>
+              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
+              <outputDirectory>target/generated-sources/java</outputDirectory>
+              <clearOutputDirectory>false</clearOutputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <configuration>
+          
<excludeFilterFile>${basedir}/dev-support/findbugsExcludeFile.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git 
a/hadoop-hdds/container-service/src/main/proto/StorageContainerDatanodeProtocol.proto
 
b/hadoop-hdds/interface-server/src/main/proto/ScmServerDatanodeHeartbeatProtocol.proto
similarity index 100%
rename from 
hadoop-hdds/container-service/src/main/proto/StorageContainerDatanodeProtocol.proto
rename to 
hadoop-hdds/interface-server/src/main/proto/ScmServerDatanodeHeartbeatProtocol.proto
diff --git a/hadoop-hdds/common/src/main/proto/ScmBlockLocationProtocol.proto 
b/hadoop-hdds/interface-server/src/main/proto/ScmServerProtocol.proto
similarity index 100%
rename from hadoop-hdds/common/src/main/proto/ScmBlockLocationProtocol.proto
rename to hadoop-hdds/interface-server/src/main/proto/ScmServerProtocol.proto
diff --git a/hadoop-hdds/common/src/main/proto/SCMSecurityProtocol.proto 
b/hadoop-hdds/interface-server/src/main/proto/ScmServerSecurityProtocol.proto
similarity index 100%
rename from hadoop-hdds/common/src/main/proto/SCMSecurityProtocol.proto
rename to 
hadoop-hdds/interface-server/src/main/proto/ScmServerSecurityProtocol.proto
diff --git a/hadoop-hdds/container-service/src/main/proto/proto.lock 
b/hadoop-hdds/interface-server/src/main/proto/proto.lock
similarity index 59%
rename from hadoop-hdds/container-service/src/main/proto/proto.lock
rename to hadoop-hdds/interface-server/src/main/proto/proto.lock
index ac272e5..ce27bfb 100644
--- a/hadoop-hdds/container-service/src/main/proto/proto.lock
+++ b/hadoop-hdds/interface-server/src/main/proto/proto.lock
@@ -1,7 +1,7 @@
 {
   "definitions": [
     {
-      "protopath": "StorageContainerDatanodeProtocol.proto",
+      "protopath": "ScmServerDatanodeHeartbeatProtocol.proto",
       "def": {
         "enums": [
           {
@@ -1065,6 +1065,718 @@
           }
         ]
       }
+    },
+    {
+      "protopath": "ScmServerProtocol.proto",
+      "def": {
+        "enums": [
+          {
+            "name": "Type",
+            "enum_fields": [
+              {
+                "name": "AllocateScmBlock",
+                "integer": 11
+              },
+              {
+                "name": "DeleteScmKeyBlocks",
+                "integer": 12
+              },
+              {
+                "name": "GetScmInfo",
+                "integer": 13
+              },
+              {
+                "name": "SortDatanodes",
+                "integer": 14
+              }
+            ]
+          },
+          {
+            "name": "Status",
+            "enum_fields": [
+              {
+                "name": "OK",
+                "integer": 1
+              },
+              {
+                "name": "FAILED_TO_LOAD_NODEPOOL",
+                "integer": 2
+              },
+              {
+                "name": "FAILED_TO_FIND_NODE_IN_POOL",
+                "integer": 3
+              },
+              {
+                "name": "FAILED_TO_FIND_HEALTHY_NODES",
+                "integer": 4
+              },
+              {
+                "name": "FAILED_TO_FIND_NODES_WITH_SPACE",
+                "integer": 5
+              },
+              {
+                "name": "FAILED_TO_FIND_SUITABLE_NODE",
+                "integer": 6
+              },
+              {
+                "name": "INVALID_CAPACITY",
+                "integer": 7
+              },
+              {
+                "name": "INVALID_BLOCK_SIZE",
+                "integer": 8
+              },
+              {
+                "name": "SAFE_MODE_EXCEPTION",
+                "integer": 9
+              },
+              {
+                "name": "FAILED_TO_LOAD_OPEN_CONTAINER",
+                "integer": 10
+              },
+              {
+                "name": "FAILED_TO_ALLOCATE_CONTAINER",
+                "integer": 11
+              },
+              {
+                "name": "FAILED_TO_CHANGE_CONTAINER_STATE",
+                "integer": 12
+              },
+              {
+                "name": "FAILED_TO_CHANGE_PIPELINE_STATE",
+                "integer": 13
+              },
+              {
+                "name": "CONTAINER_EXISTS",
+                "integer": 14
+              },
+              {
+                "name": "FAILED_TO_FIND_CONTAINER",
+                "integer": 15
+              },
+              {
+                "name": "FAILED_TO_FIND_CONTAINER_WITH_SPACE",
+                "integer": 16
+              },
+              {
+                "name": "BLOCK_EXISTS",
+                "integer": 17
+              },
+              {
+                "name": "FAILED_TO_FIND_BLOCK",
+                "integer": 18
+              },
+              {
+                "name": "IO_EXCEPTION",
+                "integer": 19
+              },
+              {
+                "name": "UNEXPECTED_CONTAINER_STATE",
+                "integer": 20
+              },
+              {
+                "name": "SCM_NOT_INITIALIZED",
+                "integer": 21
+              },
+              {
+                "name": "DUPLICATE_DATANODE",
+                "integer": 22
+              },
+              {
+                "name": "NO_SUCH_DATANODE",
+                "integer": 23
+              },
+              {
+                "name": "NO_REPLICA_FOUND",
+                "integer": 24
+              },
+              {
+                "name": "FAILED_TO_FIND_ACTIVE_PIPELINE",
+                "integer": 25
+              },
+              {
+                "name": "FAILED_TO_INIT_CONTAINER_PLACEMENT_POLICY",
+                "integer": 26
+              },
+              {
+                "name": "FAILED_TO_ALLOCATE_ENOUGH_BLOCKS",
+                "integer": 27
+              },
+              {
+                "name": "INTERNAL_ERROR",
+                "integer": 29
+              }
+            ]
+          },
+          {
+            "name": "DeleteScmBlockResult.Result",
+            "enum_fields": [
+              {
+                "name": "success",
+                "integer": 1
+              },
+              {
+                "name": "safeMode",
+                "integer": 2
+              },
+              {
+                "name": "errorNotFound",
+                "integer": 3
+              },
+              {
+                "name": "unknownFailure",
+                "integer": 4
+              }
+            ]
+          }
+        ],
+        "messages": [
+          {
+            "name": "SCMBlockLocationRequest",
+            "fields": [
+              {
+                "id": 1,
+                "name": "cmdType",
+                "type": "Type"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              },
+              {
+                "id": 3,
+                "name": "userInfo",
+                "type": "UserInfo"
+              },
+              {
+                "id": 11,
+                "name": "allocateScmBlockRequest",
+                "type": "AllocateScmBlockRequestProto"
+              },
+              {
+                "id": 12,
+                "name": "deleteScmKeyBlocksRequest",
+                "type": "DeleteScmKeyBlocksRequestProto"
+              },
+              {
+                "id": 13,
+                "name": "getScmInfoRequest",
+                "type": "hadoop.hdds.GetScmInfoRequestProto"
+              },
+              {
+                "id": 14,
+                "name": "sortDatanodesRequest",
+                "type": "SortDatanodesRequestProto"
+              }
+            ]
+          },
+          {
+            "name": "SCMBlockLocationResponse",
+            "fields": [
+              {
+                "id": 1,
+                "name": "cmdType",
+                "type": "Type"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              },
+              {
+                "id": 3,
+                "name": "success",
+                "type": "bool",
+                "options": [
+                  {
+                    "name": "default",
+                    "value": "true"
+                  }
+                ]
+              },
+              {
+                "id": 4,
+                "name": "message",
+                "type": "string"
+              },
+              {
+                "id": 5,
+                "name": "status",
+                "type": "Status"
+              },
+              {
+                "id": 6,
+                "name": "leaderOMNodeId",
+                "type": "string"
+              },
+              {
+                "id": 11,
+                "name": "allocateScmBlockResponse",
+                "type": "AllocateScmBlockResponseProto"
+              },
+              {
+                "id": 12,
+                "name": "deleteScmKeyBlocksResponse",
+                "type": "DeleteScmKeyBlocksResponseProto"
+              },
+              {
+                "id": 13,
+                "name": "getScmInfoResponse",
+                "type": "hadoop.hdds.GetScmInfoResponseProto"
+              },
+              {
+                "id": 14,
+                "name": "sortDatanodesResponse",
+                "type": "SortDatanodesResponseProto"
+              }
+            ]
+          },
+          {
+            "name": "UserInfo",
+            "fields": [
+              {
+                "id": 1,
+                "name": "userName",
+                "type": "string"
+              },
+              {
+                "id": 3,
+                "name": "remoteAddress",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "AllocateScmBlockRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "size",
+                "type": "uint64"
+              },
+              {
+                "id": 2,
+                "name": "numBlocks",
+                "type": "uint32"
+              },
+              {
+                "id": 3,
+                "name": "type",
+                "type": "ReplicationType"
+              },
+              {
+                "id": 4,
+                "name": "factor",
+                "type": "hadoop.hdds.ReplicationFactor"
+              },
+              {
+                "id": 5,
+                "name": "owner",
+                "type": "string"
+              },
+              {
+                "id": 7,
+                "name": "excludeList",
+                "type": "ExcludeListProto"
+              }
+            ]
+          },
+          {
+            "name": "DeleteScmKeyBlocksRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "keyBlocks",
+                "type": "KeyBlocks",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "KeyBlocks",
+            "fields": [
+              {
+                "id": 1,
+                "name": "key",
+                "type": "string"
+              },
+              {
+                "id": 2,
+                "name": "blocks",
+                "type": "BlockID",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "DeleteScmKeyBlocksResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "results",
+                "type": "DeleteKeyBlocksResultProto",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "DeleteKeyBlocksResultProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "objectKey",
+                "type": "string"
+              },
+              {
+                "id": 2,
+                "name": "blockResults",
+                "type": "DeleteScmBlockResult",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "DeleteScmBlockResult",
+            "fields": [
+              {
+                "id": 1,
+                "name": "result",
+                "type": "Result"
+              },
+              {
+                "id": 2,
+                "name": "blockID",
+                "type": "BlockID"
+              }
+            ]
+          },
+          {
+            "name": "AllocateBlockResponse",
+            "fields": [
+              {
+                "id": 1,
+                "name": "containerBlockID",
+                "type": "ContainerBlockID"
+              },
+              {
+                "id": 2,
+                "name": "pipeline",
+                "type": "hadoop.hdds.Pipeline"
+              }
+            ]
+          },
+          {
+            "name": "AllocateScmBlockResponseProto",
+            "fields": [
+              {
+                "id": 3,
+                "name": "blocks",
+                "type": "AllocateBlockResponse",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "SortDatanodesRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "client",
+                "type": "string"
+              },
+              {
+                "id": 2,
+                "name": "nodeNetworkName",
+                "type": "string",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "SortDatanodesResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "node",
+                "type": "DatanodeDetailsProto",
+                "is_repeated": true
+              }
+            ]
+          }
+        ],
+        "services": [
+          {
+            "name": "ScmBlockLocationProtocolService",
+            "rpcs": [
+              {
+                "name": "send",
+                "in_type": "SCMBlockLocationRequest",
+                "out_type": "SCMBlockLocationResponse"
+              }
+            ]
+          }
+        ],
+        "imports": [
+          {
+            "path": "hdds.proto"
+          }
+        ],
+        "package": {
+          "name": "hadoop.hdds.block"
+        },
+        "options": [
+          {
+            "name": "java_package",
+            "value": "org.apache.hadoop.hdds.protocol.proto"
+          },
+          {
+            "name": "java_outer_classname",
+            "value": "ScmBlockLocationProtocolProtos"
+          },
+          {
+            "name": "java_generic_services",
+            "value": "true"
+          },
+          {
+            "name": "java_generate_equals_and_hash",
+            "value": "true"
+          }
+        ]
+      }
+    },
+    {
+      "protopath": "ScmServerSecurityProtocol.proto",
+      "def": {
+        "enums": [
+          {
+            "name": "Type",
+            "enum_fields": [
+              {
+                "name": "GetDataNodeCertificate",
+                "integer": 1
+              },
+              {
+                "name": "GetOMCertificate",
+                "integer": 2
+              },
+              {
+                "name": "GetCertificate",
+                "integer": 3
+              },
+              {
+                "name": "GetCACertificate",
+                "integer": 4
+              }
+            ]
+          },
+          {
+            "name": "Status",
+            "enum_fields": [
+              {
+                "name": "OK",
+                "integer": 1
+              }
+            ]
+          },
+          {
+            "name": "SCMGetCertResponseProto.ResponseCode",
+            "enum_fields": [
+              {
+                "name": "success",
+                "integer": 1
+              },
+              {
+                "name": "authenticationFailed",
+                "integer": 2
+              },
+              {
+                "name": "invalidCSR",
+                "integer": 3
+              }
+            ]
+          }
+        ],
+        "messages": [
+          {
+            "name": "SCMSecurityRequest",
+            "fields": [
+              {
+                "id": 1,
+                "name": "cmdType",
+                "type": "Type"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              },
+              {
+                "id": 3,
+                "name": "getDataNodeCertRequest",
+                "type": "SCMGetDataNodeCertRequestProto"
+              },
+              {
+                "id": 4,
+                "name": "getOMCertRequest",
+                "type": "SCMGetOMCertRequestProto"
+              },
+              {
+                "id": 5,
+                "name": "getCertificateRequest",
+                "type": "SCMGetCertificateRequestProto"
+              },
+              {
+                "id": 6,
+                "name": "getCACertificateRequest",
+                "type": "SCMGetCACertificateRequestProto"
+              }
+            ]
+          },
+          {
+            "name": "SCMSecurityResponse",
+            "fields": [
+              {
+                "id": 1,
+                "name": "cmdType",
+                "type": "Type"
+              },
+              {
+                "id": 2,
+                "name": "traceID",
+                "type": "string"
+              },
+              {
+                "id": 3,
+                "name": "success",
+                "type": "bool",
+                "options": [
+                  {
+                    "name": "default",
+                    "value": "true"
+                  }
+                ]
+              },
+              {
+                "id": 4,
+                "name": "message",
+                "type": "string"
+              },
+              {
+                "id": 5,
+                "name": "status",
+                "type": "Status"
+              },
+              {
+                "id": 6,
+                "name": "getCertResponseProto",
+                "type": "SCMGetCertResponseProto"
+              }
+            ]
+          },
+          {
+            "name": "SCMGetDataNodeCertRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "datanodeDetails",
+                "type": "DatanodeDetailsProto"
+              },
+              {
+                "id": 2,
+                "name": "CSR",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "SCMGetOMCertRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "omDetails",
+                "type": "OzoneManagerDetailsProto"
+              },
+              {
+                "id": 2,
+                "name": "CSR",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "SCMGetCertificateRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "certSerialId",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "SCMGetCACertificateRequestProto"
+          },
+          {
+            "name": "SCMGetCertResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "responseCode",
+                "type": "ResponseCode"
+              },
+              {
+                "id": 2,
+                "name": "x509Certificate",
+                "type": "string"
+              },
+              {
+                "id": 3,
+                "name": "x509CACertificate",
+                "type": "string"
+              }
+            ]
+          }
+        ],
+        "services": [
+          {
+            "name": "SCMSecurityProtocolService",
+            "rpcs": [
+              {
+                "name": "submitRequest",
+                "in_type": "SCMSecurityRequest",
+                "out_type": "SCMSecurityResponse"
+              }
+            ]
+          }
+        ],
+        "imports": [
+          {
+            "path": "hdds.proto"
+          }
+        ],
+        "package": {
+          "name": "hadoop.hdds.security"
+        },
+        "options": [
+          {
+            "name": "java_package",
+            "value": "org.apache.hadoop.hdds.protocol.proto"
+          },
+          {
+            "name": "java_outer_classname",
+            "value": "SCMSecurityProtocolProtos"
+          },
+          {
+            "name": "java_generic_services",
+            "value": "true"
+          },
+          {
+            "name": "java_generate_equals_and_hash",
+            "value": "true"
+          }
+        ]
+      }
     }
   ]
 }
\ No newline at end of file
diff --git a/hadoop-hdds/pom.xml b/hadoop-hdds/pom.xml
index 92c3f39..ac854d4 100644
--- a/hadoop-hdds/pom.xml
+++ b/hadoop-hdds/pom.xml
@@ -33,6 +33,9 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <module>hadoop-dependency-client</module>
     <module>hadoop-dependency-test</module>
     <module>hadoop-dependency-server</module>
+    <module>interface-client</module>
+    <module>interface-admin</module>
+    <module>interface-server</module>
     <module>client</module>
     <module>common</module>
     <module>framework</module>
@@ -87,6 +90,24 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd";>
 
       <dependency>
         <groupId>org.apache.hadoop</groupId>
+        <artifactId>hadoop-hdds-interface-server</artifactId>
+        <version>${hdds.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.apache.hadoop</groupId>
+        <artifactId>hadoop-hdds-interface-client</artifactId>
+        <version>${hdds.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.apache.hadoop</groupId>
+        <artifactId>hadoop-hdds-interface-admin</artifactId>
+        <version>${hdds.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-hdds-client</artifactId>
         <version>${hdds.version}</version>
       </dependency>
diff --git a/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml 
b/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
index df58f36..33e72fc 100644
--- a/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
+++ b/hadoop-ozone/common/dev-support/findbugsExcludeFile.xml
@@ -19,4 +19,7 @@
   <Match>
     <Package name="org.apache.hadoop.ozone.protocol.proto"/>
   </Match>
+  <Match>
+    <Package name="org.apache.hadoop.security.proto"/>
+  </Match>
 </FindBugsFilter>
diff --git a/hadoop-ozone/common/pom.xml b/hadoop-ozone/common/pom.xml
index 0c02085..4d84337 100644
--- a/hadoop-ozone/common/pom.xml
+++ b/hadoop-ozone/common/pom.xml
@@ -100,12 +100,7 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd";>
               <goal>test-compile</goal>
             </goals>
             <configuration>
-              <additionalProtoPathElements>
-                <param>
-                  ${basedir}/../../hadoop-hdds/common/src/main/proto/
-                </param>
-                <param>${basedir}/src/main/proto</param>
-              </additionalProtoPathElements>
+              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
               <protocArtifact>
                 
com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
               </protocArtifact>
diff --git a/hadoop-hdds/common/src/main/proto/Security.proto 
b/hadoop-ozone/common/src/main/proto/Security.proto
similarity index 100%
rename from hadoop-hdds/common/src/main/proto/Security.proto
rename to hadoop-ozone/common/src/main/proto/Security.proto
diff --git a/hadoop-ozone/common/src/main/proto/proto.lock 
b/hadoop-ozone/common/src/main/proto/proto.lock
index 0de831c..01eedd0 100644
--- a/hadoop-ozone/common/src/main/proto/proto.lock
+++ b/hadoop-ozone/common/src/main/proto/proto.lock
@@ -3235,6 +3235,149 @@
           }
         ]
       }
+    },
+    {
+      "protopath": "Security.proto",
+      "def": {
+        "messages": [
+          {
+            "name": "TokenProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "identifier",
+                "type": "bytes"
+              },
+              {
+                "id": 2,
+                "name": "password",
+                "type": "bytes"
+              },
+              {
+                "id": 3,
+                "name": "kind",
+                "type": "string"
+              },
+              {
+                "id": 4,
+                "name": "service",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "CredentialsKVProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "alias",
+                "type": "string"
+              },
+              {
+                "id": 2,
+                "name": "token",
+                "type": "hadoop.common.TokenProto"
+              },
+              {
+                "id": 3,
+                "name": "secret",
+                "type": "bytes"
+              }
+            ]
+          },
+          {
+            "name": "CredentialsProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "tokens",
+                "type": "hadoop.common.CredentialsKVProto",
+                "is_repeated": true
+              },
+              {
+                "id": 2,
+                "name": "secrets",
+                "type": "hadoop.common.CredentialsKVProto",
+                "is_repeated": true
+              }
+            ]
+          },
+          {
+            "name": "GetDelegationTokenRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "renewer",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "GetDelegationTokenResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "token",
+                "type": "hadoop.common.TokenProto"
+              }
+            ]
+          },
+          {
+            "name": "RenewDelegationTokenRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "token",
+                "type": "hadoop.common.TokenProto"
+              }
+            ]
+          },
+          {
+            "name": "RenewDelegationTokenResponseProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "newExpiryTime",
+                "type": "uint64"
+              }
+            ]
+          },
+          {
+            "name": "CancelDelegationTokenRequestProto",
+            "fields": [
+              {
+                "id": 1,
+                "name": "token",
+                "type": "hadoop.common.TokenProto"
+              }
+            ]
+          },
+          {
+            "name": "CancelDelegationTokenResponseProto"
+          }
+        ],
+        "package": {
+          "name": "hadoop.common"
+        },
+        "options": [
+          {
+            "name": "java_package",
+            "value": "org.apache.hadoop.security.proto"
+          },
+          {
+            "name": "java_outer_classname",
+            "value": "SecurityProtos"
+          },
+          {
+            "name": "java_generic_services",
+            "value": "true"
+          },
+          {
+            "name": "java_generate_equals_and_hash",
+            "value": "true"
+          }
+        ]
+      }
     }
   ]
 }
\ No newline at end of file
diff --git a/hadoop-ozone/ozone-manager/pom.xml 
b/hadoop-ozone/ozone-manager/pom.xml
index 9f02e79..9b87af6 100644
--- a/hadoop-ozone/ozone-manager/pom.xml
+++ b/hadoop-ozone/ozone-manager/pom.xml
@@ -45,6 +45,12 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd";>
       <artifactId>hadoop-hdds-docs</artifactId>
     </dependency>
 
+    <!-- hdds.proto and generated files are required from there -->
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdds-interface-client</artifactId>
+    </dependency>
+
     <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-hdds-test-utils</artifactId>
diff --git a/hadoop-ozone/pom.xml b/hadoop-ozone/pom.xml
index 6cedbce..bad680d 100644
--- a/hadoop-ozone/pom.xml
+++ b/hadoop-ozone/pom.xml
@@ -123,6 +123,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.hadoop</groupId>
+        <artifactId>hadoop-hdds-interface-client</artifactId>
+        <version>${hdds.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-hdds-test-utils</artifactId>
         <version>${hdds.version}</version>
         <scope>test</scope>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to