feat: add Timeweb Cloud provider for Woodpecker CI autoscaler
- Implement timewebcloud provider with DeployAgent, RemoveAgent, ListDeployedAgentNames - Add minimal HTTP API client for Timeweb Cloud (create/list/delete servers) - Register provider in main.go with CLI flags - Add timeweb-list and timeweb-tester utilities - Include Dockerfile and docker-compose.yml for deployment - Update DEPLOY.md with verified OS/preset IDs
This commit is contained in:
65
engine/inits/cloudinit/cloudinit_test.go
Normal file
65
engine/inits/cloudinit/cloudinit_test.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package cloudinit_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"text/template"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"go.woodpecker-ci.org/autoscaler/config"
|
||||
"go.woodpecker-ci.org/autoscaler/engine/inits/cloudinit"
|
||||
"go.woodpecker-ci.org/woodpecker/v3/woodpecker-go/woodpecker"
|
||||
)
|
||||
|
||||
var testUserDataStr = `
|
||||
image: {{ .Image }}
|
||||
environment:
|
||||
{{- range $key, $value := .Environment }}
|
||||
- {{ $key }}={{ $value }}
|
||||
{{- end }}
|
||||
`
|
||||
|
||||
var testUserDataTmpl = template.Must(template.New("test").Parse(testUserDataStr))
|
||||
|
||||
func TestRenderUserDataTemplate(t *testing.T) {
|
||||
config := &config.Config{
|
||||
Image: "test-image",
|
||||
GRPCAddress: "test-address",
|
||||
GRPCSecure: false,
|
||||
Environment: map[string]string{
|
||||
"FOO": "bar",
|
||||
},
|
||||
}
|
||||
agent := &woodpecker.Agent{
|
||||
Token: "test-token",
|
||||
}
|
||||
|
||||
userData, err := cloudinit.RenderUserDataTemplate(config, agent, testUserDataTmpl)
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, userData, "test-image")
|
||||
assert.Contains(t, userData, "bar")
|
||||
assert.Contains(t, userData, "WOODPECKER_SERVER=test-address")
|
||||
assert.Contains(t, userData, "WOODPECKER_AGENT_SECRET=test-token")
|
||||
}
|
||||
|
||||
func TestRenderUserDataTemplate_Secure(t *testing.T) {
|
||||
config := &config.Config{
|
||||
GRPCSecure: true,
|
||||
}
|
||||
agent := &woodpecker.Agent{}
|
||||
|
||||
userData, err := cloudinit.RenderUserDataTemplate(config, agent, testUserDataTmpl)
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, userData, "WOODPECKER_GRPC_SECURE=true")
|
||||
}
|
||||
|
||||
func TestRenderUserDataTemplate_Error(t *testing.T) {
|
||||
config := &config.Config{}
|
||||
agent := &woodpecker.Agent{}
|
||||
tmpl := template.Must(template.New("test").Parse("{{.Missing}}"))
|
||||
|
||||
_, err := cloudinit.RenderUserDataTemplate(config, agent, tmpl)
|
||||
assert.Error(t, err)
|
||||
}
|
||||
Reference in New Issue
Block a user