Skip to content

Commit 7424efd

Browse files
committed
pkg: fix vm creation with securitygroups and disks
1 parent 51e104f commit 7424efd

10 files changed

Lines changed: 120 additions & 170 deletions

File tree

apis/v1/types.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,14 @@ type Volume struct {
162162

163163
// VolumeSpec defines the desired state of a Volume
164164
type VolumeSpec struct {
165-
Zone string `yaml:"zone"` // CloudStack zone ID or name
166-
DiskOffering string `yaml:"diskOffering"` // Disk offering type (HDD/SSD)
167-
SizeGB int `yaml:"size" gorm:"size_gb"` // Disk size in GB
168-
ID string `yaml:"id,omitempty" gorm:"column:volume_id"`
169-
Name string `yaml:"name,omitempty"`
165+
Zone string `json:"zone,omitempty" yaml:"zone"` // CloudStack zone ID or name
166+
DiskOffering string `json:"diskOffering,omitempty" yaml:"diskOffering"` // Disk offering type (HDD/SSD)
167+
SizeGB int `json:"size,omitempty" yaml:"size" gorm:"size_gb"` // Disk size in GB
168+
ID string `json:"id,omitempty" yaml:"id,omitempty" gorm:"column:volume_id"`
169+
Name string `json:"name,omitempty" yaml:"name,omitempty"`
170+
// Type indicates whether this volume is a root or data disk. Valid values:
171+
// "root" or "data" (default: "data").
172+
Type string `json:"type,omitempty" yaml:"type,omitempty"`
170173
}
171174

172175
// SSHKey represents an SSH key pair for VM access in CloudStack

controller/controller.go

Lines changed: 0 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"log"
1111
"net/http"
1212
"reflect"
13-
"strings"
1413
"time"
1514

1615
"github.com/apache/cloudstack-go/v2/cloudstack"
@@ -666,85 +665,3 @@ func (c *Controller) applyAffinityGroup(ag *v1.AffinityGroup) error {
666665
func (c *Controller) applyUserData(ud *v1.UserData) error {
667666
return db.DB.Save(ud).Error
668667
}
669-
670-
// createVM creates a VM in CloudStack using the SDK
671-
func (c *Controller) createVM(vm *v1.VirtualMachine) error {
672-
log.Printf("Creating VM: %s", vm.Metadata.Name)
673-
674-
// Create VM parameters (use DeployVirtualMachine in SDK)
675-
params := c.csClient.VirtualMachine.NewDeployVirtualMachineParams(
676-
vm.Spec.ServiceOffering,
677-
vm.Spec.Template,
678-
"",
679-
)
680-
params.SetName(vm.Metadata.Name)
681-
// Accept project name or ID
682-
if vm.Spec.Project != "" {
683-
if pid, perr := handlers.ResolveProject(vm.Spec.Project); perr == nil {
684-
params.SetProjectid(pid)
685-
} else {
686-
params.SetProjectid(vm.Spec.Project)
687-
}
688-
}
689-
if len(vm.Spec.NetworkIDs) > 0 {
690-
params.SetNetworkids(vm.Spec.NetworkIDs)
691-
}
692-
693-
// Add SSH key
694-
if len(vm.Spec.SSHKeys) > 0 {
695-
params.SetKeypair(vm.Spec.SSHKeys[0])
696-
}
697-
698-
// Apply optional deploy parameters from the VM spec where possible.
699-
// This attempts to call SDK setter methods (e.g., SetBootMode) if they exist.
700-
if vm.Spec.Parameters != nil {
701-
pv := reflect.ValueOf(params)
702-
for k, v := range vm.Spec.Parameters {
703-
parts := strings.FieldsFunc(k, func(r rune) bool { return r == '_' || r == '-' || r == ' ' })
704-
for i := range parts {
705-
parts[i] = strings.Title(parts[i])
706-
}
707-
camel := strings.Join(parts, "")
708-
candidates := []string{"Set" + camel, "Set" + strings.Title(k)}
709-
applied := false
710-
for _, m := range candidates {
711-
meth := pv.MethodByName(m)
712-
if meth.IsValid() && meth.Type().NumIn() == 1 && meth.Type().In(0).Kind() == reflect.String {
713-
meth.Call([]reflect.Value{reflect.ValueOf(v)})
714-
applied = true
715-
break
716-
}
717-
}
718-
if !applied {
719-
log.Printf("info: VM parameter '%s' not applied (no SDK setter found)", k)
720-
}
721-
}
722-
}
723-
724-
// Tagging is handled after deployment via the Resourcetags service below.
725-
726-
// Execute API call
727-
resp, err := c.csClient.VirtualMachine.DeployVirtualMachine(params)
728-
if err != nil {
729-
log.Printf("Failed to create VM %s: %v", vm.Metadata.Name, err)
730-
vm.Status.ObservedState = "Failed"
731-
db.DB.Save(vm)
732-
return err
733-
}
734-
735-
// Update VM status
736-
vm.Status.CloudStackID = resp.Id
737-
vm.Status.ObservedState = "Creating"
738-
vm.Status.LastChecked = time.Now()
739-
740-
// Add a resource tag indicating this VM is managed by cloudstackctl.
741-
// Use the resource type 'UserVm' for virtual machines.
742-
tags := map[string]string{"managed_by": "cloudstackctl"}
743-
if params := c.csClient.Resourcetags.NewCreateTagsParams([]string{resp.Id}, "UserVm", tags); params != nil {
744-
if _, err := c.csClient.Resourcetags.CreateTags(params); err != nil {
745-
log.Printf("Warning: failed to create tag for VM %s (id=%s): %v", vm.Metadata.Name, resp.Id, err)
746-
}
747-
}
748-
749-
return db.DB.Save(vm).Error
750-
}

controller/reconcile.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
v1 "cloudstackctl/apis/v1"
1010
"cloudstackctl/db"
11+
"cloudstackctl/pkg/handlers"
1112
)
1213

1314
// ReconcileAll runs reconciliation for all resources
@@ -258,7 +259,7 @@ func (c *Controller) createComponentVMs(comp *v1.Component, compRef v1.Component
258259
return err
259260
}
260261

261-
if err := c.createVM(vm); err != nil {
262+
if err := handlers.ApplyVirtualMachineManaged(vm, true); err != nil {
262263
return err
263264
}
264265
}

examples/cluster/component-advanced.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ spec:
1313
- platform-admin
1414
volumes:
1515
- name: data-disk
16+
type: data
1617
diskOffering: standard-hdd
1718
size: 50
1819
healthChecks:

examples/standalone/virtualmachine.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ spec:
1212
- platform-admin
1313
volumes:
1414
- name: data-disk
15+
type: data
1516
diskOffering: standard-hdd
1617
size: 50
1718
affinityGroups:

examples/virtualmachinespec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ spec:
1111
- platform-admin
1212
volumes:
1313
- name: data-disk
14+
type: data
1415
diskOffering: standard-hdd
1516
size: 50

go.mod

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ module cloudstackctl
33
go 1.26
44

55
require (
6-
github.com/apache/cloudstack-go/v2 v2.19.0
7-
github.com/gin-gonic/gin v1.12.0
6+
github.com/apache/cloudstack-go/v2 v2.19.1-0.20260314202825-5fe04df62a24
87
github.com/spf13/cobra v1.10.2
98
gorm.io/driver/postgres v1.6.0
109
gorm.io/gorm v1.31.1
@@ -15,15 +14,9 @@ require (
1514
)
1615

1716
require (
18-
github.com/bytedance/gopkg v0.1.3 // indirect
19-
github.com/bytedance/sonic v1.15.0 // indirect
20-
github.com/bytedance/sonic/loader v0.5.0 // indirect
21-
github.com/cloudwego/base64x v0.1.6 // indirect
2217
github.com/davecgh/go-spew v1.1.1 // indirect
2318
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
2419
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
25-
github.com/gabriel-vasile/mimetype v1.4.13 // indirect
26-
github.com/gin-contrib/sse v1.1.0 // indirect
2720
github.com/go-logr/logr v1.4.3 // indirect
2821
github.com/go-openapi/jsonpointer v0.22.5 // indirect
2922
github.com/go-openapi/jsonreference v0.21.5 // indirect
@@ -39,11 +32,6 @@ require (
3932
github.com/go-openapi/swag/stringutils v0.25.5 // indirect
4033
github.com/go-openapi/swag/typeutils v0.25.5 // indirect
4134
github.com/go-openapi/swag/yamlutils v0.25.5 // indirect
42-
github.com/go-playground/locales v0.14.1 // indirect
43-
github.com/go-playground/universal-translator v0.18.1 // indirect
44-
github.com/go-playground/validator/v10 v10.30.1 // indirect
45-
github.com/goccy/go-json v0.10.5 // indirect
46-
github.com/goccy/go-yaml v1.19.2 // indirect
4735
github.com/google/gnostic-models v0.7.1 // indirect
4836
github.com/google/uuid v1.6.0 // indirect
4937
github.com/inconshreveable/mousetrap v1.1.0 // indirect
@@ -54,25 +42,15 @@ require (
5442
github.com/jinzhu/inflection v1.0.0 // indirect
5543
github.com/jinzhu/now v1.1.5 // indirect
5644
github.com/json-iterator/go v1.1.12 // indirect
57-
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
58-
github.com/leodido/go-urn v1.4.0 // indirect
59-
github.com/mattn/go-isatty v0.0.20 // indirect
45+
github.com/kr/text v0.2.0 // indirect
6046
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
6147
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
6248
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
63-
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
64-
github.com/quic-go/qpack v0.6.0 // indirect
65-
github.com/quic-go/quic-go v0.59.0 // indirect
6649
github.com/spf13/pflag v1.0.10 // indirect
67-
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
68-
github.com/ugorji/go/codec v1.3.1 // indirect
6950
github.com/x448/float16 v0.8.4 // indirect
70-
go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect
7151
go.uber.org/mock v0.6.0 // indirect
7252
go.yaml.in/yaml/v2 v2.4.4 // indirect
7353
go.yaml.in/yaml/v3 v3.0.4 // indirect
74-
golang.org/x/arch v0.25.0 // indirect
75-
golang.org/x/crypto v0.48.0 // indirect
7654
golang.org/x/net v0.51.0 // indirect
7755
golang.org/x/oauth2 v0.36.0 // indirect
7856
golang.org/x/sync v0.20.0 // indirect

go.sum

Lines changed: 5 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,18 @@
11
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
22
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
3-
github.com/apache/cloudstack-go/v2 v2.19.0 h1:YHLw770MmgiqXx6NRFYw2Nr7DpnylLhLG2KYNCftgnc=
4-
github.com/apache/cloudstack-go/v2 v2.19.0/go.mod h1:p/YBUwIEkQN6CQxFhw8Ff0wzf1MY0qRRRuGYNbcb1F8=
5-
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
6-
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
7-
github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=
8-
github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=
9-
github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=
10-
github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
11-
github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M=
12-
github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU=
3+
github.com/apache/cloudstack-go/v2 v2.19.1-0.20260314200611-0d1a4d5d553d h1:FszupfrdjfiPihpvlTYIhPqFEUIVwhX03x5C3q3KLJQ=
4+
github.com/apache/cloudstack-go/v2 v2.19.1-0.20260314200611-0d1a4d5d553d/go.mod h1:p/YBUwIEkQN6CQxFhw8Ff0wzf1MY0qRRRuGYNbcb1F8=
5+
github.com/apache/cloudstack-go/v2 v2.19.1-0.20260314202825-5fe04df62a24 h1:20hiJBwNKgbEXt2rBNJhAVurt8cn4xQMzcLU/TN+IWY=
6+
github.com/apache/cloudstack-go/v2 v2.19.1-0.20260314202825-5fe04df62a24/go.mod h1:p/YBUwIEkQN6CQxFhw8Ff0wzf1MY0qRRRuGYNbcb1F8=
137
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
8+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
149
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1510
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
1611
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1712
github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
1813
github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
1914
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
2015
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
21-
github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM=
22-
github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
23-
github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
24-
github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM=
25-
github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8=
26-
github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc=
2716
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
2817
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
2918
github.com/go-openapi/jsonpointer v0.22.5 h1:8on/0Yp4uTb9f4XvTrM2+1CPrV05QPZXu+rvu2o9jcA=
@@ -60,21 +49,9 @@ github.com/go-openapi/testify/enable/yaml/v2 v2.4.0 h1:7SgOMTvJkM8yWrQlU8Jm18VeD
6049
github.com/go-openapi/testify/enable/yaml/v2 v2.4.0/go.mod h1:14iV8jyyQlinc9StD7w1xVPW3CO3q1Gj04Jy//Kw4VM=
6150
github.com/go-openapi/testify/v2 v2.4.0 h1:8nsPrHVCWkQ4p8h1EsRVymA2XABB4OT40gcvAu+voFM=
6251
github.com/go-openapi/testify/v2 v2.4.0/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54=
63-
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
64-
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
65-
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
66-
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
67-
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
68-
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
69-
github.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w=
70-
github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM=
7152
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=
7253
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
7354
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
74-
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
75-
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
76-
github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM=
77-
github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
7855
github.com/google/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4yxLWH8c=
7956
github.com/google/gnostic-models v0.7.1/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
8057
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
@@ -100,16 +77,10 @@ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
10077
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
10178
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
10279
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
103-
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
104-
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
10580
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
10681
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
10782
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
10883
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
109-
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
110-
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
111-
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
112-
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
11384
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
11485
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
11586
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -122,14 +93,8 @@ github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns
12293
github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=
12394
github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
12495
github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
125-
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
126-
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
12796
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
12897
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
129-
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
130-
github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=
131-
github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw=
132-
github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
13398
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
13499
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
135100
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@@ -139,36 +104,20 @@ github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
139104
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
140105
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
141106
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
142-
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
143-
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
144107
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
145108
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
146109
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
147110
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
148-
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
149-
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
150-
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
151-
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
152111
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
153112
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
154-
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
155-
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
156-
github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY=
157-
github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
158113
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
159114
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
160-
go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF3xaE=
161-
go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0=
162115
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
163116
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
164117
go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ=
165118
go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ=
166119
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
167120
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
168-
golang.org/x/arch v0.25.0 h1:qnk6Ksugpi5Bz32947rkUgDt9/s5qvqDPl/gBKdMJLE=
169-
golang.org/x/arch v0.25.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8=
170-
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
171-
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
172121
golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c=
173122
golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=
174123
golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
@@ -177,7 +126,6 @@ golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
177126
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
178127
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
179128
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
180-
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
181129
golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
182130
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
183131
golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=

0 commit comments

Comments
 (0)