Forum Discussion

kshcsuf_52543's avatar
Icon for Nimbostratus rankNimbostratus
Jan 18, 2011

PyControl: creating an LTM virtual on a single VLAN

Hi there,

I'm working on automating LTM virtual creation, and I have basic functionality in place. I'd like to configure the created VIPs to permit traffic on a single VLAN, somewhat similar to this example:




virtual hosted_00002201_a_443 {


pool hosted_00002201_a_443




ip protocol tcp


vlans Hosting <-- I can't figure out what directive(s) to use for this.


LB-External enable







Thank you kindly for any help.






Here's what I have:




!/usr/bin/env python




import pycontrol.pycontrol as pc


import sys




if len(sys.argv) < 4:


print "Usage: ilavirt [LTM hostname] [Virtual Name] [Pool Name] [Destination] [Vlan]"


print "Example:\nilavirt asdfasdf test123 testpool Hosting"






ltm = sys.argv[1]


virtname = sys.argv[2]


poolname = sys.argv[3]


destination = sys.argv[4]


vlan = sys.argv[5]




print "LTM:", sys.argv[1]


print "Virtual name:", sys.argv[2]


print "Pool name:", sys.argv[3]


print "Destination:", sys.argv[4]


print "Vlan:", sys.argv[5]




b = pc.BIGIP(hostname = ltm,


username = "admin",


password = "whargarbl",


fromurl = True,


wsdls = ['LocalLB.VirtualServer'])




v = b.LocalLB.VirtualServer


vs_def = v.typefactory.create('Common.VirtualServerDefinition') = virtname




ip,port = destination.split(':')


vs_def.address = ip


vs_def.port = port




proto = v.typefactory.create('Common.ProtocolType')


vs_def.protocol = proto.PROTOCOL_TCP




vs_def_seq = v.typefactory.create('Common.VirtualServerSequence')


vs_def_seq.item = [vs_def]




vs_type = v.typefactory.create('LocalLB.VirtualServer.VirtualServerType')


resource = v.typefactory.create('LocalLB.VirtualServer.VirtualServerResource')




resource.type = vs_type.RESOURCE_TYPE_POOL


resource.default_pool_name = poolname




resource_seq = v.typefactory.create('LocalLB.VirtualServer.VirtualServerResourceSequence')


resource_seq.item = [resource]




v.create(definitions = vs_def_seq, wildmasks = [''], resources = resource_seq, profiles = [''])







1 Reply

  • Unfortunately I think you may have to run a set_vlan() against your new virtual server after you've created it. There are some objects that require this I think. Assigning a SNAT is another example. Someone please correct me if I am wrong.