/
software.go
55 lines (46 loc) · 1.06 KB
/
software.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package software
import (
software2 "github.com/cloud-barista/cm-honeybee/pkg/api/rest/model/software"
"github.com/jollaman999/utils/logger"
"github.com/shirou/gopsutil/v3/host"
)
func GetSoftwareInfo() (*software2.Software, error) {
deb := make([]software2.DEB, 0)
rpm := make([]software2.RPM, 0)
var err error
h, err := host.Info()
if err != nil {
return nil, err
}
if h.PlatformFamily == "debian" {
deb, err = GetDEBs()
if err != nil {
return nil, err
}
}
if h.PlatformFamily == "fedora" || h.PlatformFamily == "rhel" {
rpm, err = GetRPMs()
if err != nil {
return nil, err
}
}
dockerContainers, err := GetDockerContainers()
if err != nil {
logger.Println(logger.DEBUG, true, "DOCKER: "+err.Error())
}
podmanContainers, err := GetPodmanContainers()
if err != nil {
logger.Println(logger.DEBUG, true, "PODMAN: "+err.Error())
}
sw := software2.Software{
DEB: deb,
RPM: rpm,
Docker: software2.Docker{
Containers: dockerContainers,
},
Podman: software2.Podman{
Containers: podmanContainers,
},
}
return &sw, nil
}