Configure CI;Add network name flag;Add list of properties
All checks were successful
continuous-integration/drone Build is passing
All checks were successful
continuous-integration/drone Build is passing
This commit is contained in:
parent
c8483de7a9
commit
b85fd3946e
34
.drone.yml
Normal file
34
.drone.yml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
kind: pipeline
|
||||||
|
type: kubernetes
|
||||||
|
name: 'Golang Build'
|
||||||
|
|
||||||
|
environment:
|
||||||
|
SKOPEO_VERSION: v1.10.0
|
||||||
|
|
||||||
|
clone:
|
||||||
|
disable: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clone vappproperty-manager source repository
|
||||||
|
image: bv11-cr01.bessems.eu/proxy/alpine/git
|
||||||
|
commands:
|
||||||
|
- git clone https://code.spamasaurus.com/djpbessems/Go.vAppPropertyManager.git .
|
||||||
|
# - git checkout tags/$SKOPEO_VERSION
|
||||||
|
- git checkout HEAD
|
||||||
|
when:
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
- name: Build binary
|
||||||
|
image: bv11-cr01.bessems.eu/proxy/library/golang
|
||||||
|
commands:
|
||||||
|
- |
|
||||||
|
go build -o ./bin/vappprop-manager ./cmd/vappprop-manager/main.go
|
||||||
|
- |
|
||||||
|
curl \
|
||||||
|
--header "Authorization: token $GIT_APIKEY" \
|
||||||
|
--upload-file bin/vappprop-manager \
|
||||||
|
https://code.spamasaurus.com/api/packages/$GIT_USERNAME/generic/vappprop-manager/v0.1.0/vappprop-manager
|
||||||
|
environment:
|
||||||
|
GIT_APIKEY:
|
||||||
|
from_secret: git_apikey
|
||||||
|
GIT_USERNAME: djpbessems
|
@ -9,19 +9,21 @@ import (
|
|||||||
"spamasaurus.com/m/pkg/hypervisor"
|
"spamasaurus.com/m/pkg/hypervisor"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Input struct {
|
||||||
|
VirtualMachine string
|
||||||
|
Network string
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var virtualmachine string
|
var input Input
|
||||||
|
|
||||||
flag.StringVar(&virtualmachine, "vm", "", "name of VM")
|
flag.StringVar(&input.VirtualMachine, "vm", "", "name of VM")
|
||||||
|
flag.StringVar(&input.Network, "network", "", "name of network portgroup")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
if virtualmachine == "" {
|
|
||||||
log.Fatalf("Name of vm is required")
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg, err := config.NewConfig()
|
cfg, err := config.NewConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatalf("Invalid configuration: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
@ -37,7 +39,7 @@ func main() {
|
|||||||
log.Fatalf("Foo indeed: %s", err)
|
log.Fatalf("Foo indeed: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := hypervisor.SetVirtualMachineProperties(ctx, fnd, virtualmachine); err != nil {
|
if err := hypervisor.SetVirtualMachineProperties(ctx, fnd, input.VirtualMachine, input.Network); err != nil {
|
||||||
log.Fatalf("Could not apply vApp properties: %s", err)
|
log.Fatalf("Could not apply vApp properties: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
5
go.mod
5
go.mod
@ -4,4 +4,7 @@ go 1.19
|
|||||||
|
|
||||||
require github.com/vmware/govmomi v0.30.0
|
require github.com/vmware/govmomi v0.30.0
|
||||||
|
|
||||||
require gopkg.in/yaml.v2 v2.4.0 // indirect
|
require (
|
||||||
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
|
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||||
|
)
|
||||||
|
2
go.sum
2
go.sum
@ -1,3 +1,5 @@
|
|||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
github.com/vmware/govmomi v0.30.0 h1:Fm8ugPnnlMSTSceDKY9goGvjmqc6eQLPUSUeNXdpeXA=
|
github.com/vmware/govmomi v0.30.0 h1:Fm8ugPnnlMSTSceDKY9goGvjmqc6eQLPUSUeNXdpeXA=
|
||||||
github.com/vmware/govmomi v0.30.0/go.mod h1:F7adsVewLNHsW/IIm7ziFURaXDaHEwcc+ym4r3INMdY=
|
github.com/vmware/govmomi v0.30.0/go.mod h1:F7adsVewLNHsW/IIm7ziFURaXDaHEwcc+ym4r3INMdY=
|
||||||
|
@ -13,20 +13,32 @@ type vAPPProperty struct {
|
|||||||
Value string
|
Value string
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetVirtualMachineProperties(ctx context.Context, fnd *find.Finder, name string) error {
|
func SetVirtualMachineProperties(ctx context.Context, fnd *find.Finder, virtualmachine string, network string) error {
|
||||||
vm, err := fnd.VirtualMachine(ctx, name)
|
vm, err := fnd.VirtualMachine(ctx, virtualmachine)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
vappproperties := []vAPPProperty{
|
vappproperties := []vAPPProperty{
|
||||||
{
|
{
|
||||||
Key: "foo",
|
Key: "guestinfo.dns.domains",
|
||||||
Value: "bar",
|
Value: fmt.Sprintf("${searchPath:%s}", network),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Key: "woot",
|
Key: "guestinfo.dns.servers",
|
||||||
Value: "dude",
|
Value: fmt.Sprintf("${dns:%s}", network),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Key: "guestinfo.interface.0.ip.0.address",
|
||||||
|
Value: fmt.Sprintf("${autoIp:%s}", network),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Key: "guestinfo.interface.0.ip.0.netmask",
|
||||||
|
Value: fmt.Sprintf("${netmask:%s}", network),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Key: "guestinfo.interface.0.route.0.gateway",
|
||||||
|
Value: fmt.Sprintf("${gateway:%s}", network),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +54,7 @@ func SetVirtualMachineProperties(ctx context.Context, fnd *find.Finder, name str
|
|||||||
Info: &types.VAppPropertyInfo{
|
Info: &types.VAppPropertyInfo{
|
||||||
Key: int32(i),
|
Key: int32(i),
|
||||||
Id: vappproperty.Key,
|
Id: vappproperty.Key,
|
||||||
DefaultValue: fmt.Sprintf("${%v}", vappproperty.Value),
|
DefaultValue: vappproperty.Value,
|
||||||
Type: "expression",
|
Type: "expression",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user