Forum Discussion
python rest api: How to get profiles details?
with code like this I can get list of virtuals and list of their applied profiles, but all I get for a profile is name and partition...
How do I get the actual profile objects so I can inspect their details?
vips = mgmt.tm.ltm.virtuals.get_collection()
for vip in vips:
print(vip.name)
profiles = vip.profiles_s.get_collection()
for p in profiles:
print("/{}/{}: {}".format(p.partition,p.name,p))
This SelfLink doesn't contain any info regarding configuration. It's only a reference pointing itself.
Check this ->
# curl -sku admin:XXXX https://localhost/mgmt/tm/ltm/virtual/~Common~myvirtual/profiles/~Common~tcp | json-format { "kind": "tm:ltm:virtual:profiles:profilesstate", "name": "tcp", "partition": "Common", "fullPath": "/Common/tcp", "generation": 239, "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~myvirtual/profiles/~Common~tcp?ver\u003d12.1.4.1", "context": "all" }
But if you search just for the profile you have all the configuration ->
# curl -sku admin:XXXX https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp | json-format { "kind": "tm:ltm:profile:tcp:tcpstate", "name": "tcp", "partition": "Common", "fullPath": "/Common/tcp", "generation": 1, "selfLink": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp?ver\u003d12.1.4.1", "abc": "enabled", "ackOnPush": "enabled", "closeWaitTimeout": 5, ... }
So, as I have already said, you need to capture both queries and associate them.
KR,
Dario.
6 Replies
- Dario_Garrido
Noctilucent
Hello.
To use SDK is similar of using iControl REST.
This command captures all the profile names bonded to a specific VS (without specifying category)
# https:// <F5_mgmt_IP>/mgmt/tm/ltm/virtual/<virtual_name>/profiles
And this command captures all Client SSL profiles configured in the device
# https:// <F5_mgmt_IP>/mgmt/tm/ltm/profile/client-ssl
If I want to associate what profiles from the first output are Client SSL profiles, I need to compare both outputs.
For SDK is the same.
# CAPTURE ALL CLIENT SSL PROFILES client_ssls = session.tm.ltm.profile.client_ssls.get_collection() # https:// <F5_mgmt_IP>/mgmt/tm/ltm/profile/client-ssl # CAPTURE ALL VIRTUALS virtuals = session.tm.ltm.virtuals.get_collection() # https:// <F5_mgmt_IP>/mgmt/tm/ltm/virtual # SHOW VS AND THEIR CLIENT SSL PROFILES for virtual in virtuals: print("------------") print("Virtual: {}".format(virtual.name)) listClientSsl_inUse = [] for profile in virtual.profiles_s.get_collection(): # https:// <F5_mgmt_IP>/mgmt/tm/ltm/virtual/<virtual_name>/profiles if profile.name in listClientSsl: listClientSsl_inUse.append(profile.name) if listClientSsl_inUse: for prof in listClientSsl_inUse: print("Client SSL: {}".format(prof)) else: print("Client SSL: None")
I recommend you to check this example
https://devcentral.f5.com/s/articles/Displaying-VS-config-using-SDK
KR,
Dario.
- Mohamed_Lrhazi
Altocumulus
Thanks a lot Dario. That is great! I wonder though, if there is a way to "load" the profile directly using the information provided by the profile object found in the virtual server.
In my code above, I get the profile in variable "p", which has an attribute "attrs", which pprinted looks like this:
{'context': 'all', 'fullPath': '/Common/udp', 'generation': 1, 'kind': 'tm:ltm:virtual:profiles:profilesstate', 'name': 'udp', 'partition': 'Common', 'selfLink': 'https://localhost/mgmt/tm/ltm/virtual/~Common~syslog-udp-514-vs/profiles/~Common~udp?ver=14.1.0.2'}
Is there a method load(p.selfLink) or something like that?
- Dario_Garrido
Noctilucent
This SelfLink doesn't contain any info regarding configuration. It's only a reference pointing itself.
Check this ->
# curl -sku admin:XXXX https://localhost/mgmt/tm/ltm/virtual/~Common~myvirtual/profiles/~Common~tcp | json-format { "kind": "tm:ltm:virtual:profiles:profilesstate", "name": "tcp", "partition": "Common", "fullPath": "/Common/tcp", "generation": 239, "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~myvirtual/profiles/~Common~tcp?ver\u003d12.1.4.1", "context": "all" }
But if you search just for the profile you have all the configuration ->
# curl -sku admin:XXXX https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp | json-format { "kind": "tm:ltm:profile:tcp:tcpstate", "name": "tcp", "partition": "Common", "fullPath": "/Common/tcp", "generation": 1, "selfLink": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp?ver\u003d12.1.4.1", "abc": "enabled", "ackOnPush": "enabled", "closeWaitTimeout": 5, ... }
So, as I have already said, you need to capture both queries and associate them.
KR,
Dario.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com