You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pl...@apache.org on 2015/07/16 08:24:24 UTC

directory-kerby git commit: DIRKRB-372 Set the conf dir as the default backend data dir.

Repository: directory-kerby
Updated Branches:
  refs/heads/master 4ddcf983a -> ddd6aed98


DIRKRB-372 Set the conf dir as the default backend data dir.


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/ddd6aed9
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/ddd6aed9
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/ddd6aed9

Branch: refs/heads/master
Commit: ddd6aed98fe6af5988e8be00bd195f3fdcbb7dd3
Parents: 4ddcf98
Author: plusplusjiajia <ji...@intel.com>
Authored: Thu Jul 16 14:29:55 2015 +0800
Committer: plusplusjiajia <ji...@intel.com>
Committed: Thu Jul 16 14:29:55 2015 +0800

----------------------------------------------------------------------
 README.md                                       |  2 +-
 .../identitybackend/JsonIdentityBackend.java    | 15 +++++--
 .../kerb/identity/backend/JsonBackendTest.java  |  2 +-
 .../ZookeeperIdentityBackend.java               | 47 ++++++++++----------
 kerby-dist/README.md                            |  2 +-
 kerby-dist/kdc-dist/conf/backend.conf           |  5 ++-
 .../kerby/kerberos/kdc/JsonBackendKdcTest.java  |  2 +-
 .../kdc/OnlyTcpForNettyKdcNetworkTest.java      |  2 +-
 .../kdc/OnlyUdpForNettyKdcNetworkTest.java      |  2 +-
 .../backend/AbstractIdentityBackend.java        |  7 +++
 .../kerby/kerberos/kerb/server/KdcServer.java   |  2 +
 11 files changed, 54 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 55dcd40..1f3f0e7 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,7 @@ A standalone KDC server that can integrate various identity back ends including:
 - MemoryIdentityBackend.
   - It is default Identity Backend, and no cofiguration is needed. This backend is for no permanent storage requirements.
 - JsonIdentityBackend.
-  - It implemented by Gson which is used to convert Java Objects into their JSON representation and convert a JSON string to an equivalent Java object. A json file will be created in "backend.json.file". This backend is for small, easy, development and test environment.
+  - It implemented by Gson which is used to convert Java Objects into their JSON representation and convert a JSON string to an equivalent Java object. A json file will be created in "backend.json.dir". This backend is for small, easy, development and test environment.
 - ZookeeperIdentityBackend.
   - Currently it uses an embedded Zookeeper. In follow up it will be enhanced to support standalone Zookeeper cluster for
   replication and reliability. Zookeeper backend would be a good choice for high reliability, high performance and high scalability requirement and scenarios. 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
index b6b4206..c45e4ae 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
@@ -49,7 +49,7 @@ import java.util.Map;
  *
  */
 public class JsonIdentityBackend extends AbstractIdentityBackend {
-    public static final String JSON_IDENTITY_BACKEND_FILE = "backend.json.file";
+    public static final String JSON_IDENTITY_BACKEND_DIR = "backend.json.dir";
     private File jsonKdbFile;
     private Gson gson;
     private static final Logger LOG = LoggerFactory.getLogger(JsonIdentityBackend.class);
@@ -87,12 +87,19 @@ public class JsonIdentityBackend extends AbstractIdentityBackend {
      */
     private void load() throws KrbException {
         LOG.info("Loading the identities from json file.");
-        String jsonFile = getConfig().getString(JSON_IDENTITY_BACKEND_FILE);
+        String jsonFile = getConfig().getString(JSON_IDENTITY_BACKEND_DIR);
+        File jsonFileDir;
         if (jsonFile == null || jsonFile.isEmpty()) {
-            throw new KrbException("No json kdb file is found");
+            jsonFileDir = getBackendConfig().getConfDir();
+        } else {
+            jsonFileDir = new File(jsonFile);
+            if (!jsonFileDir.exists() && !jsonFileDir.mkdirs()) {
+                throw new KrbException("could not create json file dir " + jsonFileDir);
+            }
         }
 
-        jsonKdbFile = new File(jsonFile);
+        jsonKdbFile = new File(jsonFileDir, "json_identity_backend_file");
+
         if (!jsonKdbFile.exists()) {
             try {
                 jsonKdbFile.createNewFile();

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-backend/json-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/JsonBackendTest.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/JsonBackendTest.java b/kerby-backend/json-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/JsonBackendTest.java
index 8a974dc..2d4951e 100644
--- a/kerby-backend/json-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/JsonBackendTest.java
+++ b/kerby-backend/json-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/JsonBackendTest.java
@@ -41,7 +41,7 @@ public class JsonBackendTest extends BackendTestBase {
         String jsonBackendFileString = jsonBackendFile.getAbsolutePath();
 
         Config backendConfig = new Conf();
-        backendConfig.setString(JsonIdentityBackend.JSON_IDENTITY_BACKEND_FILE, jsonBackendFileString);
+        backendConfig.setString(JsonIdentityBackend.JSON_IDENTITY_BACKEND_DIR, jsonBackendFileString);
         backend = new JsonIdentityBackend(backendConfig);
         backend.initialize();
     }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
index 841a653..f2204cc 100644
--- a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
+++ b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
@@ -50,8 +50,8 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
     private final ZooKeeperServerMain zooKeeperServer = new ZooKeeperServerMain();
     private String zkHost;
     private int zkPort;
-    private File dataFile;
-    private File dataLogFile;
+    private File dataDir;
+    private File dataLogDir;
     private ZooKeeper zooKeeper;
     private static final Logger LOG = LoggerFactory.getLogger(ZookeeperIdentityBackend.class);
 
@@ -84,29 +84,30 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
         zkHost = getConfig().getString(ZKConfKey.ZK_HOST);
         zkPort = getConfig().getInt(ZKConfKey.ZK_PORT);
 
-        String dataDir = getConfig().getString(ZKConfKey.DATA_DIR);
-        if (dataDir == null || dataDir.isEmpty()) {
-            LOG.warn("Data dir " + dataDir + "is found while initialization the zookeeper server.");
-            throw new RuntimeException("No data dir is found");
+        String dataDirString = getConfig().getString(ZKConfKey.DATA_DIR);
+        if (dataDirString == null || dataDirString.isEmpty()) {
+            File zooKeeperDir = new File(getBackendConfig().getConfDir(), "zookeeper");
+            dataDir = new File(zooKeeperDir, "data");
+        } else {
+            dataDir = new File(dataDirString);
         }
 
-        dataFile = new File(dataDir);
-        if (!dataFile.exists() && !dataFile.mkdirs()) {
-            throw new KrbException("Dir file not exits");
+        if (!dataDir.exists() && !dataDir.mkdirs()) {
+            throw new KrbException("could not create data file dir " + dataDir);
         }
 
-        String dataLogDir = getConfig().getString(ZKConfKey.DATA_LOG_DIR);
-        if (dataLogDir == null || dataLogDir.isEmpty()) {
-            LOG.warn("Data log dir " + dataLogDir
-                + "is found while initialization the zookeeper server.");
-            throw new RuntimeException("No data log dir is found");
-        }
-
-        dataLogFile = new File(dataLogDir);
+        LOG.info("Data dir: " + dataDir);
 
+        String dataLogDirString = getConfig().getString(ZKConfKey.DATA_LOG_DIR);
+        if (dataLogDirString == null || dataLogDirString.isEmpty()) {
+            File zooKeeperDir = new File(getBackendConfig().getConfDir(), "zookeeper");
+            dataLogDir = new File(zooKeeperDir, "datalog");
+        } else {
+            dataLogDir = new File(dataLogDirString);
+        }
 
-        if (!dataLogFile.exists() && !dataFile.mkdirs()) {
-            throw new KrbException("DataLogfile file not exits");
+        if (!dataLogDir.exists() && !dataLogDir.mkdirs()) {
+            throw new KrbException("could not create data log file dir " + dataLogDir);
         }
 
         startEmbeddedZookeeper();
@@ -143,8 +144,8 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
      */
     private void startEmbeddedZookeeper() throws KrbException {
         Properties startupProperties = new Properties();
-        startupProperties.put("dataDir", dataFile.getAbsolutePath());
-        startupProperties.put("dataLogDir", dataLogFile.getAbsolutePath());
+        startupProperties.put("dataDir", dataDir.getAbsolutePath());
+        startupProperties.put("dataLogDir", dataLogDir.getAbsolutePath());
         startupProperties.put("clientPort", zkPort);
 
         QuorumPeerConfig quorumConfiguration = new QuorumPeerConfig();
@@ -215,7 +216,7 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
         if (doGetIdentity(identity.getPrincipalName()) != null) {
              LOG.error("Error occurred while adding identity, principal "
                 + identity.getPrincipalName() + " already exists.");
-            throw new RuntimeException("Principal already exists.");
+            throw new KrbException("Principal already exists.");
         }
         try {
             setIdentity(identity);
@@ -233,7 +234,7 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend {
         if (doGetIdentity(identity.getPrincipalName()) == null) {
             LOG.error("Error occured while updating identity, principal "
                 + identity.getPrincipalName() + " does not exists.");
-            throw new RuntimeException("Principal does not exist.");
+            throw new KrbException("Principal does not exist.");
         }
         try {
             setIdentity(identity);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-dist/README.md
----------------------------------------------------------------------
diff --git a/kerby-dist/README.md b/kerby-dist/README.md
index 29585ea..35be8db 100644
--- a/kerby-dist/README.md
+++ b/kerby-dist/README.md
@@ -39,7 +39,7 @@ An example of kdc.conf:
 An example of json backend backend.conf:
 ```
 kdc_identity_backend = org.apache.kerby.kerberos.kdc.identitybackend.JsonIdentityBackend
-backend.json.file = /tmp/kerby/jsonbackend
+backend.json.dir = /tmp/kerby/jsonbackend
 ```
 An example of zookeeper backend backend.conf:
 ```

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-dist/kdc-dist/conf/backend.conf
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/conf/backend.conf b/kerby-dist/kdc-dist/conf/backend.conf
index 363024c..5991f48 100644
--- a/kerby-dist/kdc-dist/conf/backend.conf
+++ b/kerby-dist/kdc-dist/conf/backend.conf
@@ -16,4 +16,7 @@
 # limitations under the License.
 #
 
-kdc_identity_backend = org.apache.kerby.kerberos.kdc.identitybackend.JsonIdentityBackend
+kdc_identity_backend = org.apache.kerby.kerberos.kdc.identitybackend.ZookeeperIdentityBackend
+backend.json.dir = /home/kerby/jsonbackend
+data_dir = /home/kerby/zookeeper/data
+data_log_dir = /home/kerby/zookeeper/datalog

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/JsonBackendKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/JsonBackendKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/JsonBackendKdcTest.java
index e0334a5..1292aa9 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/JsonBackendKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/JsonBackendKdcTest.java
@@ -41,7 +41,7 @@ public class JsonBackendKdcTest extends KerbyKdcTest {
 
         BackendConfig backendConfig = getKdcServer().getBackendConfig();
         backendConfig.setString(
-                JsonIdentityBackend.JSON_IDENTITY_BACKEND_FILE, jsonBackendFileString);
+                JsonIdentityBackend.JSON_IDENTITY_BACKEND_DIR, jsonBackendFileString);
         backendConfig.setString(KdcConfigKey.KDC_IDENTITY_BACKEND,
             "org.apache.kerby.kerberos.kdc.identitybackend.JsonIdentityBackend");
     }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyTcpForNettyKdcNetworkTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyTcpForNettyKdcNetworkTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyTcpForNettyKdcNetworkTest.java
index b9cc02f..fcc3722 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyTcpForNettyKdcNetworkTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyTcpForNettyKdcNetworkTest.java
@@ -57,7 +57,7 @@ public class OnlyTcpForNettyKdcNetworkTest extends KerbyKdcTest {
 
         BackendConfig backendConfig = getKdcServer().getBackendConfig();
         backendConfig.setString(
-                JsonIdentityBackend.JSON_IDENTITY_BACKEND_FILE, jsonBackendFileString);
+                JsonIdentityBackend.JSON_IDENTITY_BACKEND_DIR, jsonBackendFileString);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyUdpForNettyKdcNetworkTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyUdpForNettyKdcNetworkTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyUdpForNettyKdcNetworkTest.java
index 4afc9e5..6662897 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyUdpForNettyKdcNetworkTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/OnlyUdpForNettyKdcNetworkTest.java
@@ -57,7 +57,7 @@ public class OnlyUdpForNettyKdcNetworkTest extends KerbyKdcTest {
 
         BackendConfig backendConfig = getKdcServer().getBackendConfig();
         backendConfig.setString(
-                JsonIdentityBackend.JSON_IDENTITY_BACKEND_FILE,
+                JsonIdentityBackend.JSON_IDENTITY_BACKEND_DIR,
                 jsonBackendFileString);
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
index 1918bb4..05aa448 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
@@ -39,6 +39,13 @@ public abstract class AbstractIdentityBackend
             LoggerFactory.getLogger(AbstractIdentityBackend.class);
 
     /**
+     * Get the Backend Config.
+     */
+    protected BackendConfig getBackendConfig() {
+        return (BackendConfig) getConfig();
+    }
+
+    /**
      * {@inheritDoc}
      */
     @Override

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ddd6aed9/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
index 5541a9e..61031fb 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
@@ -22,6 +22,7 @@ package org.apache.kerby.kerberos.kerb.server;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.IdentityService;
+import org.apache.kerby.kerberos.kerb.identity.backend.BackendConfig;
 import org.apache.kerby.kerberos.kerb.server.impl.DefaultInternalKdcServerImpl;
 import org.apache.kerby.kerberos.kerb.server.impl.InternalKdcServer;
 
@@ -72,6 +73,7 @@ public class KdcServer {
         if (tmpBackendConfig == null) {
             tmpBackendConfig = new BackendConfig();
         }
+        tmpBackendConfig.setConfDir(confDir);
         this.backendConfig = tmpBackendConfig;
 
         startupOptions = new KOptions();