garm/test/integration/e2e/organizations.go
Gabriel Adrian Samfira e441b6ce89 Switch to log/slog
This change switches GARM to the new structured logging standard
library. This will allow us to set log levels and reduce some of
the log spam.

Given that we introduced new knobs to tweak logging, the number of
config options for logging now warrants it's own section.

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
2024-01-05 23:46:40 +00:00

140 lines
3.5 KiB
Go

package e2e
import (
"log/slog"
"time"
commonParams "github.com/cloudbase/garm-provider-common/params"
"github.com/cloudbase/garm/params"
)
func CreateOrg(orgName, credentialsName, orgWebhookSecret string) *params.Organization {
slog.Info("Create org", "org_name", orgName)
orgParams := params.CreateOrgParams{
Name: orgName,
CredentialsName: credentialsName,
WebhookSecret: orgWebhookSecret,
}
org, err := createOrg(cli, authToken, orgParams)
if err != nil {
panic(err)
}
return org
}
func UpdateOrg(id, credentialsName string) *params.Organization {
slog.Info("Update org", "org_id", id)
updateParams := params.UpdateEntityParams{
CredentialsName: credentialsName,
}
org, err := updateOrg(cli, authToken, id, updateParams)
if err != nil {
panic(err)
}
return org
}
func InstallOrgWebhook(id string) *params.HookInfo {
slog.Info("Install org webhook", "org_id", id)
webhookParams := params.InstallWebhookParams{
WebhookEndpointType: params.WebhookEndpointDirect,
}
_, err := installOrgWebhook(cli, authToken, id, webhookParams)
if err != nil {
panic(err)
}
webhookInfo, err := getOrgWebhook(cli, authToken, id)
if err != nil {
panic(err)
}
return webhookInfo
}
func UninstallOrgWebhook(id string) {
slog.Info("Uninstall org webhook", "org_id", id)
if err := uninstallOrgWebhook(cli, authToken, id); err != nil {
panic(err)
}
}
func CreateOrgPool(orgID string, poolParams params.CreatePoolParams) *params.Pool {
slog.Info("Create org pool", "org_id", orgID)
pool, err := createOrgPool(cli, authToken, orgID, poolParams)
if err != nil {
panic(err)
}
return pool
}
func GetOrgPool(orgID, orgPoolID string) *params.Pool {
slog.Info("Get org pool", "org_id", orgID, "pool_id", orgPoolID)
pool, err := getOrgPool(cli, authToken, orgID, orgPoolID)
if err != nil {
panic(err)
}
return pool
}
func UpdateOrgPool(orgID, orgPoolID string, maxRunners, minIdleRunners uint) *params.Pool {
slog.Info("Update org pool", "org_id", orgID, "pool_id", orgPoolID)
poolParams := params.UpdatePoolParams{
MinIdleRunners: &minIdleRunners,
MaxRunners: &maxRunners,
}
pool, err := updateOrgPool(cli, authToken, orgID, orgPoolID, poolParams)
if err != nil {
panic(err)
}
return pool
}
func DeleteOrgPool(orgID, orgPoolID string) {
slog.Info("Delete org pool", "org_id", orgID, "pool_id", orgPoolID)
if err := deleteOrgPool(cli, authToken, orgID, orgPoolID); err != nil {
panic(err)
}
}
func WaitOrgRunningIdleInstances(orgID string, timeout time.Duration) {
orgPools, err := listOrgPools(cli, authToken, orgID)
if err != nil {
panic(err)
}
for _, pool := range orgPools {
err := WaitPoolInstances(pool.ID, commonParams.InstanceRunning, params.RunnerIdle, timeout)
if err != nil {
_ = dumpOrgInstancesDetails(orgID)
panic(err)
}
}
}
func dumpOrgInstancesDetails(orgID string) error {
// print org details
slog.Info("Dumping org details", "org_id", orgID)
org, err := getOrg(cli, authToken, orgID)
if err != nil {
return err
}
if err := printJsonResponse(org); err != nil {
return err
}
// print org instances details
slog.Info("Dumping org instances details", "org_id", orgID)
instances, err := listOrgInstances(cli, authToken, orgID)
if err != nil {
return err
}
for _, instance := range instances {
instance, err := getInstance(cli, authToken, instance.Name)
if err != nil {
return err
}
slog.Info("Instance info", "instance_name", instance.Name)
if err := printJsonResponse(instance); err != nil {
return err
}
}
return nil
}