1
0
mirror of https://github.com/gluster/glusterd2.git synced 2026-02-05 12:45:38 +01:00
Files
glusterd2/glustercli/cmd/common.go
Oshank Kumar 38d20ee280 restclient: refactor some of the rest client code .
added separate method to create http.Request.
Initializing underlying http.Client while initializing
GlusterD rest client

Signed-off-by: Oshank Kumar <okumar@redhat.com>
2018-08-14 18:28:18 +05:30

89 lines
2.0 KiB
Go

package cmd
import (
"fmt"
"io"
"os"
"strings"
"time"
"github.com/gluster/glusterd2/pkg/restclient"
)
var (
client *restclient.Client
logWriter io.WriteCloser
errFailedToConnectToGlusterd = `Failed to connect to glusterd. Please check if
- Glusterd is running(%s) and reachable from this node.
- Make sure Endpoints specified in the command is valid
`
)
func initRESTClient(hostname, user, secret, cacert string, insecure bool) {
var err error
client, err = restclient.New(hostname, user, secret, cacert, insecure)
if err != nil {
failure("failed to setup client", err, 1)
}
client.SetTimeout(time.Duration(GlobalFlag.Timeout) * time.Second)
}
func isConnectionRefusedErr(err error) bool {
return strings.Contains(err.Error(), "connection refused")
}
func isNoSuchHostErr(err error) bool {
return strings.Contains(err.Error(), "no such host")
}
func isNoRouteToHostErr(err error) bool {
return strings.Contains(err.Error(), "no route to host")
}
func handleGlusterdConnectFailure(msg, endpoints string, err error, errcode int) {
if err == nil {
return
}
if isConnectionRefusedErr(err) || isNoSuchHostErr(err) || isNoRouteToHostErr(err) {
os.Stderr.WriteString(msg + "\n\n")
os.Stderr.WriteString(fmt.Sprintf(errFailedToConnectToGlusterd, endpoints))
os.Exit(errcode)
}
}
func failure(msg string, err error, errcode int) {
handleGlusterdConnectFailure(msg, GlobalFlag.Endpoints[0], err, errcode)
w := os.Stderr
w.WriteString(msg + "\n")
if client == nil && err != nil {
fmt.Fprintln(w, err)
os.Exit(errcode)
}
resp := client.LastErrorResponse()
if resp == nil && err != nil {
fmt.Fprintln(w, err)
os.Exit(errcode)
}
if err != nil {
w.WriteString("\nResponse headers:\n")
for k, v := range resp.Header {
if strings.HasSuffix(k, "-Id") {
w.WriteString(fmt.Sprintf("%s: %s\n", k, v[0]))
}
}
w.WriteString("\nResponse body:\n")
w.WriteString(fmt.Sprintf("%s\n", err.Error()))
}
os.Exit(errcode)
}