mirror of
https://github.com/kubeshark/kubeshark.git
synced 2026-03-18 18:42:44 +00:00
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package mizu
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/up9inc/mizu/shared"
|
|
"github.com/up9inc/mizu/shared/semver"
|
|
"net/http"
|
|
"net/url"
|
|
)
|
|
|
|
|
|
func getApiVersion(port uint16) (string, error) {
|
|
versionUrl, _ := url.Parse(fmt.Sprintf("http://localhost:%d/mizu/metadata/version", port))
|
|
req := &http.Request{
|
|
Method: http.MethodGet,
|
|
URL: versionUrl,
|
|
}
|
|
statusResp, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer statusResp.Body.Close()
|
|
|
|
versionResponse := &shared.VersionResponse{}
|
|
if err := json.NewDecoder(statusResp.Body).Decode(&versionResponse); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return versionResponse.SemVer, nil
|
|
}
|
|
|
|
func CheckVersionCompatibility(port uint16) (bool, error) {
|
|
apiSemVer, err := getApiVersion(port)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
if semver.SemVersion(apiSemVer).Major() == semver.SemVersion(SemVer).Major() &&
|
|
semver.SemVersion(apiSemVer).Minor() == semver.SemVersion(SemVer).Minor() {
|
|
return true, nil
|
|
}
|
|
|
|
fmt.Printf(Red, fmt.Sprintf("cli version (%s) is not compatible with api version (%s)\n", SemVer, apiSemVer))
|
|
return false, nil
|
|
}
|