Skip to content

Commit c483c8a

Browse files
committed
Adding parameters proxmox-net-bridge and proxmox-net-tag, to permit select bridge and vlan to be used on network
1 parent 3379f3b commit c483c8a

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

proxmoxdriver.go

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ type Driver struct {
4646
Memory int // memory in GB
4747
StorageFilename string
4848

49+
NetBridge string // bridge applied to network interface
50+
NetVlanTag int // vlan tag
51+
4952
VMID string // VM ID only filled by create()
5053
GuestUsername string // user to log into the guest OS to copy the public key
5154
GuestPassword string // password to log into the guest OS to copy the public key
@@ -148,6 +151,18 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
148151
Usage: "pool to attach to",
149152
Value: "",
150153
},
154+
mcnflag.StringFlag{
155+
EnvVar: "PROXMOX_NET_BRIDGE",
156+
Name: "proxmox-net-bridge",
157+
Usage: "bridge to attach network",
158+
Value: "vmbr0",
159+
},
160+
mcnflag.IntFlag{
161+
EnvVar: "PROXMOX_NET_TAG",
162+
Name: "proxmox-net-tag",
163+
Usage: "vlan tag",
164+
Value: 0,
165+
},
151166
mcnflag.StringFlag{
152167
EnvVar: "PROXMOX_STORAGE_TYPE",
153168
Name: "proxmox-storage-type",
@@ -220,6 +235,9 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
220235
d.Memory = flags.Int("proxmox-memory-gb")
221236
d.Memory *= 1024
222237

238+
d.NetBridge = flags.String("proxmox-net-bridge")
239+
d.NetVlanTag = flags.Int("proxmox-net-tag")
240+
223241
d.SwarmMaster = flags.Bool("swarm-master")
224242
d.SwarmHost = flags.String("swarm-host")
225243
d.GuestSSHPort = flags.Int("proxmox-guest-ssh-port")
@@ -255,6 +273,16 @@ func (d *Driver) GetMachineName() string {
255273
return d.MachineName
256274
}
257275

276+
// GetBridge returns the bridge
277+
func (d *Driver) GetNetBridge() string {
278+
return d.NetBridge
279+
}
280+
281+
// GetBridge returns the lvan
282+
func (d *Driver) GetNetVlanTag() int {
283+
return d.NetVlanTag
284+
}
285+
258286
// GetIP returns the ip
259287
func (d *Driver) GetIP() (string, error) {
260288
d.connectAPI()
@@ -362,8 +390,10 @@ func (d *Driver) Create() error {
362390
return err
363391
}
364392

365-
if !strings.HasSuffix(diskname, d.StorageFilename) {
366-
return fmt.Errorf("returned diskname is not correct: should be '%s' but was '%s'", d.StorageFilename, diskname)
393+
storagefilename := d.Storage + ":" + volume.Filename
394+
395+
if diskname != storagefilename {
396+
return fmt.Errorf("returned diskname is not correct:\n should be '%s' but was '%s'", storagefilename, diskname)
367397
}
368398

369399
npp := NodesNodeQemuPostParameter{
@@ -373,14 +403,18 @@ func (d *Driver) Create() error {
373403
Memory: d.Memory,
374404
Cores: "4",
375405
Net0: "virtio,bridge=vmbr0",
376-
SCSI0: d.StorageFilename,
406+
SCSI0: storagefilename,
377407
Ostype: "l26",
378408
Name: d.BaseDriver.MachineName,
379409
KVM: "1", // if you test in a nested environment, you may have to change this to 0 if you do not have nested virtualization
380410
Cdrom: d.ImageFile,
381411
Pool: d.Pool,
382412
}
383413

414+
if d.NetVlanTag != 0 {
415+
npp.Net0 = fmt.Sprintf("virtio,bridge=%s,tag=%d", d.NetBridge, d.NetVlanTag)
416+
}
417+
384418
if d.StorageType == "qcow2" {
385419
npp.SCSI0 = d.Storage + ":" + d.VMID + "/" + volume.Filename
386420
}

0 commit comments

Comments
 (0)