Merge pull request #9015 from Apokleos/bugfix-exec-uds

runtime: display accurate error msg to avoid misleading users.
This commit is contained in:
Alex Lyn 2024-02-05 13:50:43 +08:00 committed by GitHub
commit cf74166d75
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 4 deletions

View File

@ -338,12 +338,16 @@ func ServerSocketAddress(id string) string {
// shim management endpoint // shim management endpoint
// NOTE: this code allows various go clients, e.g. kata-runtime or kata-monitor commands, to // NOTE: this code allows various go clients, e.g. kata-runtime or kata-monitor commands, to
// connect to the rust shim management implementation. // connect to the rust shim management implementation.
func ClientSocketAddress(id string) string { func ClientSocketAddress(id string) (string, error) {
// get the go runtime uds path // get the go runtime uds path
socketPath := SocketPathGo(id) socketPath := SocketPathGo(id)
// if the path not exist, use the rust runtime uds path instead // if the path not exist, use the rust runtime uds path instead
if _, err := os.Stat(socketPath); err != nil { if _, err := os.Stat(socketPath); err != nil {
socketPath = SocketPathRust(id) socketPath = SocketPathRust(id)
if _, err := os.Stat(socketPath); err != nil {
return "", fmt.Errorf("It fails to stat both %s and %s with error %v.", SocketPathGo(id), SocketPathRust(id), err)
} }
return fmt.Sprintf("unix://%s", socketPath) }
return fmt.Sprintf("unix://%s", socketPath), nil
} }

View File

@ -32,7 +32,7 @@ func (km *KataMonitor) composeSocketAddress(r *http.Request) (string, error) {
return "", err return "", err
} }
return shim.ClientSocketAddress(sandbox), nil return shim.ClientSocketAddress(sandbox)
} }
func (km *KataMonitor) proxyRequest(w http.ResponseWriter, r *http.Request, func (km *KataMonitor) proxyRequest(w http.ResponseWriter, r *http.Request,

View File

@ -19,7 +19,12 @@ import (
// BuildShimClient builds and returns an http client for communicating with the provided sandbox // BuildShimClient builds and returns an http client for communicating with the provided sandbox
func BuildShimClient(sandboxID string, timeout time.Duration) (*http.Client, error) { func BuildShimClient(sandboxID string, timeout time.Duration) (*http.Client, error) {
return buildUnixSocketClient(shim.ClientSocketAddress(sandboxID), timeout) socketAddress, err := shim.ClientSocketAddress(sandboxID)
if err != nil {
return nil, err
}
return buildUnixSocketClient(socketAddress, timeout)
} }
// buildUnixSocketClient build http client for Unix socket // buildUnixSocketClient build http client for Unix socket