84 lines
1.9 KiB
Go
84 lines
1.9 KiB
Go
package helm
|
|
|
|
import (
|
|
// "fmt"
|
|
"encoding/json"
|
|
)
|
|
|
|
type HelmStatus struct {
|
|
Name string // Nom
|
|
command HelmCommandInterface
|
|
}
|
|
|
|
func (this *HelmStatus) New(bin string) {
|
|
this.command = RealHelmCommand{Bin: bin}
|
|
}
|
|
|
|
func (this *HelmStatus) NewMock(mock HelmCommandInterface) {
|
|
this.command = mock
|
|
}
|
|
|
|
////
|
|
|
|
type parseStatusInfoResourcesMetadata struct {
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
// type parseStatusInfoResourcesPod struct {
|
|
// Api string `json:"apiVersion"`
|
|
// }
|
|
|
|
type parseStatusInfoResourcesStatefulSet struct {
|
|
Api string `json:"apiVersion"`
|
|
Kind string `json:"kind"`
|
|
Metadata parseStatusInfoResourcesMetadata `json:"metadata"`
|
|
}
|
|
|
|
type parseStatusInfoResourcesDeployment struct {
|
|
Api string `json:"apiVersion"`
|
|
Kind string `json:"kind"`
|
|
Metadata parseStatusInfoResourcesMetadata `json:"metadata"`
|
|
}
|
|
|
|
type parseStatusInfoResources struct {
|
|
// Pod []parseStatusInfoResourcesPod `json:"v1/Pod(related)"`
|
|
StatefulSet []parseStatusInfoResourcesStatefulSet `json:"v1/StatefulSet"`
|
|
Deployment []parseStatusInfoResourcesDeployment `json:"v1/Deployment"`
|
|
}
|
|
|
|
type parseStatusInfo struct {
|
|
Status string `json:"status"`
|
|
Resources parseStatusInfoResources `json:"Resources"`
|
|
}
|
|
|
|
|
|
type parseStatus struct {
|
|
Name string `json:"name"`
|
|
Info parseStatusInfo `json:"info"`
|
|
}
|
|
|
|
func (this HelmStatus) getRessources() (map[string]string, error) {
|
|
|
|
res := make(map[string]string)
|
|
|
|
status, err := this.command.Status(this.Name)
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
|
|
var objmap parseStatus
|
|
|
|
err = json.Unmarshal([]byte(status), &objmap)
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
|
|
for _, ele := range objmap.Info.Resources.StatefulSet {
|
|
res[ele.Metadata.Name] = ele.Kind
|
|
}
|
|
for _, ele := range objmap.Info.Resources.Deployment {
|
|
res[ele.Metadata.Name] = ele.Kind
|
|
}
|
|
|
|
return res, nil
|
|
} |