47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package util
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/fission/fission/pkg/controller/client"
|
|
"github.com/fission/fission/pkg/fission-cli/log"
|
|
"github.com/fission/fission/pkg/fission-cli/plugin"
|
|
"github.com/fission/fission/pkg/info"
|
|
)
|
|
|
|
// Versions is a container of versions of the client (and its plugins) and server (and its plugins).
|
|
type Versions struct {
|
|
Client map[string]info.BuildMeta `json:"client"`
|
|
Server map[string]info.BuildMeta `json:"server"`
|
|
}
|
|
|
|
func GetVersion(client *client.Client) Versions {
|
|
// Fetch client versions
|
|
versions := Versions{
|
|
Client: map[string]info.BuildMeta{
|
|
"fission/core": info.BuildInfo(),
|
|
},
|
|
}
|
|
|
|
for _, pmd := range plugin.FindAll() {
|
|
versions.Client[pmd.Name] = info.BuildMeta{
|
|
Version: pmd.Version,
|
|
}
|
|
}
|
|
|
|
serverInfo, err := client.ServerInfo()
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("Error getting Fission API version: %v", err))
|
|
serverInfo = &info.ServerInfo{}
|
|
}
|
|
|
|
// Fetch server versions
|
|
versions.Server = map[string]info.BuildMeta{
|
|
"fission/core": serverInfo.Build,
|
|
}
|
|
|
|
// FUTURE: fetch versions of plugins server-side
|
|
|
|
return versions
|
|
}
|