|
|
|
@ -5,7 +5,7 @@ package main
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"g.hazardous.org/fkr/libretto/virtualmachine/gridscale"
|
|
|
|
|
"github.com/gridscale/gsclient-go"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type ServersStatusCommand struct {
|
|
|
|
@ -25,81 +25,81 @@ func (x *ServersStatusCommand) Execute(args []string) error {
|
|
|
|
|
config(Checker.ConfigFile)
|
|
|
|
|
|
|
|
|
|
if x.Type == "server.status" {
|
|
|
|
|
server, err := gridscale.GetServer(Config.UserId, Config.Token, x.ServerUUID)
|
|
|
|
|
server, err := Config.Client.GetServer(x.ServerUUID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
Unknown(fmt.Sprintf("%s: %s", "Error retrieving server", err))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if server.Status != x.Status {
|
|
|
|
|
Critical(fmt.Sprintf("Server state critical - State required: '%s' - State found: '%s'", x.Status, server.Status))
|
|
|
|
|
if server.Properties.Status != x.Status {
|
|
|
|
|
Critical(fmt.Sprintf("Server state critical - State required: '%s' - State found: '%s'", x.Status, server.Properties.Status))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Ok(fmt.Sprintf("State required: '%s' - State found: '%s'", x.Status, server.Status))
|
|
|
|
|
Ok(fmt.Sprintf("State required: '%s' - State found: '%s'", x.Status, server.Properties.Status))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if x.Type == "firewall.template" {
|
|
|
|
|
vm, err := gridscale.GetVM(Config.UserId, Config.Token, x.ServerUUID)
|
|
|
|
|
|
|
|
|
|
publicNet, err := Config.Client.GetNetworkPublic()
|
|
|
|
|
if err != nil {
|
|
|
|
|
Unknown(fmt.Sprintf("%s: %s", "Error retrieving server", err))
|
|
|
|
|
Unknown(fmt.Sprintf("%s: %s", "Error retrieving public network", err))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, networkRelation := range vm.NetworksRelations {
|
|
|
|
|
if networkRelation.FirewallTemplateUUID == x.Relation {
|
|
|
|
|
Ok(fmt.Sprintf("Expected firewall template '%s' is active", networkRelation.FirewallTemplateUUID))
|
|
|
|
|
}
|
|
|
|
|
networkRel, err := Config.Client.GetServerNetwork(x.ServerUUID, publicNet.Properties.ObjectUUID)
|
|
|
|
|
|
|
|
|
|
if networkRel.FirewallTemplateUUID == x.Relation {
|
|
|
|
|
Ok(fmt.Sprintf("Expected firewall template '%s' is active", networkRel.FirewallTemplateUUID))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Critical(fmt.Sprintf("Expected firewall template '%s' is NOT active!", x.Relation))
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if x.Type == "server.cores" {
|
|
|
|
|
vm, err := gridscale.GetVM(Config.UserId, Config.Token, x.ServerUUID)
|
|
|
|
|
server, err := Config.Client.GetServer(x.ServerUUID)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
Unknown(fmt.Sprintf("%s: %s", "Error retrieving server", err))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if x.Max == 0 {
|
|
|
|
|
if vm.Server.Cores >= x.Min {
|
|
|
|
|
Ok(fmt.Sprintf("Expected amount (%d <= %d) of cores assigned: %d", x.Min, vm.Server.Cores, vm.Server.Cores))
|
|
|
|
|
if server.Properties.Cores >= x.Min {
|
|
|
|
|
Ok(fmt.Sprintf("Expected amount (%d <= %d) of cores assigned: %d", x.Min, server.Properties.Cores, server.Properties.Cores))
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if vm.Server.Cores >= x.Min && vm.Server.Cores <= x.Max {
|
|
|
|
|
Ok(fmt.Sprintf("Expected amount (%d <= %d <= %d) of cores assigned: %d", x.Min, vm.Server.Cores, x.Max, vm.Server.Cores))
|
|
|
|
|
if server.Properties.Cores >= x.Min && server.Properties.Cores <= x.Max {
|
|
|
|
|
Ok(fmt.Sprintf("Expected amount (%d <= %d <= %d) of cores assigned: %d", x.Min, server.Properties.Cores, x.Max, server.Properties.Cores))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Critical(fmt.Sprintf("Expect amount (%d <= %d <= %d) of cores NOT assigned: %d", x.Min, vm.Server.Cores, x.Max, vm.Server.Cores))
|
|
|
|
|
Critical(fmt.Sprintf("Expect amount (%d <= %d <= %d) of cores NOT assigned: %d", x.Min, server.Properties.Cores, x.Max, server.Properties.Cores))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if x.Type == "server.memory" {
|
|
|
|
|
vm, err := gridscale.GetVM(Config.UserId, Config.Token, x.ServerUUID)
|
|
|
|
|
server, err := Config.Client.GetServer(x.ServerUUID)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
Unknown(fmt.Sprintf("%s: %s", "Error retrieving server", err))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if x.Max == 0 {
|
|
|
|
|
if vm.Server.Memory >= x.Min {
|
|
|
|
|
Ok(fmt.Sprintf("Expected amount (%d <= %d) of memory assigned: %d", x.Min, vm.Server.Memory, vm.Server.Memory))
|
|
|
|
|
if server.Properties.Memory >= x.Min {
|
|
|
|
|
Ok(fmt.Sprintf("Expected amount (%d <= %d) of memory assigned: %d", x.Min, server.Properties.Memory, server.Properties.Memory))
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if vm.Server.Memory >= x.Min && vm.Server.Memory <= x.Max {
|
|
|
|
|
Ok(fmt.Sprintf("Expected amount (%d <= %d <= %d) of memory assigned: %d", x.Min, vm.Server.Memory, x.Max, vm.Server.Memory))
|
|
|
|
|
if server.Properties.Memory >= x.Min && server.Properties.Memory <= x.Max {
|
|
|
|
|
Ok(fmt.Sprintf("Expected amount (%d <= %d <= %d) of memory assigned: %d", x.Min, server.Properties.Memory, x.Max, server.Properties.Memory))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Critical(fmt.Sprintf("Expect amount (%d <= %d <= %d) of memory NOT assigned: %d", x.Min, vm.Server.Memory, x.Max, vm.Server.Memory))
|
|
|
|
|
Critical(fmt.Sprintf("Expect amount (%d <= %d <= %d) of memory NOT assigned: %d", x.Min, server.Properties.Memory, x.Max, server.Properties.Memory))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if x.Type == "ip.assigned" {
|
|
|
|
|
vm, err := gridscale.GetVM(Config.UserId, Config.Token, x.ServerUUID)
|
|
|
|
|
ipRel, err := Config.Client.GetServerIPList(x.ServerUUID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
Unknown(fmt.Sprintf("%s: %s", "Error retrieving server", err))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, ipRelation := range vm.IPsRelations {
|
|
|
|
|
for _, ipRelation := range ipRel {
|
|
|
|
|
if ipRelation.IP == x.Comparator || ipRelation.ObjectUUID == x.Relation {
|
|
|
|
|
Ok(fmt.Sprintf("Expected ip '%s' is assigned", ipRelation.IP))
|
|
|
|
|
}
|
|
|
|
|