Go CLI: switch to admin/api server (#15861)

### What problem does this PR solve?

```
RAGFlow(api/default)> use admin
SUCCESS
RAGFlow(api/default)> use api 'abc';
SUCCESS
```

### Type of change

- [x] New Feature (non-breaking change which adds functionality)

---------

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
Jin Hai
2026-06-10 10:57:00 +08:00
committed by GitHub
parent 9d9c2dc92c
commit 7c1bd9a5a5
5 changed files with 147 additions and 11 deletions

View File

@@ -713,10 +713,6 @@ func (c *CLI) AddAPIServer(cmd *Command) (ResponseIf, error) {
c.Config.APIClientConfig.APIServerMap[apiServerName].ApiToken = &apiServerToken
}
transport := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
if c.APIServerClientMap == nil {
c.APIServerClientMap = make(map[string]*HTTPClient)
}
@@ -725,6 +721,10 @@ func (c *CLI) AddAPIServer(cmd *Command) (ResponseIf, error) {
return nil, fmt.Errorf("api server: %s already exists", apiServerName)
}
transport := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
c.APIServerClientMap[apiServerName] = &HTTPClient{
Host: apiServerIP,
Port: apiServerPort,
@@ -788,6 +788,23 @@ func (c *CLI) AddAdminServer(cmd *Command) (ResponseIf, error) {
c.Config.AdminClientConfig.AdminPort = adminServerPort
}
transport := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
c.AdminServerClient = &HTTPClient{
Host: adminServerIP,
Port: adminServerPort,
APIVersion: "v1",
ConnectTimeout: 5 * time.Second,
ReadTimeout: 60 * time.Second,
VerifySSL: false,
client: &http.Client{
Transport: transport,
Timeout: 300 * time.Second,
},
}
var result SimpleResponse
result.Code = 0
result.Message = "admin server added successfully"
@@ -1027,3 +1044,62 @@ func FlattenMap(data map[string]interface{}, prefix string, result *[]map[string
}
}
}
func (c *CLI) UseAPIServer(cmd *Command) (ResponseIf, error) {
serverName, ok := cmd.Params["server_name"].(string)
if !ok {
return nil, fmt.Errorf("server_name not provided")
}
if c.Config.CLIMode == APIMode {
if c.Config.APIClientConfig.CurrentAPIServer == serverName {
return nil, fmt.Errorf("api server %s is already used", serverName)
}
}
var httpClient *HTTPClient
httpClient, ok = c.APIServerClientMap[serverName]
if !ok {
return nil, fmt.Errorf("api server %s not found", serverName)
}
if httpClient == nil {
return nil, fmt.Errorf("api server %s is nil", serverName)
}
var apiServerConfig *APIServerConfig
apiServerConfig, ok = c.Config.APIClientConfig.APIServerMap[serverName]
if !ok {
return nil, fmt.Errorf("api server %s not found in config", serverName)
}
if apiServerConfig == nil {
return nil, fmt.Errorf("api server %s is nil", serverName)
}
c.Config.APIClientConfig.CurrentAPIServer = serverName
c.Config.CLIMode = APIMode
var result SimpleResponse
result.Code = 0
result.Message = fmt.Sprintf("switch to api server %s", serverName)
result.Duration = 0
return &result, nil
}
func (c *CLI) UseAdminServer(cmd *Command) (ResponseIf, error) {
if c.Config.CLIMode == AdminMode {
return nil, fmt.Errorf("already in admin mode")
}
if c.AdminServerClient == nil || c.Config.AdminClientConfig == nil {
return nil, fmt.Errorf("admin server not added")
}
c.Config.CLIMode = AdminMode
var result SimpleResponse
result.Code = 0
result.Message = "switch to admin server"
result.Duration = 0
return &result, nil
}