You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by pz...@apache.org on 2018/01/03 18:25:03 UTC
knox git commit: KNOX-1137
Repository: knox
Updated Branches:
refs/heads/master 7d42ffd06 -> 7e03a9cf1
KNOX-1137
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/7e03a9cf
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/7e03a9cf
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/7e03a9cf
Branch: refs/heads/master
Commit: 7e03a9cf1714747df01c4fa4afc00615feafa8c5
Parents: 7d42ffd
Author: Phil Zampino <pz...@gmail.com>
Authored: Tue Dec 12 12:41:54 2017 -0500
Committer: Phil Zampino <pz...@apache.org>
Committed: Wed Jan 3 12:59:37 2018 -0500
----------------------------------------------------------------------
.../org/apache/hadoop/gateway/util/KnoxCLI.java | 153 ++++++++++++-------
.../apache/hadoop/gateway/util/KnoxCLITest.java | 16 ++
2 files changed, 118 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/7e03a9cf/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java b/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java
index 5576df7..ec4b810 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java
@@ -105,7 +105,9 @@ public class KnoxCLI extends Configured implements Tool {
" [" + LDAPSysBindCommand.USAGE + "]\n" +
" [" + ServiceTestCommand.USAGE + "]\n" +
" [" + RemoteRegistryClientsListCommand.USAGE + "]\n" +
+ " [" + RemoteRegistryListProviderConfigsCommand.USAGE + "]\n" +
" [" + RemoteRegistryUploadProviderConfigCommand.USAGE + "]\n" +
+ " [" + RemoteRegistryListDescriptorsCommand.USAGE + "]\n" +
" [" + RemoteRegistryUploadDescriptorCommand.USAGE + "]\n" +
" [" + RemoteRegistryDeleteProviderConfigCommand.USAGE + "]\n" +
" [" + RemoteRegistryDeleteDescriptorCommand.USAGE + "]\n" +
@@ -199,7 +201,9 @@ public class KnoxCLI extends Configured implements Tool {
* % knoxcli service-test [--u user] [--p password] [--cluster clustername] [--hostname name] [--port port]
* % knoxcli list-registry-clients
* % knoxcli get-registry-acl entryName --registry-client name
+ * % knoxcli list-provider-configs --registry-client
* % knoxcli upload-provider-config filePath --registry-client name [--entry-name entryName]
+ * % knoxcli list-descriptors --registry-client
* % knoxcli upload-descriptor filePath --registry-client name [--entry-name entryName]
* % knoxcli delete-provider-config providerConfig --registry-client name
* % knoxcli delete-descriptor descriptor --registry-client name
@@ -371,6 +375,10 @@ public class KnoxCLI extends Configured implements Tool {
return -1;
}
this.remoteRegistryClient = args[++i];
+ } else if (args[i].equalsIgnoreCase("list-provider-configs")) {
+ command = new RemoteRegistryListProviderConfigsCommand();
+ } else if (args[i].equalsIgnoreCase("list-descriptors")) {
+ command = new RemoteRegistryListDescriptorsCommand();
} else if (args[i].equalsIgnoreCase("upload-provider-config")) {
String fileName;
if (i <= (args.length - 1)) {
@@ -484,6 +492,12 @@ public class KnoxCLI extends Configured implements Tool {
out.println(RemoteRegistryGetACLCommand.USAGE + "\n\n" + RemoteRegistryGetACLCommand.DESC);
out.println();
out.println( div );
+ out.println(RemoteRegistryListProviderConfigsCommand.USAGE + "\n\n" + RemoteRegistryListProviderConfigsCommand.DESC);
+ out.println();
+ out.println( div );
+ out.println(RemoteRegistryListDescriptorsCommand.USAGE + "\n\n" + RemoteRegistryListDescriptorsCommand.DESC);
+ out.println();
+ out.println( div );
out.println(RemoteRegistryUploadProviderConfigCommand.USAGE + "\n\n" + RemoteRegistryUploadProviderConfigCommand.DESC);
out.println();
out.println( div );
@@ -1878,16 +1892,80 @@ public class KnoxCLI extends Configured implements Tool {
}
}
+ private abstract class RemoteRegistryCommand extends Command {
+ static final String ROOT_ENTRY = "/knox";
+ static final String CONFIG_ENTRY = ROOT_ENTRY + "/config";
+ static final String PROVIDER_CONFIG_ENTRY = CONFIG_ENTRY + "/shared-providers";
+ static final String DESCRIPTORS_ENTRY = CONFIG_ENTRY + "/descriptors";
+
+ protected RemoteConfigurationRegistryClient getClient() {
+ RemoteConfigurationRegistryClient client = null;
+ if (remoteRegistryClient != null) {
+ RemoteConfigurationRegistryClientService cs = getRemoteConfigRegistryClientService();
+ client = cs.get(remoteRegistryClient);
+ if (client == null) {
+ out.println("No remote configuration registry identified by '" + remoteRegistryClient + "' could be found.");
+ }
+ } else {
+ out.println("Missing required argument : --registry-client\n");
+ }
+ return client;
+ }
+ }
+
+
+ public class RemoteRegistryListProviderConfigsCommand extends RemoteRegistryCommand {
+ static final String USAGE = "list-provider-configs --registry-client name";
+ static final String DESC = "Lists the provider configurations present in the specified remote registry\n";
+
+ @Override
+ public void execute() {
+ RemoteConfigurationRegistryClient client = getClient();
+ if (client != null) {
+ out.println("Provider Configurations (@" + client.getAddress() + ")");
+ List<String> entries = client.listChildEntries(PROVIDER_CONFIG_ENTRY);
+ for (String entry : entries) {
+ out.println(entry);
+ }
+ out.println();
+ }
+ }
+
+ @Override
+ public String getUsage() {
+ return USAGE + ":\n\n" + DESC;
+ }
+ }
+
+
+ public class RemoteRegistryListDescriptorsCommand extends RemoteRegistryCommand {
+ static final String USAGE = "list-descriptors --registry-client name";
+ static final String DESC = "Lists the descriptors present in the specified remote registry\n";
+
+ @Override
+ public void execute() {
+ RemoteConfigurationRegistryClient client = getClient();
+ if (client != null) {
+ out.println("Descriptors (@" + client.getAddress() + ")");
+ List<String> entries = client.listChildEntries(DESCRIPTORS_ENTRY);
+ for (String entry : entries) {
+ out.println(entry);
+ }
+ out.println();
+ }
+ }
+
+ @Override
+ public String getUsage() {
+ return USAGE + ":\n\n" + DESC;
+ }
+ }
+
/**
* Base class for remote config registry upload commands
*/
- public abstract class RemoteRegistryUploadCommand extends Command {
- protected static final String ROOT_ENTRY = "/knox";
- protected static final String CONFIG_ENTRY = ROOT_ENTRY + "/config";
- protected static final String PROVIDER_CONFIG_ENTRY = CONFIG_ENTRY + "/shared-providers";
- protected static final String DESCRIPTORS__ENTRY = CONFIG_ENTRY + "/descriptors";
-
+ public abstract class RemoteRegistryUploadCommand extends RemoteRegistryCommand {
private File sourceFile = null;
protected String filename = null;
@@ -1928,21 +2006,13 @@ public class KnoxCLI extends Configured implements Tool {
}
protected void execute(String entryName, File sourceFile) throws Exception {
- if (remoteRegistryClient != null) {
- RemoteConfigurationRegistryClientService cs = getRemoteConfigRegistryClientService();
- RemoteConfigurationRegistryClient client = cs.get(remoteRegistryClient);
- if (client != null) {
- if (entryName != null) {
- upload(client, entryName, sourceFile);
- }
- } else {
- out.println("No remote configuration registry identified by '" + remoteRegistryClient + "' could be found.");
+ RemoteConfigurationRegistryClient client = getClient();
+ if (client != null) {
+ if (entryName != null) {
+ upload(client, entryName, sourceFile);
}
- } else {
- out.println("Missing required argument : --registry-client\n");
}
}
-
}
@@ -1991,7 +2061,7 @@ public class KnoxCLI extends Configured implements Tool {
*/
@Override
public void execute() throws Exception {
- super.execute(getEntryName(DESCRIPTORS__ENTRY), getSourceFile());
+ super.execute(getEntryName(DESCRIPTORS_ENTRY), getSourceFile());
}
/* (non-Javadoc)
@@ -2004,7 +2074,7 @@ public class KnoxCLI extends Configured implements Tool {
}
- public class RemoteRegistryGetACLCommand extends Command {
+ public class RemoteRegistryGetACLCommand extends RemoteRegistryCommand {
static final String USAGE = "get-registry-acl entry --registry-client name";
static final String DESC = "Presents the ACL settings for the specified remote registry entry.\n";
@@ -2020,21 +2090,14 @@ public class KnoxCLI extends Configured implements Tool {
*/
@Override
public void execute() throws Exception {
- if (remoteRegistryClient != null) {
- RemoteConfigurationRegistryClientService cs = getRemoteConfigRegistryClientService();
- RemoteConfigurationRegistryClient client = cs.get(remoteRegistryClient);
- if (client != null) {
- if (entry != null) {
- List<RemoteConfigurationRegistryClient.EntryACL> acls = client.getACL(entry);
- for (RemoteConfigurationRegistryClient.EntryACL acl : acls) {
- out.println(acl.getType() + ":" + acl.getId() + ":" + acl.getPermissions());
- }
+ RemoteConfigurationRegistryClient client = getClient();
+ if (client != null) {
+ if (entry != null) {
+ List<RemoteConfigurationRegistryClient.EntryACL> acls = client.getACL(entry);
+ for (RemoteConfigurationRegistryClient.EntryACL acl : acls) {
+ out.println(acl.getType() + ":" + acl.getId() + ":" + acl.getPermissions());
}
- } else {
- out.println("No remote configuration registry identified by '" + remoteRegistryClient + "' could be found.");
}
- } else {
- out.println("Missing required argument : --registry-client\n");
}
}
@@ -2051,12 +2114,7 @@ public class KnoxCLI extends Configured implements Tool {
/**
* Base class for remote config registry delete commands
*/
- public abstract class RemoteRegistryDeleteCommand extends Command {
- protected static final String ROOT_ENTRY = "/knox";
- protected static final String CONFIG_ENTRY = ROOT_ENTRY + "/config";
- protected static final String PROVIDER_CONFIG_ENTRY = CONFIG_ENTRY + "/shared-providers";
- protected static final String DESCRIPTORS__ENTRY = CONFIG_ENTRY + "/descriptors";
-
+ public abstract class RemoteRegistryDeleteCommand extends RemoteRegistryCommand {
protected String entryName = null;
protected RemoteRegistryDeleteCommand(String entryName) {
@@ -2071,18 +2129,11 @@ public class KnoxCLI extends Configured implements Tool {
}
protected void execute(String entryName) throws Exception {
- if (remoteRegistryClient != null) {
- RemoteConfigurationRegistryClientService cs = getRemoteConfigRegistryClientService();
- RemoteConfigurationRegistryClient client = cs.get(remoteRegistryClient);
- if (client != null) {
- if (entryName != null) {
- delete(client, entryName);
- }
- } else {
- out.println("No remote configuration registry identified by '" + remoteRegistryClient + "' could be found.");
+ RemoteConfigurationRegistryClient client = getClient();
+ if (client != null) {
+ if (entryName != null) {
+ delete(client, entryName);
}
- } else {
- out.println("Missing required argument : --registry-client\n");
}
}
}
@@ -2118,7 +2169,7 @@ public class KnoxCLI extends Configured implements Tool {
@Override
public void execute() throws Exception {
- execute(DESCRIPTORS__ENTRY + "/" + entryName);
+ execute(DESCRIPTORS_ENTRY + "/" + entryName);
}
@Override
http://git-wip-us.apache.org/repos/asf/knox/blob/7e03a9cf/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java b/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java
index 2d4586f..8b2c0d0 100644
--- a/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java
+++ b/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java
@@ -193,6 +193,14 @@ public class KnoxCLITest {
// Validate the result
assertEquals(0, rc);
+
+ outContent.reset();
+ final String[] listArgs = {"list-provider-configs", "--registry-client", "test_client"};
+ cli.run(listArgs);
+ String outStr = outContent.toString().trim();
+ assertTrue(outStr.startsWith("Provider Configurations"));
+ assertTrue(outStr.endsWith(")\n"+providerConfigName));
+
File registryFile = new File(testRegistry, "knox/config/shared-providers/" + providerConfigName);
assertTrue(registryFile.exists());
assertEquals(FileUtils.readFileToString(registryFile), providerConfigContent);
@@ -272,6 +280,14 @@ public class KnoxCLITest {
// Validate the result
assertEquals(0, rc);
+
+ outContent.reset();
+ final String[] listArgs = {"list-descriptors", "--registry-client", "test_client"};
+ cli.run(listArgs);
+ String outStr = outContent.toString().trim();
+ assertTrue(outStr.startsWith("Descriptors"));
+ assertTrue(outStr.endsWith(")\n"+descriptorName));
+
File registryFile = new File(testRegistry, "knox/config/descriptors/" + descriptorName);
assertTrue(registryFile.exists());
assertEquals(FileUtils.readFileToString(registryFile), descriptorContent);