Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file added conf/hugegraph.license
Binary file not shown.
120 changes: 120 additions & 0 deletions hg-pd-cli/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>hugegraph-pd</artifactId>
<groupId>org.apache.hugegraph</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>hg-pd-cli</artifactId>

<properties>
<jackson.version>2.12.1</jackson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.hugegraph</groupId>
<artifactId>hg-pd-client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>jraft-core</artifactId>
<version>${jraft-core.version}</version>
<exclusions>
<exclusion>
<groupId>org.rocksdb</groupId>
<artifactId>rocksdbjni</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- <dependency>-->
<!-- <groupId>commons-io</groupId>-->
<!-- <artifactId>commons-io</artifactId>-->
<!-- <version>2.8.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.apache.commons</groupId>-->
<!-- <artifactId>commons-lang3</artifactId>-->
<!-- <version>${commons-lang3.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<scope>test</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.fasterxml.jackson.core</groupId>-->
<!-- <artifactId>jackson-annotations</artifactId>-->
<!-- <version>${jackson.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.fasterxml.jackson.core</groupId>-->
<!-- <artifactId>jackson-core</artifactId>-->
<!-- <version>${jackson.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.fasterxml.jackson.core</groupId>-->
<!-- <artifactId>jackson-databind</artifactId>-->
<!-- <version>${jackson.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.fasterxml.jackson.module</groupId>-->
<!-- <artifactId>jackson-module-jaxb-annotations</artifactId>-->
<!-- <version>${jackson.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.fasterxml.jackson.jaxrs</groupId>-->
<!-- <artifactId>jackson-jaxrs-base</artifactId>-->
<!-- <version>${jackson.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.fasterxml.jackson.jaxrs</groupId>-->
<!-- <artifactId>jackson-jaxrs-json-provider</artifactId>-->
<!-- <version>${jackson.version}</version>-->
<!-- </dependency>-->
</dependencies>

<build>
<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>
org.apache.hugegraph.pd.cli.CliApplication
</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package org.apache.hugegraph.pd.cli;

import org.apache.hugegraph.pd.cli.cmd.ChangeRaft;
import org.apache.hugegraph.pd.cli.cmd.Command;
import org.apache.hugegraph.pd.cli.cmd.Config;
import org.apache.hugegraph.pd.cli.cmd.Parameter;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class CliApplication {

public static void main(String[] args) {
try {
Parameter parameter = Command.toParameter(args);
Command command;
switch (parameter.getCmd()) {
case "config":
command = new Config(parameter.getPd());
break;
case "change_raft":
command = new ChangeRaft(parameter.getPd());
break;
// case "check_peers":
// command = new CheckPeers(parameter.getPd());
// break;
default:
log.error("无效的指令");
return;
}
command.action(parameter.getParams());
} catch (Exception e) {
log.error("main thread error:", e);
System.exit(0);
} finally {

}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.apache.hugegraph.pd.cli.cmd;

import org.apache.hugegraph.pd.common.PDException;

/**
* @author zhangyingjie
* @date 2023/10/17
**/
public class ChangeRaft extends Command {

public ChangeRaft(String pd) {
super(pd);
}

@Override
public void action(String[] params) throws PDException {
pdClient.updatePdRaft(params[0]);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package org.apache.hugegraph.pd.cli.cmd;

import org.apache.hugegraph.pd.client.PDClient;
import org.apache.hugegraph.pd.client.PDConfig;
import org.apache.hugegraph.pd.common.PDException;

/**
* @author zhangyingjie
* @date 2023/10/17
**/
public abstract class Command {

protected static String error = "启动参数: 命令, pd地址, 命令参数, 参数分隔符(非必须)";
protected PDClient pdClient;
protected PDConfig config;

public Command(String pd) {
config = PDConfig.of(pd).setAuthority("store", "");
pdClient = PDClient.create(config);
}

public static Parameter toParameter(String[] args) throws PDException {
if (args.length < 2) {
throw new PDException(-1, error);
}
Parameter parameter = new Parameter();
parameter.setCmd(args[0]);
parameter.setPd(args[1]);

if (args.length == 2) {
parameter.setParams(new String[0]);
return parameter;
}

if (args.length == 4) {
// 之前的逻辑,存在一个分隔符,做兼容
String t = args[3];
if (t != null && !t.isEmpty() && args[2].contains(t)) {
parameter.setParams(args[2].split(t));
parameter.setSeparator(t);
return parameter;
}
}

// 剩余的部分放到 params中
String[] params = new String[args.length - 2] ;
System.arraycopy(args, 2, params, 0, args.length - 2);
parameter.setParams(params);

return parameter;
}

public abstract void action(String[] params) throws Exception;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.apache.hugegraph.pd.cli.cmd;

import org.apache.hugegraph.pd.common.PDException;
import org.apache.hugegraph.pd.grpc.Metapb;

/**
* @author zhangyingjie
* @date 2023/10/17
**/
public class Config extends Command {

public Config(String pd) {
super(pd);
}

@Override
public void action(String[] params) throws PDException {
String param = params[0];
String[] pair = param.split("=");
String key = pair[0].trim();
Object value = null;
if (pair.length > 1) {
value = pair[1].trim();
}
if (value == null) {
Metapb.PDConfig pdConfig = pdClient.getPDConfig();
switch (key) {
case "enableBatchLoad":
// value = pdConfig.getEnableBatchLoad();
break;
case "shardCount":
value = pdConfig.getShardCount();
break;
}

System.out.println("Get config " + key + "=" + value);
} else {
Metapb.PDConfig.Builder builder = Metapb.PDConfig.newBuilder();
switch (key) {
case "enableBatchLoad":
// builder.setEnableBatchLoad(Boolean.valueOf((String)value));
case "shardCount":
builder.setShardCount(Integer.valueOf((String) value));
}
pdClient.setPDConfig(builder.build());
System.out.println("Set config " + key + "=" + value);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.apache.hugegraph.pd.cli.cmd;

import lombok.Data;

/**
* @author zhangyingjie
* @date 2023/10/20
**/
@Data
public class Parameter {
String cmd;
String pd;
String[] params;
String separator;
}
Loading
Loading