Set a Virtual Server Type in F5 Python SDK

Can I set up a Virtual Server Type, among the existing, for example Standard, Performance (Layer 4), Performance (HTTP), or Forwarding IP? When I create a Virtual Server, by default it is created with the Performance (Layer 4) type. Thanks in advance.

Changing the profile(s) attached to a virtual isn’t that straight-forward especially when incompatible profiles are involved: e.g., changing from fastL4 to http. Please refer to an answer to How can we configure fastL4 VS using icontrol rest. It discusses general iControl REST (using

curl

) but should be applicable to the F5 Python SDK.

You can create a new virtual with a specific profile. The following

curl

example creates a virtual with the

http

profile. The

tcp

profile comes along with it. Again, the method should be applicable to the Python SDK too.

curl -sku admin: https:///mgmt/tm/ltm/virtual \
  -H "Content-type: application/json" -X POST \
  -d '{"name":"virtual", "profilesReference":{"items":[{"name":"http"}]}}'

Python code example for creating a “standard” virtual server is here:

Thank you, Jason Nance, for the pure-Python code. Here’s an example code using the F5 Python SDK. It creates a virtual with the specified profiles and pool (the pool should be already there).

from f5.bigip import ManagementRoot

params = {'name': 'myTestVirtual',
          'partition': 'Common',
          'destination': '192.168.184.100:80',
          'mask': '255.255.255.255',
          'source': '0.0.0.0/32',
          'pool': 'myPool',
          'profiles': [
              {'name': 'http'},
              {'name': 'tcp'}
          ]
}

 Connect to the BIG-IP. Change the IP and user/pass
mgmt = ManagementRoot('192.168.1.1', 'admin', 'adminPasswd')

try:
    vs = mgmt.tm.ltm.virtuals.virtual.create(**params)
    print(vs.raw)
except Exception as e:
    print(params['name'] + ' failed. ' + str(e))

See also iControl REST Cookbook - Virtual Server Profile (LTM Virtual Profiles).