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 }