Skip to content

Commit

Permalink
[apache#768] feat(cli): Cli method for blacklist update
Browse files Browse the repository at this point in the history
  • Loading branch information
beryllw committed Jun 7, 2023
1 parent 6add30c commit 3655ec3
Show file tree
Hide file tree
Showing 16 changed files with 372 additions and 381 deletions.
8 changes: 4 additions & 4 deletions cli/src/main/java/org/apache/uniffle/api/AdminRestApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@

package org.apache.uniffle.api;

import org.apache.uniffle.client.RestClient;
import org.apache.uniffle.client.UniffleRestClient;

import java.util.HashMap;
import java.util.Map;
import org.apache.uniffle.client.RestClient;
import org.apache.uniffle.client.UniffleRestClient;

public class AdminRestApi {
private UniffleRestClient client;

private static final String API_BASE_PATH = "admin";

private AdminRestApi() {}
private AdminRestApi() {
}

public AdminRestApi(UniffleRestClient client) {
this.client = client;
Expand Down
155 changes: 77 additions & 78 deletions cli/src/main/java/org/apache/uniffle/cli/UniffleCLI.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,58 +20,57 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.uniffle.AbstractCustomCommandLine;
import org.apache.uniffle.UniffleCliArgsException;
import org.apache.uniffle.api.AdminRestApi;
import org.apache.uniffle.client.UniffleRestClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.apache.uniffle.AbstractCustomCommandLine;
import org.apache.uniffle.UniffleCliArgsException;

public class UniffleCLI extends AbstractCustomCommandLine {

private static final Logger LOG = LoggerFactory.getLogger(UniffleCLI.class);
private final Options allOptions;
private final Option uniffleClientCli;
private final Option uniffleAdminCli;
private final Option checkerClass;
private final Option help;
private final Option coordServer;
private final Option coordPort;
private final Option refreshAccessCli;
protected UniffleRestClient client;

public UniffleCLI(String shortPrefix, String longPrefix) {
allOptions = new Options();
uniffleClientCli = new Option(shortPrefix + "c", longPrefix + "cli",
true, "This is an client cli command that will print args.");
uniffleAdminCli = new Option(shortPrefix + "a", longPrefix + "admin",
true, "This is an admin command that will print args.");
refreshAccessCli = new Option(shortPrefix + "rc", longPrefix + "refreshChecker",
false, "This is an admin command that will refresh access checker.");
checkerClass = new Option(shortPrefix + "cc", longPrefix + "checkerClass",
true, "This is the checker class that will be refreshed.");
help = new Option(shortPrefix + "h", longPrefix + "help",
false, "Help for the Uniffle CLI.");
coordServer = new Option(shortPrefix + "s", longPrefix + "host",
true, "This is coordinator server host.");
coordPort = new Option(shortPrefix + "p", longPrefix + "port",
true, "This is coordinator server port.");
allOptions.addOption(uniffleClientCli);
allOptions.addOption(uniffleAdminCli);
allOptions.addOption(coordServer);
allOptions.addOption(coordPort);
allOptions.addOption(refreshAccessCli);
allOptions.addOption(help);
}
private static final Logger LOG = LoggerFactory.getLogger(UniffleCLI.class);
private final Options allOptions;
private final Option uniffleClientCli;
private final Option uniffleAdminCli;
private final Option checkerClass;
private final Option help;
private final Option coordServer;
private final Option coordPort;
private final Option refreshAccessCli;
protected UniffleRestClient client;

public UniffleCLI(String shortPrefix, String longPrefix) {
allOptions = new Options();
uniffleClientCli = new Option(shortPrefix + "c", longPrefix + "cli",
true, "This is an client cli command that will print args.");
uniffleAdminCli = new Option(shortPrefix + "a", longPrefix + "admin",
true, "This is an admin command that will print args.");
refreshAccessCli = new Option(shortPrefix + "rc", longPrefix + "refreshChecker",
false, "This is an admin command that will refresh access checker.");
checkerClass = new Option(shortPrefix + "cc", longPrefix + "checkerClass",
true, "This is the checker class that will be refreshed.");
help = new Option(shortPrefix + "h", longPrefix + "help",
false, "Help for the Uniffle CLI.");
coordServer = new Option(shortPrefix + "s", longPrefix + "host",
true, "This is coordinator server host.");
coordPort = new Option(shortPrefix + "p", longPrefix + "port",
true, "This is coordinator server port.");
allOptions.addOption(uniffleClientCli);
allOptions.addOption(uniffleAdminCli);
allOptions.addOption(coordServer);
allOptions.addOption(coordPort);
allOptions.addOption(refreshAccessCli);
allOptions.addOption(help);
}

public UniffleCLI(String shortPrefix, String longPrefix, UniffleRestClient client) {
this(shortPrefix, longPrefix);
this.client = client;
}
public UniffleCLI(String shortPrefix, String longPrefix, UniffleRestClient client) {
this(shortPrefix, longPrefix);
this.client = client;
}

public int run(String[] args) throws UniffleCliArgsException {
final CommandLine cmd = parseCommandLineOptions(args, true);
public int run(String[] args) throws UniffleCliArgsException {
final CommandLine cmd = parseCommandLineOptions(args, true);

if (cmd.hasOption(help.getOpt())) {
printUsage();
Expand All @@ -84,46 +83,46 @@ public int run(String[] args) throws UniffleCliArgsException {
return 0;
}

if (cmd.hasOption(uniffleAdminCli.getOpt())) {
String cliArgs = cmd.getOptionValue(uniffleAdminCli.getOpt());
System.out.println("uniffle-admin-cli : " + cliArgs);
return 0;
}
if (cmd.hasOption(coordServer.getOpt()) && cmd.hasOption(coordPort.getOpt())) {
String host = cmd.getOptionValue(coordServer.getOpt()).trim();
int port = Integer.parseInt(cmd.getOptionValue(coordPort.getOpt()).trim());
String hostUrl = String.format("http://%s:%d", host, port);
LOG.info("uniffle-admin-cli : coordinator server host {}, port {}.", host, port);
client = UniffleRestClient.builder(hostUrl).build();
}

if (cmd.hasOption(refreshAccessCli.getOpt())) {
String checker = cmd.getOptionValue(checkerClass.getOpt());
LOG.info("uniffle-admin-cli : refresh access checker {}!", checker);
refreshAccessChecker(checker);
return 0;
}

return 1;
if (cmd.hasOption(uniffleAdminCli.getOpt())) {
String cliArgs = cmd.getOptionValue(uniffleAdminCli.getOpt());
System.out.println("uniffle-admin-cli : " + cliArgs);
return 0;
}
if (cmd.hasOption(coordServer.getOpt()) && cmd.hasOption(coordPort.getOpt())) {
String host = cmd.getOptionValue(coordServer.getOpt()).trim();
int port = Integer.parseInt(cmd.getOptionValue(coordPort.getOpt()).trim());
String hostUrl = String.format("http://%s:%d", host, port);
LOG.info("uniffle-admin-cli : coordinator server host {}, port {}.", host, port);
client = UniffleRestClient.builder(hostUrl).build();
}

private String refreshAccessChecker(String checker) throws UniffleCliArgsException {
if (client == null) {
throw new UniffleCliArgsException("Missing Coordinator host address and grpc port parameters.");
}
AdminRestApi adminRestApi = new AdminRestApi(client);
return adminRestApi.refreshAccessChecker(checker);
if (cmd.hasOption(refreshAccessCli.getOpt())) {
String checker = cmd.getOptionValue(checkerClass.getOpt());
LOG.info("uniffle-admin-cli : refresh access checker {}!", checker);
refreshAccessChecker(checker);
return 0;
}

@Override
public void addRunOptions(Options baseOptions) {
baseOptions.addOption(uniffleClientCli);
baseOptions.addOption(uniffleAdminCli);
baseOptions.addOption(refreshAccessCli);
baseOptions.addOption(checkerClass);
baseOptions.addOption(coordServer);
baseOptions.addOption(coordPort);
return 1;
}

private String refreshAccessChecker(String checker) throws UniffleCliArgsException {
if (client == null) {
throw new UniffleCliArgsException("Missing Coordinator host address and grpc port parameters.");
}
AdminRestApi adminRestApi = new AdminRestApi(client);
return adminRestApi.refreshAccessChecker(checker);
}

@Override
public void addRunOptions(Options baseOptions) {
baseOptions.addOption(uniffleClientCli);
baseOptions.addOption(uniffleAdminCli);
baseOptions.addOption(refreshAccessCli);
baseOptions.addOption(checkerClass);
baseOptions.addOption(coordServer);
baseOptions.addOption(coordPort);
}

@Override
public void addGeneralOptions(Options baseOptions) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

package org.apache.uniffle.client;

import javax.net.ssl.SSLContext;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
Expand All @@ -28,8 +29,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.net.ssl.SSLContext;

public class HttpClientFactory {
private static final Logger LOG = LoggerFactory.getLogger(HttpClientFactory.class);

Expand Down
4 changes: 3 additions & 1 deletion cli/src/main/java/org/apache/uniffle/client/RestClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@

import java.util.Map;

/** A underlying http client interface for common rest request. */
/**
* A underlying http client interface for common rest request.
*/
public interface RestClient extends AutoCloseable, Cloneable {

String get(String path, Map<String, Object> params, String authHeader);
Expand Down

0 comments on commit 3655ec3

Please sign in to comment.