Skip to content

Instantly share code, notes, and snippets.

View codegold79's full-sized avatar
🐲

frankly_coding codegold79

🐲
View GitHub Profile
var event cloudEvent
err := json.Unmarshal(req, &event)
if err != nil {
return cloudEvent{}, fmt.Errorf("unmarshalling json: %w", err)
}
return event, nil
func isCpuOrMemoryAlarm(event cloudEvent) bool {
alarm := false
if event.Data.To == "red" && (event.Data.Alarm.Name == "VM Memory Usage" || event.Data.Alarm.Name == "VM CPU Usage") {
alarm = true
}
return alarm
}
func newClient(ctx context.Context, cfg *vcConfig) (*vsClient, error) {
u := url.URL{
Scheme: "https",
Host: cfg.VCenter.Server,
Path: "sdk",
}
u.User = url.UserPassword(cfg.VCenter.User, cfg.VCenter.Password)
insecure := cfg.VCenter.Insecure
func eventVmMoRef(event cloudEvent) (types.ManagedObjectReference, error) {
moRef := types.ManagedObjectReference{
Type: event.Data.Vm.Vm.Type,
Value: event.Data.Vm.Vm.Value,
}
return moRef, nil
}
func (c *vsClient) moVirtualMachine(ctx context.Context, mor types.ManagedObjectReference) (mo.VirtualMachine, error) {
var moVM mo.VirtualMachine
pc := property.DefaultCollector(c.govmomi.Client)
err := pc.Retrieve(ctx, []types.ManagedObjectReference{mor}, []string{}, &moVM)
if err != nil {
return mo.VirtualMachine{}, err
}
moVM.Config.Hardware.NumCPU
moVM.Config.Hardware.MemoryMB
func incCpuVal(numCPU int) string {
newNum := 4
numCPU++
if numCPU < newNum {
newNum = numCPU
}
return strconv.Itoa(newNum)
}
func incMemVal(mem float64) string {
// 2^13 = 8192. 8GB is max RAM.
maxExp := 13
newMem := 1 << maxExp
exp := int(math.Round(math.Log10(mem) / math.Log10(2)))
exp++
if exp < maxExp {
newMem = 1 << exp
tagList, err := clt.tagMgr.GetTagsForCategory(ctx, catName)
func findCatAndTagIDs(ts []tags.Tag, tn string) (string, string) {
for _, t := range ts {
if t.Name == tn {
return t.CategoryID, t.ID
}
}
return "", ""
}