@@ -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
259287func (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