92 lines
2.0 KiB
Go
92 lines
2.0 KiB
Go
|
package alils
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"io/ioutil"
|
||
|
"net/http"
|
||
|
"net/http/httputil"
|
||
|
)
|
||
|
|
||
|
// MachineGroupAttribute define the Attribute
|
||
|
type MachineGroupAttribute struct {
|
||
|
ExternalName string `json:"externalName"`
|
||
|
TopicName string `json:"groupTopic"`
|
||
|
}
|
||
|
|
||
|
// MachineGroup define the machine Group
|
||
|
type MachineGroup struct {
|
||
|
Name string `json:"groupName"`
|
||
|
Type string `json:"groupType"`
|
||
|
MachineIDType string `json:"machineIdentifyType"`
|
||
|
MachineIDList []string `json:"machineList"`
|
||
|
|
||
|
Attribute MachineGroupAttribute `json:"groupAttribute"`
|
||
|
|
||
|
CreateTime uint32
|
||
|
LastModifyTime uint32
|
||
|
|
||
|
project *LogProject
|
||
|
}
|
||
|
|
||
|
// Machine define the Machine
|
||
|
type Machine struct {
|
||
|
IP string
|
||
|
UniqueID string `json:"machine-uniqueid"`
|
||
|
UserdefinedID string `json:"userdefined-id"`
|
||
|
}
|
||
|
|
||
|
// MachineList define the Machine List
|
||
|
type MachineList struct {
|
||
|
Total int
|
||
|
Machines []*Machine
|
||
|
}
|
||
|
|
||
|
// ListMachines returns machine list of this machine group.
|
||
|
func (m *MachineGroup) ListMachines() (ms []*Machine, total int, err error) {
|
||
|
h := map[string]string{
|
||
|
"x-sls-bodyrawsize": "0",
|
||
|
}
|
||
|
|
||
|
uri := fmt.Sprintf("/machinegroups/%v/machines", m.Name)
|
||
|
r, err := request(m.project, "GET", uri, h, nil)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
buf, err := ioutil.ReadAll(r.Body)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if r.StatusCode != http.StatusOK {
|
||
|
errMsg := &errorMessage{}
|
||
|
err = json.Unmarshal(buf, errMsg)
|
||
|
if err != nil {
|
||
|
err = fmt.Errorf("failed to remove config from machine group")
|
||
|
dump, _ := httputil.DumpResponse(r, true)
|
||
|
fmt.Println(dump)
|
||
|
return
|
||
|
}
|
||
|
err = fmt.Errorf("%v:%v", errMsg.Code, errMsg.Message)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
body := &MachineList{}
|
||
|
err = json.Unmarshal(buf, body)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
ms = body.Machines
|
||
|
total = body.Total
|
||
|
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// GetAppliedConfigs returns applied configs of this machine group.
|
||
|
func (m *MachineGroup) GetAppliedConfigs() (confNames []string, err error) {
|
||
|
confNames, err = m.project.GetAppliedConfigs(m.Name)
|
||
|
return
|
||
|
}
|