* General cleanup of the integration tests Golang code. Move the `e2e.go` codebase into its own package and separate files. * Reduce the overall log spam from the integration tests output. * Add final GitHub workflow step that stops GARM server, and does the GitHub cleanup of any orphaned resources. * Add `TODO` to implement cleanup of the orphaned GitHub webhooks. This is useful, if the uninstall of the webhooks failed. * Add `TODO` for extra missing checks on the GitHub webhooks install / uninstall logic. Signed-off-by: Ionut Balutoiu <ibalutoiu@cloudbasesolutions.com>
132 lines
3.1 KiB
Go
132 lines
3.1 KiB
Go
package e2e
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/cloudbase/garm/params"
|
|
)
|
|
|
|
func CreateOrg(orgName, credentialsName, orgWebhookSecret string) *params.Organization {
|
|
log.Printf("Create org %s", 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 {
|
|
log.Printf("Update org %s", 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 {
|
|
log.Printf("Install org %s webhook", 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 CreateOrgPool(orgID string, poolParams params.CreatePoolParams) *params.Pool {
|
|
log.Printf("Create org %s pool", orgID)
|
|
pool, err := createOrgPool(cli, authToken, orgID, poolParams)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return pool
|
|
}
|
|
|
|
func GetOrgPool(orgID, orgPoolID string) *params.Pool {
|
|
log.Printf("Get org %s pool %s", orgID, 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 {
|
|
log.Printf("Update org %s pool %s", orgID, 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) {
|
|
log.Printf("Delete org %s pool %s", orgID, 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 := waitPoolRunningIdleInstances(pool.ID, timeout)
|
|
if err != nil {
|
|
_ = dumpOrgInstancesDetails(orgID)
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func dumpOrgInstancesDetails(orgID string) error {
|
|
log.Printf("Dumping org %s instances details", orgID)
|
|
|
|
// print org details
|
|
org, err := getOrg(cli, authToken, orgID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := printJsonResponse(org); err != nil {
|
|
return err
|
|
}
|
|
|
|
// print org instances details
|
|
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
|
|
}
|
|
log.Printf("Instance %s info:", instance.Name)
|
|
if err := printJsonResponse(instance); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|